- Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы
- Ошибки, баги, вопросы
- Синхронизация локального времени Windows с сервером МТ5
Админы, Модераторы и Эксперты!
У меня схожий вопрос: Как простестировать советник написанный с использованием OnBookEvent?
Ответьте, пожалуйста, или дайте ссылку если это уже обсуждалось.
А что, нельзя самому проверить?
//+------------------------------------------------------------------+ //| aaa.mq5 | //| Copyright 2020 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020 prostotrader" #property link "https://www.mql5.com" #property version "1.00" // bool is_book; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); if(is_book == false) { return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(symbol == Symbol()) { Print(__FUNCTION__, ": It's work!"); } }
А что, нельзя самому проверить?
Я рад, что вы такой умный и сообразительный. Однако здесь не все обладают одинаковым уровнем знания языка и возможностей терминала. Мой код, как в прочем и ваш, не зашёл в OnBookEvent во время тестирования, я подумал, что где-то мог накосячить вот и задал вопрос.
Если ничего не поменялось в последних билдах, то события по order book в тестере не транслируются. Нужно либо самостоятельно их сохранять в онлайне и потом "воспроизводить" в тестере, либо пользоваться готовыми продуктами, которые это делают.
Станислав, спасибо за совет! Могли бы вы подсказать статью о том как самостоятельно воспроизводить события по order book в тестере, или дать ссылку на готовый продукт? Спасибо
Станислав, спасибо за совет! Могли бы вы подсказать статью о том как самостоятельно воспроизводить события по order book в тестере, или дать ссылку на готовый продукт? Спасибо
Станислав, спасибо за совет! Могли бы вы подсказать статью о том как самостоятельно воспроизводить события по order book в тестере, или дать ссылку на готовый продукт? Спасибо
Ссылки на продукты здесь давать запрещено. Вы можете посмотреть у меня в профиле.
Суть задачи - собирать в онлайне все поступившие таблицы MqlBookInfo в файлы в любом формате. В программах в тестере нужно имитировать вызов события из некой библиотеки, которая читает сохраненные файлы и выдает стаканы в соответствии с временем тика.
Моделирование стакана в тестере можно сделать с применением базы данных.
1. Собираем срезы стакана в базу данных. Каждому срезу назначаем уникальную метку времени, соответствующую времени последнего тика.
2. При моделировании в тестере стратегий получаем из базы данных срез стакана, соответствующий времени тика.
Во вложении пример сборщика срезов стакана, советник моделирующий стакан в тестере и база данных по фьючерсу VTBR-6.20 за 9 июня 2020 г.
(Для тестирования советника или для сбора данных по стакану необходимо положить файл базы данных в общую папку).
Недостатки предложенного варианта: Собираются не 100% срезов стакана, а только те, которые соответствуют самому последнему уникальному тику. Сбор идет по событию OnTick.
Преимущества варианта: Простой и быстрый способ сбора и получения срезов стакана в тестере.
Можно усложнить сбор. Собирать все срезы стакана по событию OnBookEvent. Но в этом случае одному событию OnTick, моделируемому в тестере, может соответствовать несколько срезов стакана.
Нужно будет выбирать какой срез стакана выводить.
Самый сложный способ - это синхронизировать оба потока, поток сделок (событий OnTick) и поток срезов стакана (событий OnBokkEvent) через событие OnTimer.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования