Забыли пароль?

Зарегистрироваться на сайте

Отменить

Робот на весеннем FSMICX

Сергей Валитов, Журнал D` (Д-штрих) №09 (93), 17 мая 2010 года

Тестируем на мартовском фьючерсе на индекс ММВБ стратегию, созданную в Wealth-Lab 5.6

В связи с конкурсом торговых стратегий Algoritmus, который сейчас проводится журналом D' совместно с ММВБ, нам пришлось поработать с рядом популярных платформ технического анализа. На сайте Algoritmus.ru выложены примеры стратегий, протестированных нами на мартовском фьючерсе на индекс ММВБ, к которому нужно адаптировать свой торговый алгоритм по условиям конкурса. В качестве примеров мы выбрали прибыльные стратегии. Результаты тестирования одной из них, записанной в Wealth-Lab 5.6, мы публикуем в этой статье. Заодно поговорим о самой программе, которая только набирает популярность среди российских трейдеров. Многие привыкли к четвертому поколению Wealth-Lab с Pascal в качестве встроенного алгоритмического языка, однако эта программа больше не поддерживается разработчиком, поэтому рано или поздно от нее придется отказаться.

В Wealth-Lab 5.6, как и в более ранних версиях, упор сделан на инструменты создания и тестирования торговых стратегий. Wealth-Lab позволяет не только разрабатывать и проверять торговые алгоритмы, но также применять их в торговле. Сделать это можно по традиционной схеме — с помощью программы-посредника, связывающей торговый терминал и программу технического анализа. В то же время не так давно компания «Церих кэпитал менеджмент» представила разработанный на основе Wealth-Lаb 5.6 комплекс продуктов автоматизированной торговли, который сочетает в себе возможности программирования торговых систем, создания торговых роботов и их использования на финансовых рынках (система «три в одном»). Таким образом, российские трейдеры, выбравшие Wealth-Lab и «Церих», могут исключить не всегда надежно работающих посредников из цепочки своих транзакций, что должно прибавить популярности программе.

Язык C#

Сейчас с официального сайта разработчика Wealth-Lab (www.wealth-lab.com) можно скачать бесплатную триал-версию Wealth-Lab 5.6, которая будет работать в течение 30 дней. Wealth-Lab 5.х отличается от своей предшественницы современным интерфейсом и улучшенной эргономикой, но главное новшество связано с интеграцией в пятую версию в качестве языка описания C# (Си-шарп), сменяющего Pascal четвертой версии. Преимущества C# связаны с его практически неограниченными возможностями — это «родной» язык для создания приложений в среде .NET, присутствие которой в Wealth-Lab 5.х делает программу более привлекательной для разработчиков расширений и профессиональных программистов.

С помощью набора блок-схем в Wealth-Lab 5.6 создается простейший торговый алгоритм, использующий простые скользящие средние

Однако создание торговых алгоритмов в программе доступно не только программистам. Стратегию не обязательно записывать на C# вручную: в Wealth-Lab есть возможность визуального конструирования торговой системы. С помощью набора блок-схем, определяя индикаторы, функции, уровни «стопов» и целей, условия открытия и закрытия позиций, можно создавать торговых роботов высокой сложности. После запуска стратегии Wealth-Lab самостоятельно превратит конструкцию в полноценный код. Для новичков в программировании это хорошая возможность изучения синтаксиса C#, матерым же роботоводам, предпочитающим писать код торговой стратегии вручную, использование блок-схем позволяет быстро создавать макет торговой системы.

Инструментарий

Wealth-Lab 5.6 предлагает пользователю большое количество исследовательских инструментов и различных настроек. Удобство доступа к данным обеспечивает древовидная структура Data Panel. В качестве источника исторических данных по умолчанию используется Yahoo! Finance, для получения котировок с российских бирж можно выбрать Finam.ru. Wealth-Lab 5.6 поддерживает несколько известных форматов данных, в том числе историю в формате MetaStock. Диапазоном загружаемых для анализа данных можно управлять, что полезно при тестировании торговых систем на различных участках истории.

Мартовский фьючерс на индекс ММВБ с точками входа в позицию и выхода из нее

Программа содержит мощные инструменты для оценки торговой системы: позволяет тестировать стратегию сразу на портфеле инструментов, имитировать торговлю на исторических данных, обеспечивает полный итог исполнения торговой стратегии и представляет график изменения капитала. Рассчитать характеристики своей стратегии помогают встроенные визуалайзеры. Так, после запуска торговой системы на графике выбранного инструмента появляются точки входа в позицию и выхода из нее. На вкладках можно посмотреть график изменения капитала, гистограмма позволяет наглядно оценить распределение прибылей / убытков в процентах для всех трейдов, сгенерированных системой, также можно ознакомиться с результатами тестирования стратегии по различным параметрам, таким как эффективность восстановления после просадки, прибыльность и др. Мы выделим эти характеристики в результатах тестирования одной из стратегий, выложенных в качестве примера на Algoritmus.ru. Полный код тестируемого алгоритма можно найти на сайте в разделе «Как создать систему».

Ловим тренд

Код торговой стратегии Bow tie variation мы взяли с сайта www.wealth-lab.com, где выложено большое количество алгоритмов для пятой версии. Тестируемая торговая система использует скользящие средние (SMA) с периодами 10, 30 и 50. Сделка совершается при следующих условиях:

  1. Значение SMA-10 выше, чем на предыдущем баре.
  2. Скользящие средние располагаются в порядке: SMA-10 выше SMA-30, которая выше SMA-50.
  3. Разница значений SMA-10 и SMA-50 на трех последовательных барах должна находиться в диапазоне от –2,5 до 2,5%. 
  4. Если все три условия выполняются, совершается длинная сделка по цене максимума предыдущего бара плюс значение одного тика.
  5. Выход из позиции осуществляется, если цена закрытия очередного бара оказывается ниже значения SMA-50.

Система протестирована на ценовой истории мартовского фьючерса на индекс ММВБ с 16 сентября 2009-го по 15 марта 2010 года с таймфреймом 60 минут. Тестирование проводилось на одном контракте, при нулевом значении комиссии и проскальзывании, принятом за 50 пунктов. Оценить кривую доходности стратегии можно во вкладке Equity Curve, более подробная информация — во вкладке Performance: в результате четырех положительных и трех отрицательных сделок мы получили чистую прибыль в размере 9550 пунктов при доходности стратегии buy & hold 16 490 пунктов. Максимальная просадка составила 4210 пунктов.

На графике выведены две линии капитала. Зеленым цветом для тестируемой стратегии, синим цветом для стратегии buy & hold

Несложная оптимизация стратегии с помощью метода Monte Carlo, в процессе которой мы подбираем лучшие значения периодов скользящих средних и ширину диапазона конвергенции SMA-10 и SMA-50, улучшает показатели системы. Отсортировав результаты по значению Net Profit, мы видим, что при использовании скользящих средних с периодами 16, 20 и 99 и диапазона конвергенции 1,73% можно получить 17 250 пунктов чистой прибыли в результате двух положительных сделок. Оптимизация стратегии по профиту — это подгонка параметров системы к уже известным историческим данным, с тем чтобы прибыль была максимальной. По большому счету именно в этом состоит задача участника конкурса в номинации Algoritmus–. Под мартовский контракт необходимо подогнать стратегию. Естественно, оптимизация по прибыли на известных данных не гарантирует высокой прибыльности в условиях реальной торговли. В нашем примере после оптимизации остается значительная просадка — 5960 пунктов.

График линии капитала после оптимизации стратегии с помощью метода Monte Carlo

В целом оптимизация улучшает ряд показателей системы, например значение отношения чистой прибыли к максимальной просадке (Recovery Factor), которое позволяет оценить, насколько успешно система восстанавливается после просадки. Максимальное значение показателя после оптимизации составляет 2,89, в то время как при стартовых параметрах системы мы имели Recovery Factor, равный 2,27. Считается, что работоспособную систему отличает значение этого показателя выше 2 и он должен быть выше, чем у стратегии buy & hold, которая в нашем случае демонстрирует Recovery Factor, равный 0,82.

Систему можно оптимизировать и по показателю прибыльности Profit Factor , который вычисляется делением валовой прибыли (Gross Profit) на валовой убыток (Gross Loss). Этот показатель также должен быть выше 2. В нашем случае до оптимизации он равен 3,92, а после нее теряет свое значение, потому что алгоритм с оптимизированными параметрами совершает всего две сделки, и обе они положительные, так что валовому убытку взяться неоткуда. Показатель Payoff Ratio рассчитывает абсолютное значение отношения средней прибыли Average Profit (%) к среднему убытку Average Loss (%) на сделку и позволяет оценить функциональность системы в целом — чем выше показатель, тем лучше система. У тестируемого торгового алгоритма значение Profit Factor равно 2,9.

Wealth-Lab позволяет легко проверить стратегию на другом таймфрейме или других исторических данных. График нового инструмента, на котором автоматически тестируется запущенный алгоритм, можно вызвать двойным щелчком с Data Panel. Чтобы изменить таймфрейм, нужно воспользоваться выпадающим списком над источниками данных. По условиям конкурса присланные участниками алгоритмы будут тестироваться на одном контракте — так же был протестирован рассмотренный в статье алгоритм. Однако для получения результатов работы системы в условиях, приближенных к реальной торговле, робота можно заставить работать с начальным капиталом. Научить его генерировать прибыль — это интересная задача, тем более что, по оценке ряда уважаемых специалистов, робовладельческий строй, стремительно развивающийся на западных рынках, недалек до прихода на первобытнообщинные просторы российских площадок.


Мои портфели
Индикаторы
Индексы
MICEXINDEXCF2 445,6–0,9910.11
RTSI1 110,46+0,2006.03
Акции
GAZP112,64–1,3110.11
GMKN119,38+2,2410.11
LKOH5 925–1,2210.11
ROSN347,9–1,7410.11
SBER293,1–0,7310.11
VTBR57,950+0,8010.11
Курсы валют
EUR92,70+0,3012.11
USD82,66+0,1112.11
EUR/USD1,09–0,5331.12
GBP/USD1,47–0,4331.12
USD/JPY120,17–0,2831.12
EURUSD_TOM1,060,0006.03
EUR_TODTOM0,02–0,0406.03
USD_TODTOM0,02–0,0306.03
Мировые рынки
Dow17 473,32–0,7431.12
FTSE6 242,32–0,5131.12
Nikkei 22519 033,71+0,2730.12
S&P 5002 049,94–0,6531.12
Золото1 059,98–0,1231.12
Нефть Brent37,6+3,1331.12