Размышления о торговле криптовалютами (часть 1)

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


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

Я предпочитаю торговлю альткойнами (форками) поэтому основное время провожу на Poloniex и Bitfinex а вывод делаю через BTC-E. Торговля ведется как с помощью ботов, так и вручную. О ручной торговле расскажу как-нибудь позже.

За последние 6 месяцев я создал два бота, которые работают на разных акаунтах и отдельно от основного, где я работаю вручную. Сама идея создать ботов появилась из-за того, что у меня не хватало времени постоянно следить за биржей, и чуть ли не каждая оставленная на ночь открытая позиция опускалась ниже уровня стоп лосса. В то время я торговал на BTC-E, где в веб интерфейсе нельзя создать стоп лосс ордер. И все началось с необходимости автоматически закрыть позицию, если цена опустится до определенного уровня.

Недели две почитав книжки по JavaScript и Node.js я был готов к созданию автоматической закрывалки ордера. К счастью, я нашел на гитхабе уже готовую библиотеку, для работы с API BTC-E, украл и допилил. В результате я мог вручную указать пару и цену и если цена опуститься до указанной, то бот создаст заявку на продажу. Не бот, а предел мечтаний, прям… Со временем оказалось, что можно сделать больше.

Параллельно, как и все начинающие трейдеры, я кинулся штудировать ТА и индикаторы. Мне казалось, что понимания одних индикаторов достаточно для прибыльной торговли на часовых интервалах. И так изучив MACD, RSI и BB (я еще не понимал зачем нужен объем и ни о каких OBV и VWAP еще не было речи) я прикинул следующую стратегию:

  • как критерии для принятия решений использовать направление движения цены за последние два периода, MACD, RSI и BB. Использование сразу нескольких критериев должно повысить качество прогноза и вероятность получения прибыли
  • раздать весовые коэффициенты каждому из критериев. При чем изначально коэффициенты были взяты из головы, и в процессе изменялись
  • немного позже добавился объем тоже со своим коэффициентом
  • все эти коэффициенты должны между собой суммироваться, и по достижению определенного порога должно приниматься решение об открытии или закрытии позиции. Например, если цена движется движется вверх два периода, то получаем один бал в пользу закупки, RSI со значением больше 80 еще плюс 6 и так далее
  • Как только собралось 7 баллов открываем длинную позицию и начинаем считать баллы на продажу.

Стратегия довольно простая и для ее реализации необходимо было доработать автоматическую закрывалку ордеров:

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

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

  • ложные срабатывания во время боковых движений цены. Как только цена начинала колебаться в узком диапазоне бот реагировал на любой ее “чих”, что приводило к частому срабатыванию стопов
  • неэффективность технических индикаторов на коротких интервалах. Бот принимал решение, когда уже было поздно.

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

Частично решить эту проблему можно сместив фокус с индикаторов на движение цены внутри периода, то есть анализировать свечи. Здесь стоит отдать должное японским торговцам рисом, которые обнаружили закономерности в последовательностях свечей и, главное, почему они именно такие несколько сот лет назад. Наиболее понятно про свечи мне рассказал этот YouTube канал. Комбинации свечей, понимание “сентимента” в сочетании с объемом дают возможность с большой вероятностью прогнозировать разворот тенденции.

Но есть нюанс, каким образом этот подход реализовать в коде бота? Так как необходимо проанализировать:

  • формы свечей, если они не совсем похожи не эталон (в большинстве случаев так и есть) то в каких случаях их стоит брать в расчет
  • комбинации несовершенных свечей также неидеальны
  • достаточно ли большой объем сделок в точке предполагаемого разворота
  • наличие стенок в книге заявок. Ведь цена может прекратить падение (рост) не только из-за перевеса спроса (предложения), но и из-за “стенки”, которую выставил большой игрок для того чтобы задержать цену. Тогда заявку какого размера стоит принимать за “стенку”?
  • работу других ботов которые гонят цену в необходимую сторону.

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

Такой вариант бота еще процессе дизайна, даже не разработки. О том, что получится расскажу, возможно, в будущем.

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

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

Задача арбитражного бота запрашивать с каждой из бирж книгу заявок и в момент появления арбитража совершить как можно больше сделок, покупая на дешевом рынке и одновременно продавая на дорогом. В результате получается прибыль 0.1–0.7% (после вычета комиссий) от суммы сделки. Данный метод торговли является безопасным до тех пор, пока цена колеблется в диапазоне или существует восходящий тренд. При возникновении тенденции вниз потери могут превышать всю полученную прибыль. Решением этой проблемы может быть хеджирование торгуемого актива с помощью фьючерсных контрактов, что дает возможность зафиксировать цену на определенный период. Но рынок деривативов — это предмет изучения в недалеком будущем.

В следующей статье я попытаюсь рассказать о своих экспериментах с ручной торговлей.