Ядро содержит стратегии для тестирования гейтов. Эти стратегии реализуют различное поведение ядра и проверяют гейт на ожидаемое поведение, включая правильное выставление и отмену ордеров, получение ордербуков и балансов, обработку неправильных ордеров от ядра.
Во время работы ядро выполняет валидацию данных от гейта, в первую очередь это касается формата данных.
Список тестовых стратегий:
- fast-testing - Быстрая стратегия тестирования гейта.
- cancelling-testing - Стратегия тестирования отмены ордеров.
- order-creating-testing - Стратегия тестирования создания ордеров.
- orderbook-testing - Стратегия для тестирования ордербуков.
- breaking-testing - Стратегия неправильного поведения ядра.
Основные компоненты:
- Strategy - абстрактный класс, реализации которого пишет пользователь (алготрейдер). В нём описан алгоритм торговой стратегии, который использует Trader для получения данных и выставления ордеров. Будет использоваться для написания тестовых сценариев.
- Trader - отвечает за взаимодействие с Gate. Хранит и обновляет данные, отправляет команды. Логгирует действия стратегии.
- Communicator - класс, который используется для взаимодействия с лог-сервером и Gate.
-
Установка python 3.10:
sudo apt update && sudo apt upgrade -y sudo apt install software-properties-common -y sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt install python3.10 python3.10-dev python3.10-venv
-
Клонирование репозитория с исходным кодом ядра:
git clone https://github.com/RoboTradeCode/test-core-python.git
-
Установка виртуального окружения venv:
cd test-core-python python3.10 -m venv venv
-
Активация виртуального окружения:
source venv/bin/activate
-
Установка зависимостей ядра:
pip install -r requirements.txt
-
Добавление права на запуск:
sudo chmod +x start.py
-
Конфигурация ядра. В файле settings.toml нужно написать путь для получения конфигурации. Также на сервере конфигуратора (или в файле) должна быть конфигурация с нужными полями для ядра. Пример конфигурации есть в разделе Конфигурация.
-
Основные этапы установки завершены. Также для работы ядра потребуется Aeron. На момент запуска должен быть запущен Media Drive Aeron. Он может быть запущен как в качестве systemd, так и в качестве процесса (т.е. запущен в терминале). Инстркуции по сборке и запуску Aeron можно найти в вики aeron-python.
-
Рекомендую запустить ядро в целях проверки:
./start.py orderbook-testing
Ядро реализует несложный интерфейс команной строки. Запуск ядра в определенном режиме (см. типы тестирования) можно выполнить с помощью команд такого формата:
./start.py <тип тестирования>
Например:
./start.py fast-testing
./start.py breaking-testing
Вызов справки по стратегии:
./start.py breaking-testing --help
При выполнении такой команды в терминале, будет запущена стратегия ядра. Вывод логов будет осуществляться в этот же терминал. Остановить ядро можно с помощью прерывания Ctrl + C.
Способ получения конфигурации указан в файле settings.toml
. Его вид должен быть примерно следующим:
[configuration]
type = 'api'
path = 'https://configurator.robotrade.io/binance/sandbox?only_new=false'
Файл содержит способ получения полной конфигурации торгового сервера. Файл JSON, специфичный для ядра, находится на сервере конфигуратора и должен иметь следующую структуру:
{
"aeron": {
"no_subscriber_log_delay": 300,
"publishers": {
"gate_input": {
"channel": "aeron:ipc",
"stream_id": 1004
},
"logs": {
"channel": "aeron:ipc",
"stream_id": 1008
}
},
"subscribers": {
"orderbooks": {
"channel": "aeron:ipc",
"stream_id": 1006
},
"balances": {
"channel": "aeron:ipc",
"stream_id": 1005
},
"core_input": {
"channel": "aeron:ipc",
"stream_id": 1007
}
}
}
}
Описание каналов Aeron:
- gate_input - канал для отправления команд гейту;
- logs - канал для постинга логов;
- orderbooks - канал для получения ордербуков;
- balances - канал для получения балансов;
- core_input - канал для получения статусов ордеров и ошибок;