Приветствую всех живых людей на моей страничке.
Сегодня хочу поделиться с вами проделанной мною работой в области создания торгового робота и проверки стратегий (пока одной).
Приблизительно полгода назад я писал арбитражного бота, который торговал между биржами Bitfinex и Bittrex на паре QMG/ETH (ссылка). Хоть убейте я не помню, что мне в нем не понравилось. Он работал, хотя бывали проскальзывания. Скорее всего я хотел написать бота, который торгует не на одной паре, а на нескольких и из-за этого я перестал улучшать программу. Точно помню, что был момент, когда я хотел к ней вернуться, но уже забыл, как там все устроено и не захотел разбираться со своим быдлокодом. Но это не важно, суть в том, что тогда (полгода назад) были сигналы для проведения арбитража между этими биржами. Когда, неделю назад я вернулся к идее арбитража, то таких сигналов уже не было. Мы ОПОЗДАЛИ!!! Там уже другие доят эту тему. Фактически этот абзац может быть моим ответом на комментарий пользователя @html.
После этого я решил реализовать стратегию пользователя @primus из серии его статей о автоматизированной торговли(ссылка).
Я уже реализовывал его идею для одной пары, но решил сделать для всех пар, которые есть на бирже Bittrex. Эту стратегию не копировал точь-в-точь, но это никак не могло повлиять на ее работу, но если вы заметите момент, который существенно изменяет принцип работы, то сообщите мне в комментариях. Также, было бы приятно, если бы пользователь @primus поделился с нами тем как работает его бот сейчас, буду очень благодарен, ваша статья была первой которую я прочел о торговых ботах для крипты.
Далее я, немного, опишу своего бота.
При запуске традиционно вылетает окно:
Здесь все просто, без ключей ничего работать не будет.
После ввода ключей открывается главное окно:
Пробегусь по GrоupBox-ax.
GrоupBox Start: Здесь имеется кнопка Start она нажимается, когда мы желаем начать работу бота. О ней позже. Так же есть СheckBox-ы. С их помощью мы выбираем с какими главными валютами мы желаем работать. Можно работать с парами у которых выступают главными валютами: BTC, ETH, USDT. то есть бот может работать со всеми парами, которые есть на этой бирже. Можна выбрать только пары на биток или эфир… Короче, любые возможные комбинации. Так-как я не знаю, как сделать WebSocket для этой биржи, то она регулярно обращается к бирже для того чтобы получить информацию о тикерах и открытых ордерах. Эти запросы посылаются через определенное время, которое задается в SpinBox-е в секундах. После того как мы все выбрали, можно жать вышеупомянутую кнопку Start после нажатия которой GrоupBox Start исчезает, на его месте появляется GrоupBox Stop. Появившийся GrоupBox Stop не работает, я не стал его разрабатывать до того, как не проверю работоспособность стратегии, а для остановки бота можно и просто закрыть программу и закрыть ордера на бирже с браузера.
GrоupBox Console: Здесь расположен TextBrowser в который выводится информация о работе бота. Эта часть бота пока не допиляна, так-как я выводил, всю нужную мне, информацию из в консоль отладки.
GrоupBox Wallet: Сюда подгружается наш баланс. Так же мы можем применить фильтр и исключить из списка коины с нулевым балансом поставив голочку в СheckBox-е.
GrоupBox Process: Здесь пока ничего не работает, хотел там визуализировать процес работы.
С GrоupBox-ами разобрался. Так же хочу упомянут, что на форме имеется Label который выводит пинг.
При создании этого бота я писал библиотеку для работы с биржей Bittrex. Бот может и не работать, а вот библиотека у меня останется. Так вот в этой библиотеке я реализовал замер пинга и посылания сигнала с информацией о пинге.
Пинг полезная вещь. Если у вас пинг в секунды, то нет смысла выставлять период обновления информации меньше чем 5 сек и вообще для торговли важен маленький пинг, но для этого алгоритма особой роли он не играет.
Пройдусь по работе бота.
Сразу скажу, что бот работает по стратегии, которую описал пользователь @primus ознакомьтесь с ней, что бы я не объяснял все с нуля. Не забудьте проголосовать за его статью.
После того как мы выбрали нужные нам пары и нажали на кнопку Start, то бот проверит позволяет ли нам наш баланс воплотить наши намеренья. Если мы выбрали какую-то главную валюту, но баланса недостаточно для выставления ордера, то бот не будет пытаться торговать на парах с этой валютой и сообщит нам это Console.
Если у вас таким образом отсеются все возможные пары, то бот вам об этом сообщит и старт не состоится.
Пример такой ситуации:
Для начала я реализовал, что параллельно могут торговаться максимум 3 пары с разными главными валютами. Но создавая бота я оставил возможность увеличить количество параллельно торгующих пар.
Дальше все происходит как в оригинальном алгоритме за исключением того, что я доработал алгоритм округления цен для выставления ордеров.
Пройдусь по результатам работы.
Ничего не может продемонстрировать результат лучше, чем серия скринов.
История ордеров:
Прошу обратить внимание на ордера, которые помечены красным. Это ордера, на покупку которые были исполнены.
Текущие цены:
По скринам мы видим, что одна из валют просела почти на 40% а с ней и мой депозит. И если мы приймим убытки как описано в оригинале алгоритма, о это нивелирует предыдущие прибыли бота, и мы явно уйдем в убыток. Не исключено, что по истечению двух недель цена не вернется к нужным нам значениям, но не исключено, что цена упадет к плинтусу.
Я вижу здесь несколько решений. Одними из которых есть:
- Ждать, долго ждать и цена вернется. На рынке крипты часто происходят пампы, и я почти на 100% уверен, что цена вернется. И вообще думаю если этого бота запустить на VPN сервере и забыть, то она заработает много процентов.
- Добавить в алгоритм «стопы». Что бы если цена ушла против нас, то мы выходим со сделки.
- Не выдумывать велосипед и сделать как реализовано в оригинале алгоритма, а именно ждать 2 недели и брать убытки. Я боюсь так делать из-за того, что не уверен. Что бот отработает убыток.
Вывод:
В таком виде бот работает совершенно не идеально. И я наверно не буду его использовать если не доработаю. Я не могу утверждать, что алгоритм не работает, точно я напишу по истечению месяца, думаю это будет достаточный срок что бы сделать хоть какие-то выводы.
Напоследок:
Периодически думаю о том, чтобы вернуться к этому боту и добавить стопы, но капитал, который я мог выделить для теста(потерять) завис, и я не начну работу пока он не вернется или у меня не появятся лишние деньги для того что бы выделить еще один баланс.
Если вы желаете увидеть исходники, то напишите об этом в комментах и я подумаю о том, чтобы выложить их на Github. Последнее время появляются мысли о том, чтобы связать свою жизнь с разработкой программ и научиться работать с Github будет хорошим опытом.
Если вы желаете увидеть видео с работой бота на youtube, например, то также сообщите мне об этом в комментариях и возможно я создам такое видео.
Так же если вы знаете какие-то алгоритмы для автоматизированной торговли, то можете поделиться ими и возможно я захочу их проверить в работе. И есть идея создать рубрику для проверки алгоритмов.
Статья после написания не была проверенной, извините за ошибки! Всем спасибо за внимание. У меня все.
Хорошая работа! Подписался, надеюсь на взаимность
Спасибо большое!
Подписался на вас,надеюсь на взаимность!Подписываюсь на всех кто подписался на меня!
Хорошая работа! Подписался! Надеюсь на взаимность!)
Спасибо большое! Мне важна ваша поддержка так-как у меня нету никакой мотивации кроме вашей поддержки.
Ищите спонсора на разработку и эксперименты
Сейчас много разводил всяких и спонсоры их боятся. Не думаю, что кто-то захочет в это спонсировать, потому-что это путь к потере своих денег. Я и сам боюсь что спонсоры могут развести меня как-то=). Но было бы конечно не плохо.
@chiterelk, поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за Количество комментариев
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп