Git Product home page Git Product logo

binfutures's Introduction

BinFutures

Trading bot for Binance exchange.
Сайт ботов: https://ebot732.github.io/

Бот BinFutures.
Бот для торговли на Binance Futures USDⓈ-M с использованием стратегии Мартингейла (усреднения- увеличения позиции с целью улучшения средней цены входа) и выбором растущей (падающей) монеты. Может работать и в LONG и в SHORT.
Если не хочется использовать усреднения, можно:

  • выставить limit_aver в 0,

  • или включить использование stop_loss, установить его срабатывание до усреднения и бот будет закрывать позицию в минус, если курс пойдет не в нужную сторону,

  • или установить значение min_bal_perc на 100% и бот не будет выставлять усредняющий ордер.

    Бот может работать в одном из 4-х режимов:

  1. Режим стандартный- перебор пар для выбора подходящей по всем заданным условиям:
  • объем торгов за 24 часа в USDT больше указанного в настройках;
  • объем торгов последней свечи или предпоследней больше объема выбранной дальней свечи на %, указанный в настройках;
  • изменение текущей цены по отношению к цене открытия дальней свечи: с подрежимом delta_start1- при LONG рост цены больше, чем на указанный %, - при SHORT падение цены еще больше, чем на указанный %, с подрежимом delta_start2- при LONG падение цены еще больше, чем на указанный %, - при SHORT рост цены больше, чем на указанный %.
  1. Режим super_asset: бот работает с парой без каких-либо условий до отключения.

  2. Режим control_auto: выбор подходящей пары заданным условиям стандартного режима и работа с ней до истечения указанного таймера от старта позиции в этом режиме, или достижения стоп_цены (изменения на указанный % от цены старта).

  3. Режим most_changed- перебор пар для выбора подходящей по следующим условиям:

  • объем торгов за 24 часа в USDT больше указанного в настройках,

  • курс пары за последние 24 часа изменился в заданном коридоре (с выбором ближе к максимальному или минимальному значению коридора).

    Режимы super_asset, control_auto и most_changed взаимоисключающие, т.е. при выборе одного из режимов другие режимы отключаются. Если не выбран ни один из режимов, бот будет работать в стандартном режиме. После выбора монеты в одном из режимов бот:

  • покупает ее (встает в LONG) маркет-ордером (старт-ордер) на указанный объем (при работе в SHORT продает),

  • выставляет купленные монеты на продажу (для закрытия позиции в плюс) лимитным sell-ордером (FIX-ордером) по курсу на указанный процент прибыли выше курса покупки (в SHORT-е на покупку лимтным buy-ордером) ,

  • выставляет лимитный buy-ордер (усред-ордер) на покупку этой же монеты по курсу ниже предыдущей покупки на указанный процент (на случай падения курса монеты и уменьшения средней цены входа в сделку)(в SHORT-е лимитный SELL-ордер на случай повышения курса).

Затем, в зависимости от того, какой ордер исполнился (примеры для LONG, для SHORT- наоборот):

  • если исполнился sell-ордер (FIX-ордер), бот фиксирует прибыль и отменяет buy-ордер (усред-ордер) для усреднения(если buy-ордер при этом успел исполниться частично или полностью- выставляется sell-ордер), затем снова ищет подходящую пару,
  • если исполнился buy-ордер (усред-ордер), бот отменяет sell-ордер (FIX-ордер),выставляет новый sell-ордер (FIX-ордер) уже с новым количеством монет и по новой цене(средняя цена входа + указанный процент прибыли), выставляет новый buy-ордер (усред-ордер),
  • если buy-ордер (усред-ордер) исполнился больше, чем наполовину и прошло более 5-ти минут после этого , бот отменяет sell-ордер (FIX-ордер), и выставляет новый sell-ордер (FIX-ордер) уже с новым количеством монет и по новой цене(средняя цена входа + указанный процент прибыли).

Рекомендуется BinFutures установить на VPS сервер ubuntu 20/22 и запускать в SCREEN (чтобы бот не отключался при разрыве SSH-соединения с VPS), настроить telegram-бот и канал, куда будет приходит информация о работе бота.

  • Остановка бота командой: ctrl+c (важно!: не останавливайте бот в момент совершения сделок, возможна ошибка записи в базу данных бота).
  • В white_list (список пар для работы) можно внести от 1 пары до нескольких сотен пар, главное, чтобы котируемая валюта была USDT (ETHUSDT, BTCUSDT, XRPUSDT и т.д.),
  • min_order должен быть больше, разрешенного биржей.
  • При работе с парами к USDT активы должны находится на фьючерсном балансе USDT, если работаете с парами к BUSD, активы должны находится на фьючерсном балансе BUSD.
  • Для прокрутки экрана терминала вверх есть команда: ctrl+a, esc и далее стрелка вверх. Для выхода из этого режима: esc, esc.

Для работы BinFutures можно использовать BNB для оплаты комиссий биржи (нужно перевести нужное количество BNB на фьючерсный счет в лк binance) и следить за наличием BNB на Futures аккаунте.

После закрытия каждой сделки BinFutures:

  • отправляет сообщение в telegram-канал,
  • каждую минуту в описание канала отправляет информацию об открытой позиции,
  • в полночь в канал отправляет суточный отчёт о работе. Если не было прибыли за сутки, то суточный отчёт в telegram не придёт. Точные данные по прибыли наблюдать лучше в лк binance, так как бот показывает приблизительные значения.

Настройки бота (в основном описано для LONG, для SHORT применяется наоборот):

  • fix_perc: процент повышения цены для продажи при LONG или падения для SHORT,
  • step_aver: ввод step_aver1, step_aver2, ... step_aver7 шагов изменения цены для выставления усредов,
  • qty_aver: ввод qty_aver, кратного увеличения объема усредняющего ордера в формате 7 чисел через пробел (например, 1 1.2 1.3 1.4 1.5 1.6 2),
  • limit_aver: разрешенное количество усреднений (от 0 до 30),
  • min_order: минимальная покупка (продажа) в котируемой валюте (например, в паре ETH/USDT это USDT, ставить не меньше, чем разрешено биржей, например 6, и учитывайте, что в зависимости от выбранного leverage (кредитного плеча) будет использоваться меньше USDT, например: если min_order указан 20, а leverage указан 10, то для ордера будет использовано 20/10=2 USDT),
  • min_bal_perc: минимальный процент от депозита, ниже которого BinFutures не будет выставлять усредняющий ордер,
  • delta_start: процент изменения цены для входа в сделку, нужно выбрать delta_start1 или delta_start2:
  • delta_start1: для LONG на сколько % должен подняться курс от цены открытия выбранной свечи до текущей для старта (для SHORT пишем со знаком минус, на сколько % должен упасть курс от цены открытия свечи до текущей),
  • delta_start2: для LONG пишем со знаком минус, на сколько % должен упасть курс от цены открытия выбранной свечи до текущей для старта (для SHORT на сколько % должен подняться курс от цены открытия свечи до текущей),
  • delta_vol_start- на сколько % должен увеличиться объем торгов последней закрытой свечи по сравнению с объемом выбранной дальней свечи,
  • control_auto: режим удержания подходящей по стандартным параметрам пары всегда в позиции до достижения условий по изменению цены или времени,
  • delta_stop: на сколько % должна изменится цена для возврата после закрытия позиции в перебор-поиск пары,
  • time_stop_ca: время удержания пары всегда в позиции после старта из перебора-поиска пары в минутах,
  • most_changed: режим выбора в коридоре измен цены за последн 24ч,
  • delta24_min: min изменение цены в коридоре для most_changed,
  • delta24_max: max изменение цены в коридоре для most_changed,
  • select_delta24: выбирать ближе к max или min для most_changed,
  • delta_vol_most_ch, вместо select_delta24 смотреть объем последних 2-х 15м свечей в коридоре измен цены за последн 24ч и выбрать пару с большим изменением,
  • stop_loss: на сколько % должен измениться курс монеты от средней цены входа для закрытия в минус,
  • use_stop_loss: включить использование stop_loss для закрытия в минус (да/нет), если усред-ордер будет частично исполнен, то stop_loss не сработает ,
  • pause_after_stop_loss: ставить BinFutures на паузу после срабатывания stop_loss и закрытия позиции по рынку или продолжить работу,
  • completed: поставить бота на паузу при закрытии очередной сделки (1-вкл/0-выкл),
  • kline_interval: интервал свечей для анализа (1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 8h, 12h, 1d, 3d),
  • interval_limit: какое количество свечей анализируем (если следим за изменением цены за последние 3 минуты, то можно выбрать kline_interval 1m и interval_limit 3),
  • super_asset: пара для бесконечной торговли независимо от delta_start, при этом пары из white_list не будут работать (вводится командой -super_asset_add в формате ETHUSDT),
  • manual_aver: команда для ручного усреднения по рынку, не дожидаясь цены лимитного усред-ордера, но не сработает, если усред-ордер, выставленный ботом, исполнен частично ('PARTIALLY_FILLED'),
  • fix_loss: команда для закрытия открытой позиции по рынку,
  • clear: сброс из базы данных сведений об открытых ботом ордерах,
  • leverage: размер кредитного плеча от 1 до 120 (оно разное для разных пар, смотрите в лк биржи),
  • marginType: ISOLATED или CROSSED
  • direction: LONG или SHORT (менять направление работы LONG/SHORT строго рекомендуется в терминале и при отсутствии открытых позиций)
  • clear_profit: сброс из базы данных сведений о прибыли,
  • t_sleep: при получении от биржи ошибки о превышении лимита api-запросов, можно выбрать значение паузы в секундах (например: 0.5, 1, 3),
  • t_sleep_perebor: пауза перед повтором перебора монет для выбора подходящей для старта (по умолчанию 30 сек),
  • white_list: список пар, которые бот будет использовать для анализа и выбора подходящей для открытия сделки,
  • api_key: открытый api-ключ от биржи с разрешением на фьючерсную торговлю,
  • api_secret: секретный api-ключ от биржи,
  • botID: api телеграм бота полученный от @BotFather (пример: 5656544920:AAHrXhjhujhfdf7RPJlheqJXEulBW),
  • channelID: ID канала telegram бота для уведомлений, полученное от @userinfobot (пример: -1001656543985),
  • tguserid: ID основного user-a телеграм, полученное от @userinfobot (пример: 346549043)
  • licens_key: лицензионный ключ для продления периода работы бота, полученный от разработчика,
  • quoteVolume24hr: минимальный 24-х часовой объем торгов в котируемой валюте (в паре ETH/USDT это USDT), чтобы бот взял пару из white_list в работу.

При изменении marginType, direction, leverage убедитесь, что нет открытых позиций

Здесь BinFutures представлен для ознакомления и использования в течении пробного периода до 01 ноября 2023 г. Если Вы хотите увеличить время работы до 1/6/12 месяцев: напишите в телеграм, по данным, указанным при запуске BinFutures. При использовании бота на тестовой бирже срок работы 2 недели после запуска.

Если хотите испытать BinFutures на фьючерсной тестовой бирже Binance- переходите на: https://testnet.binancefuture.com/ru/futures/ Где получите тестовые api-ключи, пропишите их в настройках бота, в use_testnet запишите: да, и экспериментируйте.

BinFutures поставляется по принципу «как есть». Никаких гарантий не прилагается и  не  предусматривается. Вы берете на себя весь риск относительно использования этого бота и должны понимать, что торговля на криптобиржах сопряжена с повышенным риском, и подходить к управлению рисками со всей ответственностью. 

Пояснения по установке, запуску, настройке бота и телеграм, screen, ошибке на VPS utf-8.

Иногда бот может получить от биржи неправильные ответы на api-запросы и выдавать ошибку, поэтому рекомендуется периодически заглядывать в лк binance, и, если бот показывает открытые ордера а в лк binance их нет (или наоборот), нужно использовать команду -clear, чтобы сбросить в боте данные о неактуальных ордерах. Редко, но бывает, что сервера telegram кратковременно недоступны, и в этот момент сообщение от BinFutures может не доходить в канал бота. Для управления ботом на VPS сервере с телефона можно использовать приложение JuiceSSH (или другое для SSH-соединения).

Если возникла ошибка 'code: -4061' «Order’s position side does not match user’s setting», значит биржа не дает открыть позицию, так как у Вас установлен хедж вариант торговли «Hedge Mode». Боту нужен односторонний режим "One-way".

Если при запуске бота на VPS выскакивает ошибка типа : "UnicodeEncodeError: 'latin-1' codec can't encode characters...", то нужно установить locale LANG=ru.

Решение №1:

dpkg-reconfigure locales

Далее выбираем все ru_RU.xx, и консоль по умолчанию в en_US.UTF-8

Решение №2:

sudo apt-get install language-pack-ru

sudo update-locale LANG=ru_RU.UTF-8

sudo apt-get install --reinstall locales

Установка и запуск BinFutures:

  • на VPS-сервере ubuntu 20 или 22 создайте новую папку, например, BinFutures (mkdir BinFutures)
  • зайдите в эту папку (cd BinFutures)
  • перенесите в эту папку файл бота BinFutures-22 (или скачайте с github командой: wget https://github.com/ebot732/BinFutures/releases/download/BinFutures-22/BinFutures-22)
  • откройте screen-сессию (например: screen -S BinFutures)
  • дайте права запуска файлу (команда: chmod 755 BinFutures-22)
  • запустите BinFutures (команда: ./BinFutures-22)
  • команда для остановки бота: ctrl+c
  • после запуска бота введите свои параметры: api_key и т.д.
  • откорректируйте, при необходимости, настройки
  • жмите ENTER и наблюдайте
  • для выхода из SCREEN перед закрытием SSH-сессии используйте команду ctrl+a, d
  • для входа в screen работающего бота используйте команду: screen -x BinFutures

Для удобства настройки BinFutures используется телеграм бот, которого нужно сделать админом в телеграм канале. Необходимые данные телеграм бот возьмет из БД BinFutures и будет управляться через чат telegram-Botа. (https://github.com/ebot732/BinFutures/blob/main/README_telegram_uprav_bot.md)

Табличка BinFutures_averaged.xls (https://github.com/ebot732/BinFutures/blob/main/table/BinFutures-19_averaged.xls) показывает приблизительные расчёты усреднений и цены ликвидации, точные данные смотрите в лк binance.

         Скриншоты

Screenshot

=================================================================

Screenshot

==================================================================

Screenshot

==================================================================

Screenshot

==================================================================

==========================
время |BUY/SELL| статус |кол-во| пара | сумма | цена | id ордера на бирже
Стартовый и усредняющие ордера в консоли выделены зеленым цветом.


Ордер (FIX) для закрытия сделки по стратегии выделен фиолетовым цветом.


Строка состояния бота выделена желтым цветом.

binfutures's People

Contributors

ebot732 avatar

Stargazers

 avatar Andrey avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.