Особенности языка mql5, тонкости и приёмы работы - страница 28
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Renat Fatkhullin, 2017.03.31 09:10
Используйте ArraySize для динамических объектов и применяйте sizeof только к статическим объектам. Sizeof считается на этапе компиляции и всегда является константой.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) и SymbolIsSynchronized(_Symbol)
Slawa, 2017.04.04 08:05
В экспертах и скриптах при вызове Copy-функций делается несколько попыток - проверяется первая дата на сервере, проверяется первая дата в клиентском терминале, сравнивается с запрошенной датой, проверяется синхронизированность символа, посылается запрос на докачку, небольшое ожидание и по кругу с проверки синхронизированности. Если символ так и не синхронизирован, то отдаётся то, что есть и удовлетворяет условиям запроса. При этом синхронизированность запрошенной таймсерии не проверяется, так как она достраивается на лету в процессе подкачки данных.
В индикаторах делается только один запрос - никакого цикла! Потом сразу же отдаётся всё, что сумели взять.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) и SymbolIsSynchronized(_Symbol)
Slawa, 2017.04.04 08:06
При запросе SymbolInfoDouble всегда отдаются самые свежие данныеВ MT5-тестере в режиме "реальные тики" основой истории являются не реальные тики, а M1-бары. Это значит, что если реальные тики не соответствуют барам, то они игнорятся, а вместо них идет генерация искусственных тиков, которые обязаны будут соответствовать барам.
При этом, если CopyTicks запросить более, чем на 128К крайних штук, то в тестере они возьмутся не из кэша (реальные тики + сгенерированные), а из базы - реальные. И получите несовпадение в тестере же истории тиков и того, что тестер наподставлял.
В MT5-тестере в режиме "реальные тики" основой истории являются не реальные тики, а M1-бары. Это значит, что если реальные тики не соответствуют барам, то они игнорятся, а вместо них идет генерация искусственных тиков, которые обязаны будут соответствовать барам.
При этом, если CopyTicks запросить более, чем на 128К крайних штук, то в тестере они возьмутся не из кэша (реальные тики + сгенерированные), а из базы - реальные. И получите несовпадение в тестере же истории тиков и того, что тестер наподставлял.
Какой ужас! Это действительно так? - в СД писали?
Чему теперь вообще верить, как жить... (почти без грустной иронии)
Какой ужас! Это действительно так? - в СД писали?
При этом, если CopyTicks запросить более, чем на 128К крайних штук,
С какого края ? 128К последних, что ли ?
Или первых ?
С какого края ? 128К последних, что ли ?
Или первых ?
Наиболее свежих.
Какой ужас! Это действительно так? - в СД писали?
Чему теперь вообще верить, как жить... (почти без грустной иронии)
https://www.mql5.com/ru/docs/runtime/testing#real_ticks
При тестировании минутные данные считаются более достоверными.
Минутные бары более достоверны? Разве не тиковые данные последняя инстанция? Зачем вообще нужны реальные тиковые данные, если они не берутся в расчет?
Я раньше по наивности делал так: тестировал на минутках, потом тестировал на тиках, потом на реальных тиках как окончательная прецизионная проверка. Теперь понимаю, что в третьей проверке нет смысла особого.
При тестировании минутные данные считаются более достоверными.
Минутные бары более достоверны? Разве не тиковые данные последняя инстанция? Зачем вообще нужны реальные тиковые данные, если они не берутся в расчет?
Я раньше по наивности делал так: тестировал на минутках, потом тестировал на тиках, потом на реальных тиках как окончательная прецизионная проверка. Теперь понимаю, что в третьей проверке нет смысла особого.
Не нужно вырывать предложение из контекста. Фраза звучит так:
Чтобы обеспечить наибольшую точность при тестировании, в режиме реальных тиков также используются и минутные бары. По ним проверяются и корректируются тиковые данные. Это также позволяет избежать расхождения графиков в тестере и клиентском терминале.
Тестер проверяет соответствие тиковых данных параметрам минутного бара: тик не должен выходить за пределы цен High/Low бара, открывающий и закрывающий минуту тик должен совпадать с ценами Open/Close бара. Также сравнивается объем. При выявлении несовпадения отбрасываются все тики, соответствующие этому минутному бару. Вместо них будут использованы сгенерированные тики (как в режиме "Все тики").
Если в истории символа есть минутный бар, но тиковых данных за эту минуту нет, тестер сгенерирует тики в режиме "Все тики". Это позволяет выстроить правильный график в тестере в случае неполных тиковых данных у брокера.
Если в истории символа нет минутного бара, но тиковые данные за эту минуту есть, они могут быть использованы в тестере. Например, бары биржевых символов формируются по ценам Last. Если с сервера приходят только тики с ценами Bid/Ask без цены Last, бар не будет сформирован. Тестер будет использовать эти тиковые данные, поскольку они не противоречат минутным.
Тиковые данные могут не совпадать с минутными барами по различным причинам. Например, из-за обрывов связи или иных сбоев при передаче данных от источника в клиентский терминал. При тестировании минутные данные считаются более достоверными.