Блог им. VDV

Программирование торговой системы на C# с примером кода и генетическая оптимизация в Wealth-Lab

Просматривая старые посты блога «ФинЛаб» я заметил, что за мной имеется должок. Примерно в апреле 2011 года я начал рассказывать о торговой системе HighLowLong в качестве примера того, как нужно создавать торговую систему с помощью WealthScript и языка C#.


График эквити этой торговой системы выглядел вот так:

Эквити торговой стратегии HighLowLong


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

Итак, система очень проста по своей сути и как я писал, вряд ли можно торговать эту систему без дополнительных доработок. Однако для того, чтобы понять — как системы строятся — это буквально идеальный вариант. Тем более я специально (для простоты) оставил только правила входа в длинную позицию и выхода из этой позиции.
 
Если Вы захотите, можете дописать код, чтобы получилась система, которая могла бы торговать и в шорт.
 
Данная система является однопозиционной.  Здесь же еще раз упомяну, что однопозиционная, или SP (Single-Position Strategy) стратегия это такая стратегия, которая в единицу времени для одного финансового инструмента может иметь не более одной позиции. О том, как выглядит шаблон однопозиционной торговой стратегия я уже рассказывал.
 
Однако, здесь я использовал не встроенный по умолчанию в программе Wealth-Lab шаблон кода торговой системы, а шаблон, который использует для своих систем Игорь Чечет. Этот шаблон мне показался очень удобным. Плюс к тому, его можно использовать при построении генератора торговых стратегий, но об этом я скажу чуть позднее.
 
Вход в лонг осуществляется по стоп ордеру при пробитии сверху вниз уровня, являющимся максимумом цен финансового инструмента за оптимизируемый период. Выход из длинной позиции осуществляется также при пробитии уровня. Однако уровень этот определяется как минимумы цен за определенный период (этот период тоже оптимизируется). И как Вы уже поняли, этот уровень должен пробиваться сверху вниз, чтобы используя стоп-приказ можно было выйти из позиции.
 
В общем, система получилась простая, элегантная, и как это не странно, показывает приемлемые результаты даже без предварительной доработки.

Код торговой стратегии можно увидеть по ссылке.


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

Эквити:

Эквити торговой стратегии

Просадки и их длительность:

Просадки торговой стратегии

Подробный анализ прочих показателей системы можно увидеть здесь.

Еще раз подчеркиваю, что эту систему просто привел как удобный и наглядный пример, позволяющий новичкам в программировании на C# разобраться с удобным шаблоном, который поможет самостоятельно делать код торговых систем.
 
В следующих постах также буду публиковать программные коды новых торговых систем (поэтому не забудьте подписаться на RSS обновления блога).
 
Однако хочу сразу сказать, что для того, чтобы иметь возможность строить торговые системы недостаточно будет иметь коллекцию готовых систем.
 
Для этой цели нужно иметь в своем распоряжении заготовки, т.е. существенные части разнообразных торговых систем, которые уже были проанализированы и код которых уже выверен.
 
Такими частями на первом этапе у нас будут правила сопровождения позиции (в данном случае — это выход при прорыве уровня) и правила входа в позицию. В дальнейшем сюда добавятся фильтры, выходы по времени и некоторые другие.
 
В результате работа с торговыми системами правратится в классический метод анализа и синтеза.
 
С помощью анализа мы разбиваем любую встречающуюся нам торговую систему на составные части (выделяем правила сопровождения, правила входа, фильтры, и т.п.).
 
Затем, с помощью синтеза мы по существующим шаблонам торгового кода синтезируем новые торговые системы. Причем таких систем у нас может быть огромное множество.
 
Например правила сопровождения №1, и вместе с этими правилами пробуем правила входа №1, №2, №3. В этоге у нас будет 3 совершенно разные торговые системы.
 
На сегодня все. Кто хочет быстрее разобраться с программированием на C# — рекомендую ознакомится с инструкцией по программированию торговых стратегий на С# на русском языке.
★17
4 комментария
сам принцип для торговли не подходит, т.к торгует внутри гэпов… выкинь из торгов первые 15 минут
avatar
ves2010, Можно на любых таймфреймах пробовать. Согласен, что первый час торговли — не всегда удобен. Я подчеркивал, что это просто пример удачного (на мой взгляд) шаблона кода стратегии, который каждый может использовать для своих нужд. Спасибо за это Игорю Чечету.
Дмитрий Власов, да и полюбому оптимизация — это зло
avatar
Хочу выразить глубочайший респект уважаемому Дмитрию, за его помощь в ликбезе алготрейдинга. Что бы стать мастером, необходимо уметь делиться своим умением, и он это делает!
avatar

теги блога Дмитрий Власов

....все тэги



UPDONW
Новый дизайн