Нативные функции системы JT-Trader
Данная документация описывает нативные функции, доступные в глобальной области видимости при разработке торговых стратегий в JT-Trader. Эти функции предоставляют прямой доступ к торговым операциям, рыночным данным и системным возможностям платформы.
Архитектура функций
Нативные функции JT-Trader тесно связаны с библиотекой CCXT (CryptoCurrency eXchange Trading). Некоторые функции представляют собой прямые вызовы методов CCXT, в то время как другие были переписаны и адаптированы для обеспечения унификации интерфейса.
Такая архитектура была реализована для того, чтобы функционал работал одинаково как в тестере, так и в рантайме, обеспечивая единообразное поведение торговых операций независимо от режима выполнения.
Функции среды выполнения
getArtifactsKey()
Возвращает уникальный ключ артефакта для текущего скрипта, используемый для хранения данных отчетов.
function getArtifactsKey(): string;
Пример использования:
let artifactsKey = getArtifactsKey();
let reportUrl = "https://env1.jtnodes.one/report/" + artifactsKey;
registerCallback()
Регистрирует callback-функцию для торговых операций (только в режиме разработки).
function registerCallback(funcName: string, callback: (...args: any[]) => void): void;
Параметры:
funcName
- имя функции (createOrder, cancelOrder, modifyOrder, getOrders, getPositions, getBalance)callback
- callback-функция (только асинхронная)
isTester()
Определяет, выполняется ли скрипт в режиме тестирования.
function isTester(): boolean;
Пример использования:
if (isTester()) {
// Логика только для тестера
log('Script', 'Выполняется в режиме тестирования', {}, true);
}
updateReport()
Обновляет отчет для текущего скрипта. Максимальная частота обновления - 1 раз в секунду. Максимальный размер отчета - 1MB.
function updateReport(data: ReportData): Promise<void>;
Важно: Избегайте вызова в циклах без контроля интервала выполнения (особенно в onTick, onTimer).
getCache() / setCache()
Функции для работы с кэшем данных.
function setCache(key: string, value: any): Promise<void>;
function getCache<T>(key: string): Promise<T>;
getPrefix()
Возвращает префикс текущего сценария скрипта. Используется для генерации clientOrderId.
function getPrefix(): string;
Логика генерации clientOrderId:
- Если пользователь предоставил clientOrderId:
{prefix}.{userClientOrderId}
- Если не предоставил:
{prefix}.{hashOfTimestamp}
setLeverage()
Устанавливает плечо для фьючерсной торговли.
function setLeverage(leverage: number, symbol: string): Promise<any>;
CCXT функция: setLeverage(leverage, symbol)
Параметры:
leverage
- значение плеча (1-125)symbol
- название символа (spot: BTC/USDT или futures: BTC/USDT:USDT)
Функции рыночных данных
symbolInfo()
Возвращает информацию о торговом символе.
function symbolInfo(symbol: string): Promise<SymbolInfo>;
CCXT источник: ccxt.markets[symbol]
Функции OHLC данных
function tms(symbol?: string): number; // Таймстамп текущей свечи
function open(symbol?: string): number; // Цена открытия
function high(symbol?: string): number; // Максимальная цена
function low(symbol?: string): number; // Минимальная цена
function close(symbol?: string): number; // Цена закрытия
function volume(symbol?: string): number; // Объем торгов
ask() / bid()
Возвращают цены покупки и продажи из стакана заявок.
function ask(symbol?: string, index: number = 0): [number, number];
function bid(symbol?: string, index: number = 0): [number, number];
Возвращаемое значение: [цена, объем]
getHistory()
Получает исторические данные свечей.
function getHistory(symbol: string, timeframe: TimeFrame, startTime: number, limit?: number): Promise<OHLC[]>;
CCXT функция: fetchOHLCV(symbol, timeframe, since, limit)
Параметры:
symbol
- название символаtimeframe
- таймфрейм свечей ('1m', '5m', '15m', '1h', '1d')startTime
- время начала (timestamp)limit
- количество свечей
Пример использования:
let candles = await getHistory('BTC/USDT', '1h', 1614556800000, 10);
// Результат: [timestamp, open, high, low, close, volume]
Торговые функции
getPositions()
Возвращает массив открытых позиций.
function getPositions(symbols?: string[], options = {}): Promise<Position[]>;
CCXT функция:
- По умолчанию: система подписывается на события и позиции возвращаются из WebSocket соединений
- При
isForce = true
:fetchPositions(symbols, params)
Пример использования:
let positions = await getPositions();
for (let position of positions) {
log('PositionManager', 'Position info', {
symbol: position.symbol,
size: position.contracts,
entryPrice: position.entryPrice
}, true);
}
getBalance()
Возвращает информацию о балансе аккаунта.
function getBalance(): Promise<{
total: { USDT: number; [coin: string]: number };
used: { USDT: number; [coin: string]: number };
free: { USDT: number; [coin: string]: number };
}>;
CCXT функция: fetchBalance()
Пример использования:
let balance = await getBalance();
log('BalanceManager', 'Free balance', { balance: balance.free.USDT }, true);
Функции работы с ордерами
getOrders() / getOpenOrders() / getClosedOrders()
function getOrders(symbol: string, since = 0, limit = 500, params: any = undefined): Promise<Order[]>;
function getOpenOrders(symbol: string, since = 0, limit = 500, params: any = undefined): Promise<Order[]>;
function getClosedOrders(symbol: string, since = 0, limit = 500, params: any = undefined): Promise<Order[]>;
CCXT функции:
getOrders()
- может объединять несколько CCXT методов в зависимости от биржи (например,fetchOrders()
,fetchOpenOrders()
,fetchClosedOrders()
)getOpenOrders()
- может содержать несколько CCXT функций, так как у некоторых бирж разделены триггерные ордера и обычные открытые ордераgetClosedOrders()
- аналогично может объединять несколько CCXT методов для получения всех типов закрытых ордеров
getOrder()
Получает ордер по ID.
function getOrder(id: string, symbol = ''): Promise<Order>;
CCXT функция: fetchOrder(id, symbol)
createOrder()
Создает новый ордер.
function createOrder(
symbol: string,
type: OrderType,
side: OrderSide,
amount: number,
price: number,
params: Record<string, unknown>
): Promise<Order>;
CCXT функция: createOrder(symbol, type, side, amount, price, params)
Параметры:
symbol
- торговый символtype
- тип ордера ('limit', 'market')side
- направление ('buy', 'sell')amount
- количество в базовой валютеprice
- цена (для лимитных ордеров)params
- дополнительные параметры
Примеры использования:
// Рыночный ордер
let order = await createOrder('BTC/USDT', 'market', 'buy', 0.01, 10000, {});
// Стоп-лосс ордер
let sl = await createOrder('BTC/USDT', 'market', 'sell', 0.01, 9000, {
stopLossPrice: 9000,
reduceOnly: true
});
// Тейк-профит ордер
let tp = await createOrder('BTC/USDT', 'market', 'sell', 0.01, 11000, {
takeProfitPrice: 11000,
reduceOnly: true
});
cancelOrder()
Отменяет ордер.
function cancelOrder(id: string, symbol: string): Promise<Order>;
CCXT функция: cancelOrder(id, symbol)
modifyOrder()
Изменяет существующий ордер.
function modifyOrder(
id: string,
symbol: string,
type: OrderType,
side: OrderSide,
amount: number,
price: number,
params = {}
): Promise<Order>;
CCXT функция: editOrder(id, symbol, type, side, amount, price, params)
Пример использования:
let order = await modifyOrder('5203624294025367390', 'BTC/USDT:USDT', 'limit', 'buy', 0.01, 10000);
Функции тестирования
getFee()
Возвращает общую комиссию за все исполненные ордера (только для тестера).
function getFee(): number;
getProfit()
Возвращает прибыль/убыток по всем закрытым позициям (только для тестера).
function getProfit(): Promise<number>;
Системные функции
SDK функции
async function sdkCall(method: string, args: any[]): Promise<any>;
async function sdkGetProp(property: string): Promise<any>;
async function sdkSetProp(property: string, value: any): Promise<void>;
Назначение: Эти функции позволяют вызывать любые CCXT методы и работать с их свойствами, которые не были вынесены в глобальный контекст. Таким образом, можно получить доступ ко всему функционалу CCXT библиотеки, даже если конкретные методы не представлены как отдельные нативные функции.
Примеры использования:
// Вызов любого CCXT метода
let result = await sdkCall('fetchTradingFees', ['BTC/USDT']);
// Получение свойства CCXT объекта
let markets = await sdkGetProp('markets');
// Установка свойства CCXT объекта
await sdkSetProp('sandbox', true);
forceStop()
Принудительно останавливает выполнение скрипта.
function forceStop(): void;
systemUsage()
Возвращает информацию об использовании системных ресурсов.
function systemUsage(): { cpu: number; memory: number };
getErrorTrace()
Получает трассировку ошибки.
function getErrorTrace(stack: string): Promise<string>;
getUserId()
Возвращает ID пользователя.
const getUserId: () => string;
Глобальные объекты
ARGS
Глобальная константа, содержащая аргументы скрипта.
const ARGS: GlobalARGS;
axios
Глобальный экземпляр HTTP-клиента для внешних запросов.
const axios: any;
Заключение
Нативные функции JT-Trader предоставляют мощный и унифицированный интерфейс для разработки торговых стратегий. Они абстрагируют сложность работы с различными биржами и предоставляют единообразный API для всех торговых операций, работы с рыночными данными и системными функциями.
При разработке стратегий важно учитывать особенности каждой функции, правильно обрабатывать ошибки и использовать соответствующие проверки для разных режимов выполнения (тестирование vs реальная торговля).