четверг, 15 октября 2015 г.

SWT-метод: робот пошел в детский сад.


23 сентября, вконец вымотанный агрессивной ручной торговлей, я задумался: А может все-таки построить робот?

Ничто так не изматывает, как мониторинг рынка в ожидании возможности открыть сделку вручную. И если алгоритм открытия сделки можно запрограммировать, то делать это нужно. Потому что в процессе длительного ожидания человек склонен утрачивать адекватность, впадать в тильт и делать разную ерунду, которую часто и сам себе потом объяснить не может.

А так поручил техническую часть роботу, а сам разгрузив психику контролируешь его со стороны, как риск-менеджер. В преимуществах этого подхода я уже успел убедиться на собственном опыте. Одна экономия времени дорогого стоит.
Что меня останавливало, так это отсутствие под рукой грамотного программиста, которому я доверяю, и длительный процесс неизбежных корректировок и доработок, поскольку как все реализовать в автомате я и сам до конца не представлял. Это при удачном варианте с выбором программиста.
При неудачном выборе исполнителя оставался вариант с расходами и продуктом, который ни в малейшей степени не соответствует первоначальным ожиданиям, а скорее всего вообще не будет работать.
Поэтому пришлось вспомнить старое правило: "Хочешь сделать быстро и правильно - делай сам!"

Правило верное, но проблема в том, что я не программист ни разу. И если не считать упражнений с программируемым калькулятором в 70-х прошлого столетия весь мой опыт программирования и знакомство я зыками заключался в написании индикаторов SWT-метода по готовому шаблону не понимая и не вникая в суть технических деталей кода. Мне показали, где и что можно менять, а дальше уже была чисто техническая работа.

С роботом задача немного сложнее... Однако не боги горшки обжигают. Я вспомнил знакомого канадского лесоруба, который до 30 лет шастал по лесам, а потом ему это надоело и он решил стать программистом. И стал. И стал зарабатывать в несколько раз больше, чем имел, когда рубил лес. Конечно, он не супер-пупер специалист, но не обязательно быть звездой. Достаточно уметь делать необходимую работу.
И я решил делать сам.

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

И вот сегодня я наконец могу сказать, что робот учитывает почти всё, что я использую в ручной торговле, за исключением учета направления трендов старших уровней иерархии.

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

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

Сегодня немного поэкспериментировал по необходимому уровню детализации движений рынка при определении торговых сигналов и по оптимизации риска.
Программа изначально делалась для торговли трендов недельного цикла - в системе обозначений SWT-метода - локальный тренд.
Рабочим таймфреймом для уточнения точек входа предполагался таймфрейм М1. Но в ходе тестов и первоначальной эксплуатации робота выяснилось, что это не очень удачный выбор: избыток торговых сигналов быстро загружает максимально возможный объем позиции. При этом основная часть объема оказывается открытой с опережением и не по лучшим ценам, а лучшие сигналы, поступающие в дальнейшем, игнорируются из-за достижения предельной загрузки торгового счета.

Результаты сравнительного анализа  работы робота на таймфреймах М1 М5 и М15 приведены на рисунках внизу.
Период тестирования -  01.08.2015-13.10.2015.
Инструмент - EURUSD.
Ограничения по кредитному плечу - не более 1:50.
Робот торгует и восходящие и нисходящие движения по локальному тренду. Направление трендов старших уровней иерархии не учитывается.
Параметры торговой стратегии на всех таймфреймах неизменны. Единственный параметр, с которым мы немного поиграли - это риск на сделку.

Сравнительный анализ тестов показывает, что по первому впечатлению оптимальным таймфреймом для работы робота является М5. Насколько можно доверять этому факту - жизнь покажет.
Повторюсь, что торгуемый тренд не зависит от выбора таймфрейма - это всегда тренд недельного цикла, назависимо от того, на какой график сброшен робот..
Таймфрейм в некоторых пределах определяет алгоритм выбора точек входа в рынок, изменяясь на таймфреймах от М1 до М15. Для таймфреймов старше М15 точки входа в рынок тоже не зависят от выбора таймфрейма и определяются графиком масштаба М15.











Всем Удачи!!!

SWT-метод. Теория и практика применения
Параметры волн SWT-метода

Комментариев нет:

Отправить комментарий