Трейдеры получают прибыль на биржах от курсовой разницыТрейдеры — активные участники биржи. Они отслеживают курсы валют и проводят сделки купли-продажи, чтобы извлекать прибыль.Криптовалютные биржи работают по аналогичному принципу, только с биткоином, эфириумом и другими цифровыми валютами.Доход от сделок зависит от способности трейдера к анализу рыночной ситуации и быстроты реакции. Чем больше эффективных сделок, тем выше прибыль игрока.Задача: создать алгоритм для трейдинга на биржах криптовалютВ 2017 году в OrbitSoft обратилась американская компания за разработкой робота для сделок с криптовалютой. Задача — автоматизировать покупку и продажу криптовалют на бирже для получения прибыли.Необходим был алгоритм, который работает как трейдер — анализирует курсы криптовалют и совершает сделки. Чем больше разница (спред) между ценой покупки и продажи, тем выше прибыль.Чтобы максимизировать доход заказчика, алгоритм должен был уметь:постоянно мониторить рынок, чтобы купить валюту по выгодной цене;подавать заявки на покупку и продажу;переводить деньги на разные биржи, где торгуется нужная криптовалюта;собирать аналитику по сделкам и прогнозировать изменение цены;присылать отчеты заказчику о сделкахРешение: разработка алгоритма для совершения сделок, анализа данных и представления отчетовOrbitSoft предоставил заказчику комплексное решение, которое автоматически покупает и продает криптовалюту на разных биржах с использованием API. Система состоит из 3 модулейСбор и анализ данных.Постоянно собирает данные через API: курсы криптовалют, сделки за период и последние транзакции. После анализа данных программа предлагает решение в соответствии со стратегией трейдераВзаимодействие с биржами.Создает и отменяет биржевые заявки, открывает и закрывает позиции по сделкам, обновляет статус сделки.Статистика по сделкам.Обрабатывает данные по транзакциям, считает эффективность и ведет детальный учет.Расскажем подробнее, как работает и что умеет алгоритм.Использует стратегию арбитража и триангуляцииБиржевой арбитраж — последовательные сделки, которые приносят доход от разницы цен на разных биржах.Например, робот выбирает пару «биткоин/доллар» (BTC/USD) на биржах, А и В. Он отслеживает, когда есть разница в ценах на биткоин на двух биржах, и делает последовательные шаги: покупает на бирже, А и продает на бирже B.Стратегия триангуляции использует расхождение курсов трех криптовалют и выявляет пары валют с наибольшей прибылью. На выбранные пары алгоритм одновременно выставляет три заявки: две на покупку и одну на продажу. Прибыль появляется за счет разницы курсов.Все сделки могут проходить в рамках одной биржи или сразу на нескольких биржах.Например, робот покупает криптовалюту DASH за доллары США, затем криптовалюту EMC за DASH и продает EMC за доллары США.USD → DASH → EMC → USDСравнивает не только курсы валют, но и комиссии бирж за сделкиИз прибыли по сделкам нужно вычесть комиссию биржи. Она может составлять от 1 до 15% от прибыли. Робот учитывает размер комиссий при расчетах эффективности сделки.Получает данные и рассчитывает спреды внутри и между биржамиНа регулярной основе робот запрашивает таблицы ордеров с бирж по заданным парам и проводит анализ. Результаты хранятся в базе данных и доступны для вывода на график.Алгоритм определяет вероятные временные интервалы, в которых спред между биржами будет держаться на необходимом уровне. Он находит наиболее выгодное значение спреда для покупок, а при достижении максимальных значений спреда сигнализирует системе о размещении заявки на покупку или продажу.На данный момент интегрированы следующие биржи:kraken.combittrex.combitfinex.combinance.compoloniex.comhitbtc.comlivecoin.netdsx.ukbitstamp.netgatecoin.combitmex.comxbtce.comcryptopia.co.nzИнтегрирована работа со всеми валютными парами, представленными на биржах.Предсказывает вероятную цену и анализирует доступные объемы валютыЧтобы осуществлять арбитражную стратегию, трейдер определяет рыночные цены для заданного объема криптовалюты. Алгоритм предсказывает цену на основе анализа заявок. Он учитывает скрытые ордера и заявки stop loss и take profit. Анализирует предложения о покупке и продаже в стакане и доступный объем валюты.Умеет одновременно ставить, отменять и проверять статус заявок на биржеРобот работает со следующими типами заявок или ордеров: market, limit, fill или kill. Априори используется ордер типа market. Если он не найден или не поддерживается, то робот применяет fill or kill или limit.Работа с ордерами ведется для следующих бирж:• kraken.com• bittrex.com• poloniex.com• hitbtc.com• livecoin.net• dsx.uk• xbtce.comРешает проблемы с отменой или сбоем при размещении заявкиВ процессе выставления и исполнения заявок могут возникать следующие проблемы:— изменение цены после отправки ордера;— отмена транзакции;— неполное выставление заявки или неполная сделка.OrbitSoft провел серию тестов алгоритма на случай, если ордер выставлен на одной бирже и не выставлен, отменен или сброшен на второй.В результате мы учли возможные проблемы и разработали защитный механизм, который позволяет успешно выставить заявку в пределах существующего спреда.Представляет анализ и отчетность в удобном, наглядном видеРобот показывает спреды и базы заявок в виде наглядного графика.Для передачи данных заказчику разработан Telegram-бот. Он получает все уведомления о доставке, отмене и исполнении заявок и отправляет оповещения через Telegram.На графике могут быть представлены спреды на биржах и между биржами. А также книги заявок с аналитикой за период и отсортированные по объему сделокПример отчета о прогрессе и исполнении заявок на биржеУсловия и ограничения алгоритмаПредлагаемое решение эффективно при соблюдении следующих условий:Достаточный размер спреда и объемов торгов.Для арбитража между биржами:объем спреда между биржами в процентах превышает совокупную комиссию по сделкам;схождение и расхождение спредов в приемлемые сроки;необходимый объем торгов на биржах для проведения операций и исполнения заявок в заданные промежутки времени.Для триангуляции внутри одной биржи:курсовая разница между валютными парами превышает комиссию за операции с заявками на бирже;необходимое количество валютных пар на бирже;необходимый объем торгов на биржах для проведения операций исполнения ордеров в заданные промежутки времени.Сильная волатильность рынка криптовалют для эффективного трейдинга.Возможность работать с биржей по API, чтобы отправлять заявки и получать данные.Возможность работать с биржами на сокетах, чтобы сохранять неразрывное подключение и обмен данными.