Месяц назад, а может и два пришла идея написать торгового бота для голоса. Идея не моя, год назад уже был заказ, но почему то так и не сделали. А мне просто заскучалось и было просто интересно. Недолго сказка сказывается, долго дело делается, но вот спустя некоторое время я таки сделал первую версию бота-ебота (exchange bot, что бы сразу гусарам...) и даже выложил на гитхабе. Ссылка вот https://github.com/bitwheeze/ebot.
Бот сразу скажу, один большой баг 🪳 и полон незадокументированых фич, по причине практически полного отсутствия документации. Как говорится, код говорит сам за себя.
Что умеет бот.
- Подтягивать цены на всякие койны с coinmarketcap. Так как там есть и голос, то можно легко получить обменную стоимость к любой валюте. На кмк можно зарегистрировавшись получить api
золотойключикот страны дуракови бесплатно пару раз в день тянуть цены с кмк, должно на месяц хватать бесплатного тарифа.Бот сейчас тянет все цены скопом, на все койны, что ни наесть. Потому расход кредитов такой большой. Как тянуть цены только на нужное я не разобрался.
Спасибо @gusaru, теперь только нужное тянет с кмк. Расход кредитов должен быть меньше теперь. - Получать фид GOLOS/GBG публикуемый ответственными делегатами. На основании оного бот ставит ордера. Так что теперь на рынке можно обменять GOLOS на GBG по Адекватной Цене.
- Бот умеет выставлять ордера. Это так сказать основная фича бота. Эта фича запускается через заданные промежутки времени. При этом все открытые ордера удаляются и выставляются по новой. Ордера задаются с заданным временем жизни. На случай если бот сдохнет или цены станут неактуальными, что бы не висели ордера с кривыми ценами.
- Можно задавать число ордеров, начальную сумму ордера, изменении суммы ордера с глубиной, изменение цены.
- Естественно можно задавать Адекватный Спред.
- Бот умеет сообщать в телеграм об изменении релевантных цен, спамит сообщениями о выставленных ордерах. И сообщает о закрытых ордерах, пока что о всех, что случаются в блокчейне голос. За последнюю неделю я получил десяток таких сообщений. Для этого в телеграме надо создать своего бота, вписать его ключ в конфиг, потом в логах взять айди свой написав боту "что нибудь", и потом этот айди тоже вписать в конфиг.
Вся настройка осуществляется посредством yaml файла (ebotconfig.yml). Вот к примеру как у меня все выглядит сейчас.
ebot:
golos:
feed-cron: 0 55 */2 * * *
cron: 0 2 * * * *
pairs:
- account: ebot
key: 5...
base: GOLOS
quote: GBG
expiration: 60
relative-orders:
enabled: true
start-order-amount: 1000
spread: 0.5
orders-count: 6
mode: Balance
order-volume-change-percent: 120.0
- account: ebot
key: 5...
base: GOLOS
quote: YMBNB
expiration: 60
relative-orders:
enabled: true
start-order-amount: 3000
spread: 0.5
orders-count: 3
mode: Balance
order-volume-change-percent: 130.0
- account: ebot
key: 5....
base: GOLOS
quote: YMSTEEM
expiration: 60
relative-orders:
enabled: true
start-order-amount: 2000
spread: 0.5
orders-count: 3
mode: Balance
order-volume-change-percent: 130.0
cmc:
cron: 0 58 */6 * * *
api-key: cf...
api-url: https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest
slugs:
- tether
- bnb
- hive-blockchain
- dash
- tron
- steem
- prizm
- golos-blockchain
map:
BNB: YMBNB
GLS: GOLOS
HIVE: YMHIVE
STEEM: YMSTEEM
USDT: YMUSDT
TRX: YMTRX
DASH: YMDASH
PZM: YMPZM
telegram:
bot-token: 61...
admin-id: 18...
golos:
api: https://api-full.golos.id
- Бот получает раз в два часа (
0 55 */2 * * *
) цену GBG/GOLOS - Раз в час запускается и выполняет манипуляции с ордерами (
0 2 * * * *
) - Настроены три пары GOLOS/GBG, GOLOS/YMBNB и GOLOS/YMSTEEM
- Раз в 6 часов бот подгружает цены с кмк
- Ну и с телеграмом все понятно.
Вот так выглядит мой docker-compose.yml для ориентации.
version: "3.9"
services:
ebot:
image: ghcr.io/bitwheeze/ebot:main
restart: always
container_name: ebot
logging:
options:
max-size: "50m"
volumes:
- /home/ebot/ebot/ebotconfig.yml:/ebotconfig.yml
- /home/ebot/ebot/db:/db
За неделю работы я обнаружил и поправил несколько багов, а в основном бот работает, ордера выставляет, вроде даже как и задумано.
Я даже попробовал завести немного BNB-шечек, но бот быстро просрал их, как впрочем и ожидалось. Не в смысле что бездарно распродал, бота так же одарен как и его хозяин. А в смысле их быстро разобрали у бота по Адекватной Цене, теперь у меня стало много голосов и осталось 0.00000000022 BNB. Все же давление наружу больше чем вовнутрь.
Как то так. Буду его еще гонять, постараюсь сделать юзабельным, потом может даже напишу инструкцию, если будет не лень.
Да, бот написан на java, для бота я добавил в свою java библиотеку для GOLOS несколько методов для market history, event plugin и тд.
Ссылка на гитхаб с исходниками библиотеки. https://github.com/bitwheeze/goloslib
Так что дорогие товарищи-попаданцы, ударим по рудексу армией ботов!
Всем Адекватного Спреда!
@bitwheeze, "Как тянуть цены только на нужное я не разобрался.", для примера (python):
@gusaru, непонятно, как ограничивается иммено этими тремя. я так получаю цены только GLS, но мне выдает весь список койнов, 10к с лишним записей, приходится итерировать даже, так как только 5000 за раз выдает.
@ebot, использую эти параметры:
и получаю в ответ цены на указанные "slug": "название-коинов-через-запятую-без-пробела"
Параметр "convert" может быть BTC, EUR, GBP, ...
@ebot, Код выше полностью рабочий. Запусти и получишь ответ цену в USD для BTC, GLS и SGB.
@gusaru, спасибо, переделал, теперь только нужные цены тянет
@bitwheeze, Поздравляю с этим событием успехов, профита, ликвидности и больше адеквотного спреда 👍️
@bitwheeze, отлично. Удачи довести бота до состояния юзабельного "бабушкой".
@virt, смысла нет. если нужно будет, "бабушки" в консоли будут ордера ставить, а если не нужно, даже бот с одной кнопкой "завести-через-шлюз-поставить-ордера-вывести-на карту-и-это-все-на-полном-автомате" будет валяться в чулане.
@ecurrex-ru, не согласен. Вот один из ботов больше года торгует мелочёвкой на бинансе. Пришлось конечно почитать про сеточную торговлю. Но веб интерфейс не сложный, работает с выдачей простой отчётности в телегу.
Тут скорее вопрос количества пользователей. Наверняка некоторые из местных обитателей запустили бы бота, в качестве дополнительного дохода. Но нас тут всего три калеки.
@virt, бот не равно "кнопка бабло" или дополнительный доход. "три калеки" запускают бота и все три имеют дополнительный доход? а за чей счет? за счет четвертого, который бота не запускал? :)
@ecurrex-ru, за счёт соревнований настроек ботов и изменений трендов :)
@bitwheeze, больше ботов богу ботов!