Изменение размера шага цены в тестере стратегий - страница 2

 
TKAworkflow:

Я возможно что-то не понимаю, но как это может помочь ведь при отправке ордера валидность цены все-равно будет проверяться по шагу цены который указан в спецификации инструмента? Собственно мой вопрос и заключался в том можно ли как-то в процессе тестирования редактировать цифры из этой спецификации?

Мне знакома эта проблема. Пока решил только наполовину. Т.е создаю custom символы с как можно более маленьким шагом. В тестере все ок. Сообщение об инвалидной цене исчезает. Но все таки нужно написать функцию, которая будет вычислять размер тика по прошлым тикам например.

А вообще не ставь заявки равные open,close,.... ask bid и т.п. проблема должна исчезнуть.

 
TKAworkflow:

Да. Тоже самое на акциях, например для AFLT в 2017 шаг был поднят с 0.01 до 0.05, ROSN в 2014 с 0.01 до 0.05, LKOH в 2016 с 0.1 до 0.5 и т.д. Пускай это одноразовые поднятия шагов для каждого инструмента, но если в стратегии одновременно проверяется портфель инструментов в диапазоне нескольких лет, то согласитесь помнить какой из инструментов в каком году изменил свой шаг цены, чтобы заменить кастомный инструмент со старым шагом на стандартный инструмент с новым шагом - это супер костыль :-)

Мне кажется, что у Вас не правильный подход к тестированию стртегии на ФОРТС.

Вы пытаетесь "прикукрутить" ФОРЕКСные понятия для торговли на бирже.

Если на ФОРЕКС все предельно просто - пара падает и растёт, то на ФОРТС

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

То, что сейчас валидно, не будет работать на истории (вернее будет, но не правильно), учитывая многие факторы из которых

складывается цена фьючерсов.

Я, если мне нужно что-то оттестировать, пишу индикатор, а в нем имитацию сделок, которые

записываются в лог, и тестирую на РЕАЛЬНОМ счёте в реальном времени.

 
Alexey Kozitsyn:

Но... с другой стороны, все перечисленные Вами старые размеры тика кратны новым размерам тика соответствующего инструмента. Это значит, что не должно быть проблем с ценами на всем промежутке истории.

Ну смотрите например инструмент с мин. шагом 0.01 торговался 31.01.2017 по 174.17 и тут 01.02.2017 шаг стал 0.05. Допустим 01.02.2017 необходимо протестировать стратегию на истории до 31.01.2017, где шаг был 0.01 мы хотим поставить лимитный ордер по цене 174.17. Эта цена была реально допустимой 31.01.17. Можно не заморачиваться и просто округлять до шага 0.05(и это в большинстве случаев допустимо) который соответственно действует с 01.02.2017 и ставить лимитник по 174.20 или 174.15 и да проблем никаких на истории нигде возникать не будет. Но если вдруг(для каких-то отдельных случаев) мы захотим поставить лимитник именно по 174.17, то ничего не выйдет т.к. шаг 0.05, хотя эта цена на 31.01.2017 была допустимой. Мой исходный вопрос был именно о таких отдельных случаях, которые возможно у кого-то возникали и этот вопрос был решен.

 
TKAworkflow:

Ну смотрите например инструмент с мин. шагом 0.01 торговался 31.01.2017 по 174.17 и тут 01.02.2017 шаг стал 0.05. Допустим 01.02.2017 необходимо протестировать стратегию на истории до 31.01.2017, где шаг был 0.01 мы хотим поставить лимитный ордер по цене 174.17. Эта цена была реально допустимой 31.01.17. Можно не заморачиваться и просто округлять до шага 0.05(и это в большинстве случаев допустимо) который соответственно действует с 01.02.2017 и ставить лимитник по 174.20 или 174.15 и да проблем никаких на истории нигде возникать не будет. Но если вдруг(для каких-то отдельных случаев) мы захотим поставить лимитник именно по 174.17, то ничего не выйдет т.к. шаг 0.05, хотя эта цена на 31.01.2017 была допустимой. Мой исходный вопрос был именно о таких отдельных случаях, которые возможно у кого-то возникали и этот вопрос был решен.

Для таких случаев, скорее всего, нужно будет писать кастомный символ.

 
prostotrader:

Мне кажется, что у Вас не правильный подход к тестированию стртегии на ФОРТС.

Вы пытаетесь "прикукрутить" ФОРЕКСные понятия для торговли на бирже.

Если на ФОРЕКС все предельно просто - пара падает и растёт, то на ФОРТС

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

То, что сейчас валидно, не будет работать на истории (вернее будет, но не правильно), учитывая многие факторы из которых

складывается цена фьючерсов.

Я, если мне нужно что-то оттестировать, пишу индикатор, а в нем имитацию сделок, которые

записываются в лог, и тестирую на РЕАЛЬНОМ счёте в реальном времени.

Вы имеете весьма смутные представления о моих подходах, понятиях о бирже и на каких счетах я торгую, поэтому не надо оффтопа.

 
workflow:

Вы имеете весьма смутные представления о моих подходах, понятиях о бирже и на каких счетах я торгую, поэтому не надо оффтопа.

Нет проблем.

 
workflow:

При торговле на РФР периодически происходит корректировка шага цены(SYMBOL_TRADE_TICK_SIZE в MQL5) у инструментов.

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

Какие существуют способы решения данного вопроса в MQL5 кроме создания нового кастомного инструмента с заданием у него требуемого шага цены?

Тоже столкнулся с такой проблемой. На демо котировках от mq, только с акциями. Например по lkoh шаг цены 0.5, но в процессе теста встречаются не кратные цены и получаю инвалид прайс. Причем тестировал с начала 2018 года. Какое-то решение нашли кроме кастомного символа? Создавать 30 кастомных символов трудозатратно.
 
Maxim Romanov:
Тоже столкнулся с такой проблемой. На демо котировках от mq, только с акциями. Например по lkoh шаг цены 0.5, но в процессе теста встречаются не кратные цены и получаю инвалид прайс. Причем тестировал с начала 2018 года. Какое-то решение нашли кроме кастомного символа? Создавать 30 кастомных символов трудозатратно.

Нет, но особо и не искал. Самый быстрый способ решить проблему - это не создавать ее себе :)

Для начала пройдитесь по всем символам и выясните даты изменения шага. В этих диапазонах создайте кастомные символы с требуемым шагом. Потом прогоняете стратегию на обычных символах с округлением до текущего шага и периодически сравниваете с прогоном по кастомным символам. Если получаемая разница в результате вас устаивает(в большинстве случаев так и будет), то просто торгуете с округлением. Раз в квартал или полгода обновляете свою базу кастомных символов, если требуется.

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

 
workflow:

Нет, но особо и не искал. Самый быстрый способ решить проблему - это не создавать ее себе :)

Для начала пройдитесь по всем символам и выясните даты изменения шага. В этих диапазонах создайте кастомные символы с требуемым шагом. Потом прогоняете стратегию на обычных символах с округлением до текущего шага и периодически сравниваете с прогоном по кастомным символам. Если получаемая разница в результате вас устаивает(в большинстве случаев так и будет), то просто торгуете с округлением. Раз в квартал или полгода обновляете свою базу кастомных символов, если требуется.

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

Я именно так и сделал, изменил точность котирования, но хотелось бы без костылей тестировать. И я тестирую одновременно 28 инструментов, проблематично получается. Надеюсь MQ учтут эту проблему и поправят в будущем.

 
Maxim Romanov:

Я именно так и сделал, изменил точность котирования, но хотелось бы без костылей тестировать. И я тестирую одновременно 28 инструментов, проблематично получается. Надеюсь MQ учтут эту проблему и поправят в будущем.

Больше года назад писал им об этой проблеме. Торговля и тестирование стратегий видно у них не в приоритете. Судя по последним обновлениям наверное все силы решили бросить на интерфейс.