Имитатор Цен

From FxCodeBaseWiki
(Redirected from Price Simulation/ru)
Jump to: navigation, search

Что Такое Имитатор Цен?

Почему Нельзя Использовать Живые Цены?

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

Однако, во время отладки или бэктестирования может понадобиться прогнать индикатор или стратегию на одном и том же участке рынка несколько раз, чтобы настроить логику (во время отладки) или параметры (во время бэктестирования). Но поскольку реальный рынок постоянно меняется, то каждый раз, когда вы прогоняете индикатор или стратегию, он принимает новый вид. Симуляция цен, наоборот, позволяет использовать индикатор или стратегии на рынке одного и того же вида столько раз, сколько вам может понадобиться.

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

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


Как Это Работает?

Симулятор цен берет исторический период рынка какой-либо валюты (например, в виде файлов Price Data ), а затем симулирует определенное число тиков для каждого бара. Число тиков определяется размерами таймфреймов баров. Для одноминутного таймфрейма для одного бара симулируется 8 тиков. Число тиков для других таймфреймов должно быть кратным числу тиков одноминутного бара. Например, для пятиминутного бара симулируется 40 тиков, для одночасового бара - 480, для однодневного бара - 11,520, для однонедельного бара - 57,600 (5 торговых дней) и так далее. Распределение тиков по бару зависит от того, является ли бар нисходящим или восходящим. В случае с нисходящими барами, кривая тиков сначала идет от цены Open к цене High, затем идет к цене Low и, наконец, к цене Close. В случае с восходящими барами, кривая тиков сначала идет от цены Open к цене Low, затем идет к цене High и, наконец, к цене Close.

Pricesim curvesRU.png


Почему Нельзя Использовать Тиковую Историю?

Теоретически Вы можете. В действительности, за 1 час торговли на инструменте генерируется до 20,000 тиков, а в течение года - 124,800,000 тиков. Это вызывает ряд проблем:

  • в 1,5 Gb;
  • процесс симуляции займет в 41 раз больше времени: тестирование обычной стратегии на данных за один год займет около 30 минут, что делает такие задачи как оптимизация почти бесполезными;
  • если посмотреть на движение реальных цен внутри одноминутного интервала, вы увидите, что в большинстве случаев рынок следует нижеприведенной модели:
Pricesim realRU.png

Как видно, большинство колебаний едва достигают одной десятой пипа и укладываются в размеры спреда. Таким образом, нельзя задавать Stop или Limit ордера, отличающиеся на один пип от цены открытой позиции, или отслеживать эквити и баланс с точностью до 1/10 пипа. Более того, большинство клиентов вообще не получают всех тиков. В худшем случае, когда Интернет работает очень плохо, клиенты могут получать всего только 4 тика в минуту: тики цен открытя, самой высокой, самой низкой и закрытия таймфрейма.

Мы протестировали ряд стратегий на одноминутной тиковой симуляции и на реальном тиковом отрезке. Разница между результатами тестирования оказалась совершенно незначительной.

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

Эта Статья на Других Языках

Language: English  • español • français • русский • 中文 • 中文(繁體)‎