Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Подними скорость в сети MQL5 Cloud Network. Установи Strategy Tester Agent!
azahell
5
azahell 2013.08.08 05:40 

Доброго времени суток.

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

   while(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

   {  

      memBox[i,1] = OrderTicket();    

      memBox[i,3] = OrderType();

      memBox[i,4] = OrderLots();

      memBox[i,5] = OrderOpenPrice();      

      memBox[i,6] = OrderStopLoss();

      Print("Ticket: " +  memBox[i,1] + " || Type: " + memBox[i,3] + " || L: " + memBox[i,4] + " || Pr: " + memBox[i,5] + " || SL: " + memBox[i,6] + " i = " + i);

      i++;

   } 

В логе отображает что все сделки только типа 4 или 5 т.е. отложенные ордера, и совсем нет 0 или 1, т.е. открытых.

Вопросы такие:

1. Это я неверно написал код и на самом деле тестер открывает сделки с типом 1 и 0 - в таком случае, какой командой это можно выяснить и получить эти данные?

2. Или дело в особенности работы тестера, который иначе отображает открытые сделки - в таком случае как можно отследить их статус в тестах по истории, открытые они или еще отложенные? (есть идея отслеживать цену каждого тика и при пересечении цены открытия меня статус сделки внутри программы - но это кажется кривоватым)

Alexander
2441
Alexander 2013.08.08 05:54  
Покажи фрагмент лога после открытия ордера.
azahell
5
azahell 2013.08.08 06:06  
Roger:
Покажи фрагмент лога после открытия ордера.


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

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

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