Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера. Как сделать.
У вас ошибка появляется не хватает депозита, это к депозиту относится, ошибки нет советника, не может открыть ордер из-за недостатка средств.
В советнике должна быть проверка на достаточность средств перед отправкой ордера.
Ну как-то так
Я реализовываю у себя так, перед самой отправкой, в функции проверяю достаточность, если не хватает маржи - оповещение и выход
if(AccountFreeMarginCheck(symb,type,lot)<=0) { Alert("ERR NOT ENOUGH MONEY: ",DoubleToStr(AccountFreeMargin(),2),", Lot="+(string)lot,", Symb=",symb); Sleep(1000*60*15); return; }
- docs.mql4.com
Бл...
А я по старинному
:)))))))))))
if(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*Lotss>AccountFreeMargin()) { Alert("Not enouth money to open order "+string(Lotss)+" lots!"); return; }
Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера. Как сделать.
У вас ошибка появляется не хватает депозита, это к депозиту относится, ошибки нет советника, не может открыть ордер из-за недостатка средств.
В советнике должна быть проверка на достаточность средств перед отправкой ордера.
у меня похожий метод
if(!CheckOrderSend(cmd,dlot)) { //Alert("Enough money to make the operation"); return (-134); } .... bool GOrders::CheckOrderSend(int itype,double dlot) { if(dlot<=0.0) return (false); if(!bCheckFreeMargin) return (true); //возможность отключить проверку int it=itype; if(it==OP_BUYLIMIT || it==OP_BUYSTOP) return (true); if(it==OP_SELLLIMIT || it==OP_SELLSTOP) return (true); if(AccountFreeMarginCheck(sname,it,dlot)<=0 || GetLastError()==134) { //Print("CheckOrderSend::Invalid lot: ",DoubleToString(dlot,2)); return (false); } return (true); }
у меня похожий метод
Ваш код имеет место быть но не всегда.
когда речь идет об отложках -то на данный момент может маржи и не хватает - по условиям ваш код не выставит отложку, а далее цена идет дальше и вот момент когда остальные ордера закрываются - появляется свободная маржа и тут как бы должен сработать следующий отложенник но его нет, потому что ему запретили открываться так как нет маржи, а повторно открыть не получится потому что вот уже и мин стоплевел подошел.
Надеюсь Вы меня поймете правильно, я 3 недели спорил в маркете насчет этого. И не могу понять как сделать так чтобы не было ошибки нехватки средств но и алгоритм сохранил свою жизнь. иначе если не выставлять ордера то и алгоритму - хана........

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
У вас ошибка появляется не хватает депозита, это к депозиту относится, ошибки нет советника, не может открыть ордер из-за недостатка средств.
В советнике должна быть проверка на достаточность средств перед отправкой ордера.