Какой период лучше использовать для расчета исполнения ордеров?



История изменений

23.08.2016 Материал дополнен и переработан.
23.01.2014 Дополнение относительно частоты котирования золота.
25.12.2013  Сделан перерасчет примеров работы параболической стратегии без учета издержек (спред, свопы).
22.12.2013  Материал дополнен текстом из статьи "Золотая волатильность" и примерами настройки МТС с использованием тиковых данных.

Введение.

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

Чем более волатилен актив, чем чаще расширяются спреды, чем меньше расстояние между одновременно устанавливаемым стопом и лимитом, тем больше оснований для проверки результатов работы торговой стратегии на базе тиковой истории. Например, если для EUR цель ставится в районе 15 пунктов Fоrexite и стоп в районе 10 пунктов Fоrexite, тестирование на тиковой истории будет крайне полезно. Если же стоп ставится в размере 60 пунктов, а лимит отстоит от него на 360 пунктов, тестирование на тиковой истории будет менее актуально.

Для выбора минимального периода для расчета исполнения ордеров внутри бара необходимо учитывать не только расстояние между стопом и лимитом, но и волатильность актива, с которой связано исполнение с проскальзываниями. Например, с 2008 года волатильность золота резко возросла. Если ранее при расстояние в 100 пунктов Fоrexite между стопом и лимитом можно было проводить расчет на базе одноминутных баров, то после 2008 года проскальзывание в дилинговых центрах может составлять более 140 пунктов Fоrexite. В итоге при тестировании на одноминутных барах не будет учтено значительное реальное проскальзывание, которое легко может делать прибыльную стратегию убыточной.

Для примера можно взять работу на пробоях уровней поддержки/сопротивления для золота. Расчет на базе минутных баров, в течение каждого года на интервале [2009-2013], имел отличия от расчета на базе тиков. Причиной тому служили проскальзывания, которые не видны торговой платформе на минутных барах, так как они происходили внутри минутного бара.

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

Для экономии времени на расчетах, минимальный шаг бара для торговой стратегии лучше выбирать методом перехода от тикового периода к большим периодам. Например, у нас есть торговая стратегия, торгующая на четырехчасовых барах. Сначала проверяем ее работу с исполнением ордеров на базе тиков. Затем на базе минутных баров, затем на базе 5 минутных. И так далее. Если значительных различий при увеличении периода нет, для черновых расчетов можно взять наибольший период, дающий результаты наиболее приближенные к расчету на базе тиков. Окончательную проверку и настройку параметров надо будет проверить на базе тиковой истории.

Такие платформы как TradeStation, ProSuite, MultiCharts позволяют пользователю полностью управлять выбором данных, на которых тестируется стратегия. Расчет исполнения ордеров может выполняться как на базе только тех баров на которых работает стратегия, так и на базе более мелких периодов.

Наиболее распространенная на Forex платформа MetaTrader 4 не позволяет по умолчанию тестировать стратегии на базе тиковой истории с использованием возможностей терминала. Трейдеры, которые торгуют с малыми целями, оптимизируют свои стратегии на базе минутной истории с эмуляцией тиков. Когда начинается реальная торговля, реальные результаты начинают отличаться от виртуальных. Причиной тому служат проскальзывания и расширения спредов, которые не учитываются во время оптимизации торговой стратегии с использованием "творчески" разработанного эмулятора тиков. Именно по этой причине трейдеры были вынуждены взламывать MetaTrader 4, чтобы заставить его проводить тестирование на базе тиков.

Итоги расчетов 2016.

Расчеты не закончены, поэтому публикую актуальную на момент обновления статьи информацию. По мере проведения расчетов статья будет обновляться.
 
Пока наиболее критичны издержки из-за проскальзываний для стратегий, которые входят на пробоях значимых уровней поддержки/сопротивления. Текущие расчеты на базе тиковой истории Альпари дают следующие результаты:
  • Для EURUSD и GBPUSD проскальзывания на разных типах ECN-счетов незначительны. Для расчетов вполне достаточно минутной истории.
  • Для золота проскальзывания составляют достаточно значительный объем. Я увеличиваю издержки на каждую сделку на 0.500 пунктов (три знака после точки). Такой объем издержек позволяет получить адекватные итоги во время расчетов без использования тиковой базы.

Итоги расчетов 2013.

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






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

Пример, разрыв на новостях в ECN-платформе Dukascopy:


И аналогичный момент на фьючерсе:


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

В дилинговых центрах, которые работают не как ECN-площадки, а как меркет мейкеры (кухни), котировки генерируют котирующие алгоритмы. Чем реже алгоритмом выдаются котировки, тем больше шанс получить проскальзывание во время быстрых изменений цен. Обратная сторона медали - чем чаще выдаются котировки, тем труднее будет войти по хорошей цене по рынку, так как частые реквоты будут вынуждать согласиться на открытие по той цене, которая дается и быстро меняется. Как правило, трейдеры соглашаются на худшее исполнение, так как боятся остаться вообще без сделки или получить со временем еще худшую цену.

Открытие позиции с проскальзыванием по худшей цене выгодно дилинговым центрам, так как размер стопа увеличивается. Зато фиксация прибыли, как правило, происходит по заявленной цене ордера и на проскальзывании дилинговый центр дополнительных денег не теряет. Поэтому сейчас проскальзывание - это проблема трейдера, а не дилингового центра.

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

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

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


Далее те же настройки, но с учетом исполнения на базе тиковой истории.

Список проскальзываний во время исполнения отложенных ордеров:

07.01.2011 16:30   OrderBuy 1371.4 EntryPrice 1372.7 Slippage: -1.3
13.01.2011 08:00  OrderSell 1385.5 EntryPrice 1385.3 Slippage: -0.2
17.01.2011 17:30  OrderSell 1359.7 EntryPrice 1359.5 Slippage: -0.2
24.01.2011 00:30   OrderBuy 1343.3 EntryPrice 1343.7 Slippage: -0.4
24.01.2011 08:30  OrderSell 1350.5 EntryPrice 1350.3 Slippage: -0.2
26.01.2011 00:30  OrderSell 1331.7 EntryPrice 1327.4 Slippage: -4.3
31.01.2011 05:30  OrderSell 1336.2 EntryPrice 1336.0 Slippage: -0.2
09.02.2011 00:30  OrderSell 1360.6 EntryPrice 1356.2 Slippage: -4.4
11.02.2011 01:30   OrderBuy 1364.9 EntryPrice 1365.1 Slippage: -0.2
11.02.2011 06:30  OrderSell 1360.8 EntryPrice 1360.5 Slippage: -0.3
18.03.2011 10:30  OrderSell 1411.4 EntryPrice 1410.7 Slippage: -0.7
20.03.2011 23:30   OrderBuy 1423.6 EntryPrice 1424.4 Slippage: -0.8
30.03.2011 06:00  OrderSell 1417.0 EntryPrice 1416.4 Slippage: -0.6
01.04.2011 17:00  OrderSell 1426.7 EntryPrice 1421.1 Slippage: -5.6
12.04.2011 18:30  OrderSell 1457.5 EntryPrice 1449.7 Slippage: -7.8
14.04.2011 10:00   OrderBuy 1462.0 EntryPrice 1463.1 Slippage: -1.1
14.04.2011 14:00  OrderSell 1457.7 EntryPrice 1455.8 Slippage: -1.9
18.04.2011 17:30   OrderBuy 1486.7 EntryPrice 1492.0 Slippage: -5.3
19.04.2011 07:30  OrderSell 1489.5 EntryPrice 1488.7 Slippage: -0.8
21.04.2011 05:30   OrderBuy 1505.3 EntryPrice 1506.7 Slippage: -1.4
27.04.2011 02:30   OrderBuy 1506.5 EntryPrice 1507.1 Slippage: -0.6
29.04.2011 14:00   OrderBuy 1535.8 EntryPrice 1536.4 Slippage: -0.6
02.05.2011 03:30  OrderSell 1554.1 EntryPrice 1545.8 Slippage: -8.3
05.05.2011 08:30   OrderBuy 1519.7 EntryPrice 1519.5 Slippage: 0.2
05.05.2011 12:00  OrderSell 1517.4 EntryPrice 1515.1 Slippage: -2.3
12.05.2011 02:30  OrderSell 1501.1 EntryPrice 1501.5 Slippage: 0.4
20.05.2011 19:30   OrderBuy 1504.2 EntryPrice 1511.2 Slippage: -7.0
03.06.2011 17:00   OrderBuy 1534.9 EntryPrice 1541.5 Slippage: -6.6
15.06.2011 18:00   OrderBuy 1526.3 EntryPrice 1529.8 Slippage: -3.5
28.06.2011 12:00   OrderBuy 1502.2 EntryPrice 1502.6 Slippage: -0.4
08.07.2011 17:00   OrderBuy 1533.0 EntryPrice 1542.3 Slippage: -9.3
12.07.2011 19:30   OrderBuy 1552.6 EntryPrice 1553.9 Slippage: -1.3
13.07.2011 06:00  OrderSell 1566.0 EntryPrice 1565.1 Slippage: -0.9
14.07.2011 13:30   OrderBuy 1589.9 EntryPrice 1592.3 Slippage: -2.4
19.07.2011 13:00  OrderSell 1605.2 EntryPrice 1604.2 Slippage: -1.0
20.07.2011 19:30   OrderBuy 1592.1 EntryPrice 1595.1 Slippage: -3.0
08.08.2011 02:30   OrderBuy 1669.5 EntryPrice 1687.7 Slippage: -18.2
09.08.2011 18:00  OrderSell 1737.9 EntryPrice 1731.0 Slippage: -6.9
16.08.2011 18:30   OrderBuy 1782.2 EntryPrice 1783.0 Slippage: -0.8
17.08.2011 16:00  OrderSell 1789.8 EntryPrice 1785.6 Slippage: -4.2
22.08.2011 03:00   OrderBuy 1872.4 EntryPrice 1875.0 Slippage: -2.6
24.08.2011 14:30  OrderSell 1845.9 EntryPrice 1845.7 Slippage: -0.2
25.08.2011 21:00   OrderBuy 1756.9 EntryPrice 1757.7 Slippage: -0.8
01.09.2011 05:00  OrderSell 1824.1 EntryPrice 1823.9 Slippage: -0.2
16.09.2011 15:00   OrderBuy 1779.9 EntryPrice 1787.0 Slippage: -7.1
21.09.2011 23:00  OrderSell 1784.9 EntryPrice 1783.1 Slippage: -1.8
26.09.2011 15:00   OrderBuy 1621.0 EntryPrice 1625.5 Slippage: -4.5
29.09.2011 10:00   OrderBuy 1623.4 EntryPrice 1623.9 Slippage: -0.5
25.10.2011 10:00   OrderBuy 1658.5 EntryPrice 1658.9 Slippage: -0.4
28.10.2011 07:00  OrderSell 1745.3 EntryPrice 1744.0 Slippage: -1.3
02.11.2011 12:30  OrderSell 1727.8 EntryPrice 1726.5 Slippage: -1.3
11.11.2011 01:30   OrderBuy 1762.1 EntryPrice 1794.3 Slippage: -32.2
28.11.2011 17:00  OrderSell 1712.1 EntryPrice 1711.6 Slippage: -0.5
30.11.2011 14:30   OrderBuy 1724.0 EntryPrice 1724.2 Slippage: -0.2
08.12.2011 15:30  OrderSell 1735.9 EntryPrice 1735.6 Slippage: -0.3
15.12.2011 15:00  OrderSell 1586.2 EntryPrice 1585.9 Slippage: -0.3
28.12.2011 15:00   OrderBuy 1591.9 EntryPrice 1592.4 Slippage: -0.5
18.01.2012 08:30   OrderBuy 1658.2 EntryPrice 1658.5 Slippage: -0.3
18.01.2012 19:00   OrderBuy 1659.0 EntryPrice 1659.4 Slippage: -0.4
25.01.2012 19:00   OrderBuy 1666.5 EntryPrice 1666.7 Slippage: -0.2
09.02.2012 15:30   OrderBuy 1740.4 EntryPrice 1741.1 Slippage: -0.7
12.03.2012 06:00  OrderSell 1706.6 EntryPrice 1706.2 Slippage: -0.4
16.03.2012 21:00   OrderBuy 1659.8 EntryPrice 1660.0 Slippage: -0.2
21.03.2012 02:00   OrderBuy 1654.5 EntryPrice 1654.7 Slippage: -0.2
22.03.2012 22:00   OrderBuy 1646.5 EntryPrice 1647.1 Slippage: -0.6
26.03.2012 16:30   OrderBuy 1668.5 EntryPrice 1679.2 Slippage: -10.7
28.03.2012 02:30  OrderSell 1679.8 EntryPrice 1679.6 Slippage: -0.2
27.04.2012 17:00   OrderBuy 1659.3 EntryPrice 1664.3 Slippage: -5.0
22.05.2012 05:30  OrderSell 1591.9 EntryPrice 1591.6 Slippage: -0.3
06.06.2012 05:30   OrderBuy 1625.4 EntryPrice 1625.6 Slippage: -0.2
19.06.2012 17:00  OrderSell 1629.0 EntryPrice 1627.5 Slippage: -1.5
22.06.2012 18:30  OrderSell 1564.3 EntryPrice 1563.7 Slippage: -0.6
25.06.2012 12:00  OrderSell 1570.5 EntryPrice 1569.3 Slippage: -1.2
29.06.2012 10:30   OrderBuy 1568.9 EntryPrice 1570.4 Slippage: -1.5
03.07.2012 08:30   OrderBuy 1603.3 EntryPrice 1604.3 Slippage: -1.0
10.07.2012 05:30  OrderSell 1585.9 EntryPrice 1585.4 Slippage: -0.5
10.07.2012 14:00   OrderBuy 1592.7 EntryPrice 1594.1 Slippage: -1.4
11.07.2012 18:30   OrderBuy 1579.4 EntryPrice 1579.9 Slippage: -0.5
23.07.2012 20:00   OrderBuy 1577.2 EntryPrice 1577.7 Slippage: -0.5
03.08.2012 17:00  OrderSell 1591.9 EntryPrice 1588.6 Slippage: -3.3
16.08.2012 05:00   OrderBuy 1605.0 EntryPrice 1605.4 Slippage: -0.4
16.08.2012 08:30  OrderSell 1604.2 EntryPrice 1603.7 Slippage: -0.5
20.08.2012 19:30   OrderBuy 1618.6 EntryPrice 1620.0 Slippage: -1.4
24.08.2012 19:30   OrderBuy 1671.2 EntryPrice 1671.5 Slippage: -0.3
30.08.2012 19:00  OrderSell 1656.7 EntryPrice 1653.1 Slippage: -3.6
31.08.2012 17:00   OrderBuy 1662.4 EntryPrice 1662.8 Slippage: -0.4
06.09.2012 16:30  OrderSell 1701.9 EntryPrice 1701.0 Slippage: -0.9
01.10.2012 17:00   OrderBuy 1774.2 EntryPrice 1784.1 Slippage: -9.9
25.10.2012 20:00  OrderSell 1713.6 EntryPrice 1712.3 Slippage: -1.3
26.10.2012 17:30   OrderBuy 1713.2 EntryPrice 1714.9 Slippage: -1.7
28.10.2012 23:30  OrderSell 1711.3 EntryPrice 1710.9 Slippage: -0.4
05.11.2012 08:30   OrderBuy 1680.0 EntryPrice 1680.3 Slippage: -0.3
07.11.2012 04:00   OrderBuy 1720.6 EntryPrice 1721.0 Slippage: -0.4
13.11.2012 17:00   OrderBuy 1731.1 EntryPrice 1731.8 Slippage: -0.7
03.12.2012 15:30  OrderSell 1714.6 EntryPrice 1714.4 Slippage: -0.2
18.12.2012 12:30  OrderSell 1697.9 EntryPrice 1697.5 Slippage: -0.4
20.12.2012 15:00  OrderSell 1665.0 EntryPrice 1664.8 Slippage: -0.2
22.01.2013 15:30  OrderSell 1688.1 EntryPrice 1687.8 Slippage: -0.3
30.01.2013 15:00   OrderBuy 1668.6 EntryPrice 1670.0 Slippage: -1.4
01.02.2013 16:30  OrderSell 1662.8 EntryPrice 1662.3 Slippage: -0.5
07.02.2013 08:00  OrderSell 1678.5 EntryPrice 1677.6 Slippage: -0.9
13.02.2013 15:00   OrderBuy 1652.8 EntryPrice 1653.1 Slippage: -0.3
14.02.2013 15:00  OrderSell 1641.5 EntryPrice 1641.2 Slippage: -0.3
21.02.2013 13:00   OrderBuy 1571.9 EntryPrice 1572.2 Slippage: -0.3
21.03.2013 14:00   OrderBuy 1610.4 EntryPrice 1611.5 Slippage: -1.1
22.03.2013 13:00  OrderSell 1608.5 EntryPrice 1608.2 Slippage: -0.3
27.03.2013 15:30   OrderBuy 1606.6 EntryPrice 1607.0 Slippage: -0.4
11.04.2013 18:30   OrderBuy 1565.3 EntryPrice 1565.5 Slippage: -0.2
24.04.2013 12:00  OrderSell 1425.5 EntryPrice 1424.8 Slippage: -0.7
26.04.2013 20:00  OrderSell 1467.9 EntryPrice 1453.9 Slippage: -14.0
16.05.2013 18:30   OrderBuy 1383.8 EntryPrice 1386.3 Slippage: -2.5
21.05.2013 13:30  OrderSell 1384.3 EntryPrice 1381.0 Slippage: -3.3
22.05.2013 19:00  OrderSell 1378.8 EntryPrice 1372.2 Slippage: -6.6
24.05.2013 14:00  OrderSell 1388.1 EntryPrice 1386.0 Slippage: -2.1
14.06.2013 17:00   OrderBuy 1385.8 EntryPrice 1388.9 Slippage: -3.1
25.06.2013 18:30  OrderSell 1279.2 EntryPrice 1277.5 Slippage: -1.7
17.07.2013 17:00   OrderBuy 1295.7 EntryPrice 1295.9 Slippage: -0.2
19.07.2013 07:30   OrderBuy 1289.5 EntryPrice 1290.8 Slippage: -1.3
31.07.2013 06:00   OrderBuy 1331.1 EntryPrice 1332.4 Slippage: -1.3
05.08.2013 10:30  OrderSell 1315.6 EntryPrice 1315.4 Slippage: -0.2
14.08.2013 18:30   OrderBuy 1327.3 EntryPrice 1333.7 Slippage: -6.4
27.08.2013 22:30  OrderSell 1416.6 EntryPrice 1415.8 Slippage: -0.8
30.08.2013 21:30  OrderSell 1396.5 EntryPrice 1395.8 Slippage: -0.7
05.09.2013 14:30   OrderBuy 1393.4 EntryPrice 1396.1 Slippage: -2.7
18.09.2013 22:30   OrderBuy 1320.2 EntryPrice 1322.4 Slippage: -2.2

Результат работы стратегии:


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

Сравним полученные ранее результаты с результатом оптимизации, сделанной изначально с учетом тиковой истории:


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

Далее рассмотрим результат настройки стратегии для золота на базе тиковой истории FxOpen.

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки 2012 год. Интервал проверки 2013 год.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Из-за проскальзываний в 2541 пунктов, даже без учета плавающего спреда и среднего отрицательного свопа, от прибыли не осталось ни следа.

Теперь сравним влияние проскальзываний на торговлю по набору среднесрочных моделей, на базе тиковой истории Dukascopy и FxOpen. Тиковой истории FxOpen доступно гораздо меньше, поэтому отчет для FxOpen будет только с августа 2011 года.

Результат работы по моделям на базе истории Dukascopy без учета тиков:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Результат на базе истории FxOpen без учета тиков:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Относительно небольшое число сделок и большие цели делают отрицательное влияние проскальзываний не значительным.

Чтобы сравнить влияние уровня ликвидности, произведем настройку этой же стратегии для EUR, на базе данных Dukascopy, со следующими начальными условиями тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Проскальзывания в 165 пунктов учтены на базе 30-минутных баров.

Те же настройки, но с учетом исполнения на базе минутных баров:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Влияние проскальзываний не значительно и в этом тесте все они были учтены на базе 30 минутной истории.

Выводы.

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

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

Настройка платформ.

Для задания периода расчета исполнения ордеров внутри бара в TradeStation надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Формат стратегий» или главное меню Формат / Стратегии.
  3. Нажать кнопку «Свойства для всех».
  4. Включить галочку «Исполнение внутри бара». Выбрать режим Тики или Интрадэй. Указать период бара:

Для задания периода расчета исполнения ордеров внутри бара в MultiCharts надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Format Signals» или главное меню Format / Signals.
  3. Нажать кнопку «Properies».
  4. Включить галочку «Use Bar Magnifier». Выбрать режим Tick или Intra-day. Указать период бара:


    Обратите внимание на параметры "Use for Ask series data" и "Use for Bid series data". Использование этих параметров может позволить более точно производить учет спредов средствами самой платформы, а не за счет учета спреда при расчете уровня риска.
Для задания периода расчета исполнения ордеров внутри бара в ProSuite надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Format Analysis Techniques» или главное меню Format / «Analysis Techniques».
  3. Нажать кнопку «Format».
  4. Включить галочку «Strategy testing resolutions». Выбрать режим Tick или Minute. Указать период бара:

Оптимизация производительности.

Не все компании предоставляют возможность скачивать тиковую историю. Наиболее просто ее можно скачать с помощью программы TickStory Lite. Обратите внимание, в TickStory Lite, при генерации баров, в строке задания выходного формата вместо BarStartTime надо использовать BarEndTime:

{BarEndTime:dd/MM/yyyy},{BarEndTime:HHmm},{Open},{High},{Low},{Close}

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

Произвести расчет на базе тиков позволяет ProSuite, TradeStation 9, MultiCharts 8. Однако не все так гладко, как хотелось бы...

Скачиваем историю. Генерируем текстовый файл вот в таком формате:

Date,Time,C
02.01.2013,00:00:00,1674.6
02.01.2013,00:00:00,1674.5
02.01.2013,00:00:00,1674.4

Файл размером более 1 Gb TradeStation 9.1 полностью открыть не может, заканчивается память. С MultiCharts 32 bit ситуация аналогичная. Протестировать работу стратегии получается на интервале чуть более года. Можно конечно провести тестирование отдельно по годам, но это слишком трудоемко. Работу с GlobalServer я не проверял, так как код стратегий с этой платформой не совместим. Не думаю, что с ProSuite ситуация будет кардинально лучшей.

Файл размером до 4 Gb можно открыть в MultiCharts 64 bit. Однако 4-х часовой график на базе тикового файла размером 1023 Gb открывается 25 минут. На базе минутных баров, с использованием 4 ядер процессора, 100 тестов считаются 2 минуты 30 секунд. На базе тиков те же 100 тестов выполняются 26 минут. То есть, более чем в 10 раз медленнее. Ни о каких расчетах с зоной поиска более миллиарда вариантов и выполнением сотен тысяч или миллионов тестов мечтать не приходится.

Из-за того, что MultiCharts 8.0 build 5620 не правильно исполняет ордера при тестировании на барах с большим интервалом, используя для исполнения ордеров одноминутную историю, от его использования для расчетов пришлось отказаться. Многократная перепроверка и проведение таких же тестов в TradeStation однозначно свидетельствовала об ошибке в MultiCharts. В более новых версиях MultiCharts проверку не делал. Возможно, в них эта проблема устранена.

Поскольку MultiCharts сошел с дистанции, для вычислений остается TradeStation. График на базе тиков за 9 месяцев 2013 года, с исполнением ордеров на базе тиков, открывается 1:10 (далее - минута:секунды). Расчет 71 теста, на одном ядре, длится 5:18. Если брать историю за период [2007-2013], расчет мог бы длиться примерно 48 минут. MultiCharts на одном ядре потратил бы на это более полутора часов.

Поскольку TradeStation 32-битная, открыть всю тиковую историю в одном графике не получится. Но даже если бы это и можно было бы делать, тратить 40 секунд на 1 тест - это слишком медленно. Если разработчики платформ теханализа не потрудились поработать головой, это сделать придется самостоятельно.

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

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

Теперь проводим расчет параметров стопа с исполнением ордеров на базе 1, 5, 10, 30-минутных баров, на графике 240 минут за период [2007-2013] с и без использования информации из тиковой базы. Расчет 71 теста без использования тиковой базы длился 6:19. C использованием тиковой базы, расчет длился на 41 секунду дольше, 7 минут. Из этих 41 секунды 4 секунды выполнялись 42059 запросов тиковой цены из базы, 37 секунд ушли на передачу и обработку этих данных в коде МТС. В итоге расчет на базе минутных баров с использованием цены тиков на 99.99% совпадает с расчетом на базе тиков и тратится на это 7 минут одного ядра процессора. При использовании одного ядра MultiCharts на это потратил бы более полутора часов. А в TradeStation такой расчет длился бы более 45 минут. То, что разработчики платформ не хотели утомлять себя лишними размышлениями, видно очень хорошо.

Для сравнения расхождений при использовании в качестве базовых баров исполнения ордеров разных периодов, расчет выполнен так же на базе 5, 10, 30-минутных баров. Чем больше период и чем меньше вложенных баров, тем быстрее выполняется расчет. Надо ли экономить процессорное время, рискуя получить лишние убытки или недополучить прибыль из-за менее точных расчетов, каждый должен решать сам в зависимости от конкретной стратегии. Лично я результаты всех стратегий проверяю с использованием тиковой истории.
Возросшая с 2008-го года волатильность золота увеличила соотношение стопа к лимиту, сделав торговлю золотом очень выгодным. Такое положение дел с ценой на золото привлекает профессиональных трейдеров и высокочастотных роботорговцев (HFT). Вследствие этого очень хорошо работают не только среднесрочные, но и внутридневные модели с относительно малыми целями:






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

Пример. Разрыв на новостях в ECN-платформе Dukascopy:


И аналогичный момент на фьючерсе:


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

В дилинговых центрах, которые работают не как ECN-площадки, а как меркет мейкеры (кухни), котировки генерируют котирующие алгоритмы. Чем реже алгоритмом выдаются котировки, тем больше шанс получить проскальзывание во время быстрых изменений цен. Обратная сторона медали - чем чаще выдаются котировки, тем труднее будет войти по хорошей цене по рынку, так как частые реквоты будут вынуждать согласиться на открытие по той цене, которая дается и быстро меняется. Как правило, трейдеры соглашаются на худшее исполнение, так как боятся остаться вообще без сделки или получить со временем еще худшую цену.

Открытие позиции с проскальзыванием по худшей цене выгодно дилинговым центрам, так как размер стопа увеличивается. Зато фиксация прибыли, как правило, происходит по заявленной цене ордера и на проскальзывании дилинговый центр дополнительных денег не теряет. Поэтому сейчас проскальзывание - это проблема трейдера, а не дилингового центра.

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

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

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


Далее те же настройки, но с учетом исполнения на базе тиковой истории.

Список проскальзываний во время исполнения отложенных ордеров:

07.01.2011 16:30   OrderBuy 1371.4 EntryPrice 1372.7 Slippage: -1.3
13.01.2011 08:00  OrderSell 1385.5 EntryPrice 1385.3 Slippage: -0.2
17.01.2011 17:30  OrderSell 1359.7 EntryPrice 1359.5 Slippage: -0.2
24.01.2011 00:30   OrderBuy 1343.3 EntryPrice 1343.7 Slippage: -0.4
24.01.2011 08:30  OrderSell 1350.5 EntryPrice 1350.3 Slippage: -0.2
26.01.2011 00:30  OrderSell 1331.7 EntryPrice 1327.4 Slippage: -4.3
31.01.2011 05:30  OrderSell 1336.2 EntryPrice 1336.0 Slippage: -0.2
09.02.2011 00:30  OrderSell 1360.6 EntryPrice 1356.2 Slippage: -4.4
11.02.2011 01:30   OrderBuy 1364.9 EntryPrice 1365.1 Slippage: -0.2
11.02.2011 06:30  OrderSell 1360.8 EntryPrice 1360.5 Slippage: -0.3
18.03.2011 10:30  OrderSell 1411.4 EntryPrice 1410.7 Slippage: -0.7
20.03.2011 23:30   OrderBuy 1423.6 EntryPrice 1424.4 Slippage: -0.8
30.03.2011 06:00  OrderSell 1417.0 EntryPrice 1416.4 Slippage: -0.6
01.04.2011 17:00  OrderSell 1426.7 EntryPrice 1421.1 Slippage: -5.6
12.04.2011 18:30  OrderSell 1457.5 EntryPrice 1449.7 Slippage: -7.8
14.04.2011 10:00   OrderBuy 1462.0 EntryPrice 1463.1 Slippage: -1.1
14.04.2011 14:00  OrderSell 1457.7 EntryPrice 1455.8 Slippage: -1.9
18.04.2011 17:30   OrderBuy 1486.7 EntryPrice 1492.0 Slippage: -5.3
19.04.2011 07:30  OrderSell 1489.5 EntryPrice 1488.7 Slippage: -0.8
21.04.2011 05:30   OrderBuy 1505.3 EntryPrice 1506.7 Slippage: -1.4
27.04.2011 02:30   OrderBuy 1506.5 EntryPrice 1507.1 Slippage: -0.6
29.04.2011 14:00   OrderBuy 1535.8 EntryPrice 1536.4 Slippage: -0.6
02.05.2011 03:30  OrderSell 1554.1 EntryPrice 1545.8 Slippage: -8.3
05.05.2011 08:30   OrderBuy 1519.7 EntryPrice 1519.5 Slippage: 0.2
05.05.2011 12:00  OrderSell 1517.4 EntryPrice 1515.1 Slippage: -2.3
12.05.2011 02:30  OrderSell 1501.1 EntryPrice 1501.5 Slippage: 0.4
20.05.2011 19:30   OrderBuy 1504.2 EntryPrice 1511.2 Slippage: -7.0
03.06.2011 17:00   OrderBuy 1534.9 EntryPrice 1541.5 Slippage: -6.6
15.06.2011 18:00   OrderBuy 1526.3 EntryPrice 1529.8 Slippage: -3.5
28.06.2011 12:00   OrderBuy 1502.2 EntryPrice 1502.6 Slippage: -0.4
08.07.2011 17:00   OrderBuy 1533.0 EntryPrice 1542.3 Slippage: -9.3
12.07.2011 19:30   OrderBuy 1552.6 EntryPrice 1553.9 Slippage: -1.3
13.07.2011 06:00  OrderSell 1566.0 EntryPrice 1565.1 Slippage: -0.9
14.07.2011 13:30   OrderBuy 1589.9 EntryPrice 1592.3 Slippage: -2.4
19.07.2011 13:00  OrderSell 1605.2 EntryPrice 1604.2 Slippage: -1.0
20.07.2011 19:30   OrderBuy 1592.1 EntryPrice 1595.1 Slippage: -3.0
08.08.2011 02:30   OrderBuy 1669.5 EntryPrice 1687.7 Slippage: -18.2
09.08.2011 18:00  OrderSell 1737.9 EntryPrice 1731.0 Slippage: -6.9
16.08.2011 18:30   OrderBuy 1782.2 EntryPrice 1783.0 Slippage: -0.8
17.08.2011 16:00  OrderSell 1789.8 EntryPrice 1785.6 Slippage: -4.2
22.08.2011 03:00   OrderBuy 1872.4 EntryPrice 1875.0 Slippage: -2.6
24.08.2011 14:30  OrderSell 1845.9 EntryPrice 1845.7 Slippage: -0.2
25.08.2011 21:00   OrderBuy 1756.9 EntryPrice 1757.7 Slippage: -0.8
01.09.2011 05:00  OrderSell 1824.1 EntryPrice 1823.9 Slippage: -0.2
16.09.2011 15:00   OrderBuy 1779.9 EntryPrice 1787.0 Slippage: -7.1
21.09.2011 23:00  OrderSell 1784.9 EntryPrice 1783.1 Slippage: -1.8
26.09.2011 15:00   OrderBuy 1621.0 EntryPrice 1625.5 Slippage: -4.5
29.09.2011 10:00   OrderBuy 1623.4 EntryPrice 1623.9 Slippage: -0.5
25.10.2011 10:00   OrderBuy 1658.5 EntryPrice 1658.9 Slippage: -0.4
28.10.2011 07:00  OrderSell 1745.3 EntryPrice 1744.0 Slippage: -1.3
02.11.2011 12:30  OrderSell 1727.8 EntryPrice 1726.5 Slippage: -1.3
11.11.2011 01:30   OrderBuy 1762.1 EntryPrice 1794.3 Slippage: -32.2
28.11.2011 17:00  OrderSell 1712.1 EntryPrice 1711.6 Slippage: -0.5
30.11.2011 14:30   OrderBuy 1724.0 EntryPrice 1724.2 Slippage: -0.2
08.12.2011 15:30  OrderSell 1735.9 EntryPrice 1735.6 Slippage: -0.3
15.12.2011 15:00  OrderSell 1586.2 EntryPrice 1585.9 Slippage: -0.3
28.12.2011 15:00   OrderBuy 1591.9 EntryPrice 1592.4 Slippage: -0.5
18.01.2012 08:30   OrderBuy 1658.2 EntryPrice 1658.5 Slippage: -0.3
18.01.2012 19:00   OrderBuy 1659.0 EntryPrice 1659.4 Slippage: -0.4
25.01.2012 19:00   OrderBuy 1666.5 EntryPrice 1666.7 Slippage: -0.2
09.02.2012 15:30   OrderBuy 1740.4 EntryPrice 1741.1 Slippage: -0.7
12.03.2012 06:00  OrderSell 1706.6 EntryPrice 1706.2 Slippage: -0.4
16.03.2012 21:00   OrderBuy 1659.8 EntryPrice 1660.0 Slippage: -0.2
21.03.2012 02:00   OrderBuy 1654.5 EntryPrice 1654.7 Slippage: -0.2
22.03.2012 22:00   OrderBuy 1646.5 EntryPrice 1647.1 Slippage: -0.6
26.03.2012 16:30   OrderBuy 1668.5 EntryPrice 1679.2 Slippage: -10.7
28.03.2012 02:30  OrderSell 1679.8 EntryPrice 1679.6 Slippage: -0.2
27.04.2012 17:00   OrderBuy 1659.3 EntryPrice 1664.3 Slippage: -5.0
22.05.2012 05:30  OrderSell 1591.9 EntryPrice 1591.6 Slippage: -0.3
06.06.2012 05:30   OrderBuy 1625.4 EntryPrice 1625.6 Slippage: -0.2
19.06.2012 17:00  OrderSell 1629.0 EntryPrice 1627.5 Slippage: -1.5
22.06.2012 18:30  OrderSell 1564.3 EntryPrice 1563.7 Slippage: -0.6
25.06.2012 12:00  OrderSell 1570.5 EntryPrice 1569.3 Slippage: -1.2
29.06.2012 10:30   OrderBuy 1568.9 EntryPrice 1570.4 Slippage: -1.5
03.07.2012 08:30   OrderBuy 1603.3 EntryPrice 1604.3 Slippage: -1.0
10.07.2012 05:30  OrderSell 1585.9 EntryPrice 1585.4 Slippage: -0.5
10.07.2012 14:00   OrderBuy 1592.7 EntryPrice 1594.1 Slippage: -1.4
11.07.2012 18:30   OrderBuy 1579.4 EntryPrice 1579.9 Slippage: -0.5
23.07.2012 20:00   OrderBuy 1577.2 EntryPrice 1577.7 Slippage: -0.5
03.08.2012 17:00  OrderSell 1591.9 EntryPrice 1588.6 Slippage: -3.3
16.08.2012 05:00   OrderBuy 1605.0 EntryPrice 1605.4 Slippage: -0.4
16.08.2012 08:30  OrderSell 1604.2 EntryPrice 1603.7 Slippage: -0.5
20.08.2012 19:30   OrderBuy 1618.6 EntryPrice 1620.0 Slippage: -1.4
24.08.2012 19:30   OrderBuy 1671.2 EntryPrice 1671.5 Slippage: -0.3
30.08.2012 19:00  OrderSell 1656.7 EntryPrice 1653.1 Slippage: -3.6
31.08.2012 17:00   OrderBuy 1662.4 EntryPrice 1662.8 Slippage: -0.4
06.09.2012 16:30  OrderSell 1701.9 EntryPrice 1701.0 Slippage: -0.9
01.10.2012 17:00   OrderBuy 1774.2 EntryPrice 1784.1 Slippage: -9.9
25.10.2012 20:00  OrderSell 1713.6 EntryPrice 1712.3 Slippage: -1.3
26.10.2012 17:30   OrderBuy 1713.2 EntryPrice 1714.9 Slippage: -1.7
28.10.2012 23:30  OrderSell 1711.3 EntryPrice 1710.9 Slippage: -0.4
05.11.2012 08:30   OrderBuy 1680.0 EntryPrice 1680.3 Slippage: -0.3
07.11.2012 04:00   OrderBuy 1720.6 EntryPrice 1721.0 Slippage: -0.4
13.11.2012 17:00   OrderBuy 1731.1 EntryPrice 1731.8 Slippage: -0.7
03.12.2012 15:30  OrderSell 1714.6 EntryPrice 1714.4 Slippage: -0.2
18.12.2012 12:30  OrderSell 1697.9 EntryPrice 1697.5 Slippage: -0.4
20.12.2012 15:00  OrderSell 1665.0 EntryPrice 1664.8 Slippage: -0.2
22.01.2013 15:30  OrderSell 1688.1 EntryPrice 1687.8 Slippage: -0.3
30.01.2013 15:00   OrderBuy 1668.6 EntryPrice 1670.0 Slippage: -1.4
01.02.2013 16:30  OrderSell 1662.8 EntryPrice 1662.3 Slippage: -0.5
07.02.2013 08:00  OrderSell 1678.5 EntryPrice 1677.6 Slippage: -0.9
13.02.2013 15:00   OrderBuy 1652.8 EntryPrice 1653.1 Slippage: -0.3
14.02.2013 15:00  OrderSell 1641.5 EntryPrice 1641.2 Slippage: -0.3
21.02.2013 13:00   OrderBuy 1571.9 EntryPrice 1572.2 Slippage: -0.3
21.03.2013 14:00   OrderBuy 1610.4 EntryPrice 1611.5 Slippage: -1.1
22.03.2013 13:00  OrderSell 1608.5 EntryPrice 1608.2 Slippage: -0.3
27.03.2013 15:30   OrderBuy 1606.6 EntryPrice 1607.0 Slippage: -0.4
11.04.2013 18:30   OrderBuy 1565.3 EntryPrice 1565.5 Slippage: -0.2
24.04.2013 12:00  OrderSell 1425.5 EntryPrice 1424.8 Slippage: -0.7
26.04.2013 20:00  OrderSell 1467.9 EntryPrice 1453.9 Slippage: -14.0
16.05.2013 18:30   OrderBuy 1383.8 EntryPrice 1386.3 Slippage: -2.5
21.05.2013 13:30  OrderSell 1384.3 EntryPrice 1381.0 Slippage: -3.3
22.05.2013 19:00  OrderSell 1378.8 EntryPrice 1372.2 Slippage: -6.6
24.05.2013 14:00  OrderSell 1388.1 EntryPrice 1386.0 Slippage: -2.1
14.06.2013 17:00   OrderBuy 1385.8 EntryPrice 1388.9 Slippage: -3.1
25.06.2013 18:30  OrderSell 1279.2 EntryPrice 1277.5 Slippage: -1.7
17.07.2013 17:00   OrderBuy 1295.7 EntryPrice 1295.9 Slippage: -0.2
19.07.2013 07:30   OrderBuy 1289.5 EntryPrice 1290.8 Slippage: -1.3
31.07.2013 06:00   OrderBuy 1331.1 EntryPrice 1332.4 Slippage: -1.3
05.08.2013 10:30  OrderSell 1315.6 EntryPrice 1315.4 Slippage: -0.2
14.08.2013 18:30   OrderBuy 1327.3 EntryPrice 1333.7 Slippage: -6.4
27.08.2013 22:30  OrderSell 1416.6 EntryPrice 1415.8 Slippage: -0.8
30.08.2013 21:30  OrderSell 1396.5 EntryPrice 1395.8 Slippage: -0.7
05.09.2013 14:30   OrderBuy 1393.4 EntryPrice 1396.1 Slippage: -2.7
18.09.2013 22:30   OrderBuy 1320.2 EntryPrice 1322.4 Slippage: -2.2

Результат работы стратегии:


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

Сравним полученные ранее результаты с результатом оптимизации, сделанной изначально с учетом тиковой истории:


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

Далее рассмотрим результат настройки стратегии для золота на базе тиковой истории FxOpen.

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки 2012 год. Интервал проверки 2013 год.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Из-за проскальзываний в 2541 пункт, даже без учета плавающего спреда и среднего отрицательного свопа, от прибыли не осталось ни следа.

Теперь сравним влияние проскальзываний на торговлю по набору среднесрочных моделей, на базе тиковой истории Dukascopy и FxOpen. Тиковой истории FxOpen доступно гораздо меньше, поэтому отчет для FxOpen будет только с августа 2011 года.

Результат работы по моделям на базе истории Dukascopy без учета тиков:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Результат на базе истории FxOpen без учета тиков:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Относительно небольшое число сделок и большие цели делают отрицательное влияние проскальзываний не значительным.

Чтобы сравнить влияние уровня ликвидности, произведем настройку этой же стратегии для EUR, на базе данных Dukascopy, со следующими начальными условиями тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Проскальзывания в 165 пунктов учтены на базе 30-минутных баров.

Те же настройки, но с учетом исполнения на базе минутных баров:


Те же настройки, но с учетом исполнения на базе тиковой истории:


Влияние проскальзываний не значительно и в этом тесте все они были учтены на базе 30 минутной истории.

Выводы.

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

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



Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Pavel Gelium 2000-2017 © All rights reserved.