Подключение к бирже Bittrex.com через websocket на Perl
Задача:
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...