Germany | Finland | Saint Petersburg | Drive

От привода к торговому алгоритму

Опубликовано в Торговые системы

Примерно месяц назад ко мне обратился будущий Заказчик. Оказалось, он активно использовал в своей торговле Калькулятор позиции от Н. Морошкина. И использовал вполне удачно, с пользой для баланса счета. Было озвучено абсолютно понятное желание превратить ручной привод в белку, "что орешки все грызёт".

В чем разница между приводом и автономным алгоритмом? Ответ, в общем-то очевиден - во втором случае в цепочке принятия решений отсутствует тот, кто нажимает на кнопки. Вместо этого "кого-то" кнопки нажимает программа.

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

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

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

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

Пользователю предоставлена возможность зафиксировать прибыль при достижении ее планового размера либо предоставить ситуации развиваться до момента срабатывания скользящего стопа. Также пользователь (если он вдруг оказался рядом) может в любой момент штатными средствами QUIK может закрыть позицию, торговая система это увидит.

Изначально Заказчик предполагал использование исходного кода привода с целью его расширения в сторону добавления требуемого ему функционала и превращения привода в торговую систему. Однако рассмотрение исходного текста показало невозможность использвания этого пути. Дело в том, что привод написан из предположения (абсолютно обоснованного), что его работа будет происходить под наблюдением пользователя и в случае любых непредвиденных ситуаций он (пользователь) сможет принять адекватное решение, вмешавшись в работу привода. Торговая система обязана работать автономно, поэтому использовать готовый код привода, к сожалению, не представилось возможным.

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

Торговый робот: традиционно - любые рынки, любое количество одновременно торгуемых бумаг на любых таймфреймах, контроль рисков по каждому инструменту и по портфелю инструментов в целом, отдельная настройка каждого  (в том числе "на лету"), торговля по любому количеству счетов, визуальное сопровождение процесса торговли на графиках, настройка торговли в long или short, возможность использования параллельно иных роботов или ручной торговли по тем же инструментам и так далее. Исходный язык - QPILE, объём исходного текста 62кБайт или 1700 строк (комментарии и пустые строки не учтены). Значительная часть портфеля занимается обработкой нештатных ситуаций, рыночных или инфраструктурных, с целью обеспечения максимальной надежности.

Опубликовано с разрешения Заказчика

Добавить комментарий