not enough money - страница 4

 
Maksim Neimerik:

Да, понял. Как же решить такую проблему? Как мониторить маржу в момент перехода лимитника в рынок?

Может на каждом тике проверять объемы лимитников и сравнивать с маржей? Если объем слишком большой - закрываем лимитники...

 
Maksim Neimerik:

Да, понял. Как же решить такую проблему? Как мониторить маржу в момент перехода лимитника в рынок?

Оставь какую-то сумму в запасе. То-есть (свободные_средства - маржа_по_ордеру > 10) к примеру.

 
Maksim Neimerik:

Да, понял. Как же решить такую проблему? Как мониторить маржу в момент перехода лимитника в рынок?

Наверное только так, вместе с принтом что нет денег, удалять все ордера.

 
Maksim Neimerik:

Отложками...


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

....

Прошу прощения, если я повторил то что ранее уже сказали. Просто прочитал только первую страницу обсуждения :)
 

Ошибка "not enough money" может появляться только при открытии рыночных ордеров.

Отложки сами удаляются сервером. В терминале, ошибка не появляется. Только в истории ордеров коммент "нет денег".

 
Taras Slobodyanik:

Ошибка "not enough money" может появляться только при открытии рыночных ордеров.

Отложки сами удаляются сервером. В терминале, ошибка не появляется. Только в истории ордеров коммент "нет денег"

Я тоже так думал, но мой советник торгует исключительно отложками (лимитниками) и при валидации выдает ошибку "not enough money"! Как Вы можете это объяснить?
 

не видя советника - никак)

Думаю - есть в советнике открытие рыночных ордеров.
В тестере пробовали запускать с депозитом 1$ ?

 
Taras Slobodyanik:

не видя советника - никак)

Думаю - есть в советнике открытие рыночных ордеров.
В тестере пробовали запускать с депозитом 1$ ?

Вот та часть кода которая отвечает за выставление ордеров:

void PendingOrder(int cmd, double lt, double st)
{
   double Lot=lt;
   double Price=0.0;
   if(cmd==OP_BUYLIMIT)
   {
      Price=Bid-FS;
   }
   if(cmd==OP_SELLLIMIT)
   {
      Price=Ask+FS;
   }
   double priceStep=Price;
   for(int count=0; count<NumberOrder; count++)
   {
      if(CheckVolumeValue(Lot)==false)
      {
      Comment("Wrong Lot!!!");
      return;   
      }
      if(Lot*MarketInfo(Symbol(),MODE_MARGINREQUIRED)>AccountEquity())
        {Print("Trade stop is not enough free margin to begin");Comment("Trade stop is not enough free margin to begin"); return;}
      if(!OrderSend(Symbol(),cmd,NormalizeDouble(Lot,2),priceStep,Slippage,0,0,"",magic,0))
      {
         Print("Error = ",GetLastError(),"  ",cmd,"  ",Lot,"  ",Price);
      }
      Lot=NormalizeDouble(Lot*mnog,2);
      if(cmd==OP_BUYLIMIT)
      {
         priceStep=priceStep-st;  
      }
      if(cmd==OP_SELLLIMIT)
      {
         priceStep=priceStep+st;  
      }      
   }
}

С депо 1$ не пробовал.

 
Taras Slobodyanik:

Ошибка "not enough money" может появляться только при открытии рыночных ордеров.

Отложки сами удаляются сервером. В терминале, ошибка не появляется. Только в истории ордеров коммент "нет денег".

Да, действительно, при нехватке денег, ордер удаляется безошибочно.

 
Maksim Neimerik:

Вот та часть кода которая отвечает за выставление ордеров:

С депо 1$ не пробовал.


так надо попробовать, еще на первой странице ведь намекали)

и OrderSend при ошибке возвращает -1 это будет true
а 0 - это ордер с нулевым тикетом