Влияние исходных исторических данных на скорость и точность тестирования.

 

Зависимость цен:

Если вы торгуете в ECN, то ваши Limit-ордера напрямую влияют на цены.
Чистых ECN на том же FOREX нет. Есть ECN/STP-схемы. Где ваши Limit-ордера хранятся во внутренней ECN аггрегатора, при этом учитывается ликвидность внешних провайдеров ликвидности.
Например, вы выставили BuyLimit, это обозначает, что в используемом вами аггрегаторе Bid цена будет ограничена снизу уровнем вашего BuyLimit-ордера. И ваш BuyLimit-ордер будет, соответственно, исполнен при нулевом-"отрицательном" спреде в ECN/STP аггрегаторе
Проще говоря, выставляя Limit-ордера вы напрямую оказываете влияние на Low Bid и High Ask цены. Это касается только ECN/STP аггрегаторов. В более простых STP-аггрегаторах такого эффекта наблюдаться не будет.
Но в конце-концов, любой даже простой STP аггрегатор имеет среди своих провайдеров ликвидности более крупные аггрегаторы, которые работают по схеме именно ECN/STP.
Главный вывод из вышесказанного простой: цены Low Bid и High Ask являются зависимыми. И, соответственно, ориентироваться по ним в своих стратегиях странно. Тоже самое касается и спреда.
Есть и обратная сторона, цены High Bid и Low Ask являются независимыми. Соответствено, ориентирование на них в своих стратегиях является предпочтительным.


OHLC Bid + Avg Spread VS OHLC Bid + OHLC Ask:

Формат хранения данных OHLC Bid + Avg Spread:
Из независимых цен хранится только одна - High Bid. При этом наблюдается полная дискриминация к Ask-ценам - моделируются.
Данным форматом пользуется MT5.
Формат хранения данных OHLC Bid + OHLC Ask:
При таком формате хранятся обе независимые цены. При этом Bid и Ask-цены являются равноправными.

Данным форматом (не реклама) пользуются Dukascopy и FXCM.


Все вышеприведенные платформы используют соответствеющие форматы хранения ценовых данных в своих тестерах/оптимизаторах.
Тестер в формате OHLC Bid + OHLC Ask всегда по точности превосходит тестер OHLC Bid + Avg Spread по причине большего количества ценовых данных в своем формате.
Более того, даже более простой формат High Bid + Low Ask (всего два значения) превосходит по точности OHLC Bid + Avg Spread (5 значений).


Моделирование тиков:

Моделирование внутрибаровых (M1) тиков является довольно бесполезным занятием. Простым доказательством этому может служить скрипт FastHistory, который дает ускорения в десятки раз на модели "все тики", при совершенно идентичном результате. Если, конечно, нет открытий-закрытий позиций внутри моделируемого бара, что заведомо является самообманом.


Необходимость тиковой истории:

Есть мнение, что необходима тиковая история для наиболее точного моделирования. Конечно, при наличии такой истории результат тестирования будет наиболее точным. Но, как оказывается, для этого вовсе нет надобности хранить всю тиковую историю.

Такой же результат будет, если применить тиковый фильтр (отсеивающий бесполезные тиковые данные, можно увидеть там же). Это говорит о том, что можно не только уменьшить тиковую историю, но еще и значительно ускорить тестирование. Тот же фильтр можно применить и "по ценам открытия".

На практике точность модели M1 OHLC Bid + OHLC Ask (и даже M1 High Bid + Low Ask) в огромном количестве типе стратегий совпадает с моделью, использующей тиковую историю. При этом разница в скорости тестирования измеряется порядками. Целесообразность тестирования по тиковой истории видится только в случае стратегий определенной ниши...


Целесообразность использования модели "все тики":


Для моновалютных советников использование модели "все тики" является бессмысленным. Вы можете значительно повысить скорость почти при той же точности, перейдя на модель "по ценам открытия".
Единственный случай, когла модель "все тики" может оказаться не бессмысленной - это мультивалютная торговля. Но это лишь в том случае, если мультивалютные тики моделируются без возможности арбитражных ситуаций.

P.S.

Бездумная оптимизация советников грузит облако бесполезными задачами, которые не только уменьшают вычислительную мощь для полезных задач, но также выкидывают на ветер деньги тестирующего.
Полезно использовать в своих стратегиях помимо OHLC Bid еще и OHLC Ask данные. Также всегда имеется возможность написать на том же MQL5 свой тестер по принципу OHLC Bid + OHLC Ask (или более простой: High Bid + Low Ask), который тоже сможет пользоваться вычислительной мощностью облака. Но который даст значительно точные результаты, нежели тестер по схеме OHLC Bid + Avg Spread.
Имеет смысл использовать исторический фильтр баров для своего тестера.
Ориентирование в стратегиях на независимые цены (High Bid и Low Ask) целесообразно с точки зрения ценообразования.
 

Формирование цВР:

Есть, как минимум, две модели формирования исторических баров в виде цВР (ценовой временной ряд):


Потиковый:
Новый бар формируется с приходом первого тика на соответствующем бару временном интервале.
Такая модель используется в MT4 и MT5.

Временной:
Новый бар формируется с наступлением соответствующему данному бару временного интервала.

Потиковая VS Временная:

Временные бары разных символов всегда синхронизированы по Open Price (текущая цена в тестере) и Close Price.
Потиковые - только по Close Price.

Синхронизация исторических баров:

Качество тестера характеризуется совпадением результатов тестирования и реальной торговли на одном и том же интервале времени.
Выше было сказано, что тестер на модели OHLC Bid + OHLC Ask показывает результаты лучше, чем на модели OHLC Bid + Open Spread.

Речь шла в большей степени о торговле (и анализе) на одном символе. И почти ничего не было сказано о мультисимвольной торговле и синхронизации.

Результаты тестера будут наилучшими, если исторические данные будут синхронизированы.


Моносимвольная торговля (анализ):

В MT4 и MT5 некоторые брокеры предоставляют Ask-бары. Но нужно убедиться, чтобы Bid и Ask-бары были синхронизированы. В MT4 и MT5 это достигается транслированием Ask-символа с "перевернутым" спредом:
Bid-цена Bid-символа = Bid.
Ask-цена Bid-символа = Ask.
Bid-цена Ask-символа = Ask.
Ask-цена Ask-символа = Ask + Ask - Bid.

Такой способ позволяет в MT4 и MT5 синхронизировать Bid и Ask-символы одного символа-"родителя". Что дает максимально-возможную точность тестера на модели OHLC Bid + OHLC Ask.

Мультисимвольная торговля (анализ):

Для баров, сформированных по временной модели, все довольно просто (привычно) - тестер "по ценам открытия" на модели OHLC Bid + OHLC Ask покажет максимально-возможную точность, если в стратегии есть контроль открытия баров.

Для баров, сформированных по потивокой модели, все немного сложнее. Тестер уже должен быть "по ценам закрытия". При этом стратегия должна иметь контроль не открытия, а закрытия бара. Т.е. на момент закрытия бара стратегия должна производить соответствующие торговые действия (анализ). В MT4 и MT5 это достигается созданием события закрытия бара (например, через зацикливание советника в MT4).


Краткий итог для пишущих свой тестер:

Наилучшие показатели тестера для потиковой модели формирования исторических баров (MT4 и MT5) покажет тестер (OHLC Bid + OHLC Ask) "по ценам закрытия" с контролем в стратегии наступления закрытия бара.
Наилучшие показатели тестера для временной модели формирования исторических баров покажет тестер (OHLC Bid + OHLC Ask) "по ценам открытия (закрытия)" с контролем в стратегии наступления открытия (закрытия) бара.
 

Интересно, что никого не заинтересовала эта тема. Наверно до реального депо пока мало у кого доходит.

Я поторговав через квик, понимаю что такое ликвидность. Потому во всех системах присутствует правило.

"Если стоп меньше 20 спредов сигнал на вход отменяется" 

 
St.Vitaliy:

Интересно, что никого не заинтересовала эта тема. Наверно до реального депо пока мало у кого доходит.

Я поторговав через квик, понимаю что такое ликвидность. Потому во всех системах присутствует правило.

"Если стоп меньше 20 спредов сигнал на вход отменяется" 

 

Заинтриговали.

Честно говоря ничего не понял. 

Можете привести конкретный пример проблемы?

В каких системах правило  "Если стоп меньше 20 спредов сигнал на вход отменяется",  в торговой системе (роботе) или на стороне дилера?

Какое отношение тестер имеет к ликвидности? 

 

 
her.human:

Заинтриговали.

Честно говоря ничего не понял. 

Можете привести конкретный пример проблемы?

В каких системах правило  "Если стоп меньше 20 спредов сигнал на вход отменяется",  в торговой системе (роботе) или на стороне дилера?

Какое отношение тестер имеет к ликвидности? 

 

Был у меня опыт в мае 2009го, одну из самых ликвидных бумаг на укр бирже маркет ордером в 40000 грн (это порядка 5куе) уронил почти на 2%. При том что сумма то смешная по сути.

Вот тогда я понял что такое проскальзывание. Спред по бумаге порядка 0,3% был в среднем. Торгуя на рынке не минимальным лотом (оно то клево, как ЛЧИ РТС робот с депо в 2куе лопатит по 1куе профита в день, но если к нему применить не льготные комисы, то имеет место слив) то может случится ситуация -

цена опускается и подходит к уровню стопа. Затем срабатывает селл стоп, но оказывается что желающим купить аж на 1 лот, а приказ то рыночный. Скушали вы один лот пошли искать остальные, к примеру 99. Да в одном пипсе ниже того одного лота стоял ММ с 500 лотами, но он почему-то решил отойти в сторонку и переставил свою заявку ниже на пол процента. Вот вы и закрываетесь об зазевавшиеся отложенные приказы постипенно понижая уровень выхода и ухудшая свое мат ожидание полученное в тестере.

Да, в Банк оф Америка спред 1 цент для 10 дол акции не плохо и по боком стоит ММ в 5 млн дол, потому 20 спредовый стоп наверное многовото. Но для наших акций самое оно.

Скажите акции не форекс, согласен, но тут вы не торгуете, а ищите контрагента на пари. Начнете прибыльно торговать, вам реквоты подсунут, хотите без них, ставьте автопроскальзывание в 5 пунктов старыми. То есть вход+выход+спред = 12 пунктов по евро баксе.

То есть 12 пунктов это ваш минимальный стоп при тестировании в тестере, что бы потом не было разочарований на реале. 

 

Посему для себя нашел простой способ бороться с проскальзыванием, 2 ограничения:

1. стоп должен быть больше 20 спредов (средних)

2. объем моего трейда должен быть не более 1% от оборота свечи рабочего графика (если за час наторговывают 1 млн, то размер моей позы не более 10к)  

Не помещаемся по спреду, делим деньги между системами. Не помещаемся по ликвидности, идем на старший ТФ 

 
St.Vitaliy:

Был у меня опыт в мае 2009го, одну из самых ликвидных бумаг на укр бирже маркет ордером в 40000 грн (это порядка 5куе) уронил почти на 2%. При том что сумма то смешная по сути.

Сейчас с 10К грн. можно и индекс двинуть на 2% (причём, возможность есть почти каждый день, спреды по большинству индексных бумаг зашкаливают)
 
Я проверил данную методику на тестере в МТ4. Да. Она дает правильный результат и можно рекомендовать ее трейдерам и особенно скальперам, которые нуждаются в точных тестах. Правда приведенный скрипт используется для котировок FXOpen, которые транслируют историю цен Аск и Бид. А мне, поскольку я пользуюсь для тестов историей FXCM с Бидами и Асками пришлось несколько его переделать. Хоть методика и несколько трудоемкая, но учитывая что ее писал автор, который сделал +125400% за последний год на реальном счете, в отличии от всезнающих "программеров", которые поют диферамбы неправильным тестерам в МТ4 и в МТ5, - это хоть какой-то выход из создавшегося положения с неправильными тестерами в Метатрейдере и отсутствия истории по ценам Аск, а в МТ5 невозможностью импорта кастомной истории.
 

Реакции ноль. Это что, реально никому не интересно? 

 

Если у кого-то есть QuotesDownloader от FxOpen, скажите какой глубины историю у них можно скачать прежде чем я начну регистрацию и установку этой программы.