Блоки
Торговые блоки выполняет платформа: они ходят на биржу, считают индикаторы и отправляют уведомления. Входы блока задаются в панели свойств — значением или переменной, результат попадает в переменную для следующих блоков.
Экспорт свечей
Заголовок раздела «Экспорт свечей»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 — отправляет ваш текст в выбранный канал. См.
Уведомления.