Trading API Documentation

API позволяет взаимодействовать с платформой ArenaGO. Все запросы требуют аутентификации с помощью токена.
Endpoint Method Description Parameters
/api/login POST Аутентификация и получение токена
  • nickname: Your username
  • password: Your password
/api/submit_order POST Отправить рыночную заявку
Без указания цены. Заявка исполнится по лучшей доступной цене на бирже
  • direction: 'B' Покупка или 'S' Продажа
  • secid: Код бумаги ('SBER', 'LKOH', ...)
  • position: Объем позиции, доля от капитала (1-100)
  • bot: Имя бота (string)
/api/trades GET Получить свои сделки за сегодня Можно посмотреть в раздле "My Trading"
/api/positions GET Получить свои открытые позиции Можно посмотреть в раздле "My Trading"
/api/bot_trade_limits GET Получить информацию о лимитах торговли для своих ботов
  • Возвращает количество совершенных сделок каждым ботом
  • Максимальный лимит: 1000 сделок на бота в день
  • Показывает оставшееся количество сделок для каждого бота
Торговые лимиты

Есть ограничения на количество сделок:

  • 1000 сделок в день на каждого бота
  • После достижения лимита, API вернет ошибку при попытке совершить сделку
  • Используйте /api/bot_trade_limits для отслеживания лимитов

Authentication

Шаг 1: Получи токен

Получи токен и используй его во всех последующих запросах.

cURL
curl -X POST "https://arenago.ru/api/login" \
     -H "Content-Type: application/json" \
     -d '{
         "nickname": "your_username",
         "password": "your_password"
     }'
Python
import requests

url = "https://arenago.ru/api/login"
payload = {
    "nickname": "your_username",
    "password": "your_password"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)
token = response.json().get("token")
print(f"Token: {token}")
Response
{
    "token": "your_authentication_token",
    "message": "Authentication successful"
}

Make trades

Шаг 2: Отправь рыночную заявку

Используй токен аутентификации для отправки заявок на покупку или продажу доступных ценных бумаг.

cURL
curl -X POST "https://arenago.ru/api/submit_order" \
     -H "Content-Type: application/json" \
     -H "Authorization: your_token" \
     -d '{
         "direction": "B",
         "secid": "SBER",
         "position": 100,
         "bot": "MyTradingBot"
     }'
Python
import requests

url = "https://arenago.ru/api/submit_order"
payload = {
    "direction": "B",  # "B" for Buy, "S" for Sell
    "secid": "SBER",   # Stock ticker
    "position": 100,   # Capital amount (1-100)
    "bot": "MyTradingBot"  # Your bot's name
}
headers = {
    "Content-Type": "application/json",
    "Authorization": "your_token"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
Success Response
{
    "success": true,
    "message": "Trade submitted successfully",
    "trade_limits": {
        "bot_name": "MyTradingBot",
        "trades_today": 251,
        "max_trades": 1000,
        "remaining_trades": 749
    }
}
Error Responses
{"error": "ERROR: MARKET CLOSED"} - Trading hours: 07:00 - 15:40 MSK
{"error": "ERROR: NOT VALID SECID"} - Security ID not in allowed list
{"error": "ERROR: SUBMIT MAX COUNT LIMIT EXCEEDED"} - Reached max 1000 trades per day
{"error": "ERROR: BOT {bot_name} HAS REACHED DAILY TRADE LIMIT OF 1000"} - Bot specific trade limit reached
{"error": "ERROR: MAX POSITION EXCEEDED"} - Total position exceeds 100 limit

Check Bot Trade Limits

Отслеживай лимиты торговли ботов

Проверяй, сколько сделок осталось у каждого бота на сегодня

Python
import requests

url = "https://arenago.ru/api/bot_trade_limits"
headers = {"Authorization": "your_token"}

response = requests.get(url, headers=headers)
data = response.json()

print(f"Date: {data['date']}")
for bot in data['bot_limits']:
    print(f"Bot: {bot['bot_name']}")
    print(f"  Trades Today: {bot['trades_today']}")
    print(f"  Remaining: {bot['remaining_trades']} of {bot['max_trades']}")
Response Example
{
    "date": "2025-04-14",
    "bot_limits": [
        {
            "bot_name": "MyTradingBot",
            "trades_today": 250,
            "max_trades": 1000,
            "remaining_trades": 750,
            "last_updated": "2025-04-14T15:30:25.123456"
        },
        {
            "bot_name": "AlphaTrader",
            "trades_today": 520,
            "max_trades": 1000,
            "remaining_trades": 480,
            "last_updated": "2025-04-14T15:45:12.654321"
        }
    ]
}

Get My Trades & Positions

Шаг 3: Отслеживай свои сделки и позиции

Получи информацию о сделках и текущих позициях, чтобы отслеживать их эффективность

Get Trades
Python
import requests

url = "https://arenago.ru/api/trades"
headers = {"Authorization": "your_token"}

response = requests.get(url, headers=headers)
trades = response.json()
for trade in trades:
    print(f"{trade['tradedate']} {trade['tradetime']}: "
          f"{trade['direction']} {trade['secid']} "
          f"x{trade['position']} by {trade['bot']}")
Get Positions
Python
import requests

url = "https://arenago.ru/api/positions"
headers = {"Authorization": "your_token"}

response = requests.get(url, headers=headers)
positions = response.json()
for pos in positions:
    print(f"{pos['secid']}: {pos['position']} units "
          f"(updated: {pos['updatetime']}, "
          f"bot: {pos['bot']})")

Доступные ценные бумаги

Для торговли доступны 29 ценных бумаг:

GAZP SBER T VTBR LKOH NVTK GMKN YDEX X5 SMLT ROSN AFLT MTLR MGNT PLZL SPBE AFKS MOEX RNFT PIKK TATN TRNFP VKCO POSI NLMK CHMF UPRO SNGSP SNGS

Полные правила и подробности соревнования смотри на странице Arena Rules