Tiger API

Документация по работе с Tiger Websocket API

Назначение

Tiger API — локальный сервер сигналов (WebSocket) для связи скринеров и других внешних сервисов с терминалом Tiger.com Windows.

В текущей версии принимает команду setLinkSymbol и мгновенно открывает переданный тикер в указанной группе линковки, чтобы инструмент на графике и/или стакане обновился без ручных действий.

Где включать в терминале

  1. Откройте меню: Настройки → Локальный сервер сигналов → Включить сервер сигналов → Сохранить.

  2. По умолчанию для WebSocket-сервера используется порт 7819.

Подключив тумблер, можно использовать команду setLinkSymbol и другие WS-сообщения, описанные ниже.

Текущий формат запроса

{ "type": "setLinkSymbol", "e": "BINANCE", "m": "SPOT", "symbol": "BTCUSDT", "linkGroup": "A" }

Правила валидации

  • Все поля обязательные;

  • Регистр значений не важен (сервер нормализует и эхо-возвращает в каноническом виде, см. примеры ниже);

  • m: только SPOT или FUTURES (в ответе нормализуется в Spot/Futures);

  • linkGroup: строка (буква A–Z или цифра 0–11; словари групп см. справочник ниже)

Примеры запросов и ответов

Успешный запрос

Пример

socket.send('{"type":"setLinkSymbol","e":"BINANCE","m":"SPOT","symbol":"BTCUSDT","linkGroup":"A"}');

{ "title": "Successful request", "message": "Symbol linked successfully.", "request": { "e": "BINANCE", "m": "Spot", "symbol": "BTCUSDT", "linkGroup": "A", " type": "SetLinkSymbol" }, "response": { "type": "successfully", "timestamp": "2025-09-01T13:18:50.2327892+03:00" } }

Неверный тип команды или битый JSON

Пример 1: неизвестный тип (ключи валидные, но значение поля type неверно)

socket.send('{"type":"InvalidType","e":"BINANCE","m":"SPOT","symbol":"BTCUSDT","linkGroup":"A"}');

{ "title": "Invalid JSON (syntax error)", "message": "Invalid JSON. Connection will close.", "request": { "type": "InvalidType", "e": "BINANCE", "m": "SPOT", "symbol": "BTCUSDT", "linkGroup": "A" }, "response": { "type": "error", "error": { "message": "Invalid JSON format", "code": 400 }, "timestamp": "2025-09-01T13:20:30.6586708+03:00" }, "connection_close": { "code": 1007, "reason": "Invalid JSON format" } }

Пример 2: невалидный JSON

socket.send('"type": "InvalidType", "e": "BINANCE", "m": "SPOT", "symbol": "BTCUSDT", "linkGroup": "A"}');

{ "title": "Invalid JSON (syntax error)", "message": "Invalid JSON. Connection will close.", "request": null, "response": { "type": "error", "error": { "message": "Invalid JSON format", "code": 400 }, "timestamp": "2025-09-01T13:21:21.996182+03:00" }, "connection_close": { "code": 1007, "reason": "Invalid JSON format" } }

Поведение соединения: при синтаксической ошибке JSON сервер присылает ошибку и закрывает соединение с кодом 1007.

Ошибка валидации полей (соединение не закрывается)

Пропущены обязательные поля

socket.send('{"type":"setLinkSymbol","e":"","m":"SPOT","symbol":"","linkGroup":""}');

{ "title": "Missing required fields", "message": "Some fields are missing.", "request": { "e": "", "m": "Spot", "symbol": "", "linkGroup": "", "type": "SetLinkSymbol" }, "response": { "type": "error", "error": { "message": "'e' is empty, 'symbol' is empty, 'linkGroup' is empty", "code": 400 }, "timestamp": "2025-09-01T13:26:53.6306133+03:00" } }

Несуществующий символ

socket.send('{"type":"setLinkSymbol","e":"BINANCE","m":"SPOT","symbol":"BTCUSDT1","linkGroup":"A"}');

{ "title": "Symbol not found", "message": "Trading symbol not found.", "request": { "e": "BINANCE", "m": "Spot", "symbol": "BTCUSDT1", "linkGroup": "A", "type": "SetLinkSymbol" }, "response": { "type": "error", "error": { "message": "Symbol not found", "code": 400 }, "timestamp": "2025-09-01T13:28:10.9152168+03:00" } }

Некорректная группа линковки

socket.send('{"type":"setLinkSymbol","e":"BINANCE","m":"SPOT","symbol":"BTCUSDT","linkGroup":"AX"}');

{ "title": "Invalid link group", "message": "Link group not found.", "request": { "e": "BINANCE", "m": "Spot", "symbol": "BTCUSDT", "linkGroup": "AX", "type": "SetLinkSymbol" }, "response": { "type": "error", "error": { "message": "linkedGroup not found", "code": 400 }, "timestamp": "2025-09-01T13:30:20.101782+03:00" } }

Ping/Pong

Поддерживаются два варианта пинга.

Текстовый

socket.send('ping');

ответ: 'pong'

JSON

socket.send('{"type":"ping","title":"some title","message":"some message"}');

{ "title": "Pong", "message": "Response 'pong' to 'ping'.", "request": { "title": "some title", "message": "some message", "type": "Ping" }, "response": { "type": "successfully", "timestamp": "2025-09- 01T13:35:34.0389026+03:00" } }

Справочник по значениям

Биржи (e)

Список поддерживаемых бирж и коннекторов:

  • BINANCE

  • BINANCE-FUT

  • BYBIT

  • OKX

  • MEXC

  • BITMEX

  • Bitfinex

  • Gate.io

  • Bitget

  • TigerX

Передаваемое значение регистронезависимо. 

Тип рынка (m)

SPOT или FUTURES (регистр не важен; в ответе нормализуется до Spot/Futures). 

Группы линковки (linkGroup)

Передаётся строка. Допустимые группы — буквенные A–Z и цифровые 0–11. Цветовые соответствия и полный справочник доступны в проектной заметке№

Буквенные группы

A: #FFF9C4

B: #93FF9D

C: #1DEAC5

D: #D380FF

E: #FFA5A9

F: #EFE95F

G: #30F74C

H: #01AC8D

I: #9CA6FF

J: #C2595B

K: #CFC937

L: #05D759

M: #0DB9D7

N: #7455F2

O: #A95A7D

P: #EBA14C

Q: #08DA8E

R: #2586E0

S: #1A46DF

T: #905BA0

U: #F56334

V: #05A964

W: #00879A

X: #4D23F5

Y: #6C26EE

Z: #3C3C3C

Цифровые группы

0: #FFAA00

1: #FF4E00

2: #CB3400

3: #87EA09

4: #31DA06

5: #178905

6: #00E0FF

7: #0A7AE0

8: #0A42D2

9: #9655F2

10: #A700FF

11: #6509D5

Поведение соединения и коды ошибок

  • Синтаксическая ошибка JSON (невозможность распарсить, либо некорректная команда type) → ошибка с code 400 и закрытие соединения с WebSocket-кодом 1007.

  • Ошибки валидации содержимого (пустые поля, несуществующий символ, неверная группа) → ошибка с code 400, соединение остаётся открытым.

    Сообщения и примеры в этом разделе см. выше.

Рекомендации клиенту

  • На синтаксические ошибки JSON (закрытие 1007) — переподключение с экспоненциальной задержкой и предварительной локальной валидацией JSON перед отправкой.

  • На ошибки валидации содержимого — исправление полей и повторная отправка без переподключения.

  • Поддерживать keep-alive через периодический ping (текстовый или JSON).

Last updated