Торгобот
Месяц назад я переехал на rudex.org со своей мелочевкой, я даже писал пост с призывом перевести торговлю на rudex.org. Тем более комиссия за перевод туда GOLOS и GBG нулевая. И там можно будет менять токены на рубли.
Собственно на rudex.org я увидел первых в своей жизни трейдерных ботов на btsbots.com. Я настроил несколько штук, с разными настройками, что бы поиграться и выяснить оптимальные. Автоматическая торговля это весело, скажу я вам и по ощущениям это работает. Одна проблема, ботам нужны открытые браузеры иначе они не работают. А так как я иду в отпуск, и оставлять включенным компьютер на месяц я не хочу, то я решил написать торгового бота, аналогичному btsbots.com.
Сказано-сделано, но для начала я решил его испытать на голосе. За один вечер получилось написать скрипт для бота, во второй вечер я приделал к нему telegram с оповещением о закрытых и открытых ордерах. И вот уже пару дней мой бот торгует с попеременным успехом на внутренней бирже. @torgobot. Пока что он обменял все GBG на GOLOS-а из за пампа золотых, но теперь потихонечку начинает выкупать золотые. Доход не ахти какой конечно, но и внутренний рынок не отличается интенсивностью. Пока что я играюсь с настройками, пытаюсь подобрать правильную стратегию.
Я параллельно начал писать такого же бота для bitshares, но различия в блокчейнах оказались более разительными, между голосом и bitshares, чем я ожидал. Поэтому бот для bts еще не совсем готов, но вчера я на пробу запустил его и у него получается торговать. Правда он, выделенные ему 40 BTS за ночь ополовинил, но это наверное потому, что торговал он по 2 BTS ))
Ну а исходники бота для голоса я решил выложить в открытый доступ, возможно кому то пригодится. Если что не пугайтесь. Это был поток моих непричесанных мыслей, немного сумбурных, так как трейдер из меня никакой. Ну и исходники после отпуска постараюсь оформить покрасивее.
Стратегия
Стратегия у бота простая как кирпич - покупать подешевле, продавать подороже. Бот получает список открытых ордеров, и берет bid с самой высокой ценой и ask с самой низкой. Создает ордер с ценой ниже на заданное число процентов относительно лучшего предложения на покупку и другой ордер соответственно с ценой выше самого выгодного предложения на продажу.
Соответственно, если начнут выкупать ордера выше по стакану, то когда нибудь дойдет очередь и до ордера выставленного ботом. Если ордер закроют, то бот выставит новый. Если сверху по стакану добавятся ордера и цена будет "отставать" от рыночной, то бот отменить ордер и выставит с новой ценой.
Смысл, что бот будет реагировать на медленные колебания рынка. )) Так я себе это представляю. Так как я не специалист и умных книжек не читал, то путать вас дальше теорией не буду.
Исходники и настройка
Исходники можно найти на bitbucket.com, в моем аккаунте
https://bitbucket.org/gropox/torgobot
В директории с исходниками есть пример конфигурационного файла. config.json.example. Переименуйте его в config.json и отредактируйте на свое усмотрение
{
"ws" : "wss://ws.golos.io",
"chain_id" : "782a3039b478c839e4cb0c941ff4eaeb7df40bdd68bd441afd444b9da763de12",
"userid" : "torgobot",
"key" : "5K",
"base" : "GBG",
"quote" : "GOLOS",
"bid" : {"percent" : 0.5, "max" : 20},
"ask" : {"percent" : 0.5, "max" : 20},
"telegram" : {
"token" : "333",
"chatid" : 1,
"send_messages" : {
"empty_balance" : true,
"balance" : true,
"top_prices" : true,
"desired_prices" : true,
"open_orders" : true,
"create_order" : true,
"changed_desired" : true,
"filled" : true
}
}
}
Думаю в основном все должно быть понятно. Если нет, то лучше не пытайтесь ))
"bid" : {"percent" : 0.5, "max" : 20},
"ask" : {"percent" : 0.5, "max" : 20},
bid.percent задается процент, на сколько цена создаваемого ордера будет ниже максимального бида, ask.percent соответственно наоборот. max, максимальный размер ордера 20 GBG и 20 GOLOS в данном случае
"telegram" : {
"token" : "333",
"chatid" : 1,
Это если ходите получать уведомления о закрытых и открытых ордерах. (Собственно бот может и не торговать, а только извещать)
Для этого вам надо создать своего персонального бота в телеграме и получить токен к нему у botfather. Как это делается, я расписывать не буду. Полно статей и в интернете и тут на голосе. chatid можно будет узнать в логе, запустив бота его с опцией debug и послав пару сообщений боту. chatid нужен, что бы бот только вам слал сообщения.
"send_messages" : {
"empty_balance" : true,
....
Этими настройками можно включать и выключать (true или false) сообщения, которые бот будет слать в чат телеграма. У меня сейчас сейчас включено следующим образом и мне достаточно, иначе будет приходить слишком много сообщений
"empty_balance" : false,
"balance" : true,
"top_prices" : false,
"desired_prices" : false,
"open_orders" : true,
"create_order" : true,
"changed_desired" : false,
"filled" : true
Запуск
перед запуском, в папке со скриптом, выполните npm install
, что бы установить необходимые библиотеки.
Для запуска бота выполните следующую команду
node index.js broadcast debug
debug можно опустить, если бот работает нормально, что бы не засорять логи
broadcast - если запустить бота без этого параметра, то он не будет ничего делать, только слать сообщения в телеграмм.
Внимание, бот при запуске отменяет все выставленные ордера, лучше его запускать на отдельном, специальном аккаунте.
Пробовать на свой страх и риск, за ваши монеты вы отвечаете сами. )) Помочь с установкой к сожалению сильно не смогу, из-за нехватки времени - сами разбирайтесь. Кое-какие технические навыки лучше иметь, что бы запустить бота. Бот скажем так, не для крипто-обывателей.
Удачи!