October 23, 2022

Алгоритм торгового робота Step-By-Step

Предлагаю отвлечься от сухих отчетов в канале о деятельности робота и рассмотреть алгоритм его работы, и предысторию появления.

Вступление

Изначально робот был разработан для торговли на криптовалютной площадке Binance. Биржа была выбрана, потому что предоставляла простой и относительно удобный API, хорошо документированный и с примерами. Разработанный робот при торговле руководствовался многочисленными индикаторами технического анализа, но как выяснилось спустя время, один только ТА не позволяет принимать верные решения, а протестированные алгоритмы, не смотря на свою сложность, работают хорошо на исторических данных, но совсем не работают реальных данных. Или правильнее будет сказать, плохо работают на реальных данных, не получая никакую прибыль. Поэтому средства с Binance были выведены, а робот заброшен в дальний угол.

Периодически торгуя на бирже, ловил себя неоднократно на мысли, что постоянно не хватает помощника, который следил бы за котировками и выдавал бы сигналы о движениях ценных бумаг. И по воле случая, совершенно неожиданно в феврале обзавелся аккаунтами у нескольких брокеров. Площадка Альфа-Инвестиции позволяла запускать бесплатно разных торговых роботов локально через приложение Alfadirect. Там я и познакомился с алгоритмом торговли step-by-step, который понравился мне своей простотой. Но возникла проблема: приложение Alfadirect работает только под ОС Windows, его надежность сильно хромает: то соединение с сервером потеряет (робот тогда останавливается), то просто упадет. И арендовать сервер желания не было. У Тинькофф же обнаружил открытый API для торговли на бирже, правда по надежности он такой же сырой, как и продукт Alfadirect, а по описанию и удобстве в работе на порядок хуже, чем у Binance. Но это не проблема, когда пишешь приложение сам, и имеешь возможность написать код, который обходит их проблемы. И свое приложение можно разработать для headless системы, например Linux. Было решено привести в рабочее состояние старого робота с Binance, адаптировав его под Тинькофф. Так и получился текущий робот.

Алгоритм

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

В начале торговли необходимо определиться с базовыми параметрами:

  • сколько лотов купит робот на старте;
  • какой размер одного лота, которым будет оперировать робот;
  • максимальный размер позиции, который допускается набирать роботу;
  • шаг изменения цены акции в процентах, с которым робот будет торговать;

Именно эти первоначальные параметры имеют большое значение в успешности робота, и здесь вся ответственность именно на человеке. Робот - это всего лишь инструмент. Если выбранный шаг слишком велик, то робот будет редко совершать операции, и возможно, упустит свою возможность получить прибыль. Если выбранный шаг цены слишком мал, то робот будет совершать большое количество однотипных операций при движении рынка в одном направлении, и упрется в ограничения: либо все продаст, либо купит много быстро (сколько ему было разрешено) и будет сидеть в просадке.

Ниже представлен график работы робота, который рассчитан на проведение операций при изменении цены на 2% или более.

Демонстрация step-by-step алгоритма

Как можно заметить в данном примере, продажа всегда происходит по более высокой цене, чем покупка.

Пограничные случаи

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

  1. ничего, если набрана максимальная позиция, только ждать
  2. ничего, если проданы все лоты, ждать снижения рынка
  3. корректировать свое поведение.

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

И здесь будет продолжение истории...