Skip to content

DEX (Decentralised Exchange) bot trader for Erachain blockchain

License

Notifications You must be signed in to change notification settings

icreator/dex-trader

Repository files navigation

Erachain DEX Bot Trader

Торговый робот для децентрализованной биржи в блокчейн-платформе Erachain

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

Erachain

В программе есть разные потоки, получающие курсы с бирж по заданным парам (курсовик - Rater) и потоки, осуществляющие торговлю по заданному алгоритму (трейдеры Trader)

Для работы бота нужно запустить на локальной машине полную ноду Erachain и открыть доступ по RPC (на локальный адрес 127.0.0.1) и задать пароль у кошелька более 8-ми символов.

Перезадать пароль для кошелька можно так:

  • удалить из рабочей папки ноды папки walletKeys и dataWallet
  • запустить ноду и восстановить по СИДу кошелек и задать нужный пароль

Пароль доступа к кошельку и секретные ключи к API внешних сервисов

Скопируйте файл secret-keys-orig.json в secret-keys.json и задайте в нем ключи доступа:

  1. к кошельку ноды Erachain - в параметре wallet
  2. к вашему аккаунту на metals-api.com - в параметре metals-api.com

Начальная настройка

Скопируйте файл settings-orig.json в settings.json и задайте в нем нужные параметры:

  1. Для выбора нужной сети блокчейн - отладочная или боевая используйте network
  2. Для запуска без запуска торговцев: only_raters: true

Циклический запуск

Лучше всего запускать run.bat - так как там вставлен циклический запуск и другие настройки

Проверка жизнидеятельности

Логи см в папке logs

Принудительный останов

Нажмите в черном окошке, где крутится прога Crtl-C

Замечания

Если доступа к полной ноде нет то прога выйдет сразу же.
Если курс для трейдера не найден (например связь с биржой пропала) трейдер снимет все заявки.

Настройка источников для получения курсов

Файл настройки raters.json содержит список курсовиков. Полный список есть в raters-orig.json - скопируйте его в raters.json.

Список курсовиков (настройка пар внутри кода):

  • static (RaterStatic) - for static prices
  • binance (binance) - BTC / USD etc.
  • bitforex (RaterBitforexCom) - GOLD / USD
  • coinMarketCap (RaterCoinMarketCapCom) - в разработке
  • crocc-curse (RaterCross) - задаем пару пар
  • livecoin (RaterLiveCoin) - за один запрос только одну пару
  • livecoinRUR (RaterLiveCoinRUR) - за один запрос только одну пару
  • metals-api (RaterMetalsAPI) - GOLD / USD и другие - по металлам
  • polonex (RaterPolonex) - за один запрос выбирает все пары - BTC / USD
  • wex (RaterWEX) - бывший BTC-e, сейчас не работает - BTC / RUR

Каждый курсовик использует АПИ соответствующей биржи. Так как данные бесплатные, не рекомендую чаще чем раз в 5-10 минут получать курсы

Настройки Трейдера

Файл настройки трейдеров traders.json содержит список настроек, каждый элемент которого запускающий своего трейдера. Причем трейдеры отличаются по названиям:

  • Guard - страж позиции, держит заданные позиции в стакане относительно курса обмена с внешних источников. Нужно задавать источник курса и список ордеров с отступами по цене от него.
  • GuardAbs - страж позиции с абсолютными значениями, то же что и Guard но отступы заданы в абсолютных значениях
  • RandomHit - случайные покупки по заданной схеме и внешнему курсу с отступом от него на заданный сдвиг.
  • RandomHitRand - тоже, но еще случайный объем в пределах 0...+50%.
  • RandomHitSelf - случайные покупки по заявкам из стакана или между ними. Задавать внешний источник для курса не требуется.
  • RandomHitSelfRand - тоже, но еще случайный объем в пределах 0...+50%.
  • RandomHitSelfRandPrice - тоже, но еще случайно цена в пределах 1% по рынку меняется

Для торговцев RandomHit и подобных схема задается массивом массивов - чтобы сохранить порядок следования ключей

Все торговцы будут работать пока есть КУРС, если соответствующий Курсовик перестанет получать курсы то, трейдер снимает все заявки. Например если биржа дающая курс закрылась, то торговец снимет заявки чтобы не уйти в минус если цена уйдет не туда. Это не относится к Торговцам с приставкой Self

Примеры настроек:

[
    {
    "traderAddress": "7NhZBb8Ce1H2S2MkPerrMnKLZNf9ryNYtP",
    "sleepTime": 200,
    "cleanAllOnStart": true,
    "haveAssetKey": 1106,
    "wantAssetKey": 1108,
    // нужный курсовик из списка:
    "sourceExchange":"polonex",
    "limitUP": "0.01",
    "limitDown": "0.02",
    "scheme": {
      "1000":"0.1",
      "100":"0.03",
      "10":"0.001",
      "-10":"0.001",
      "-100":"0.03",
      "-1000":"0.1"
      }
    },
  ...
    {
      "type": "RandomHitSelfRand",
      "traderAddress": "77FrM7Y9CC17Lwo6Ku4U4pzXr8V9xtMGtn",
      "startDelay": 10,
      "sleepTime": 550,
      "cleanAllOnStart": false,
      "haveAssetKey": 1,
      "wantAssetKey": 2,
      "sourceExchange": "",
      "scheme": [
        ["5", "20.0"],
        ["7", "10.0"],
        ["10", "5.0"],
        ["-10", "5.0"],
        ["-7", "10.0"],
        ["-5", "20.0"]
      ]
    },
  ...
]

traderAddress - счет с котрого будут создаваться ордера, должен быть в вашем кошельке sleepTime - время сна - лучше ставить не чаще чем один блок
cleanAllOnStart - при запуске очищать стокан от всех своих ордеров. Очень удобно если у вас слетела прога
haveAssetKey - номер актива в Erachain. Прога найдет его и возьмет Имя из блокчейна
wantAssetKey - номер актива в Erachain
sourceExchange - по курсу какого источника работаем
limitUP - если превышена разница вверх нового курса от старого, то переносим все заявки в стакане
limitDown - если превышена разница вних нового курса от старого, то переносим все заявки в стакане
scheme - схема заявок в стакане:

  1. Количество продажи/покупки. Минус у количества означает покупку.
  2. Отклонение к среднему курсу. Минус означает отклонение "по рынку". Например минус задаем для торговца RandomHit

G

Вы можете разрабатывать дальнейшие стратегии бота, создавая свои классы и внедряя их в org.erachain.dextrader.traders.TradersManager.start

About

DEX (Decentralised Exchange) bot trader for Erachain blockchain

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published