функция OnCalculate и OnTick - страница 2

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

Я еще создам чистые оригиналы советника и индикатора , что бы убедиться . 

Но прошлый раз , я создавал их  специально для эксперимента . 

И разместил в них  данный код.

 static int t;

t++; 

Alert("Количество тиков -  ",t); 

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

И до того как создать тему на форуме , проверял несколько раз сам.  

 функцией Sleep. там не было . 

Полный код эксперта и советника я разместил выше в этой теме.

Спасибо за отклик.

Получается можно сделать вывод ,что у советников разница настолько большая  ,что могут пропускать столько тиков , по отношению к индикаторам?

 разница в 200 вызовов за 2 минуты .

 
Насколько я понял из того, что говорили разработчики (ссылка приведена выше), дело вовсе не в тиках. Просто у индикаторов MQL5, в отличие от их MQL4 собратьев, стало больше событий, приводящих к запуску функции индикатора. Ведь даже само название функции поменялось (OnCalculate, а не start). То есть речь идет именно о других событиях, а не о тиках. Скорее всего, кроме реконнекта, есть еще какие-то события, приводящие к вызову OnCalculate. Если провести исследование по сравнению цен Bid, Ask и тиковых объемов, то с высокой вероятностью обнаружится, что нового тика не было, а OnCalculate сработал по какой-то другой причине.
 

Одна из причин - это одновременный приход пачки котировок. Такое бывает на некоторых брокерах и фидах.

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

 
Renat:

Одна из причин - это одновременный приход пачки котировок. Такое бывает на некоторых брокерах и фидах.

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

Разница может быть такой большой?

разница в 200 вызовов за 2 минуты


 Может ли это быть связано с качеством соединения?

 

Попробую запустить у себя... 

 
Попробуйте у себя.

От качества связи это не зависит. У разных брокеров с разными датафидами могу быть или не быть пакетные выдачи котировок.
 
komposter:


 Может ли это быть связано с качеством соединения?


На качество связи не жалуюсь .) Еще учитывая то что я уже около 10 раз проверял работу данного кода , с определенным промежутком времени. Думаю причина не в этом.

 

Ждем ваших результатов тестирования . ) 

 
Riko888:

На качество связи не жалуюсь .) Еще учитывая то что я уже около 10 раз проверял работу данного кода , с определенным промежутком времени. Думаю причина не в этом.

 

Ждем ваших результатов тестирования . ) 

Да, уже запустил, жду открытия рынка.

А вы можете на другом брокере тоже запустить, будет полезно. У меня Weltrade-real

 

Результаты по Weltrade Real:

2013.10.28 00:05:10 eTicksCount (EURUSD,M1) Количество тиков OnTick() = 1
2013.10.28 00:05:10 iTicksCount (EURUSD,M1) Количество тиков OnCalculate() = 2

2013.10.28 01:07:01 eTicksCount (EURUSD,M1) Количество тиков OnTick() = 125
2013.10.28 01:07:01 iTicksCount (EURUSD,M1) Количество тиков OnCalculate() = 126

 

Вот это похоже на правду. В смысле, что тики идут по одному.

Переключаюсь на Alpari-UK Real.

 
komposter:

Переключаюсь на Alpari-UK Real.

А тут и ждать долго не пришлось. Время от времени на один он-тик приходит 2 он-калкулейта:

2013.10.28 01:17:55 eTicksCount (EURUSD,M1) Количество тиков OnTick() = 371
2013.10.28 01:17:55 iTicksCount (EURUSD,M1) Количество тиков OnCalculate() = 439
2013.10.28 01:17:55 iTicksCount (EURUSD,M1) Количество тиков OnCalculate() = 440

 Разница постепенно растет (сейчас - 510/600), реконнектов в журнале нет, стакан по инструменту имеется.

 
papaklass:
 По евре нужно в европейскую сессию тестировать. Ночью евро дохлая и пачек тиков не будет.
Не угадали, это у велтрейда такие фильтры.
Причина обращения: