Перейти к содержимому

Блоки

Торговые блоки выполняет платформа: они ходят на биржу, считают индикаторы и отправляют уведомления. Входы блока задаются в панели свойств — значением или переменной, результат попадает в переменную для следующих блоков.

getKlines — загружает свечи (klines) по инструменту.

Вход Описание
Биржа биржа, с которой брать свечи
Символ инструмент, например BTC/USD_LEVERAGE
Интервал таймфрейм свечей
Количество свечей сколько последних свечей загрузить
Ждать закрытия свечи дождаться закрытия текущей свечи перед загрузкой

Результат — список Свечи: у каждой есть время открытия, открытие, максимум, минимум, закрытие и объём. Последняя свеча — klines[-1].

computeIndicator — считает технический индикатор по свечам.

Вход Описание
Индикатор rsi, macd, bollinger_bands, ks, sma, ema, stochastic, atr, cci, williams_r, roc, mfi, obv, super_trend
Свечи список свечей из блока «Экспорт свечей»

Результат — список значений по свечам. Поля зависят от индикатора:

Индикатор Поля Настройки по умолчанию
RSI значение период 14
MACD значение, линия MACD 12 / 26 / 9
Bollinger Bands верхняя полоса, средняя линия, нижняя полоса период 20
KS направление тренда (восходящий / нисходящий / нет сигнала) —
SMA значение, направление (цена выше / ниже средней) период 20
EMA значение, направление (цена выше / ниже средней) период 20
Stochastic линия %K, линия %D, направление (≤ 20 вверх, ≥ 80 вниз) период 14
ATR значение (без направления) период 14
CCI значение, направление (≤ −100 вверх, ≥ 100 вниз) период 20
Williams %R значение, направление (≤ −80 вверх, ≥ −20 вниз) период 14
ROC значение (доля: 0,1 = +10 %), направление по знаку период 9
MFI значение, направление (≤ 20 вверх, ≥ 80 вниз) период 14
OBV значение, направление (рост / падение к прошлой свече) —
SuperTrend значение, направление (цена выше / ниже линии) период 14, множитель 2,5

evaluateExpression — вычисляет произвольное выражение на FEEL и кладёт результат в переменную. Полезно, когда условие нужно посчитать один раз и использовать в нескольких местах. Синтаксис — в разделе Условия.

createOrder — открывает ордер на бирже.

Вход Обязательный Описание
Биржа, Символ да куда и чем торговать
Количество да объём ордера
Плечо да кредитное плечо
Направление да покупка или продажа
Цена нет лимитная цена; без неё — рыночный ордер
Stop loss / Дистанция stop loss нет стоп уровнем или расстоянием от цены
Take profit / Дистанция take profit нет тейк уровнем или расстоянием от цены
Тип уведомления нет telegram — сообщить о принятом ордере

Результат — ID ордера (orderUid): по нему ордер закрывают, обновляют и проверяют статус.

Перед отправкой ордер проверяется лимитами риска. Ордер, нарушивший лимит, на биржу не уходит, а процесс идёт дальше — блок «Статус ордера» вернёт для него Отклонён.

getOrderStatus — возвращает статус ордера по orderUid: Не открыт, Открыт, Закрыт, Отменён, Отклонён, Истёк. Обычно за ним стоит шлюз, который решает, что делать дальше.

Кроме статуса блок отдаёт итог сделки. Пока сделка не закрыта, поля пустые (цена входа появляется, когда ордер исполнен):

Переменная Что это
entryPrice Цена входа — по какой цене открылась позиция
closePrice Цена закрытия
pnl PnL сделки без комиссии: отрицательный — убыток
fee Комиссия за сделку
closeReason Причина закрытия: stopLoss, takeProfit, manual или strategy

Числа приходят строками, поэтому в условии их читают через number(...), после проверки статуса: status = "closed" and number(pnl) < 0 — «сделка закрыта с убытком». Так собираются «пауза после убытка» или «увеличить объём после прибыльной сделки»; те же переменные можно вставить в текст уведомления: {{pnl}}. Если переименовать результат блока (например, в statusB), остальные переменные получают его имя как префикс: statusBPnl, statusBFee. Так два блока в одной схеме не перезаписывают друг друга.

В demo и live итог берётся из журнала сделок запуска, который сверяется с биржей раз в минуту. Пока журнал не разобрался с закрытой сделкой, блок по-прежнему отвечает Открыт (и сразу просит журнал обновиться), чтобы условие «закрыта с убытком» не пропустило сделку. Если позиции на бирже уже нет, а в журнале её найти не удалось, статус будет Закрыт, а поля итога — пустые. В бэктесте — из симуляции; в Play сделок нет, поля пустые.

Что учесть:

  • Причина закрытия в demo и live выводится по цене закрытия и уровням стопа и тейка ордера (в том числе после блока «Обновить сделку»). Закрытие по цене на стопе или за ним считается стоп-лоссом, даже если вы закрыли позицию на бирже руками.
  • Комиссия в бэктесте — оценка: обе стороны сделки считаются от цены входа, как списывается баланс бэктеста. На бирже комиссия фактическая.
  • У сделок бэктеста, закрытых до появления этих полей, комиссии и причины нет.

updateOrder — меняет stop loss и take profit открытой сделки по orderUid. Новый стоп тоже проверяется лимитами риска: снять стоп при обязательном стоп-лоссе или отодвинуть его дальше допустимого риска нельзя.

closeOrder — закрывает позицию, открытую ордером orderUid, или отменяет ещё не исполненный ордер. Закрывать позиции можно и во время остановки по лимиту риска.

sendNotification — отправляет ваш текст в выбранный канал. См. Уведомления.