Динамическая стратегия захвата тренда с пересечением нескольких скользящих средних. Количественная торговая стратегия

EMA SMA MACD MA RSI
Дата создания: 2024-12-27 14:59:35 Последнее изменение: 2024-12-27 14:59:35
Копировать: 10 Количество просмотров: 424
1
Подписаться
1617
Подписчики

Динамическая стратегия захвата тренда с пересечением нескольких скользящих средних. Количественная торговая стратегия

Обзор

Стратегия представляет собой количественную торговую систему, основанную на множественных пересечениях экспоненциальных скользящих средних (EMA). Он создает полную торговую структуру отслеживания тренда посредством координации трех скользящих средних: 9-дневной EMA, 21-дневной EMA и 200-дневной EMA. Стратегия выявляет рыночные тенденции и сделки путем определения пересечения быстрой скользящей средней и медленной скользящей средней, а также их позиционного соотношения с долгосрочной скользящей средней.

Стратегический принцип

Основная логика стратегии заключается в отслеживании рыночных тенденций посредством пересечения тройных скользящих средних. Конкретно:

  1. Используйте 9-дневную EMA как быстро скользящую среднюю для отражения краткосрочных ценовых тенденций.
  2. Используйте 21-дневную EMA в качестве среднесрочной скользящей средней для фильтрации краткосрочного шума.
  3. Используйте 200-дневную EMA в качестве долгосрочной скользящей средней для определения основного направления тренда. Когда быстрая скользящая средняя пересекает медленную скользящую среднюю снизу вверх, и обе скользящие средние находятся выше 200-дневной скользящей средней, система генерирует длинный сигнал; когда быстрая скользящая средняя пересекает медленную скользящую среднюю сверху вниз, и обе скользящие средние находятся ниже 200-дневная скользящая средняя, ​​система генерирует длинный сигнал. , система генерирует короткий сигнал продажи. Такая конструкция позволяет улавливать поворотные моменты тренда, избегая при этом частой торговли на консолидирующемся рынке.

Стратегические преимущества

  1. Высокое подтверждение тренда: рыночный тренд можно подтвердить более точно, используя тройную скользящую среднюю.
  2. Улучшенный контроль рисков: использование долгосрочных скользящих средних в качестве фильтров тренда для эффективного снижения риска ложных прорывов
  3. Четкие правила работы: понятные условия входа и выхода, простота исполнения и бэктестинга
  4. Высокая адаптивность: параметры можно корректировать в соответствии с различными характеристиками рынка, с хорошей универсальностью.
  5. Простой расчет: использование распространенных технических индикаторов, высокая эффективность расчетов, подходит для торговли в реальном времени.

Стратегический риск

  1. Риск запаздывания: сам индикатор скользящей средней имеет запаздывания, что может привести к задержкам при входе или выходе.
  2. Риск нестабильного рынка: частые ложные сигналы могут возникать на боковом и нестабильном рынке.
  3. Риск разворота тренда: вы можете столкнуться с большим откатом, если тренд внезапно развернется.
  4. Чувствительность параметров: Различные комбинации параметров могут привести к большим различиям в эффективности стратегии. Рекомендуется управлять этими рисками путем установки стоп-лосс позиций, контроля размера позиции и т. д.

Направление оптимизации стратегии

  1. Знакомство с индикаторами объема: объединение изменений объема для подтверждения силы тренда
  2. Добавлена ​​фильтрация волатильности: регулируйте частоту торговли в условиях высокой волатильности
  3. Оптимизируйте выбор параметров: динамически корректируйте параметры скользящей средней для различных рыночных циклов.
  4. Добавьте индикаторы силы тренда: используйте такие индикаторы, как ADX, для оценки надежности тренда.
  5. Улучшить механизм стоп-лосса: разработать более гибкие правила стоп-лосса и тейк-профита

Подвести итог

Это хорошо продуманная и логически понятная стратегия следования за трендом. Благодаря скоординированному взаимодействию нескольких скользящих средних можно эффективно улавливать рыночные тенденции, имея при этом хорошие возможности контроля рисков. Существует большой простор для оптимизации стратегии, а ее стабильность и прибыльность могут быть дополнительно повышены за счет постоянного совершенствования.

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("EMA Cross with both MinhTuan", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Tham số EMA
fastLength = input.int(9, title="Fast EMA Length", minval=1)
slowLength = input.int(21, title="Slow EMA Length", minval=1)
filterLength = input.int(200, title="EMA Filter Length", minval=1)

// Tùy chọn chế độ giao dịch
tradeMode = input.string("Both", options=["Long", "Short", "Both"], title="Trade Mode")

// Tính toán EMA
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
filterEMA = ta.ema(close, filterLength)

// Điều kiện vào lệnh Long: EMA nhanh cắt lên EMA chậm và cả hai nằm trên EMA 200
longCondition = ta.crossover(fastEMA, slowEMA) and fastEMA > filterEMA and slowEMA > filterEMA

// Điều kiện vào lệnh Short: EMA nhanh cắt xuống EMA chậm và cả hai nằm dưới EMA 200
shortCondition = ta.crossunder(fastEMA, slowEMA) and fastEMA < filterEMA and slowEMA < filterEMA

// Điều kiện thoát lệnh: EMA nhanh cắt ngược lại EMA chậm
closeLongCondition = ta.crossunder(fastEMA, slowEMA) // Thoát lệnh Long
closeShortCondition = ta.crossover(fastEMA, slowEMA) // Thoát lệnh Short

// Thực hiện lệnh Long
if (longCondition and (tradeMode == "Long" or tradeMode == "Both"))
    strategy.entry("EMA_Cross_Long", strategy.long)
    label.new(x=bar_index, y=low, text="Long", color=color.green, textcolor=color.white, size=size.small)

// Thực hiện lệnh Short
if (shortCondition and (tradeMode == "Short" or tradeMode == "Both"))
    strategy.entry("EMA_Cross_Short", strategy.short)
    label.new(x=bar_index, y=high, text="Short", color=color.red, textcolor=color.white, size=size.small)

// Thoát lệnh Long
if (closeLongCondition)
    strategy.close("EMA_Cross_Long")
    label.new(x=bar_index, y=high, text="Close Long", color=color.orange, textcolor=color.white, size=size.small)

// Thoát lệnh Short
if (closeShortCondition)
    strategy.close("EMA_Cross_Short")
    label.new(x=bar_index, y=low, text="Close Short", color=color.blue, textcolor=color.white, size=size.small)

// Vẽ đường EMA nhanh, EMA chậm, và EMA 200
plot(fastEMA, title="Fast EMA", color=color.blue, linewidth=2)
plot(slowEMA, title="Slow EMA", color=color.orange, linewidth=2)
plot(filterEMA, title="Filter EMA (200)", color=color.red, linewidth=2)

// Hiển thị nền khi đang giữ lệnh
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : strategy.position_size < 0 ? color.new(color.red, 90) : na)