Скачать MetaTrader 5

Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера, как это сделать?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Kirill Voytseshchuk
388
Kirill Voytseshchuk  
Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера. Как сделать.

У вас ошибка появляется не хватает депозита, это к депозиту относится, ошибки нет советника, не может открыть ордер из-за недостатка средств.
В советнике должна быть проверка на достаточность средств перед отправкой ордера.
Файлы:
10.png 34 kb
Vitaly Muzichenko
6872
Vitaly Muzichenko  
Kirill Voytseshchuk:
Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера. Как сделать.

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

Ну как-то так  

Я реализовываю у себя так, перед самой отправкой, в функции проверяю достаточность, если не хватает маржи - оповещение и выход 

    if(AccountFreeMarginCheck(symb,type,lot)<=0) {
     Alert("ERR NOT ENOUGH MONEY: ",DoubleToStr(AccountFreeMargin(),2),", Lot="+(string)lot,", Symb=",symb);
      Sleep(1000*60*15);
     return;
    }
AccountFreeMarginCheck - Документация на MQL4
  • docs.mql4.com
AccountFreeMarginCheck - Документация на MQL4
Kirill Voytseshchuk
388
Kirill Voytseshchuk  
Vitaly Muzichenko:

Ну как-то так  

Я реализовываю у себя так, перед самой отправкой, в функции проверяю достаточность, если не хватает маржи - оповещение и выход 

Понял, спасибо.
Vasyl Nosal
19412
Vasyl Nosal  

Бл...

А я по старинному

:)))))))))))

if(MarketInfo(Symbol(),MODE_MARGINREQUIRED)*Lotss>AccountFreeMargin()) 
{
Alert("Not enouth money to open order "+string(Lotss)+" lots!");
return;
} 
Boris
3942
Boris  
Kirill Voytseshchuk:
Если средств не хватает, эксперт вообще не должен пытаться выставлять ордера. Как сделать.

У вас ошибка появляется не хватает депозита, это к депозиту относится, ошибки нет советника, не может открыть ордер из-за недостатка средств.
В советнике должна быть проверка на достаточность средств перед отправкой ордера.
Зачем доводить до такого? Перед открытием ставлю условие, что можно открыть, если баланс не ниже своего прошлого пика на 20%. Если более, внеочередное тестирование и поиск улучшения результатов.
Alexandr Gavrilin
38837
Alexandr Gavrilin  

у меня похожий метод

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);
  }
Vladislav Andruschenko
109875
Vladislav Andruschenko  
Alexandr Gavrilin:

у меня похожий метод

Ваш код имеет место быть но не всегда. 

 когда речь идет об отложках -то  на данный момент может маржи и не хватает - по условиям ваш код не выставит отложку, а далее цена идет дальше и вот момент когда остальные ордера закрываются - появляется свободная маржа и тут как бы должен сработать следующий отложенник но его нет, потому что ему запретили открываться так как нет маржи, а повторно открыть не получится потому что вот уже и мин стоплевел подошел.

 

Надеюсь Вы меня поймете правильно, я 3 недели спорил в маркете насчет этого. И не могу понять как сделать так чтобы не было ошибки нехватки средств но и алгоритм сохранил свою жизнь. иначе если не выставлять ордера то и алгоритму - хана........  

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий