Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А может для реал тайм, вместо
использовать
Зачем копировать, если можно сразу получить текущую цену?
В теории, CopyTicks в своих потрохах, имеет дополнительные проверки параметров, чем увеличивает длину кода в теле функции.
А SymbolInfoTick не имеет дополнительных параметров, и по идее реализация данной функции должна содержать меньше кода.
Меньше кода - быстрее выполнение.
Единственно что плохо, по функции SymbolInfoTick нет подробной документации, как у CopyTicks, и до конца не ясно как она работает.
Кэширует, или сразу отдаёт сырец то что пришло.
Сразу отдает только стакан, остальное всё проходит доп. проверки.
Подробную документацию никто не раскроет - это тайна за 7 печатями )))
Сразу отдает только стакан, остальное всё проходит доп. проверки.
Подробную документацию никто не раскроет - это тайна за 7 печатями )))
SymbolInfoTick() в принципе не может отдавать стакан, наверно имелось ввиду BestBid, BestAsk.
А разве структура MqlTick не заполняется полностью по мимо BestBid, BestAsk ?
Почему вы решили, что для остальных членов структуры нужна доп. проверка?
А если необходимо получить полный стакан по всем бандам, нужно использовать
Возвращает массив структур MqlBookInfo, содержащий записи стакана цен указанного символа.
SymbolInfoTick() в принципе не может отдавать стакан, наверно имелось ввиду BestBid, BestAsk.
А разве структура MqlTick не заполняется полностью по мимо BestBid, BestAsk ?
Почему вы решили, что для остальных членов структуры нужна доп. проверка?
А если необходимо получить полный стакан по всем бандам, нужно использовать
Возвращает массив структур MqlBookInfo, содержащий записи стакана цен указанного символа.
Не понимаю о чем вы.
OnBook и OnTick это разные потоки, если MQ их синхронизировало это очень плохо.
Судя по приведенной мной картинке выше они не полностью синхронизированы.
Так же внушает доверия тест fxsaber:
Результат плохой: в OnTick/OnBookEvent тики, полученные разными способами, очень часто не совпадают прямо внутри одной On-функции. При этом невозможно определить, в какой функции какой метод получения тика актуальный, а в какой - нет. Жуткая неопределенность.
Поэтому, кому что:
- если нужны лучшие цены - OnBook,
- если нужна лента сделок - CopyTick,
- а если ничего не нужно - OnTick, он может пропускать тики и задерживать поток информации, т.к. работает в одном процессе в очереди с другими On функциями.
p.s. всё что написал здесь касается только биржевых счетов, форексникам всё пофиг (никакой разницы), форексники проходите мимо.
На секунду показалось, что у вас есть желание разобраться и оно поможет усмирить гордыню.
Нет, только показалось.
В целом, вопрос раскрыт, и любой желающий сможет посмотреть и ваш, и fxsaber-а и мой коды, и сделать выводы.
С вами диалог прекращаю, ничего кроме громких криков от вас не исходит, а на прием информации ваш мозг вообще не работает.
Удачи на ФОРТСЕ.
Андрей!
Вы напрасно обидились на мои высказывания о ФОРЕКСниках, они не имеют никакого отношения к Вам.
У нас с Вами всегда были конструктивные диалоги, но если это как-то задело Вас, то
приношу лично Вам свои извинения!
Не понимаю о чем вы.
OnBook и OnTick это разные потоки, если MQ их синхронизировало это очень плохо.
Из моих последних тестов (после исправления ошибки в коде),
очень хорошо видно, что OnTick() срабатывает или раньше или в тоже время, что и OnBookEvent(),
но в принтах OnTick() всегда первый.
Думается, что когда приходит новый пакет тиков,
то функция, обрабатывающая их, сначала "дергает" OnTick(), а потом уже "распихивает" данные
куда нужно :)
А может для реал тайм, вместо
использовать
Зачем копировать, если можно сразу получить текущую цену?
А Вы для какого рынка интересуетесь?
Из моих последних тестов (после исправления ошибки в коде),
очень хорошо видно, что OnTick() срабатывает или раньше или в тоже время, что и OnBookEvent(),
но в принтах OnTick() всегда первый.
Думается, что когда приходит новый пакет тиков,
то функция, обрабатывающая их, сначала "дергает" OnTick(), а по том уже "распихивает" данные
куда нужно :)
Да, примерно так же думаю.
Терминал асинхронный однопоточный, по очереди обрабатывает все события.
Для чистоты эксперимента, кто быстрее OnBook или OnTick, надо запускать два терминала у одного брокера.
В одном советнике только OnBook без OnTick.
В другом только OnTick без OnBook.
И складывать цены, с локальным временем в миллисекундах, в один файл. Тогда будет видна реальная разница.
Иначе, без биржевого времени стакана, разницу не понять.
Да, примерно так же думаю.
Терминал асинхронный однопоточный, по очереди обрабатывает все события.
Для чистоты эксперимента, кто быстрее OnBook или OnTick, надо запускать два терминала у одного брокера.
В одном советнике только OnBook без OnTick.
В другом только OnTick без OnBook.
И складывать цены, с локальным временем в миллисекундах, в один файл. Тогда будет видна реальная разница.
Иначе, без биржевого времени стакана, разницу не понять.
Нет проблем, в понедельник попробую запустить (у меня три терминала на реале).
Не понимаю о чем вы.
OnBook и OnTick это разные потоки, если MQ их синхронизировало это очень плохо.
Судя по приведенной мной картинке выше они не полностью синхронизированы.
Так же внушает доверия тест fxsaber:
Поэтому, кому что:
- если нужны лучшие цены - OnBook,
- если нужна лента сделок - CopyTick,
- а если ничего не нужно - OnTick, он может пропускать тики и задерживать поток информации, т.к. работает в одном процессе в очереди с другими On функциями.
p.s. всё что написал здесь касается только биржевых счетов, форексникам всё пофиг (никакой разницы), форексники проходите мимо.
Речь была за SymbolInfoTick, вы написали, что " Сразу отдает только стакан, остальное всё проходит доп. проверки"
Я привел структуру MqlTick, чтоб показать вам из чего она состоит, там нет стакана, там только лучшие цены. И ни каких доп проверок там нет.
По этому я удивился от написанного вами, наверно неправильно изложили мысль.
OnBook и OnTick по идее это разные сокеты, так как в любых биржевых протоколах трейды идут в одном сокете, а Level2(стакан) в другом.
Из этого следует, что в сокет OnTick приходят только лучшие bid ask last и т.д по структуре. По этому для OnTick свой обработчик.
Для Level2 другой сокет, и соответственно у него другой обработчик. По идее они не должны быть синхронизированы принудительно на стороне терминала.
Да всё верно, кому что нужно тот то и использует, трейды в SymbolInfoTick или CopyTick, стакан в MarketBookGet.
А Вы для какого рынка интересуетесь?
Дилинговый форекс не использую.
Вы же в примере из CopyTick получаете только один последний элемент структуры, по сути только лучшие цены.
Вот и подумалось, зачем копировать данные из одной области памяти в другую область,
когда есть SymbolInfoTick который отдает лучшие цены, не куда не копируя. Возможно я и ошибаюсь, как работают функции, это только мои догадки.
Хотя всё может быть, что эти две функции работают одинаково, разница только в том что CopyTick может запрашивать диапазон тиков.
И циклами пользоваться для обработки тиков, это лишнее.