Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
ropox
7 лет назад

Личный btsbots

Еще раз здравствуйте мои маленькие криптотрейдеры. Буквально пару часов назад начался мой отпуск, до самолета еще примерно сутки. Рюкзак почти собран. Сел за компьютер и решил добить бота для bitshares. И бот таки заработал. Я закрыл все окна с сайтом btsbots.com и все перевел на свой скрипт и он вроде бы работает и ведет себя аналогично btsbots.

Бот заработал!

Billionaire_Bot.jpg

По крайней мере он создал ордера и ждет, когда их закроют.

Исходники я опять же открываю на bitbucket.com

https://bitbucket.org/gropox/btsnotifier

Да, название не подходящее, изначально я хотел сделать бота, извещающего о закрытых ордерах. Но потом, ввиду приближающегося отпуска, я решил сделать бота аналогичного btsbots.com, что бы его можно запустить на сервере и не держать открытыми браузеры.

После небольшой тренировки на аналогичном боте для внутреннего рынка Голоса я начал писать бота для bitshares, что оказалось не так просто. Старший брат голоса несколько отличался, от голоса и стимита. Во первых приходится работать не с символьными именами операций и объектов, а с их id и просто номерами. Видимо изначально разработчики заботились о эффективности работы блокчейна и снижении объема данных хранимых в базе блокчейна.

Во вторых библиотека для bitshares оказалась не такой комфортной, как steem-js и golos-js. Да и времени, честно говоря разбираться не было. По началу у меня даже руки опустились, думал не получится побороть API bitshares в короткие сроки, но все же с божией помощью и отладочной консолью chrome и отслеживанием коммуникации rudex.org с нодой по вебсокетам мне все так пришло просветление и дело сдвинулось с мертвой точки.

В виду сжатых сроков, исходники все таки немного сумбурно организованы и мне пришлось отказаться от изначальной идеи об извещении о закрытых ордерах. Собственно это и не потребовалось, так как сайт rudex.org дает достаточно инфы, что бы отслеживать сразу несколько аккаунтов. (еще бы чуточку получше отображался на телефоне)

Установка

Собственно можно либо скачать скрипт в виде zip архива, либо клонировать репозиторий git утилитой

Для запуска понадобится node.js начиная с 7-й версии. Актуальна 8-я версия. Все должно одинаково работать, как под linux, так и под windows и макось (прости Господи)

В директории со скриптом выполните следующие команды, что бы установить необходимые библиотеки

npm install
npm install golos-js 

Последнее требуется из-за golos-addons которую я использовал при написании скрипта бота.

Конфигурация

В папке бота лежит пример конфигурационного файла config.json.example. Его надо скопировать или переименовать как config.json, и отредактировать под ваши нужны.

Пока что можно задать только API сервер, параметром ws. И одного или более ботов под разные пары активов.

Типичная конфигурация бота выглядит следующим образом

        {
            "name" : "g-ropox",
            "key" : "5xxx",
            "base" : {
                "asset" : "OPEN.ETH",
                "percent" : 1.5, 
                "max" : 0.01,
                "min" : 0.001,
                "reserve" : 0.05
            },
            "quote" : {
                "asset" : "BTS",
                "percent" : 1.5, 
                "max" : 5,
                "min" : 1,
                "reserve" : 1                
            }
        },

name и key понятно я надеюсь. Если нет, то лучше дальше не испытывать судьбу ))

base и quote задаются параметры для базового актива и (тут я долго думал как quote перевести) и для актива торгуемого относительно базового. Все аналогично экрану рынка по активам на том же rudex.org.

Тут каждый выбирает как кому удобнее и привычнее. Можно как базовый актив указать BTS, а можно наоборот OPEN.ETH. У меня к примеру базовым стоит OPEN.ETH, так как я изначально так выбрал на сайте и уже привык к ценам в районе 3000. В паре BTS - OPEN.BTC для меня привычнее наоборот, так как я пришел с другой биржи, где BTS относительно BTC торгуется. В конце концов "от перемены мест слагаемых сумма не меняется".

percent - это процент относительно верхней цены в стакане. Если это bid, то бот создаст ордер с на покупку с ценой на указанный процент ниже, чем самая высокая цена. Если это ask, то соответственно ордер на продажу будет создан с ценой на заданный процент выше, самой низкой цены продажи. Все аналогично btsbots.com.

Приведу пример на одном из моих ботов. У него установлен 1 процент для обоих случаев, продажи и покупки. Как видно ниже, на скриншоте, самое выгодное предложение на покупку 3521.96845. Сумма по которой бот должен выставить свой ордер вычисляется по следующей формуле.


price = top_price / (1 + percent / 100)

То-есть в нашем случае получается 3521.96845 / (1+1/100) = 3487,097475. На скриншоте правда как видно стоит ордер на покупку (зеленым) по цене 3487,07458. Но возможно на момент создания ордера, топовая цена была чуточку выше.

Аналогично и с ордерами на продажу. Берется ордер с самой низкой ценой продажи. В нашем случае это 3524.02185 и цена ордера вычисляется по формуле.


price = top_price * (1 + percent / 100)

Что в нашем случае 3524.02185 * (1+1/100) = 3559,2620685. То-есть на один процент выше самой низкой цены.

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

Бот вычисляет периодически цену ордера и если разрыв в цене выставленного ордера с топовой, больше указанного процента, то бот отменяет ордер и создает ордер с новой ценой. Если указать слишком малый процент, то сделки могут совершаться слишком часто, что приведет к большим комиссионным В таком случае может быть выгодным приобрести пожизненную подписку на rudex.org, в этом случае 80% комиссионных будут возвращены с течением времени.

Сколько процентов выставлять зависит от ситуации на рынке, насколько часто происходят колебания рынка. Какой объем торговли. Я бы не советовал бы лезть этим вариантом бота на рынки с малым объемом. Подбирать надо самому по своим предпочтениям.

max - максимальная сумма ордера
min - минимальная сумма ордера
reserve - минимальная сумма на балансе, которую бот не имеет права использовать. Должна быть больше нуля, что бы было чем заплатить комиссионные, да и вообще, для бережливых.

Запуск

Запускается бот командой node btsnotifier.js

Можно добавить параметры debug и trace для получения отладочных сообщений-

Пробовать на свой страх и риск, за ваши монеты вы отвечаете сами. )) Помочь с установкой к сожалению сильно не смогу, из-за нехватки времени - сами разбирайтесь. Кое-какие технические навыки лучше иметь, что бы запустить бота. Бот скажем так, не для крипто-обывателей.

Удачи!

18
378.758 GOLOS
На Golos с February 2017
Комментарии (13)
Сортировать по:
Сначала старые