Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
как вариант, что бы отсечь опасения что Symbol() жрет время , пусть тогда оба обработчика "питаются" одинаково.
Можно функцию Symbol(), заменить на предопределённую переменную _Symbol
Symbol() не при чем здесь. В лог время выводится правильное.
Задержка в очереди событий или в SymbolInfo-функциях.
О чем я и говорил.
Поэтому, если нужен стакан, работаем в ОнБук. Если не нужен, работаем в ОнТик (без очередей и лишних вызовов).
Осталось выяснить самый быстрый способ получения актуальной истории тиков для обоих методов.
Думаю, если нужен только последний тик, то лучше SymbolInfo. Если нужна история без пропусков, то только CopyTicks.
Symbol() не при чем здесь. В лог время выводится правильное.
Задержка в очереди событий или в SymbolInfo-функциях.
О чем я и говорил.
Согласен что Симбол сильно много жрать не может, но какую-то лепту может вносить, и однозначно для чистоты теста брать время надо до всяких вызовов.
Насчёт очереди - мне интересно такой момент - насколько ОнБук может отстать от того же ОнТик при идеальных условиях. Т.е. когда подписка только на этот Символ, терминал больше ничем не загружен и т.д., и чем это вызвано.
Пока не могу согласиться что дело лишь в очереди, т.к. если обработчики ничего не делают, то и жрать очередь из 5-6 ОнБуков должна не больше, чем операция проверки Символа.
Надо убрать все проверки и посмотреть заодно что попадает между ОнТик и ОнБук для того же тика.
ап: Стало ясно, что прожорливый Принт не даёт проверить чисто, т.к. очередь будет долгая из-за принта)
Надо без принта время загонять в массив улонг, а потом уже раз в 5 минут всё выводить в Принты, позже закодю.
Хотел поставить проверить код для начала
Но что-то не могу открыть демо-счёт открывашки. Время нерабочее наверное, или ещё есть заморочки?
Потом код допилить чтобы сравнить именно от одного тика события.
Хотел поставить проверить код для начала
Но что-то не могу открыть демо-счёт открывашки. Время нерабочее наверное, или ещё есть заморочки?
Потом код допилить чтобы сравнить именно от одного тика события.
Открывать нужно на их сайте. Они потом код на почту присылают.
Думаю, если нужен только последний тик, то лучше SymbolInfo. Если нужна история без пропусков, то только CopyTicks.
Дело в том, что Срочный ранок (ФОРТС) даже на "высоколиквидных" инструментах очень слабый,
т.е по нужной цене можно купить очень ограниченное кол-во контрактов, поэтому нужна не только цена,
но очень важен объем контрактов по этой цене.
А SymbolInfo не дает объема этой цены.
В связи с этом нужно использовать MarketBookGet(), который дает и цены и объем всего стакана.
А MarketBookGet() можно использовать только в паре с MarketBookAdd, получая изменения стакана
в OnBookEvent. Можно, конечно, добавлять стакан (MarketBookAdd), а испольковать MarketBookGet() из OnTck(),
но тогда будут пропущены другие изменения стакана (отложенные ордера не по лучшей цене)
Правда можно "поизголяться" и построить свой стакан из приходящих тиков, но нужно ли это?
Добавлено
И я не согласен, что при срабатывании OnTck() мы можем получать тики из истории.
Запоминая последнее время тика, при срабатывании OnTck() мы можем получать тики
в реальном времени пришел новый тик(и) - сработал OnTck() мы его сразу считали, т.е это не история.
Осталось выяснить самый быстрый способ получения актуальной истории тиков для обоих методов.
У меня с OnTick() получается так же или чуть быстрее чем ОнБук (правда с Онбук случаются огромные задержки)
Вот я тестировал скорость исполнения функций (микросекунды)
OnTick - имеется ввиду CopyTicks из OnTick
Самый быстрый SymbolInfoTick, но в этой функции в тик не вкладывается объем!
Справка
tick [out] Ссылка на структуру типа MqlTick, в которую будут помещены текущие цены и время последнего обновления цен.
Т.е только время и цена, а объема нет :(
Для Биржевых инструментов (особенно для ФОРТС) важна не только цена,
но еще объем контрактов по этой цене!
Попробовал брать стакан по OnTick() - огромные задержки хорошо видные "на глаз"!
Что то вы всё намудрили.
Я же писал ранее, что трейды и левел2, это разные подписки на данные, соответственно это разные событийные обработчики.
По этому трейды нужно вызывать из ОнТик, а банды с объемом из ОнБук.
А вы трейды пытаетесь вызывать из событий ОнБук, а банды из ОнТик. При этом думая, что для трейдов ОнБук будет быстрее.
Не будет он быстрее, мне кажется это заблуждение, сравнивать два обработчика событий, предназначенные каждый под свой поток данных.
Я понимаю что это всё эксперименты, но не понимая логики что приходит два потока данных (трейды и левел2), вы бесконечно будете путаться в этих обработчиках ОнТик и ОнБук.