Ошибки, баги, вопросы - страница 942

 

stap:

Поскольку вопрос касается тестирования, необходимо учитывать следующее. При тестировании генерируются тиковые последовательности. Тиковые последовательности генерируются исходя из исторических bid-значений 4-х контрольных точек (Open, High, Low и Close). Соответственно, в тестере эксперт обрабывает тики, сгенерированные на основе bid-значений.

Второй момент. На сегодняшний день исторические данные не хранят значения цены last. Достаточно посмотреть табличку из раздела "Справочник MQL5 - Доступ к таймсериям и индикаторам". Среди функций типа  CopyClose() или CopyLow() Вы не найдётё функцию CopyLast(). Соответственно, даже при желании невозможно сгенерировать тиковую последовательность на основе last-значений цены.

Попробуйте посмотреть также статьи Основы тестирования в MetaTrader 5 и Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5

 
Yedelkin:

Поскольку вопрос касается тестирования...


Во-первых, благодарю за оперативный ответ. Ваша информация оказалась полезной для понимания.

Проверил, действительно стоп-приказы срабатываются раньше, чем на графике формируется цена (есть факт заключения реальной сделки), указанная в ордере как цена исполнения, по причине наличия котировок ask и bid, равных цене исполнения ордера.

То есть получается, что терминал контролирует исполнение отложенных ордеров не по ценам совершенных на бирже сделок, а по ценам поступающих котировок на покупку или продажу. По крайней мере в режиме тестирования советников. Поправьте меня, пожалуйста, если я не прав.

Кроме того, решил провести маленький эксперимент. Задача - выяснить исторические значений ask и bid, имеющиеся и используемые для тестирования советников. Вводные: биржа - ФОРТС, сервер - боевой одного из брокеров, инструмент - RIH3, период с 17.12.12 г. по 12.03.13 г., для получения исторических значений ask и bid прогнал в Тестере стратегий советник с кодом (тестирование проводилось в режиме OHLC на М1)

MqlTick last_tick;

if(SymbolInfoTick(Symbol(),last_tick))
     {
      Print(last_tick.time,": Bid = ",last_tick.bid,
            " Ask = ",last_tick.ask,"  Last = ",last_tick.last);
     }
   else Print("SymbolInfoTick() failed, error = ",GetLastError());

Результат оказался интересным. Значения спреда котировок 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? Или это только при тестировании, а при реальных торгах будет как написано в руководстве, т.е. контроль исполнения отложенных ордеров будет осуществляться/осуществляется по цене реально совершенных сделок?

Извиняюсь, что много написал, решил поделиться мыслями, может пригодиться кому для истории...




 
stap: То есть получается, что терминал контролирует исполнение отложенных ордеров не по ценам совершенных на бирже сделок, а по ценам поступающих котировок на покупку или продажу. По крайней мере в режиме тестирования советников. Поправьте меня, пожалуйста, если я не прав.

Знаете, в связи с отсутствием версии платформы для российского фондового рынка работу терминала в режиме биржевого исполнения пока не отслеживал. Но могу сразу предложить разделить вопросы по работе терминала в режиме биржевого исполнения, и работе тестера в режиме биржевого исполнения.

Вот чтобы проверить правильность утверждения про "срабатывание всех типов ордеров по цене Last" при работе терминала в режиме биржевого исполнения попробуйте (не придумал пока ничего лучшего) выставить по несколько отложенных ордеров выше и ниже текущих котировок, а также запустить Ваш код, приведённый выше. И постараться визуально отследить, по каким именно ценам (bid, ask или last) срабатывают ордера.

stap: Задача - выяснить исторические значений ask и bid, имеющиеся и используемые для тестирования советников.  

Вряд ли корректно говорить про "исторические значения ask". Вчера я написал, что тиковая последовательность генерируется исходя из определённых сохранённых bid-значений. Значения же ask, скорее всего, моделируются на основании значений bid'a и спреда. Например, так как Вы тестировали в режиме OHLC на М1, то здесь просто ask==bid+spread.

Природу фьючерса РТС не знаю, поэтому размах "пунктов" прокомментировать не смогу. Но на EURUSD, например, под пунктом понимается значение 0.00001.

stap: Отсюда возникают два вопроса: 

Вы поступите проще. Правильные ответы на вопросы о работе тестера в Вашей ситуации точно знают разработчики. Поэтому найдите в своём профиле раздел "Сервисдеск" и обратитесь с предложением ввести при тестировании/оптимизации возможность обработки отложенных ордеров в режиме биржевого исполнения по ценам last (в соответствии со справкой по МТ5). Опишите немного свою ситуацию и посмотрите ответ. Может быть, всё уже придумано до нас :)

 
Yedelkin: Знаете, в связи с отсутствием версии платформы для российского фондового рынка...


Благодарю за содержательные комментарии и советы!

Брокеры БКС и Открытие уже предлагают возможность совершать сделки на российской бирже (пока только рынок фьючерсов и опционов ФОРТС) через терминал МТ5.

 
stap: Брокеры БКС и Открытие уже предлагают возможность совершать сделки на российской бирже (пока только рынок фьючерсов и опционов ФОРТС) через терминал МТ5.
Высказывание было такое: "в связи с отсутствием версии платформы для российского фондового рынка". Иначе: для российского рынка акций.
 
Подскажите как узнать свой инвесторский пароль если письмо по регистрации от брока утеряно? Спасибо.
 
foton:  Подскажите как узнать свой инвесторский пароль если письмо по регистрации от брока утеряно? Спасибо.  
 Обратиться к брокеру не пробовали?
 
Как поставить блок в личном сообщении?
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Zeleniy:
Как поставить блок в личном сообщении?
От себя самого? ))
 
tol64:
От себя самого? ))

От вас, чтобы при сигнале не включать компьютер и видеть опять лизунов.

Причина обращения: