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-метода

октября 15
Похожие статьи:
Метки:
Оставить комментарий


loaded:ok