Библиотеки: OnTickMulti - страница 2

 

fxsaber #:

double OnTester()

{return AccountInfoDouble(ACCOUNT_BALANCE); }

для чего эта строка?

 
lynxntech #:

для чего эта строка?

Чтобы вернуть значение нужного баланса.

 

Не проверяли на сколько в вашем решении тики синхронизированны по времени? 

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

 
Rorschach #:

Не проверяли на сколько в вашем решении тики синхронизированны по времени?

Работает все правильно. И в штатном Тестере правильно. Если нет - покажите.

 
fxsaber #:
в штатном Тестере правильно. Если нет - покажите.

Создал кастомные тики из минуток EUR и GBP (для удобства)

По EUR правильно, по GBP на тик раньше (смотрите время и цену)

Файлы:
1.mq5  3 kb
 
Rorschach #:

Создал кастомные тики из минуток EUR и GBP (для удобства)

По EUR правильно, по GBP на тик раньше (смотрите время и цену)

Тики с одинаковым временем не приходят одновременно. Все последовательно. И если тик по EURUSD c бОльшим временем пришел первым, то на этот момент ничего не известно о тике с таким же временем по GBPUSD, который придет вторым. Поэтому на момент прихода первого тика EURUSD, второго тика GBPUSD просто нет, а есть данные предыдущего тика GBPUSD.
 
fxsaber #:
Тики с одинаковым временем не приходят одновременно. Все последовательно. И если тик по EURUSD c бОльшим временем пришел первым, то на этот момент ничего не известно о тике с таким же временем по GBPUSD, который придет вторым. Поэтому на момент прихода первого тика EURUSD, второго тика GBPUSD просто нет, а есть данные предыдущего тика GBPUSD.

В тестере это недостаток, для арбитража надо синхронно.

И не только для арбитража. Если система основана на корреляции инструментов, то появляется заглядывание в будущее

 
Rorschach #:

В тестере это недостаток, для арбитража надо синхронно.

И не только для арбитража. Если система основана на корреляции инструментов, то появляется заглядывание в будущее

Для таких случаев есть настраиваемая в Тестере задержка исполнения. 
 
fxsaber #:
Для таких случаев есть настраиваемая в Тестере задержка исполнения. 
У меня сложно получилось. В ините считал кастомным тестером и записывал входы в массив, потом в OnTick в тестере считывал входы, синхронизировал
 
Rorschach #:

В тестере это недостаток, для арбитража надо синхронно.

И не только для арбитража. Если система основана на корреляции инструментов, то появляется заглядывание в будущее

Заглядывания в будущее нет, потому что если для времени X есть тики по нескольким символам, то вместе с первым событием на одном из инструментов, на остальных символах (для которых события еще находятся в очереди) будет предыдущий тик, а не следующий тик (как в примере, 00:04 было до 00:05, а не после).

Для синхронизации нужно её алгоритмически обеспечить в своем коде, например, в обработчике OnTick опрашивать время тиков по всем задействованным символам, прежде чем инициировать сделку. Но, в принципе, если арбитраж именно на тиках (а не барах или минутах), то трудно представить себе надежную синхронизацию, потому что тики на каких-то символах могут реально отсутствовать по несколько секунд.