Доброго времени суток, уважаемые форумчане!
Хочу представить на Ваш суд свой шаблон для нахождения арбитражных ситуаций на бирже 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 % с учетом внутренних комиссий самой биржи.
Хочу сразу предупредить, шаблоном по назначению в лоб пользоваться нельзя: в шаблоне есть изъяны и их тоже надо решать. Во-первых в шаблоне не учитывается возможная приостановка торговли по той или иной паре, а расчет может быть по ней совершен. Во-вторых, в шаблоне не учитывается объем торгов, Вам просто может не хватить минимального объема по сделки для совершения такой операции. В-третьих, рынок криптовалют очень волатилен, и, так как расчет идет продолжительное время, ситуация на рынке к окончанию расчета может поменяться.
Для работоспособности шаблона распакуйте из архива таблицу в ту же директорию, что и сам шаблон.
- Категория
- Заработок
- Номер конкурса шаблонов
- Второй конкурс шаблонов
- Уровень сложности
- Продвинутый
Вложения
-
26,8 КБ Просмотры: 1 021
-
49,7 КБ Просмотры: 1 008
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.