Блог им. VDV

Код торговой системы HighLowLong для wealth lab

Сегодня пришло время создать первый код торговой системы.
Для того, чтобы сильно не усложнять восприятие — возьмем самую простую систему и сделаем для этой системы код для тестирования её в wealth lab.
Сделаем это поэтапно:
Этап 1: Описание стратегии:
  1. Строим максимумы и минимумы за определенный период (величина периода будет определена в процессе оптимизации).
  2. Будем открывать длинные позиции тогда, когда цена пробивает максимум, определенный на предыдущем баре.
  3. Выставляем первоначальный Стоп лосс на уровне максимума предыдущего бара  минус процент от цены (величина процента будет определена в процессе оптимизации).
  4. Создаем трейлинг Стоп, который будет находится на уровне минимумов за определенный период.
Этап 2: Прорисовка блок схемы...
После того, как идея торговой системы определена, необходимо нарисовать блок схему того, как мы будем действовать.
Рисовать можно используя для этого специальные программы.

Краткий обзор программ, которые позволяют рисовать блок-схемы можно уведить по этой ссылке: http://www.analogs.ru/group/165
Можно использовать платную программу Microsoft Visio, которая входит в состав Microsoft Office.
Но мне больше нравится программа diaw — скачать её можно здесь. Она полностью бесплатна, поддерживает русский язык, позволяет делать очень многие удобные вещи. Вкратце почитать про программу можно, к примеру, вот тут...
Начертим блок — схему...

Этап 3: написание кода для Wealth Lab.
Далее, используя среду разработки, о которой я уже писал в предыдущем посте — пишем код для Wealth Lab…
Схематично программа будет выглядеть следующим образом:

Рассмотрим поподробнее каждый из блоков нашей программы:
Для того, чтобы определить параметры оптимизации — нужно написать следующий код:

Теперь нужно задать те переменные, с которыми будем в дальнейшем работать:

Надеюсь, здесь всё более-менее понятно. Если есть вопросы — спрашивайте в комментах.
Дальше тем переменным, которые мы задали — нужно присвоить необходимые значения:

Следующий этап — основной. Здесь задается сама логика торговой системы…
Выглядит этот этап следующим образом:

Если будет интерес — в следующих постах более подробно остановлюсь именно на этом блоке. Чтобы не пропустить новые посты — подписывайтесь по RSS на новые посты нашего блога.
И на последнем этапе отрисовываем графики.
Делать это совсем не сложно. Код будет выглядеть так:

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

Понятно, чтобы начинать торговать такую систему нужно учесть еще целую кучу нюансов, но общее представление о том, как создавать торговую систему и тестировать её в wealth lab, я думаю, по этой информации можно составить…
Если Вам интересна данная тема — подписывайтесь на обновление нашего блога по RSS.
★19
24 комментария
Совсем не плохо для системы получается, еще бы на короткие позиции просчитать эту систему и совместить через фильтр «короткие/длинные позиции», то эквити, наверно, была бы интересней и отдача больше.
Спасибо за урок.
avatar
Единственное но, в этом графике комиссия не учтена… :-). Но с комиссией тоже неплохо получается…
автору респект и +! отличный пост!
avatar
2.Highest <имя переменной> — что такое highest — похоже на тип? аналогично с DataSeries

highest — это класс из библиотеки велса. По-сути это индикатор, который отображает для каждой свечи значение максимумов за n периодов по максимумам каждой свечи.
классный пост, респект)) ниже ??

1.pHighPeriod = CreateParameter — это самописная функция или встроенная в WL? что значит каждый параметр?

2.Highest <имя переменной> — что такое highest — похоже на тип?
аналогично с DataSeries

3.region — предопределенное слово? что им отгораживается? можно использовать другое? ты просто везде повторяешь region для разных участков кода, что это дает?

и можно выложить куданибудь код отдельно файликом, посмотреть бы у себя.

спасибо!
avatar
1. CreateParameter это часть API WealthLab. Насколько я помню, параметры означают имя, начальное значение, мин. и макс. значения и шаг.

2. Вероятно массив с максимумами свечек.

3. #region и #endregion для указания в Visual Studio свернуть блок с одну строчку.
Привет.
1.pHighPeriod = CreateParameter — это самописная функция или встроенная в WL? что значит каждый параметр?

Это стандартная функция — применяется для того, чтобы в велсе создать параметр, который потом можно будет оптимизировать. Т.е. запись типа: CreateParameter(«HighPeriod»,20,1,100,2) означает, что создается параметр с названием HighPeriod. Значение по умолчанию у него 20, будут перебираться значения от 1 до 100 с шагом 2 (т.е. 1, 3, 5, ..., 97, 99, 101)
3.region — предопределенное слово? что им отгораживается? можно использовать другое? ты просто везде повторяешь region для разных участков кода, что это дает?

конструкция
#region

#endregion
позволяет делать код более читабельным. Если есть такая конструкция, то можно нажать на зак "-" и сжать весь код между этими двумя операторами.
и можно выложить куданибудь код отдельно файликом, посмотреть бы у себя.
Код выложу в следующем посте…
Планирую выкладывать коды всех систем, которые буду тестировать. Было бы неплохо организовать что-то типа сообщеста, когда совместно делаем код, а потом каждый проводит тестирование на определенной бумаге и результаты где-нибудь смотрим и анализируем. Бумаг ведь много — так было бы быстрее.
using <> — что именно используем и для чего нужна каждая?
они уже будут в скачанной проге или их искать гдето надо эти модули
avatar
using — это специальное слово, которое помогает в коде писать сокращенный путь…
Советую Вам вот здесь посмотреть видеоуроки по C# www.intuit.ru/department/pl/incsharp3/
Плюс у меня пост был со ссылками на обучающие ресурсы: finlabportal.ru/2011/04/torgovaya-sistema-algoritm-sozdanie-i-testirovanie-mts/
спасибо!
а в текстовом виде код где-нить можно увидеть?
такие пробойные системы имеют большое проскальзывание кстати
Выложу в следующем посте.
А не лучше бы новичкам сначала показать визарды генерации скриптов? а то прям так ушат программерского кода на народ, который сложнее экселя ничего не осваивал
avatar
Так я тоже в программировании совсем мало шарю. Мне кажется, если посмотреть курс по основам C# — это максимум неделя, то можно с этим кодом легко разобраться.
без сырцов низачот…
avatar
сырцы это что такое? код в текстовом виде? Если да, то в следующем посте выложу.
Период оптимизации 2 недели? Вы смеётесь?
avatar
Почему 2 недели то? Год! там каждая свеча — 30 минут… Кстати, можно на ты.
Год тоже очень мало, особенно для 30-ти минуток. Особенно такой год, как 2010-2011.
avatar
видеоуроки посмотрю)
опыт прогр-я был, тут просто спрашиваю про значения каждой строчки)
т.к. копать при написании придеться самому)

про совместное разр-ку и тестирование — ЗА ++
avatar
Да, было бы очень интересно группу по интересам создать и действовать так: делаем код системы и распределяем среди участников — кто какую бумагу тестирует. А потом совместно смотрим результаты тестирования. У одного человека, чтобы одну систему протестировать уйдет примерно 2 дня, а если все вместе — думаю часа за 1,5 справиться можно.
Дим, хочу у тебя код попросить стратегии которую ты описывал в этом посте? хочу использовать её на своих курсах и в целом интересно как она работает )
avatar
Не вопрос — уже пишу новый пост. Как закончу — будет эта стратегия как приложение в формате *.sc

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

....все тэги



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