Ошибки, баги, вопросы - страница 1913

 
fxsaber:

Expiration не при чем. Сделайте так

Это говорит о баге на самом деле
Все Filling-режимы разрешены и работают для маркетов и лимитников. А вот для стоповых отложек только ORDER_FILLING_RETURN.

Спасибо за подсказку, так работает.

 

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

::StringToTime()

подсказка появляется только после полного введения имени функции:

В то время как в контексте класса интеллиенс работает:


 

странный глюк появился в МТ5 v1607, провожу тестирование на реальных тиках, при тестировании в тестере стратегий в обзоре рынка, тестер показывает дату 2017.03.07 и время последнего тика 11:01, однако в лога есть операции уже 2017.03.09, при этом тестер похоже зависает т.к. стоит на месте, у кого подобное было и как лечится?

 

Вот такой простенький код:

void CloseAllOrders()
{
bool Ans;
int i=0;
   for(i=1; i <=OrdersTotal(); i++)     
      {      
      Print("Проход № ", i);      
      if (OrderSelect(i-1,SELECT_BY_POS)==true) 
         {  
         if (OrderSymbol() != Symbol())
            continue;
         if (OrderType()==0)
	     {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Bid,Digits),25);
             }           
         if (OrderType()==1)
             {
//            Ans=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble(Ask,Digits),25);
             } 
         }
      }      
         
return;
   
}

В момент запуска функции открыто две позиции Buy. Функция дважды принтует наличие двух ордеров: Проход № 1, Проход № 2.

Снимаем комментарии и запускаем функцию повторно. Она бодро сносит один ордер бай, честно принтует "Проход № 1" и выходит из цикла. Второй ордер остается нетронутым сообщение "Проход № 2" не появляется.

В чем магия?


 
nys2000:

В чем магия?


В не верном цикле
 
Artyom Trishkin:
В не верном цикле

А конкретнее, если можно?

 
nys2000:

А конкретнее, если можно?


начни с нуля

 
nys2000:

А конкретнее, если можно?

for(i=1; i <=OrdersTotal(); i++)  Ордера в этом списке нумеруются от нуля до OrdersTotal()-1 включительно (пусть извинит меня Артем Тришкин, просто сократил ожидание для nys2000).
 
Aleksei Beliakov:

начни с нуля


Это два равноценных варианта. Если for (i=1...), тогда OrderSelect(i-1,...), если for (i=0,...) - OrderSelect(i,...)

 
Vladimir:
for(i=1; i <=OrdersTotal(); i++)  Ордера в этом списке нумеруются от нуля до OrdersTotal()-1 включительно (пусть извинит меня Артем Тришкин, просто сократил ожидание для nys2000).

Спасибо, но нумерация ордеров с 0 до OrdersTotal()-1 учтена в OrderSelect(i-1,...)