Справка

Язык стратегий

Стратегия — это несколько строк: какие линии посчитать, когда входить, когда выходить и где стоп. Слова — английские, как в TradingView, или русские: «купить когда», «стоп 5%». Регистр не важен.

Как устроена стратегия

Одна строка — одна мысль. Строки с # или // — комментарии. Сначала задаются линии (имя = выражение), потом правила входа и выхода, потом риск.

Условия считаются на закрытии свечи, а сделка проходит по открытию следующей — так в тесте нельзя купить по цене, которой уже нет.

# Пересечение средних со стопом
fast = input(20, 5, 100, 5)
slow = input(100, 50, 300, 10)
f = ema(close, fast)
s = ema(close, slow)
plot f, s
buy when crossover(f, s)
sell when crossunder(f, s)
stop 8%

Входы и выходы

Правило — ключевое слово, затем when (или «когда», «если») и условие. Несколько строк одного правила складываются через «или».

buy when … · купить когда …

вход в лонг: покупка по открытию следующей свечи

sell when … · продать когда …

выход из лонга

short when … · шорт когда …

вход в шорт; если шорт выключен в настройках — просто выход из лонга

cover when … · откупить когда …

выход из шорта

exit long when … · exit short when …

то же, что sell и cover

Стоп, тейк, трейлинг, время, размер

Уровни ставятся от цены входа в процентах или в ATR — среднем диапазоне свечи за 14 свечей, взятом на свече сигнала.

stop 5% · stop 2 atr · стоп 5%

стоп-лосс от цены входа; если свеча открылась за стопом — выход по открытию

take 10% · take 3 atr · тейк 10%

тейк-профит; если в одной свече задеты и стоп, и тейк, считается стоп

trail 10% · trail 3 atr · трейлинг 10%

скользящий стоп за лучшей ценой; двигается только в сторону прибыли

hold 20 · держать 20

выход по открытию после 20 свечей в сделке

breakeven 3% · безубыток 3%

после прибыли 3% стоп переносится на цену входа

size 50% · доля 50%

часть капитала в сделке (по умолчанию 100%, без плеча)

Параметры-ползунки

input(по умолчанию, от, до, шаг) превращает число в ползунок. По двум параметрам лаборатория строит карту: как меняется результат на соседних значениях.

n = input(200, 50, 300, 10)
avg = sma(close, n)
buy when close > avg
sell when close < avg

Цены и индикаторы

Цены: open, high, low, close, volume (или открытие, максимум, минимум, закрытие, объём). Длины — целые числа или параметры.

sma(x, n) · ema(x, n) · rma(x, n)

простая, экспоненциальная и сглаженная (Уайлдера) средние

rsi(x, n)

индекс относительной силы от 0 до 100

macd(x, 12, 26) · macd_signal(x, 12, 26, 9) · macd_hist(…)

MACD, сигнальная линия и гистограмма

bb_upper(x, 20, 2) · bb_lower(x, 20, 2) · bb_mid(x, 20)

полосы Боллинджера

atr(14) · adx(14) · stoch(14)

средний истинный диапазон, сила тренда ADX, стохастик

highest(x, n) · lowest(x, n)

максимум и минимум за n свечей, включая текущую

stdev(x, n) · roc(x, n) · change(x, n)

стандартное отклонение, изменение в процентах и в пунктах

abs · min · max · sqrt · log · round

математика

month · weekday · day · year

календарь: месяц 1–12, день недели 1–7 (понедельник — 1)

bars_per_year

сколько свечей в году у этого рынка: у акций около 252, у крипты 365

Условия

Сравнения: >, <, >=, <=, ==, !=. Связки: and, or, not (или «и», «или», «не»). Значение несколько свечей назад — в квадратных скобках: close[1] — вчерашнее закрытие.

crossover(a, b) · пересечение_вверх(a, b)

a пересекла b снизу вверх на этой свече

crossunder(a, b) · пересечение_вниз(a, b)

a пересекла b сверху вниз

rising(x, n) · falling(x, n)

x выше (ниже) всех значений за предыдущие n свечей

close > highest(high, 20)[1]

пробой максимума предыдущих 20 свечей: [1] исключает текущую

Как исполняются сделки

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

Стоп и тейк проверяются внутри свечи. Если открытие уже за стопом — выход по цене открытия. Если в одной свече задеты оба уровня, считается стоп: порядок движения внутри свечи неизвестен.

Позиция одна, без плеча и без доливок. Тест начинается, когда посчитаны все индикаторы, а «купить и держать» стартует в ту же дату.

Чего модель не знает

Налоги, дивиденды у отдельных акций, процент на деньги вне рынка, плату за шорт и плечо, ставку финансирования крипто-фьючерсов, лоты и ликвидность стакана. Поэтому результат теста — верхняя оценка, а не ожидание.