![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
stap:
Поскольку вопрос касается тестирования, необходимо учитывать следующее. При тестировании генерируются тиковые последовательности. Тиковые последовательности генерируются исходя из исторических bid-значений 4-х контрольных точек (Open, High, Low и Close). Соответственно, в тестере эксперт обрабывает тики, сгенерированные на основе bid-значений.
Второй момент. На сегодняшний день исторические данные не хранят значения цены last. Достаточно посмотреть табличку из раздела "Справочник MQL5 - Доступ к таймсериям и индикаторам". Среди функций типа CopyClose() или CopyLow() Вы не найдётё функцию CopyLast(). Соответственно, даже при желании невозможно сгенерировать тиковую последовательность на основе last-значений цены.
Попробуйте посмотреть также статьи Основы тестирования в MetaTrader 5 и Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5.
Поскольку вопрос касается тестирования...
Во-первых, благодарю за оперативный ответ. Ваша информация оказалась полезной для понимания.
Проверил, действительно стоп-приказы срабатываются раньше, чем на графике формируется цена (есть факт заключения реальной сделки), указанная в ордере как цена исполнения, по причине наличия котировок ask и bid, равных цене исполнения ордера.
То есть получается, что терминал контролирует исполнение отложенных ордеров не по ценам совершенных на бирже сделок, а по ценам поступающих котировок на покупку или продажу. По крайней мере в режиме тестирования советников. Поправьте меня, пожалуйста, если я не прав.
Кроме того, решил провести маленький эксперимент. Задача - выяснить исторические значений ask и bid, имеющиеся и используемые для тестирования советников. Вводные: биржа - ФОРТС, сервер - боевой одного из брокеров, инструмент - RIH3, период с 17.12.12 г. по 12.03.13 г., для получения исторических значений ask и bid прогнал в Тестере стратегий советник с кодом (тестирование проводилось в режиме OHLC на М1)
Результат оказался интересным. Значения спреда котировок ask и bid оказалось постоянным и равнялось от 10 до 340 пунктов в разные отрезки времени. Например, с 10:00:00 20.02.13 по 18:49:59 25.02.13 спред на каждом тике составлял 140 пунктов, а с 19:00:00 25.02.13 до 18:44:59 26.02.13 был 30 пунктов, далее с 19:00:00 26.02.13 до 18:49:59 в каждый тик спред равнялся 270 пунктов и т. д. Я конечно не мамонт фондового рынка, но спреды 140, 270 и более пунктов на ликвидном фьючерсе РТС - это большая редкость.
Вобщем вывод у меня один - в целях тестирования советников в Тестере стратегий терминал MT5/брокер/биржа (уж не знаю кто может быть еще) предлагает точно не исторические значения цен ask и bid.
Отсюда возникают два вопроса:
1. Как достоверно оттестировать советника (=торговую стратегию), если отложенные ордера будут исполняться в режиме тестирования по ценам ask и bid да еще не соответствующим реальным значениям. Работая до этого на ФОРТС в терминале Quik вообще имеется твердое убеждение, что отложенные ордера должны срабатывать не по ценам котировок ask и bid (= ценам по которым не было сделок. к примеру по малоликвидному инструменту я вообще могу послать в стакан цену с огромным спредом), а только если по цене, указанной в ордере как цена исполнения, на бирже совершена реальная сделка.
2. Если в режиме тестирования цены ask и bid не являются исторически достоверными, то по каким ценам будет контролироваться исполнение отложенных ордеров в режиме реальных торгов - тоже по ценам ask и bid? Реальным и достоверным, т.е. приходящим с биржи? И если в руководстве к терминалу написано, что "Для инструментов с режимом "Биржевое исполнение" срабатывание всех типов ордеров осуществляется по цене Last (цена последней совершенной сделки).", то почему тогда в режиме тестирования по инструментам с режимом биржевого исполнения в свойствах, наступление условий исполнения отложенных ордеров происходит по bid и ask? Или это только при тестировании, а при реальных торгах будет как написано в руководстве, т.е. контроль исполнения отложенных ордеров будет осуществляться/осуществляется по цене реально совершенных сделок?
Извиняюсь, что много написал, решил поделиться мыслями, может пригодиться кому для истории...
Знаете, в связи с отсутствием версии платформы для российского фондового рынка работу терминала в режиме биржевого исполнения пока не отслеживал. Но могу сразу предложить разделить вопросы по работе терминала в режиме биржевого исполнения, и работе тестера в режиме биржевого исполнения.
Вот чтобы проверить правильность утверждения про "срабатывание всех типов ордеров по цене Last" при работе терминала в режиме биржевого исполнения попробуйте (не придумал пока ничего лучшего) выставить по несколько отложенных ордеров выше и ниже текущих котировок, а также запустить Ваш код, приведённый выше. И постараться визуально отследить, по каким именно ценам (bid, ask или last) срабатывают ордера.
Вряд ли корректно говорить про "исторические значения ask". Вчера я написал, что тиковая последовательность генерируется исходя из определённых сохранённых bid-значений. Значения же ask, скорее всего, моделируются на основании значений bid'a и спреда. Например, так как Вы тестировали в режиме OHLC на М1, то здесь просто ask==bid+spread.
Природу фьючерса РТС не знаю, поэтому размах "пунктов" прокомментировать не смогу. Но на EURUSD, например, под пунктом понимается значение 0.00001.
Вы поступите проще. Правильные ответы на вопросы о работе тестера в Вашей ситуации точно знают разработчики. Поэтому найдите в своём профиле раздел "Сервисдеск" и обратитесь с предложением ввести при тестировании/оптимизации возможность обработки отложенных ордеров в режиме биржевого исполнения по ценам last (в соответствии со справкой по МТ5). Опишите немного свою ситуацию и посмотрите ответ. Может быть, всё уже придумано до нас :)
Благодарю за содержательные комментарии и советы!
Брокеры БКС и Открытие уже предлагают возможность совершать сделки на российской бирже (пока только рынок фьючерсов и опционов ФОРТС) через терминал МТ5.
Как поставить блок в личном сообщении?
От себя самого? ))
От вас, чтобы при сигнале не включать компьютер и видеть опять лизунов.