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

 

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

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

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

 
TKAworkflow:

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

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

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

Скорее всего, Вы заблуждаетесь. Ни разу не видел (на ФОРТС) чтобы происходило изменение размера тика. Покажите как Вы нормализуете цену перед отправкой торгового приказа.

 
Alexey Kozitsyn:

Скорее всего, Вы заблуждаетесь. Ни разу не видел (на ФОРТС) чтобы происходило изменение размера тика. Покажите как Вы нормализуете цену перед отправкой торгового приказа.

Ну вот например для Ri было увеличение шага https://www.moex.com/n1518/?nt=0

 
TKAworkflow:

Ну вот например для Ri было увеличение шага https://www.moex.com/n1518/?nt=0

2012 г. Посвежее есть аргументы?)

И это разовое изменение, а не плавающее. Еще раз говорю, покажите как Вы нормализуете цену перед отправкой торгового приказа на сервер. Прямо кодом.

 
Alexey Kozitsyn:

2012 г. Посвежее есть аргументы?)

И это разовое изменение, а не плавающее. Еще раз говорю, покажите как Вы нормализуете цену перед отправкой торгового приказа на сервер. Прямо кодом.

Нормализация здесь не при чем. Вот банально
request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK);

Если например ASK был в этот момент кратен 5 как на Ri в начале 2012, то при текущем шаге Ri в 10 естественно будет ошибка при тестировании 2012 года.

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

И думаю не нужно в данном вопросе акцентировать внимание на том зачем мне понадобилось тестирование на 2012 году, разовое изменение шага цены или не разовое и зачем нужна возможность менять шаг цены. Если завтра биржа скажет, что шаг будет 100 пунктов это будет уже  свежим аргументом, изменение шага уже будет не разовое, но ответа на мой вопрос это так и не даст.

 
TKAworkflow:
Нормализация здесь не при чем. Вот банально

Если например ASK был в этот момент кратен 5 как на Ri в начале 2012, то при текущем шаге Ri в 10 естественно будет ошибка при тестировании 2012 года.

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

И думаю не нужно в данном вопросе акцентировать внимание на том зачем мне понадобилось тестирование на 2012 году, разовое изменение шага цены или не разовое и зачем нужна возможность менять шаг цены. Если завтра биржа скажет, что шаг будет 100 пунктов это будет уже  свежим аргументом, изменение шага уже будет не разовое, но ответа на мой вопрос это так и не даст.

Ок, про нормализацию и округление Вы знаете - хорошо. Получается, что ошибки у Вас идут только в 2012 году и ранее?

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

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


Не выдумывайте, ничего не корректируется.


 
Alexey Kozitsyn:

Ок, про нормализацию и округление Вы знаете - хорошо. Получается, что ошибки у Вас идут только в 2012 году и ранее?

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

 
TKAworkflow:

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

Ну зачем же помнить. Нужно один раз один включаемый файл создать и прописать там константами размеры тика (старые). И даты, после которых меняется размер тика. Как-то так... и его в тестах использовать. Да костыль, но раз правила меняются... 

 
Alexey Kozitsyn:

Ну зачем же помнить. Нужно один раз один включаемый файл создать и прописать там константами размеры тика (старые). И даты, после которых меняется размер тика. Как-то так... и его в тестах использовать. Да костыль, но раз правила меняются... 

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

 
TKAworkflow:

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

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

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