Вот по этой причине хочется запилить (найти) советник, выставляющий ордера
отложенные, а не по рынку. Так сразу было бы видно, какой ордер будет открыт по достижению той или иной цены. Красота!
Valsorya, как думаешь, возможно такой сварганить?
Продать Вам что ли кусок кода своего?
int Magic=1; // Магик номер ордеров
int TakeProfit = 1000; //отступ в п. от цены для отложеников
int StopLoss = 1000;
int init(){
if (Digits < 4) {
pp = 0.01;
pd = 2;
cf = 0.009;
} else {
pp = 0.0001;
pd = 4;
cf = 0.00009;
}} // доп расчеты для 4/5-ти знаков
//+--------------------------------------------------------------------------------------------------------------+
//| Сам склепал! выставляет 2 отложеника от цены!
//+--------------------------------------------------------------------------------------------------------------+
void set2stoporders(double Lots,int magic, bool BuyMe, bool SellMe) // лот открытия ордеров, BuyMe/SellMe = ставить отложеники на бай или селл(решается присвоением true/false)
{
//+--------------------------------------------------------------------------------------------------------------+
double ldStop=0, ldTake=0;
int TakeProfit=1000;int StopLoss=1000;
int delta_open_order=MarketInfo(Symbol(), MODE_SPREAD);// Определяем спред на паре
if (BuyMe==true){double pAsk=Ask+delta_open_order*Point;
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP,pAsk,ldStop,ldTake,Lots,delta_open_order,magic);
}else{double pBid=Bid-delta_open_order*Point;
if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP,pBid,ldStop,ldTake,Lots,delta_open_order,magic);
}}
//+------------------------------------------------------------------+
//| Установка ордера |
//| Параметры: |
//| op - операция |
//| pp - цена |
//| ldStop - уровень стоп |
//| ldTake - уровень тейк |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake,double LLots,int Slippage_ee,int magic) {
color clOpen; int NumberOfTry=3;
color clOpenBuy = LightBlue; // Цвет ордера BuyStop
color clOpenSell = LightCoral; // Цвет ордера SellStop
if (op==OP_BUYSTOP) {clOpen=clOpenBuy;}
else {clOpen=clOpenSell;}
for (int it=1; it<=NumberOfTry; it++)
{
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
bool FM=OrderSend(Symbol(),op,LLots,pp,2,ldStop,ldTake,"ATC SS",magic,0,clOpen);
}
}