Шаблон для нахождения внутрибиржевых арбитражных ситуаций на cryptopia.co.nz

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Доброго времени суток, уважаемые форумчане!

Хочу представить на Ваш суд свой шаблон для нахождения арбитражных ситуаций на бирже 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 % с учетом внутренних комиссий самой биржи.

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

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

Вложения

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

gonzo

Client
Регистрация
09.09.2009
Сообщения
26
Благодарностей
17
Баллы
3
Респект. Сам пытался написать что-то подобное, но не хватило математического скилла для написания алгоритма)
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 129
Благодарностей
860
Баллы
113
Норм! Между биржами не пробовал? Друг говорил спред иногда чуть ли не 40% :-)
 

eliadsonet

Client
Регистрация
25.05.2012
Сообщения
119
Благодарностей
46
Баллы
28
Норм! Между биржами не пробовал? Друг говорил спред иногда чуть ли не 40% :-)
В таком случае быстрее всего где-то кошелек на тех.работах, или закрыт ввод-вывод, или биржа скамноватая или еще что))
 
  • Спасибо
Реакции: iBotovod

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Норм! Между биржами не пробовал? Друг говорил спред иногда чуть ли не 40% :-)
Межбиржевой арбитраж сейчас живее всех живых с учетом увеличевшейся волатильности в последние дни, но это уже совсем другая история:-) Может быть придет время когда и этим шаблоном поделюсь.
 

DmKa

Client
Регистрация
24.09.2017
Сообщения
94
Благодарностей
3
Баллы
8
В лог не выводит информацию в том виде в котором представлено на скритншоте
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
В лог не выводит информацию в том виде в котором представлено на скритншоте
Возможно Вы не дождались расчета до конца? У меня на довольно мощной машине расчет идет несколько минут.
Проверил, все работает, вот текущая ситуация:
 

Samoylov_83

Client
Регистрация
25.08.2015
Сообщения
225
Благодарностей
60
Баллы
28
интересненько...
на куду если перевести скорость не вырастет? или гемооно сильно?, мельком в инете глянул, вроде как можно для таких целей использовать видеокарту. тут, как я понимаю все таки скорость вычислений стоит почти на первом месте.
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
интересненько...
на куду если перевести скорость не вырастет? или гемооно сильно?, мельком в инете глянул, вроде как можно для таких целей использовать видеокарту. тут, как я понимаю все таки скорость вычислений стоит почти на первом месте.
Алгоритмы dfs и bfs сложно распараллелить, но можно. Люди целые научные работы пишут, вот например
 

DmKa

Client
Регистрация
24.09.2017
Сообщения
94
Благодарностей
3
Баллы
8
Возможно Вы не дождались расчета до конца? У меня на довольно мощной машине расчет идет несколько минут.
Ну так процесс закончил свою работу.
В логе Ок нет.
Пробовал несколько запусков. Машина не мощная.
 

Вложения

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Ну так процесс закончил свою работу.
В логе Ок нет.
Пробовал несколько запусков. Машина не мощная.
upload_2018-9-20_23-31-19.png


Попробуйте, раскомментируйте выделенный код. Какой версией зеннопостера пользуетесь?
 

one

Client
Регистрация
22.09.2015
Сообщения
5 396
Благодарностей
918
Баллы
113

Danny

Client
Регистрация
29.09.2014
Сообщения
723
Благодарностей
156
Баллы
43
Спасибо за статью и шаблон!

Вопрос:
Для того чтобы делать все эти обмены сотен разных криптовалют внутри данной биржи, достаточно просто завести у них один акк на бирже и пополнить его?
Или нужно еще и все кошельки разных криптовалют создавать?

P.S.: Не занимался данной темой ранее, поэтому вопрос нубский )
 

yriy158

Client
Регистрация
10.08.2013
Сообщения
472
Благодарностей
282
Баллы
63
Спасибо за статью и шаблон!

Вопрос:
Для того чтобы делать все эти обмены сотен разных криптовалют внутри данной биржи, достаточно просто завести у них один акк на бирже и пополнить его?
Или нужно еще и все кошельки разных криптовалют создавать?

P.S.: Не занимался данной темой ранее, поэтому вопрос нубский )
Лучше тогда и не лезь. Вложений много - профит сомнительный. Пока убдеш делать обмены руками и тд, курс изменится и будеш в минусе. тут нужна либо четкая мгновенная автоматизация либо фарт.
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
299
Благодарностей
230
Баллы
43
Спасибо за шаблон, интересен в плане "поковырять", да и для основы пойдёт.
Конечно, без автоматизации арбитража ничего особо не выйдет, так что придётся пилить дальше и много.
Руками быстро надоест, да и долго, как выше сказал товарищ, может получиться итоговый минус.
Буду рад базовому шаблону по межбиржевому арбитражу :-)
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Не совсем понятно что означает данная фраза. Поясните плс.
Арбитражем криптовалют называется цепь логических сделок с цифровыми деньгами с целью получения прибыли на разнице курсов.

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

Шаблон как раз и ищет такие ситуации на бирже
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Спасибо за статью и шаблон!

Вопрос:
Для того чтобы делать все эти обмены сотен разных криптовалют внутри данной биржи, достаточно просто завести у них один акк на бирже и пополнить его?
Или нужно еще и все кошельки разных криптовалют создавать?

P.S.: Не занимался данной темой ранее, поэтому вопрос нубский )

Достаточно только зарегистроваться у них, все кошельки создаются из своего аккаунта на бирже
 
  • Спасибо
Реакции: Danny

heks

Client
Регистрация
01.10.2013
Сообщения
283
Благодарностей
33
Баллы
28
Вообще красава)) еще бы обменивал на автомате ))) вообще красота была бы
ошибку пишет



и не могу понять куда вот эти данные сохраняются

 
Последнее редактирование:

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Вообще красава)) еще бы обменивал на автомате ))) вообще красота была бы
ошибку пишет



и не могу понять куда вот эти данные сохраняются

Данные хранятся в словаре profit1.
Ошибка не связана с шаблоном, в нем не используется библиотека Ionic zip.
 

heks

Client
Регистрация
01.10.2013
Сообщения
283
Благодарностей
33
Баллы
28
Данные хранятся в словаре profit1.
Ошибка не связана с шаблоном, в нем не используется библиотека Ionic zip.
не понял насчет словаря. где данные посмотреть то можно ?
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
не понял насчет словаря. где данные посмотреть то можно ?
Данные хранятся только в этом словаре, если надо их записать в файл, то поправьте код

foreach (KeyValuePair<string, double> pair in items)
if(pair.Value>double.Parse(colvaluta))
project.SendInfoToLog(pair.Key+" "+pair.Value);

На

foreach (KeyValuePair<string, double> pair in items)
if(pair.Value>double.Parse(colvaluta))
ЗАПИСЬ КУДА-НИБУДЬ (pair.Key+" "+pair.Value)
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
249
Благодарностей
68
Баллы
28
На других биржах пробовали так делать?
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 190
Баллы
113

Lite

Client
Регистрация
17.10.2013
Сообщения
232
Благодарностей
63
Баллы
28
Начал искать инфу по теме, и наткнулся на
https://forum.bits.media/index.php?/topic/81516-межбиржевой-арбитраж-криптовалют/&
Там упоминаются такие проблемы:
Дело в том, что арбитражные ситуации >1% возникают с теми монетами, кошельки которых на биржах не работают.
На форуме есть аналогичный пример разработки --, в котором эти моменты не учитываются.
И на самом деле когда я проверил все монеты из того списка - фонарь полный: или кошельки не работают или тикеры разных монет совпадают, уже молчу о скорости сети.
Не подскажешь, что это за ситуации - нерабочие монеты, и скорость сети?
Вот этот момент у тебя в примечании
Во-первых в шаблоне не учитывается возможная приостановка торговли по той или иной паре, а расчет может быть по ней совершен.
это и есть нерабочие монеты?
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Начал искать инфу по теме, и наткнулся на
https://forum.bits.media/index.php?/topic/81516-межбиржевой-арбитраж-криптовалют/&
Там упоминаются такие проблемы:

Не подскажешь, что это за ситуации - нерабочие монеты, и скорость сети?
Вот этот момент у тебя в примечании
это и есть нерабочие монеты?
Да, все верно понимаете. Это описаны именно эти ситуации.
"Приостановка торговли" из моего описание это конечный результат, а причина приостановки это не работающие кошельки на бирже по разным причинам, в том числе и описанные на bits.

Решается эта проблема очень легко:
Нужно сделать запрос на api https://www.cryptopia.co.nz/api/GetTradePairs

В полученном ответе, нужно посмотреть на пару значений "Status":"OK". Именно статус ОК, говорит о том, что с монетой все хорошо.

Вот для примера кусочек из ответа:

{"Id":100,"Label":"DOT/BTC","Currency":"Dotcoin","Symbol":"DOT","BaseCurrency":"Bitcoin","BaseSymbol":"BTC","Status":"OK","StatusMessage":null,"TradeFee":0.20000000,"MinimumTrade":0.00000001,"MaximumTrade":100000000.0,"MinimumBaseTrade":0.00050000,"MaximumBaseTrade":100000000.0,"MinimumPrice":0.00000001,"MaximumPrice":100000000.0}
 
  • Спасибо
Реакции: Lite

Lite

Client
Регистрация
17.10.2013
Сообщения
232
Благодарностей
63
Баллы
28
А ручная торговля вообще возможна? Или без автоматизации никак?(в рамках одной биржи)
 

amful

Client
Регистрация
07.11.2013
Сообщения
32
Благодарностей
45
Баллы
18
Можно, но сложно. Сами ситуации появляются достаточно часто, и бывает висят по 15 минут. (это я уже про ситуации, когда уже все подводные камни решены)
Здесь главное все рассчитать точно.

Вот скриншот с другой версии такого же шаблона, здесь исключены все неблагоприятные ситуации, кроме нехватки объемов. Как видно на текущий момент есть ситуации где профитность более 16%

upload_2018-9-24_17-4-30.png
 
  • Спасибо
Реакции: Lite

Lite

Client
Регистрация
17.10.2013
Сообщения
232
Благодарностей
63
Баллы
28
Спасибо за ответы)
Я так понимаю, что по факту пробиваться будет малая часть таких "вилок", и из-за этого еще деньги будут зависать на ненужных валютах. (иначе это слишком радужно - на каждом обмене поднимать, пусть даже 2%)
А вот такие негативные сценарии так и получаются? (цитата с форума выше):
арбитраж приносит копейки.... и одни нервы, то транза зависнет, то кошелек закроют пока монета идет..
у меня уже на 200к в рублях висит.. и вряд ли дождусь чего..
Т.е. человек начал обмен, не смог закончить, курс сменился на невыгодный и деньги застряли?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)