January 8, 2023

Автоматическая стратегия Купи и Держи

Напоминание: как я писал ранее, торговый робот это помощник, а не источник пассивного дохода. Без участия человека робот проиграет рано или поздно.

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

В простом варианте стратегия предполагает покупку ниже определенного уровня buy_threhold, а продажу выше определенного пользователем уровня sell_threshold. Кроме этих двух порогов роботу необходима величина максимальной позиции, которую он имеет право набирать max_position. Этого уже вполне достаточно для работы по совсем простому алгоритму. Но на практике падение и рост могут быть затяжными, и тогда робот будет продавать слишком дешево, а покупать слишком дорого. Поэтому покупки и продажи лучше распределять по времени, оперируя за раз лотом определенного размера qty. А следующий вопрос: а как часто? Давайте тогда введем новый параметр - интервал закупок в днях: interval (1d, 2d, 3d).

Тогда правила могут быть такими:

  • Если цена price выше порога sell_threshold и с момента прошлой покупки прошло больше времени, чем интервал interval, и в наличии имеются открытые позиции, то выставляем на продажу лот не более размера qty.
if price >= sell_threshold and date_now - last_sell_date >= interval:
    sell( min(position, qty) )
    
  • Если цена price ниже порога buy_threshold и с момента прошлой продажи прошло больше времени, чем интервал interval, и еще не набрана максимальная позиция, то выставляет заказ на покупку лота не более размера qty.
if price <= buy_threshold and date_now - last_buy_date <= interval:
    buy( min(qty, max_position - position) )
    

На рынке также могут случаться события pump and dump, когда котировки резко искусственно разгоняются, и затем также быстро подают. Стоит ли учитывать их в стратегии - открытый вопрос. Но робот с ограничением по частоте сделок, может упустить такие моменты.

Ответственность пользователя, это правильно определить параметры buy_theshold, sell_theshold, qty, max_position. Разумеется параметры придется адаптировать под изменения рынка. Остальное сделает робот. Возможно, у читателя возникает вопрос: а чем робот лучше, чем стоп-лоссы и тейк-профиты. Отвечу, что у многих брокеров они не всегда срабатывают (об этом можно много почитать на просторах интернета), их нельзя выставить, когда биржа неактивна, и даже если он сработал и была выставлена заявка, но не исполнена, то к концу торговой сессии заявка отменяется, а нового стоп-лосса или тейк-профита у Вас уже не будет (пока вы вручную его еще раз не выставите).

Разумеется, любые идеи приветствуются.