Доброго времени суток, уважаемые форумчане!
Хочу представить на Ваш суд свой шаблон для нахождения арбитражных ситуаций на бирже cryptopia.co.nz. Сам шаблон был написан в начале года, но как оказалось он успешно выполняет свои функции и по сей день.
Немножко теории, для тех кто не в курсе, что такое классическая схема внутрибиржевого арбитража:
допустим мы имеем 1 биткойн на бирже и, иногда, возникают такие ситуации, когда если мы внутри биржи сделаем обмен этого 1 биткойна на, допустим, на какое-то количество редкоинов, их в свою очередь обменяем на догикоины, а после полученные догикоины поменяем обратно на биткойн, то в результате получим не 1 биткойн, а, например, 1.02 биткойна. Схема арбитража банальна проста и до сих пор на любой бирже её можно встретить.
Схема арбитража проста, но реализация такой задачи многих может поставить в тупик. Представьте, на той же бирже cryptopia.co.nz более 1700 пар различных криптовалют, и, например, чтобы сделать расчеты с глубиной 2 (btc->любая криптовалюта->btc) необходимо сделать 1700 расчетов, если с глубиной 3 (btc->любая криптовалюта->другая криптовалюта->btc), то 1700*1700, а это уже почти 3 000 000 операций. А если глубина поиска будет 5? Встает вопрос как произвести такой расчет как можно оптимальнее и как хранить все это добро в памяти.
Я решил все данные хранить в стеке, а для того, чтобы пробежать по всем возможным парам и произвести расчеты использовал один из алгоритмов обхода графов - алгоритм поиска в глубину (DFS Depth-first search).
Приложенный шаблон написан полностью на c# и не использует браузер.
В качестве входных параметров использует три значения, начальная криптовалюта, сумма и глубина поиска:
Далее по коду идет получение данных с API cryptopia.co.nz и создание на основе полученных данных графов.
Весь расчет производится из общего кода:
На моем ноутбуке (i7-6700hq, 32 озу, ssd) расчет занимает несколько минут.
В результате выполнения в Лог будут выведены все возможные классические арбитражные ситуации:
На момент написания этой статьи было найдено 867984 возможных арбитражных ситуаций, где самая выгодная ситуация это обмен btc->sumo->doge->hxx->btc c результатом увеличения начального баланса на 2,31714722855289 % с учетом внутренних комиссий самой биржи.
Хочу сразу предупредить, шаблоном по назначению в лоб пользоваться нельзя: в шаблоне есть изъяны и их тоже надо решать. Во-первых в шаблоне не учитывается возможная приостановка торговли по той или иной паре, а расчет может быть по ней совершен. Во-вторых, в шаблоне не учитывается объем торгов, Вам просто может не хватить минимального объема по сделки для совершения такой операции. В-третьих, рынок криптовалют очень волатилен, и, так как расчет идет продолжительное время, ситуация на рынке к окончанию расчета может поменяться.
Для работоспособности шаблона распакуйте из архива таблицу в ту же директорию, что и сам шаблон.
Хочу представить на Ваш суд свой шаблон для нахождения арбитражных ситуаций на бирже cryptopia.co.nz. Сам шаблон был написан в начале года, но как оказалось он успешно выполняет свои функции и по сей день.
Немножко теории, для тех кто не в курсе, что такое классическая схема внутрибиржевого арбитража:
допустим мы имеем 1 биткойн на бирже и, иногда, возникают такие ситуации, когда если мы внутри биржи сделаем обмен этого 1 биткойна на, допустим, на какое-то количество редкоинов, их в свою очередь обменяем на догикоины, а после полученные догикоины поменяем обратно на биткойн, то в результате получим не 1 биткойн, а, например, 1.02 биткойна. Схема арбитража банальна проста и до сих пор на любой бирже её можно встретить.
Схема арбитража проста, но реализация такой задачи многих может поставить в тупик. Представьте, на той же бирже cryptopia.co.nz более 1700 пар различных криптовалют, и, например, чтобы сделать расчеты с глубиной 2 (btc->любая криптовалюта->btc) необходимо сделать 1700 расчетов, если с глубиной 3 (btc->любая криптовалюта->другая криптовалюта->btc), то 1700*1700, а это уже почти 3 000 000 операций. А если глубина поиска будет 5? Встает вопрос как произвести такой расчет как можно оптимальнее и как хранить все это добро в памяти.
Я решил все данные хранить в стеке, а для того, чтобы пробежать по всем возможным парам и произвести расчеты использовал один из алгоритмов обхода графов - алгоритм поиска в глубину (DFS Depth-first search).
Приложенный шаблон написан полностью на c# и не использует браузер.
В качестве входных параметров использует три значения, начальная криптовалюта, сумма и глубина поиска:
Далее по коду идет получение данных с API cryptopia.co.nz и создание на основе полученных данных графов.
Весь расчет производится из общего кода:
На моем ноутбуке (i7-6700hq, 32 озу, ssd) расчет занимает несколько минут.
В результате выполнения в Лог будут выведены все возможные классические арбитражные ситуации:
На момент написания этой статьи было найдено 867984 возможных арбитражных ситуаций, где самая выгодная ситуация это обмен btc->sumo->doge->hxx->btc c результатом увеличения начального баланса на 2,31714722855289 % с учетом внутренних комиссий самой биржи.
Хочу сразу предупредить, шаблоном по назначению в лоб пользоваться нельзя: в шаблоне есть изъяны и их тоже надо решать. Во-первых в шаблоне не учитывается возможная приостановка торговли по той или иной паре, а расчет может быть по ней совершен. Во-вторых, в шаблоне не учитывается объем торгов, Вам просто может не хватить минимального объема по сделки для совершения такой операции. В-третьих, рынок криптовалют очень волатилен, и, так как расчет идет продолжительное время, ситуация на рынке к окончанию расчета может поменяться.
Для работоспособности шаблона распакуйте из архива таблицу в ту же директорию, что и сам шаблон.
- Номер конкурса шаблонов
- Второй конкурс шаблонов
- Уровень сложности
- Продвинутый
- Категория
- Заработок




