Справка
Язык стратегий
Стратегия — это несколько строк: какие линии посчитать, когда входить, когда выходить и где стоп. Слова — английские, как в 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] исключает текущую
Как исполняются сделки
Сигнал — на закрытии, сделка — по открытию следующей свечи с проскальзыванием против тебя. Комиссия — с каждой покупки и продажи.
Стоп и тейк проверяются внутри свечи. Если открытие уже за стопом — выход по цене открытия. Если в одной свече задеты оба уровня, считается стоп: порядок движения внутри свечи неизвестен.
Позиция одна, без плеча и без доливок. Тест начинается, когда посчитаны все индикаторы, а «купить и держать» стартует в ту же дату.
Чего модель не знает
Налоги, дивиденды у отдельных акций, процент на деньги вне рынка, плату за шорт и плечо, ставку финансирования крипто-фьючерсов, лоты и ликвидность стакана. Поэтому результат теста — верхняя оценка, а не ожидание.