Skip to content

dyominov/task.5.dyominov.test.1532598488270

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Арбитражный бот

В рамках данного задания необходимо реализовать арбитражного бота криптовалютной биржи Poloniex.

Терминология

Разберемся с основной терминологией.

Криптовалютная биржа

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

Ордер

Для заключение сделки продажи или покупки необходимо открыть биржевую заявку - ордер.

Ордер может быть описан следующими параметрами: пара, стоимость, объем, тип операции. Например:

Пара Стоимость Объем Тип операции
BTC_ETH 1 0.5 Продажа

Из данной таблицы видно, что вы можете купить 0.5 ETH за 1 BTC.

Пара читается справа налево при совершении операции. Например:

  • [BTC_ETH, Продажа] - продаю ETH за BTC,
  • [BCH_ETH, Покупка] - покупаю ETH за BCH.

Биржевой стакан

Если вы откроете страницу торгов на бирже Poloniex, то увидите ордера на продажу - SELL ORDERS и ордера на покупку - BUY-ORDERS, которые выставляют трейдеры. Данные таблицы называются биржевым стаканом и отображают информацию о том сколько и за какую цену хотят купить / продать валюту.

Alt text

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

Арбитражная ситуация

Арбитражная ситуация - это ситуация, при которой за счет разницы в оценке актива (в данном случае валюты) трейдер может получить прибыль.

Например на бирже Poloniex есть три пары валют: BTC, BCH, ETH. И представим, что в биржевом стакане были созданы следующие ордера:

Пара Стоимость Объем Тип операции
BTC_ETH 0.1 10 Продажа
BTC_BCH 0.2 8 Покупка
BCH_ETH 0.8 10 Покупка

Данная таблица демонстрирует арбитражную ситуацию внутри биржи. Если вы выполните ордера, выставленные трейдерами (совершите с ними сделку) :

  • 1 BTC => 10 ETH
  • 10 ETH => 8 BCH
  • 8 BCH => 1.6 BTC

то останетесь в прибыли на 0.6 BTC, так как изначально имели 1 BTC.

API

На Poloniex доступна документация API. В рамках нашей задачи нас интересует раздел Public API Methods, метод returnOrderBook.

Order Book - является описанным выше биржевым стаканом, который возвращается в JSON формате, а не на web-интерфейс.

Попробуйте перейти по ссылке Poloniex API. В результате вы должны получить ответ для BTC_ETH, похожий на этот:

{
    "asks":[["0.06207911",32.58783525]],
    "bids":[["0.06184411",0.69326675]],
    "isFrozen":"0",
    "seq":466945222
}
  • asks - ордера на продажу;
  • bids - ордера на покупку;

В данном случае можно сказать:

  • Что кто-то: продает ETH по цене 0.06207911 BTC. Всего у него 32.58783525 ETH.
  • И кто-то покупает ETH по цене 0.06184411 BTC. Всего он хочет купить 0.69326675 ETH.

Меня параметр currencyPair, можно получать список ордеров для различных валют.

Замечание: существует пара BTC_ETH, но обратной ETH_BTC нет. Поэтому если вы хотите выполнить покупку ETH_BTC, вам необходимо сделать продажу в BTC_ETH.

Задание

Вам необходимо:

  • Выполнить парсинг API криптовалютной биржи Poloniex, а именно метода returnOrderBook (Возможно уже есть какие-то готовы решения? XCha... or HttpCli...);
  • Реализовать архитектуру, при которой один поток парсит API и создает отдельные потоки, которые ищут арбитражные ситуации для разных валют;
  • Решить проблему с отсутствием обратной пары. Например: существует пара BTC_ETH, но обратной ETH_BTC нет;
  • Выводить результат поиска в консоль или в Telegram Bot.

Alt text

В качестве шпаргалки вы можете посмотреть реализацию на Python по ссылке.

Если у вас есть вопросы, создайте issue в vectree/resources.

В ближайшее время будет созданы отдельные задачи с описанием.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published