Как создать собственный торговый бот

Автор:Доброта, Создано: 2019-03-16 10:29:22, Обновлено: 2019-03-16 10:29:54

Преамбула

Я, конечно, не отличный программист, но написание этого проекта многому меня научило (и заняло).FMZ.COMТем не менее, я был приятно удивлен полученными результатами, и бот сделал почти 100% эфирную прибыль до сих пор.

Что это делает? Это арбитражный бот. Это означает, что он зарабатывает деньги от торговли разницей между ценами на двух (или более) биржах. На данный момент он однонаправленный и торгует только между Etherdelta и Bittrex: они делятся примерно двадцатью парами eth / token. Вот диаграмма, иллюстрирующая, как это работает:imgСлова, за которыми следует скобки, являются транзакциями Ethereum, которые вызывают вызов функции умного контракта.

Кодекс

Я мог бы использоватьfmz.comПлатформа Python Editor для создания транзакций и вызовов функций и это было бы довольно просто. Мне нужно было что-то более надежное; неудачная транзакция означает потерю денег. Каждый из моих запросов GET нуждался в ответе, даже если пакет TCP был потерян или веб-сервер на другом конце временно не работал. Поэтому я решил реализовать свой собственный Python etherscan API wrapper и использовал pythereum для создания транзакций и etherscan для их публикации. Я также написал свой собственный requests.get decorator, который является петлей, которая выходит только после удовлетворительного ответа.

Вот код, который я использовал для кодирования ответов API эфирдельта json как гексадецимальные, с кодировкой rlp, транзакции Ethereum (не для слабонервных):img

Необработанные шестомные значения в закрытии внизу - это подписи функций, которые соответствуют каждой функции. Функционная подпись получена из кеккака функции и ее аргументов. Она должна быть присоединена к параметру данных транзакции, за которой следуют данные, составляющие аргументы. В общей сложности мой код составляет около 400 строк и содержится в 5 разных файлах.

Результаты

Я сделал пару графиков из данных, которые я записал с помощью pymatplotlib.img img img

Заключение

В целом весь проект занял у меня около двух недель во время моего свободного времени в школе и это был взрыв вокруг. Я взял перерыв от кодирования энергично и в настоящее время в процессе планирования арбитраж бота v2.

На луну!


Больше