Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Как я писал робота для квазиарбитражной торговли биткоинами

Anna | 20.06.2014 | нет комментариев
Месяц назад, когда цена биткоина достигла 250 баксов, а после этого упала до 50, у меня возникло желание поучаствовать в этом развлечение, написав торгового бота, тот, что бы зарабатывал на сходственных изменениях.

Выяснилось, что две особенно знаменитые биржи, на которых торгуют биткоинами — это MtGox и BTC-e. Я положил деньги на одну из них и принялся думать, как предсказать метаморфоза цены, а также, как это автоматизировать. Дело осложнялось тем, что на этих биржах дозволено приобретать и продавать только на свои средства, следственно невозможно играть на понижение, занимая короткую позицию, потому что, как говорил Матроскин: «Дабы продать что-нибудь непотребное, необходимо вначале приобрести что-нибудь непотребное».

Обзор

Почитав материалы по теме, я пришел к итогу, что существует две особенно распространенные стратегии для алгоритмической торговли:

  1. маркетмейкинг — удерживаем непрерывно выставленнными ордера на покупку и/или продажу по нынешней цене продажи и покупки соответственно, так что если кто-то хочет приобрести либо продать биткоины, то он торгует именно с нами, в итоге мы в среднем приобретаем и продаем идентичное число, дешевле и подороже соответственно, за счет чего имеем выручка.
  2. арбитраж — если есть две биржи, на которых торгуют одним и тем же, и в определенный момент времени цена покупки на одной из них поменьше, чем цена продажи на иной, то приобретаем на первой и продаем на 2-й.

При рассмотрении использования этих стратегий к торговле биткоинами оказалось, что первая накладна из-за комиссий бирж — 0.6% на MtGox и 0.2% на BTC-e за одну сделку, в то время как средний спред (разница между ценой покупки и цены продажи) на обоих биржах поменьше, чем удвоенная комиссия за сделку.

Вторая тактика в чистом виде оказалась неприменима: правда разница в цене между BTC-e и MtGox обыкновенно есть, причем на BTC-e, как правило, дешевле, чем на MtGox, перевод денег с MtGox на BTC-e затруднен задержкой итога в несколько дней, а также, комиссией, которая в среднем съедает всю выручка. Но если взглянуть на объем торгов, то дозволено найти, что на MtGox он примерно в 10 раз выше, чем на BTC-e, из чего дозволено сделать итог, что «законодателем цены» является MtGox, а BTC-e его легко догоняет с некоторой поправкой (если бы не догоняла, был бы допустим «мощный» арбитраж с переводом денег/биткоинов туда-сюда). В итоге было принято решение писать бота для торговли на BTC-e, тот, что ориентируется на цену с MtGox.

Построение модели

Разглядим отношение цены на MtGox и BTC-e, а вернее, его настоящий логарифм — для «равноправности» 2-х цен, назовем его R:

Посмотрим, как меняется цена на BTC-e в зависимости от R:

Приметно, что через некоторое время позже резкого увеличения R цена на BTC-e растет, а позже уменьшения — наоборот, падает. При этом, при R < 0 цена неизменно падает, а при R > 0.1 цена неизменно растет. Дабы узнать, что же между, возведем функцию разделения R:

Видно, что на промежутке [-0.1; 0.11] находится множество значений R, при этом в нем она распределена примерно равномерно, следственно по значению R в этом диапазоне невозможно однозначно определить, как будет меняться цена; в то же время, метаморфоза R на некоторую пороговую величину татами численного моделирования, примем связанность  на промежутке [RminRmax] линейной:

Оценим величину ну через HTTP-запросы с BTC-e. Запросы на BTC-e отправляются всякие две секунды, т.к. на сервере такая квота; данные с MtGox приходят приблизительно с такой же частотой. И то и другое просходит в отдельных потоках, информация о цене отправляется в основной поток через Queue. В основном потоке просходит обработка данных по описанному выше алгорифму, и если необходимо совершить покупку либо продажу, создается ордер по последней лучшей цене. Если ордер не исполнился всецело, то на дальнейшей итерации он отменяется и создается новейший, до тех пор, пока существует надобность в покупке либо продаже (пока разница между  и нынешним состоянием счета составляет больше 0.01 BTC, меньшими объемами торговать не разрешает биржа).

Каждого получилось около 500 строк кода, все исходники доступны на github. От того что скрипт должен трудиться круглосуточно и с отличным каналом связи, отменнее арендовать для него VPS, что я и сделал.

Итоги

Описанная тактика разрешает получать приметную выручка при крупных колебаниях цены (15-20%), при малой волатильности она примерно не приносит дохода. К сожалению, когда я всецело завершил разработку модели и написание программы, теснее шел май, и как я думаю, период апрельских колебаний курса закончился, от того что ажиотаж, связанный с биткоинами, всюду притих. Программа проработала около недели, но из-за спокойствия рынка заработка фактически не было. Следственно интерес к торговле начал исчезать, а от того что внесенные на биржу деньги невзначай потребовались, сегодня я вывел их и написал данный пост.

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB