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

В предыдущей статье я подробно рассказал о том, как строить стратегические предположения и как их реализовывать на практике. Сегодня продолжим тему создания торговой стратегии для биржи, напишем компьютерный код для ее тестирования и запустим его в работу с помощью программы-тестера. После этого проанализируем и оценим получившиеся результаты, сделаем соответствующие выводы.
Если вы еще не прочли предыдущую статью, советую вам это сделать, перейдя по ссылке:
В прошлый раз мы четко сформулировали будущую торговую стратегию и выделили ее основные правила и особенности:
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
Теги: торговая стратегия, стратегия, биржа
Другие новости по теме:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.