Расчудесное поведение тестера стратегий МТ4 - страница 3

 
Vitaly Murlenko #:

Есть идеи?

пока только это


 
Oleksandr Volotko #:

пока только это


Во, блин, совсем запрограммился такие ошибки допускать :(

Спасибо, дружище :)

 
Vitaly Murlenko #:

К сожалению, поиски не дали результата. Приходится отписывать здесь.

Ситуация: Открыта группа, скажем, бай-ордеров. Есть при этом и отложенные - как лимитники, так и стоповые. Группа уходит в профит на икс долларов и в этот момент отдаём приказ закрыть все бай-ордера. Для этого я сделал функцию. Пользовался ею годами и всё работало прекрасно. Сегодня наткнулся на странное поведение советника в тестере. Дело в том, что первый параметр моей функции (код будет ниже) отвечает за то, удалять ли при этом отложенные ордера. Пока у меня в советнике стоял этот параметр == true, всё было нормально. Но стоило только поменять его на false, как терминал повесился. Я перекинул советника другу и попросил потестировать. У него повеслися тоже. В журнале выскакивает ошибка. Вот её-то описание найти-то и не удалось:

Tester: cancel execution

Может кто знает, что это за зверь?

Что поменялось-то у меня? Ну поставил я false. В результате рыночные закрылись, отложенные остались. На такую ситуацию советник ни как не реагирует - он просто ждёт, пока отложенный ни станет рыночным.

Циклов while у меня в коде нет, деления на ноль - тоже. Почему советник стал вешать терминал, ума не приложу. Есть идеи?

Вот обещанный код:

ваш аккаунт точно не взломан ? 

в профиле "программирую на MQL с 2006" и очевидно бесконечный цикл (ога, "while нету...") не сходятся

 
Maxim Kuznetsov #:

ваш аккаунт точно не взломан ? 

в профиле "программирую на MQL с 2006" и очевидно бесконечный цикл (ога, "while нету...") не сходятся

Точно не взломан. Это уже переутомление. Закрываю глаза и у меня код "перед глазами". Нужно отдохнуть. Я трижды проверил код в поисках цикла и не увидел его.

Всё, я спать. Спасибо, что помогли.

 
Vitaly Murlenko #:

Точно не взломан. Это уже переутомление. Закрываю глаза и у меня код "перед глазами". Нужно отдохнуть. Я трижды проверил код в поисках цикла и не увидел его.

Всё, я спать. Спасибо, что помогли.

Да, в вайле считаете все ордера и когда не удаляете отложки цикл становится бесконечным. Условия удаления отложек как то надо до цикла учитывать.

 
Valeriy Yastremskiy #:

Да, в вайле считаете все ордера и когда не удаляете отложки цикл становится бесконечным. Условия удаления отложек как то надо до цикла учитывать.

в EventDriven (а MQL это именно оно) может делается вообще без длительных циклов. При необходимости собирается коллекция "чего надо закрыть" и в OnTick по мере возможности,мелкими пачками из неё закрывается и удаляется.

Как только коллекция пуста - "всё закрыто"

Иначе цикл закрытий может слегка подвешивать советник и теряется интерактивность (внутри обычного цикла не приходят ведь OnChartEvent, OnTimer, OnTrade).

Закрытие даже одного ордера на реале это бывает мучительно долго, а когда их пачка, например сетки закрываются

 
Maxim Kuznetsov #:

в EventDriven (а MQL это именно оно) может делается вообще без длительных циклов. При необходимости собирается коллекция "чего надо закрыть" и в OnTick по мере возможности,мелкими пачками из неё закрывается и удаляется.

Как только коллекция пуста - "всё закрыто"

Иначе цикл закрытий может слегка подвешивать советник и теряется интерактивность (внутри обычного цикла не приходят ведь OnChartEvent, OnTimer, OnTrade).

Закрытие даже одного ордера на реале это бывает мучительно долго, а когда их пачка, например сетки закрываются

допускаю вайл для открытия закрытия модификации ордеров с фильтрацией ошибок, здешнее решение считаю не оптимальным. Тикеты свои записывать дешевле. Конечно если это решение для ручной торговли, тогда так же, сперва отсеять и записать тикеты, которые есть. И потом только удалять.

 

Столкнулся с очередной непоняткой. Как такое может быть (Билд терминала 1370)?


Смотрите, лот 0,1 проходит икс пунктов в профит. Тестер выдаёт, что у этого лота прибыль = 5,9.

Затем этот же лот ловит такой же как и размер тейка стопЛосс и у этого лота убыток = 14,14

100 пунктов в профит - это 5,9 доллара, 100 пунктов в убыток - это 14,14 долларов. 

Как такое возможно? Ведь на графике видно что сделки прошли в районе 17 часов дня.

P.S.

Очень напоминает старый советский анекдот: "ходит экскурсия по зоопарку. Ведущий рассказывает: А это наш удав. У него от хвоста до головы 6 метров, а от головы до хвоста - 3 метра. Народ в недоумении, мол, почему так? Экскурсовод отвечает, мол, а это НАШ удав, как хотим, так и меряем...."

Смех-смехом, но почему так? Я ранее подобного в терминале не видел. Это что, глюк нового билда?

 
Vitaly Murlenko #:

Столкнулся с очередной непоняткой. Как такое может быть (Билд терминала 1370)?


Смех-смехом, но почему так? Я ранее подобного в терминале не видел. Это что, глюк нового билда?

Комисcия?

 
PapaYozh #:

Коммисия?

Да, там учитывается комиссия примерно 8 долларов.