Подключение к бирже Bittrex.com через websocket на Perl

Цена договорная • безналичный расчёт, электронные деньги
05 января 2019, 17:24 • 4 отклика • 41 просмотр
Необходимо реализовать на языке Perl подключение к бирже Bittrex.com через websocket и получение информации для формирования «локальной копии» биржевого стакана (orderbook).

Задача:

1)получать информацию (поддерживать актуальное состояние стакана цен) по нескольким валютным парам одновременно. Например, USD-BTC, USD-ETH, USD-XRP, USDT-BTC, USDT-ETH, USDT-TRX, BTC-ETH, BTC-TRX, BTC-LTC, ETH-XRP, ETH-BCH, ETH-ETC,
2)в случае изменения лучшей цены продажи или покупки по одной из вышеперечисленных пар, дописать в файл с именем формата «price_change_dd.mm.yy.log» строку вида «dd.mm.yy-hh.mm.ss,pair_name,ask_price,ask_volume,bid_price,bid_volume», где «pair_name» – одна из валютных пар перечисленных выше, «ask_price,ask_volume,bid_price,bid_volume» - лучшая цена покупки, объем этой покупки, лучшая цена продажи, объем этой продажи соответственно.

Скрипт должен:
-запускаться на ОС Linux и Windows (Perl от ActiveState),
-стабильно работать 24/7 без необходимости перезапуска, следить за подключением к бирже и автоматически восстанавливать подключение при разрыве,
-логировать существенные события и ошибки в CSV формате («dd.mm.yy-hh.mm.ss,event/error_name,details») в файл с именем формата «working_dd.mm.yy.log» и «errors_dd.mm.yy.log» соответственно,
-получать информацию (поддерживать актуальное состояние стакана цен) по нескольким валютным парам одновременно,
-проверять актуальность текущего стакана цен, а в случае рассинхронизации, выполнять ресинхронизацию по необходимой валютной паре (плюс запись в лог-файл момента рассинхронизации, ее причины и момента восстановления),
-в случае приостановки торгов на бирже (в целом или по одной из валютных пар)/недоступности биржи/отсутствии синхронизации цен должен подниматься соответствующий флаг (плюс запись в лог-файл двух отметок), запись цены по недоступной паре в этот момент не осуществляется.

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

Дополнительные требования:
-скрипт должен быть «thread safe», включая используемые модули,
-информация из биржевого стакана и флаги доступности торгов, состояния синхронизации должна быть доступна в других тредах.


Сразу указывайте примерные сроки и цену.

Пример реализации на Python: https://github.com/slazarov/python-bittrex-websock...