Стратегия MACD с разбивкой импульса

Автор:Чао Чжан, Дата: 2023-10-20 17:12:31
Тэги:

img

Обзор

Стратегия Momentum Breakdown MACD в основном использует комбинацию индикатора MACD и индикатора Momentum для генерации торговых сигналов, относящихся к стратегии, следующей за трендом. Эта стратегия сначала рассчитывает быструю EMA и медленную EMA, затем вычисляет значение MACD и далее вычисляет сигнальную линию MACD. В то же время она вычисляет значение импульса цены. Когда значение импульса пересекает нулевой уровень вместе с разницей MACD, он генерирует сигнал покупки. Когда значение импульса пересекает нулевой уровень вместе с разницей MACD, он генерирует сигнал продажи. Это относится к механизму двойного подтверждения для производства торговых сигналов.

Логика стратегии

Эта стратегия в основном основана на сочетании индикаторов MACD и Momentum.

Индикатор MACD представляет собой индикатор, следующий за трендом, состоящий из быстрой EMA, медленной EMA и гистограммы MACD.

Быстрая EMA = EMA ((цена закрытия, 12)

Медленная EMA = EMA ((цена закрытия, 26)

MACD = быстрая EMA - медленная EMA

Сигнальная линия = EMA ((MACD, 9)

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

Индикатор импульса отражает скорость движения цен, и его формула расчета:

Импульс = цена закрытия сегодня - цена закрытия N дней назад

Когда цена закрытия сегодня повышается выше, чем N дней назад, значение импульса является положительным, что указывает на восходящий тренд. Когда цена закрытия сегодня падает ниже, чем N дней назад, значение импульса является отрицательным, что указывает на нисходящий тренд.

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

Анализ преимуществ

Преимущества этой стратегии включают:

  1. Сочетание индикаторов MACD и Momentum позволяет следовать тренду, избегая неэффективной торговли, когда цена актива просто колеблется без четкого направления.

  2. Основываясь на механизме двойного подтверждения, он может отфильтровать шум и избежать помех от ложных сигналов.

  3. Параметры MACD регулируемы, которые могут быть оптимизированы для различных продуктов и торговых циклов, что делает его очень адаптивным.

  4. Он использует как механизмы торговли по покупке, так и по продаже, чтобы отслеживать тенденции в обоих направлениях.

  5. Стратегия проста в понимании с меньшим количеством параметров, подходит для обучения новичков.

Анализ рисков

Эта стратегия также сопряжена с некоторыми рисками:

  1. Как MACD, так и Momentum относятся к индикаторам, следующим за трендом. Они могут привести к более неэффективной торговле, когда рынок видит сильные колебания или отсутствует четкая тенденция.

  2. Хотя комбинация двойных индикаторов может отфильтровать ложные сигналы, она также может упустить некоторые торговые возможности.

  3. Когда основные тенденции цикла меняются, индикатор MACD может отставать, что приводит к торговым потерям.

  4. Частота торгов может быть высокой, что требует внимания к управлению капиталом и контролю комиссий.

  5. Неправильные параметры могут привести к чрезмерной чувствительности или отставанию.

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизировать параметры MACD для поиска наилучшей комбинации параметров для различных торговых продуктов и циклов.

  2. Оптимизировать параметр периода индикатора импульса для баланса чувствительности и фильтрации шума.

  3. Добавить механизмы стоп-лосса для контроля максимальных потерь на одну сделку.

  4. Добавить модули управления позициями для масштабирования размера торговли в соответствии с тенденцией.

  5. Добавьте такие фильтры, как индикатор ATR, чтобы избежать ошибочных сделок на нестабильных рынках.

  6. Включайте другие индикаторы, такие как полосы Боллинджера и RSI, чтобы сформировать многоподтверждающие торговые сигналы.

  7. Добавить петли оптимизации для непрерывной итерации и оптимизации параметров.

Резюме

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


/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
len = input(title="Momentum", type=input.integer, defval=10)
src1 = input(title="Source MACD", type=input.source, defval=close)
src2 = input(title="Source MOMENTUM", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #0c8e61
col_grow_below = #ffcdd2
col_fall_above = #b2dfdb
col_fall_below = #d42f28
col_macd = #ffffff
col_signal = #d42f28
col_mom = #fbc02d

// Calculating
fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length)
slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
mom = src2 - src2[len]


ma(s,l) => ema(s,l)
sema = ma( src1, fast_length )
lema = ma( src1, slow_length )
i1 = sema + mom + ma( src1 - sema, fast_length )
i2 = lema + mom + ma( src1 - lema, slow_length )
macdl = i1 - i2
macd1 =sema - lema

delta = mom - macd1

// Strategy
    // Backtest
FromYear  = input(defval = 2001, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

    // Function exampel
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

if (crossover(delta, 0))
    strategy.entry("Buy", true, when=window(), comment="Buy")

if (crossunder(delta, 0))
    strategy.close_all(when=window())

// Plot
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
plot(mom, color=col_mom, title="Mom")






Больше