По этим двум функциям работа не проведена до конца.
Возможно методы допилены, но история при этом может оказаться неправильная. В итоге надеяться на правильность данных возвращенных методами нельзя.
В ветке https://www.mql5.com/ru/forum/251579 писали, уточняли какой сервер.. Но как бы не важно какой сервер, мы знаем что кухни могут творить что им вздумается.
Хотя может и есть методы проверяющие правильность тиковых данных.. (если кто знает, то напишите, пожалуйста).
Решение пока в реалтайме копить тики и оперировать только ими. Понятно что это совсем неудобно во многих случаях..
Может утопия, а может вдруг и нет: сделать бы такую штуку опциональную на серверной стороне, какие то проверки от кухонности, от шпилек, от потери ликвидности, от подмены истории. И если компания включила эту опцию - значит это плюс к честности и в терминале есть какой нить яркий флажок символизирующий об этом. А если не купила контора эту опцию, то флажка нет - все котируется и торгуется как обычно..
ну, насчет кухонности, протерстировал на 4х брокерах, первые 2 дают покупать реальные американские акции, не CFD
- Just2Trade
- Admiral Markets - здесь CopyTicks всегда возвращает 0, тиков вообще нет
- FXChoice
- IFC Markets
ну, насчет кухонности, протерстировал на 4х брокерах, первые 2 дают покупать реальные американские акции, не CFD
1. Just2Trade
2. Admiral Markets - здесь CopyTicks всегда возвращает 0, тиков вообще нет
3. FXChoice
4. IFC Markets
если CopyTicks возвращает неправильные данные, то получается и "Тестирование на реальных тиках" всегда врет?Например, на демо от метаквотов, да - врет. Ну и на других в момент подмены истории очевидно тоже получается не очень..
Конечно, можно накидать пару своих каких то тестов, типа того что брать несколько баров и сравнить их размеры с тем что получено через вышеуказанными функциями - если совпало хорошо, иначе история не лучшего качества или не синхронизирована..
чтобы избежать ошибок с человеческим фактором
- упростил индикатор до 50 строк
- убрал даты
- запрашиваю, только последние 1000 тиков
на скрине видно, что в обзоре рынка последний тик пришел в 13:09:10, в CopyTicks самый новый тик 21:29:26
графики отличаются и "на глаз" и по значениям Ask / Bid выведенным в консоли
чтобы избежать ошибок с человеческим фактором
- упростил индикатор до 50 строк
- убрал даты
- запрашиваю, только последние 1000 тиков
на скрине видно, что в обзоре рынка последний тик пришел в 13:09:10, в CopyTicks самый новый тик 21:29:26
графики отличаются и "на глаз" и по значениям Ask / Bid выведенным в консоли
Вы явно что-то намудрили в своем коде. И он показывает явно ошибочные данные.
Вот проверочный код в виде скрипта:
void OnStart() { MqlTick items[]; uint count=CopyTicks(Symbol(),items,COPY_TICKS_ALL,0,10); if(count>0) ArrayPrint(items); }Вот его вывод:
2018.06.30 23:01:08.882 test (EURUSD,M1) [time] [bid] [ask] [last] [volume] [time_msc] [flags] 2018.06.30 23:01:08.882 test (EURUSD,M1) [0] 2018.06.29 23:59:00 1.16832 1.16845 0.0000 0 1530316740514 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [1] 2018.06.29 23:59:00 1.16835 1.16848 0.0000 0 1530316740622 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [2] 2018.06.29 23:59:01 1.16833 1.16846 0.0000 0 1530316741594 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [3] 2018.06.29 23:59:01 1.16832 1.16845 0.0000 0 1530316741935 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [4] 2018.06.29 23:59:02 1.16833 1.16846 0.0000 0 1530316742168 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [5] 2018.06.29 23:59:02 1.16835 1.16848 0.0000 0 1530316742270 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [6] 2018.06.29 23:59:02 1.16834 1.16847 0.0000 0 1530316742365 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [7] 2018.06.29 23:59:03 1.16823 1.16836 0.0000 0 1530316743176 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [8] 2018.06.29 23:59:03 1.16828 1.16841 0.0000 0 1530316743333 134 2018.06.30 23:01:08.882 test (EURUSD,M1) [9] 2018.06.29 23:59:03 1.16831 1.16844 0.0000 0 1530316743548 134
А вот тиковый график, который полностью совпадает с результатами распринтовки выше:
При этом ваш индикатор показывает откровенно ошибочные данные на том же EURUSD M1, MetaQuotes-Demo:
Причем вам в CopyTicks отдаются абсолютно верные данные и вы их даже распечатываете. Если уменьшить количество запрашиваемых тиков до 10, чтобы не мусорить в логи, то ваш код показывает правильные данные Bid/Ask как с тикового чарта в обзоре рынка:
2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 0 Date: 2018.06.29 23:59:03 Ask: 1.16844 Bid: 1.16831 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 1 Date: 2018.06.29 23:59:03 Ask: 1.16841 Bid: 1.16828 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 2 Date: 2018.06.29 23:59:03 Ask: 1.16836 Bid: 1.16823 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 3 Date: 2018.06.29 23:59:02 Ask: 1.16847 Bid: 1.16834 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 4 Date: 2018.06.29 23:59:02 Ask: 1.16848 Bid: 1.16835 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 5 Date: 2018.06.29 23:59:02 Ask: 1.16846 Bid: 1.16833 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 6 Date: 2018.06.29 23:59:01 Ask: 1.16845 Bid: 1.16832 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 7 Date: 2018.06.29 23:59:01 Ask: 1.16846 Bid: 1.16833 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 8 Date: 2018.06.29 23:59:00 Ask: 1.16848 Bid: 1.16835 2018.06.30 23:10:52.874 Ticks__1 (EURUSD,M1) Tick #: 9 Date: 2018.06.29 23:59:00 Ask: 1.16845 Bid: 1.16832
Не понимаю каким магическим образом, но сейчас все работает правильно и для US Stocks, и для Forex, как на реале, так и на демо, как в скрипте, так и в индикаторе...
Хотя ... иногда тиковый график в обзоре рынка отличается ...
- при включенном Auto Scroll он иногда неправильный
- при отключенном Auto Scroll график = CopyTicks
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
3. почему CopyTicks возвращает последние тики в 23:59:45, а в обзоре рынка они приходят до 12:01:44