Разработка алгоритма trend following
Trend following — одна из наиболее долгоживущих торговых стратегий: следуем за трендом, пока он не закончится. Отличие от momentum: momentum предсказывает продолжение на основе прошлой доходности, trend following просто следует за текущим движением с помощью технических индикаторов.
Идентификация тренда
Moving Average crossover: классика. EMA(9) пересекает EMA(21) снизу вверх → восходящий тренд, входим в лонг. Обратное → нисходящий, входим в шорт или выходим.
Dual Moving Average System: два скользящих средних (быстрое + медленное). Позиция держится пока быстрое выше медленного.
Triple MA system: три MA (быстрое, среднее, медленное). Бычий сигнал: быстрое > среднее > медленное.
Donchian Channel: канал из N-периодного максимума (верхняя граница) и минимума (нижняя). Пробой верхней границы = вход в лонг. Классика Turtle Traders Ричарда Денниса.
Параметры и оптимизация
Типичные параметры для крипторынка (требуют оптимизации):
| Стратегия | Быстрое MA | Медленное MA | Таймфрейм |
|---|---|---|---|
| Краткосрочная | EMA 9 | EMA 21 | 1h–4h |
| Среднесрочная | EMA 21 | EMA 55 | 4h–1D |
| Долгосрочная | SMA 50 | SMA 200 | 1D |
| Donchian | N=20 (вход) | N=10 (выход) | 1D |
Position sizing через ATR
Размер позиции определяется через ATR (Average True Range) — вместо фиксированного % капитала:
def calculate_position_size(capital, entry_price, atr, risk_pct=0.01):
risk_amount = capital * risk_pct
stop_distance = 2 * atr
qty = risk_amount / stop_distance
return qty
Это гарантирует одинаковый денежный риск на каждую сделку вне зависимости от волатильности актива.
Trailing stop
Trend following без trailing stop — не trend following. Позиция держится пока тренд продолжается, закрывается при его окончании:
- ATR trailing stop: стоп сдвигается вверх на N × ATR ниже максимальной достигнутой цены
- Chandelier Exit: 3×ATR от N-периодного maximum
- MA trailing: выходим если цена закрылась ниже EMA(21)
Pyramiding
Добавление к прибыльным позициям при продолжении тренда — ключевая техника turtle trading. При каждом следующем ATR-движении в направлении тренда добавляем позицию (уменьшенного размера). Максимум 4 добавления.
Требование: каждое добавление только если текущая совокупная позиция прибыльна.
Фильтры входа
Чтобы не торговать при слабом тренде:
- ADX > 20 перед входом
- Объём выше среднего при пробое
- Волатильность не экстремально высокая (ATR < 2× среднего — не торгуем при рыночной панике)
Backtesting
Trend following системы работают хорошо на долгосрочных тестах, но имеют значительные drawdown периоды. Ключевые метрики: MAR Ratio (CAGR / Max Drawdown), Calmar Ratio, процент прибыльных сделок (обычно низкий, 30–40%, но winners крупнее losers).
Стек: Python, pandas, CCXT, PostgreSQL. Система работает в реальном времени, проверяя условия на каждом закрытии свечи выбранного таймфрейма. Поддержка нескольких инструментов одновременно с корреляционным контролем портфеля.







