Почему открываются дополнительные ордера? - страница 3

 
Vladimir Karputov:

Да, теперь будет три попытки:

   bool res=false;
   for(int i=0;i<3 && !res;i++)
     {
      res=OrderSend(Request,Results);
      if(res)
        {
         if(Results.deal>0)
           {
            if(Results.volume==volume) break;
            else
              {
               Request.volume-=Results.volume;
               res=false;
              }
           }
         else res=false;
        }
     }
Хотя эти объёмы.... Явно тут будет косяк (чёрный лебедь).
чесс сказать...по объемам это я вставил с Ваших рекомендаций в самом начале...
и если филлинг будет с возвратом от брокера, то такой вариант конечно не подходит...
а вот если брокером допускается частичное закрытие по наличию объема на рынке,
то такой вариант может гарантировать полное закрытие позиции...
но я еще подумаю над этим, может вообще откажусь от контроля этого объема.
 
Vladimir Karputov:

Да, теперь будет три попытки:

   bool res=false;
   for(int i=0;i<3 && !res;i++)
     {
      res=OrderSend(Request,Results);
      if(res)
        {
         if(Results.deal>0)
           {
            if(Results.volume==volume) break;
            else
              {
               Request.volume-=Results.volume;
               res=false;
              }
           }
         else res=false;
        }
     }
Хотя эти объёмы.... Явно тут будет косяк (чёрный лебедь).
Мне главное, чтобы не было переоткрытий, провоцирующих противоположную позицию,
и на сколько я понял это решает мои проблемы.
 
Vladimir Karputov:


Большое Вам спасибо, за отзывчивость и помощь!
 
Gennady Mazur:
Мне главное, чтобы не было переоткрытий, провоцирующих противоположную позицию,
и на сколько я понял это решает мои проблемы.
Проблему на корню решает только обработка события OnTradeTransaction. Остальное от лукавого.
Причина обращения: