Непонятная отработка OnTick() в боевом режиме советника

 

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

Отрабатываем сигналы и действия при начале тика.

Новый или не новый тик проверяем так:


TimeOpen - переменная "модуля".

Далее на H4 для XAUUSD вижу странную ситуацию: 


Странности на мой взгляд следующие:

1. Ордер *887 обработан в 21.00. Как такое могло получиться? когда бар открыт в 20.00 - то и обработаться он должен был в 20.00? Или я неправильно рассуждаю или ошибка в коде?

2. Ордер *887 не смог сдвинуть стоп-лосс. По какой причине - мне не понятно. Он пытался установить стоп-лосс на 1338.85, но получил обратку "invalid s/l" (t/p я не ставлю). На графике видно, что максимум бара 20:00 - 1332. При уровне стопа 200 - он до 1334 должен был позволить спустить стоп-лосс. Вручную стоп-лосс перетянулся нормально. Подскажите, в чем ошибка?

 
SergeyN:
Добрый день, коллеги, прошу помочь разобраться с отработкой времени. Исходные данные:
Отрабатываем сигналы и действия при начале тика.
Новый или не новый тик проверяем так:
TimeOpen - переменная "модуля".
Далее на H4 для XAUUSD вижу странную ситуацию:
Странности на мой взгляд следующие:
1. Ордер *887 обработан в 21.00. Как такое могло получиться? когда бар открыт в 20.00 - то и обработаться он должен был в 20.00? Или я неправильно рассуждаю или ошибка в коде?
2. Ордер *887 не смог сдвинуть стоп-лосс. По какой причине - мне не понятно. Он пытался установить стоп-лосс на 1338.85, но получил обратку "invalid s/l" (t/p я не ставлю). На графике видно, что максимум бара 20:00 - 1332. При уровне стопа 200 - он до 1334 должен был позволить спустить стоп-лосс. Вручную стоп-лосс перетянулся нормально. Подскажите, в чем ошибка?

Что такое переменная "модуля" - обходитесь без терминологии собственной и почерпнутой из описания других языков.  Где видно, что бар открылся в 20.00? и может быть обработка шла на следующем баре? Ордер *887 не смог сдвинуть стоп-лосс из-за invalid s/l  - надо вместо графика смотреть на цену во время выполнения приказа. Если хотите научиться отлаживать программу - добавьте в нее протоколирование работы. Перед выполнением приказов записывайте в файл время, цену, показания индикаторов. Или просто используйте функция Alert("Время=",TimeCurrent(),"   Цена=",Bid)

 
STARIJ:

Что такое переменная "модуля" - обходитесь без терминологии собственной и почерпнутой из описания других языков.  Где видно, что бар открылся в 20.00? и может быть обработка шла на следующем баре? Ордер *887 не смог сдвинуть стоп-лосс из-за invalid s/l  - надо вместо графика смотреть на цену во время выполнения приказа. Если хотите научиться отлаживать программу - добавьте в нее протоколирование работы. Перед выполнением приказов записывайте в файл время, цену, показания индикаторов. Или просто используйте функция Alert("Время=",TimeCurrent(),"   Цена=",Bid)

>> Что такое переменная "модуля" - обходитесь без терминологии собственной и почерпнутой из описания других языков. 

Объявленная в главном mq4 файле над методами. Не могу найти как эта область называется.

>> Где видно, что бар открылся в 20.00? и может быть обработка шла на следующем баре?

h4 - открывается каждые 4 часа. На времени линии внизу видно что он открылся в 20:00


>> Ордер *887 не смог сдвинуть стоп-лосс из-за invalid s/l  - надо вместо графика смотреть на цену во время выполнения приказа. Если хотите научиться отлаживать программу - добавьте в нее протоколирование работы. Перед выполнением приказов записывайте в файл время, цену, показания индикаторов. Или просто используйте функция Alert("Время=",TimeCurrent(),"   Цена=",Bid)

С алертом я понял - добавлю. Но все таки какие причины могут быть что автомат не передвинул с руганью на неверный stoploss, а вручную передвинулось?


 
SergeyN:

1. Ордер *887 обработан в 21.00. Как такое могло получиться? когда бар открыт в 20.00 - то и обработаться он должен был в 20.00? Или я неправильно рассуждаю или ошибка в коде?

Там пишется время компьютера, а не терминала.

 
Evgeny Belyaev:

Там пишется время компьютера, а не терминала.

Т.е бары открываются не по Москве?

 
Evgeny Belyaev:

Там пишется время компьютера, а не терминала.

время брокера

 
Taras Slobodyanik:

время брокера

Спасибо, Т.е получается что бары открываются по Москве, а время ордера в журнале фиксируется как время сервера брокера. Так?

 
SergeyN:

Спасибо, Т.е получается что бары открываются по Москве, а время ордера в журнале фиксируется как время сервера брокера. Так?

Нет

бары -  по времени сервера

в журнал пишется - по времени компьютера

 
Alekseu Fedotov:

Нет

бары -  по времени сервера

в журнал пишется - по времени компьютера

Тогда я совсем запутался. Время компьютера - московское. Бары так же вижу что открываются по московскому. Как может быть обработка бара на час позже с учетом кода, который я приводил в первом посте?
 
SergeyN:
Тогда я совсем запутался. Время компьютера - московское. Бары так же вижу что открываются по московскому. Как может быть обработка бара на час позже с учетом кода, который я приводил в первом посте?

если время брокера = вашему времени, тогда время должно совпадать.

почему на графике не видно входа? 
предыдущие сделки видны

может советник работал на H1?

пс. кстати во вкладке Эксперты можно увидеть какой советник на каком графике, что и когда делал.

 
Кажется разобрался. Подсмотрел советник ТрейлингСтоп от Rita Lasker. Когда модифицировал ордер использовал так же Ask для покупки и Bid для продажного. При открытии это верно. А при модификации она делала наоборот. Сделал у себя так же - все заработало без ошибок.