/configurator

Предназначен для предоставления гейтам и ядру конфигураций и информации о тогуемых рынках

Primary LanguagePython

Configurator

Версия 1.5.0-rc

Python Linux

Предназначен для предоставления гейтам и ядру конфигураций и информации о торгуемых рынках

Хост: https://configurator.robotrade.io

Пример URL для подключения:

Общее описание Configurator

Configurator предназначен для передачи конфигураций ядрам и гейтам. Он предоставляет API, через которое можно получить нужную конфигурацию, с помощью соответствующего эндпоинта.

Configurator использует библиотеку CCXT для получения информации о маркетах и ассетах по конкретной бирже, а конфигурации хранятся в соответствующей папки на сервере. Информация о том, как добавлять и изменять конфигурации, есть в вики.

Схема торговой системы

Эндпоинты

Основной эндпоинт Configurator

Endpoint: GET /{exchange_id}/{instance}

Ответ:

Развернуть JSON
{
  "is_new": true,
  "data": {
    "markets": [
      {
        "exchange_symbol": "ETH-BTC",
        "price_increment": 0.25,
        "amount_increment": 0.0001,
        "common_symbol": "ETH/BTC",
        "assets": {
          "base": "ETH",
          "quote": "BTC"
        }
      },
      {
        "exchange_symbol": "fBTCUST",
        "price_increment": 0.25,
        "amount_increment": 0.0001,
        "common_symbol": "BTC/USDT",
        "assets": {
          "base": "BTC",
          "quote": "UST"
        }
      }
    ],
    "assets_labels": [
      {
        "exchange": "UST",
        "common": "USDT"
      },
      {
        "exchange": "BTC",
        "common": "BTC"
      }
    ],
    "routes": [
      [
        {
          "source_asset": "ETH",
          "common_symbol": "ETH/USDT",
          "operation": "sell"
        },
        {
          "source_asset": "USDT",
          "common_symbol": "BTC/USDT",
          "operation": "buy"
        },
        {
          "source_asset": "BTC",
          "common_symbol": "ETH/BTC",
          "operation": "buy"
        }
      ],
      [
        {
          "source_asset": "USDT",
          "common_symbol": "ETH/USDT",
          "operation": "buy"
        },
        {
          "source_asset": "ETH",
          "common_symbol": "ETH/BTC",
          "operation": "sell"
        },
        {
          "source_asset": "BTC",
          "common_symbol": "BTC/USDT",
          "operation": "sell"
        }
      ],
      [
        {
          "source_asset": "BTC",
          "common_symbol": "BTC/USDT",
          "operation": "sell"
        },
        {
          "source_asset": "USDT",
          "common_symbol": "ETH/USDT",
          "operation": "buy"
        },
        {
          "source_asset": "ETH",
          "common_symbol": "ETH/BTC",
          "operation": "sell"
        }
      ]
    ],
    "gate_config": {
      "exchange": {
        "name": "kucoin",
        "instance": 1
      },
      "account": {
        "api_key": "61d213fc48bacd88816474cc",
        "secret_key": "8dga8934-02b7-4b66-963e-18b413f4e6cb",
        "passphrase": "i1i1id04d0c"
      },
      "aeron": {
        "publishers": {
          "orderbook": {
            "channel": "aeron:udp?control=172.31.14.205:40456|control-mode=dynamic",
            "stream_id": 1001
          },
          "balance": {
            "channel": "aeron:udp?control=172.31.14.205:40456|control-mode=dynamic",
            "stream_id": 1002
          },
          "log": {
            "channel": "aeron:udp?endpoint=3.66.183.27:44444|control-mode=dynamic",
            "stream_id": 1001
          }
        },
        "subscribers": {
          "core": {
            "channel": "aeron:udp?endpoint=172.31.14.205:40457|control=172.31.14.205:40456",
            "stream_id": 1003
          }
        }
      }
    },
    "core_config": {
      "aeron": {
        "publishers": {
          "gateway": {
            "channel": "aeron:udp?control=172.31.14.205:40456|control-mode=dynamic",
            "stream_id": 1003
          },
          "metrics": {
            "channel": "aeron:udp?endpoint=3.66.183.27:44444",
            "stream_id": 1001
          },
          "log": {
            "channel": "aeron:udp?control=172.31.14.205:40456|control-mode=dynamic",
            "stream_id": 1005
          }
        },
        "subscribers": {
          "balance": {
            "channel": "aeron:udp?control-mode=manual",
            "destinations": [
              "aeron:udp?endpoint=172.31.14.205:40461|control=172.31.14.205:40456"
            ],
            "stream_id": 1002
          },
          "orderbooks": {
            "channel": "aeron:udp?control-mode=manual",
            "destinations": [
              "aeron:udp?endpoint=172.31.14.205:40458|control=172.31.14.205:40456",
              "aeron:udp?endpoint=172.31.14.205:40459|control=18.159.92.185:40456",
              "aeron:udp?endpoint=172.31.14.205:40460|control=54.248.171.18:40456"
            ],
            "stream_id": 1001
          }
        }
      }
    }
  }
}

Это основной эндпоинт Configurator, он предоставляет информацию о маркетах, ассетах, конфигурациях, а также торговые маршруты.

Примеры:

https://configurator.robotrade.io/binance/1

https://configurator.robotrade.io/kucoin/1?only_new=false

Подробное описание доступно в Wiki.

Ping

Endpoint: GET /ping

Ответ:

{
  "pong": true
}

Эндпоинт используется для пинга - проверки, работает Configurator или нет. Регулярно отправлять пинг не нужно, эндпоинт нужен только для проверок.

Примеры:

https://configurator.robotrade.io/ping

Описание также доступно в Wiki.

Обобщенный алгоритм

Configurator реализует API, которые использует Агент для получения информации о торгуемых бумагах и конфигурации для работы гейта и шлюза.

Алгоритм работы можно представить так:

  1. Агент совершает запрос к API конфигуратора
  2. Конфигуратор получает данные из биржи, из конфигов, генерирует торговые маршруты
  3. Конфигуратор отправляет JSON с данными или с ошибкой.

Деплой на сервере

Описание процесса деплоя (ссылка на Wiki).