О торговле на бирже


Создаем и тестируем торговую стратегию — пишем код и тестируем



Создаем и тестируем торговую стратегию — пишем код и тестируем

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

Если вы еще не прочли предыдущую статью, советую вам это сделать, перейдя по ссылке:



В прошлый раз мы четко сформулировали будущую торговую стратегию и выделили ее основные правила и особенности:

1. Продолжение тренда более вероятно, чем его смена;
2. Выходящий за рамки тренда шум возвращается к основному направлению;
3. Отделение шума от тренда происходит с помощью двух аппроксимирующих кривых;
4. Моментом открытия/закрытия позиций служит точка пересечения кривых;
5. Открытие и закрытие позиций происходит сменой позиции «по рынку».

Теперь нужно математически сформулировать факт пересечения. Для того, чтобы это сделать, нужно отслеживать последние две точки каждой кривой. А1,А2 - последние две точки кривой Шума; Б1,Б2 - последние две точки кривой Тренда. Смотрим варианты ниже:

Создаем и тестируем торговую стратегию — пишем код и тестируем

Рисунок 1


Кривые не пересекаются. А1 больше Б1 и А2 больше Б2. В этом случае никакие действия не предпринимаются.

Создаем и тестируем торговую стратегию — пишем код и тестируем

Рисунок 2


Кривая Шума пересекает кривую Тренда сверху-вниз. А2 меньше Б2 и А1 больше Б1. В этот момент предпринимается торговая операция — покупка.

Создаем и тестируем торговую стратегию — пишем код и тестируем

Рисунок 3


Кривая Шума пересекает кривую Тренда снизу-вверх. А2 больше Б2 и А1 меньше Б1. В этот момент предпринимается торговая операция — продажа.

С пересечением и условиями открытия/закрытия позиций разобрались, можно приступать к написанию кода программы-тестера. Для этого нам понадобится программа TestER TB 1.0, получить ее можно по ссылке:



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

Эта часть текста скрыта. Для просмотра войдите на сайт или ЗАРЕГИСТРИРУЙТЕСЬ.


TotalTableSim2[CalcSim1,3] - это значение кривой в текущий момент времени;
TotalTableSim2[CalcSim1-1,3] - это значение кривой в предыдущий момент времени;
TotalTableSim2[CalcSim1,1] - это значение цены инструмента в текущий момент времени;
0,1 - это коэффициент К (далее мы будем его править).

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

Теперь в ячейке TotalTableSim2[CalcSim1,3] будет находиться значение кривой, например, Шума для текущего момента времени (CalcSim1). Предыдущее значение будет в ячейке TotalTableSim2[CalcSim1-1,3] (CalcSim1-1).

По аналогии пишем код для расчета кривой Тренда:

Эта часть текста скрыта. Для просмотра войдите на сайт или ЗАРЕГИСТРИРУЙТЕСЬ.


Теперь в ячейке TotalTableSim2[CalcSim1,5] будет находиться значение кривой Тренда для текущего момента времени (CalcSim1). Предыдущее значение будет в ячейке TotalTableSim2[CalcSim1-1,5] (CalcSim1-1).

Вписываем этот код в соответствующие места программы-тестера (строки 221 и 544). Отлично! Теперь у нас есть значения последних 2 точек наших кривых. Пишем условия для открытия/закрытия позиций.

На продажу:

Эта часть текста скрыта. Для просмотра войдите на сайт или ЗАРЕГИСТРИРУЙТЕСЬ.


Перевожу на русский язык.

Если Последняя точка кривой Шум А2 (TotalTableSim2[CalcSim1,3]) больше последней точки кривой Тренд Б2 (TotalTableSim2[CalcSim1,5]) и предпоследняя точка кривой Шум А1 (TotalTableSim2[CalcSim1-1,3]) меньше предпоследней точки кривой Тренд Б1 (TotalTableSim2[CalcSim1-1,5]), то в переменную SignalValue записываем значение S (что соответствует сигналу «продажа» для кода имитации работы торгового робота в программе).

На покупку все по аналогии:

Эта часть текста скрыта. Для просмотра войдите на сайт или ЗАРЕГИСТРИРУЙТЕСЬ.


Вставляем эти две строчки в код программы в строки 559 и 560 соответственно. Проверьте, чтобы коды были вписаны и в обработчик длительного тестирования и в обработчик выборочного тестирования.

Все готово! Можно приступать к тестированию. Для начала посмотрим правильно ли ведет себя торговая стратегия на 1 дне. Запускаем тестер TestER TB 1.0, указываем путь к файлам истории, нажимаем «Вывод» и два раза щелкаем по произвольному файлу из списка.

И вот, что получаем в результате:

Создаем и тестируем торговую стратегию — пишем код и тестируем


Создаем и тестируем торговую стратегию — пишем код и тестируем


Видно, что стратегия работает так, как было запланировано. Там, где красная линия (шум) пересекает зеленую (тренд) сверху вниз, происходит покупка, а где снизу вверх — продажа. Можно приступать к длительному тестированию. Для этого запускаем TestER TB 1.0, снова указываем путь к файлам истории, нажимаем «Вывод» и кнопку «Расчет». Ждать результата придется некоторое время, ведь идет тестирование целого года (2010). В результате тестирования получаем следующую картину:

Создаем и тестируем торговую стратегию — пишем код и тестируем


По графику накопленной прибыли видно, что прибыль есть, она достаточно высокая и более или менее стабильная. При размере ГО в тот год порядка 1500 рублей, 23 000 пунктов даже с вычетом комиссии за сделки — очень достойно. Можно тестировать следующий год. Коэффициенты, которые я подставил («с потолка») в формулу расчета кривых сможете подобрать самостоятельно, там не такой уж и большой выбор и, таким образом, сможете «наткнуться» на еще более удачные цифры.

Какой вывод можно сделать? Даже самая (на первый взгляд) простая стратегия может показать неплохую прибыль, в случае ее грамотной оценки и настройки в процессе предварительного тестирования. Тестирование можно производить как с помощью программ-тестеров, так и просто с помощью EXcel, если это позволяет стратегия. Но само по себе тестирование — обязательный этап в разработке своей собственной торговой стратегии.

Если вы хотите разработать эффективную торговую стратегию, делайте все последовательно:

1. Учитывайте характер выбранного вами инструмента (что преобладает тренд или флэт; размер волатильности и т.д.);
2. Разработайте свое предположение или возьмите в расчет уже существующее наблюдение;
3. Реализуйте его на практике, посмотрите в каких случаях предположение оказывается верным;
4. Протестируйте стратегию и в случае необходимости подкорректируйте ее.

В следующих статьях я рассмотрю случаи, когда результат тестирования оставляет желать лучшего, однако, стратегия все равно имеет право на существование и эффективное ее использование.

Если вы что-то не поняли из статьи, не расстраивайтесь, ведь для вашего удобства в программу-тестер TestER TB 1.0 уже вписана эта стратегия с подробнейшими пояснениями. Задавайте вопросы в комментариях. Если информация была вам полезна, тогда обязательно оцените статью на сайте и ставьте лайк в группе! Всем удачи и больших прибылей.


Подписывайтесь на обновления и добавляйтесь в друзья (вопросы, советы и т.п.):



Инстаграм:



ПОЧТА:

m_i_zaharov@mail.ru



Теги: торговая стратегия, стратегия, биржа

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам
зарегистрироваться либо войти на сайт под своим именем
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.