
Стратегия MACD, основанная на использовании комбинации MACD-индекса и динамического индикатора для формирования торгового сигнала, относится к стратегии отслеживания тенденции. Эта стратегия сначала рассчитывает быструю и медленную линию EMA, затем рассчитывает значение MACD, а затем рассчитывает сигнальную линию MACD.
Эта стратегия основана на комбинации MACD и динамических показателей.
MACD-индикатор представляет собой индикатор трендового типа, который состоит из скорейшей EMA, медленной EMA и MACD-постной диаграммы. Параметры скорейшей EMA обычно составляют 12 дней, а медленной EMA - 26 дней.
Краткая линия EMA = EMA ((закрытие цены, 12)
Медленная линия EMA = EMA ((закрытие цены, 26)
MACD = быстрая линия EMA - медленная линия EMA
Сигнальная линия = EMA ((MACD,9)
Когда быстрая линия проходит медленную линию, это означает, что краткосрочный подъемный импульс сильнее, чем долгосрочный, как входный сигнал; когда быстрая линия проходит медленную линию, это означает, что долгосрочный спад сильнее, чем краткосрочный, как выходный сигнал.
Динамический индикатор - это технический индикатор, отражающий скорость изменения цен на акции.
Движущая сила = цена закрытия сегодня - цена закрытия N дней назад
где N обычно принимает 10. Если сегодняшняя цена закрытия выросла более чем за N дней до этого, динамика положительна, и акции находятся в тенденции к росту; если сегодняшняя цена закрытия упала ниже, чем за N дней до этого, динамика отрицательна, и акции находятся в тенденции к снижению.
Эта стратегия использует комбинацию MACD-индикатора и динамического индикатора для формирования торгового сигнала. Критерии заключаются в следующем: когда MACD-дифференциал и динамический дифференциал проходят через нулевую ось, они создают сигнал покупки, образуя пересечение над нулевой осью; когда MACD-дифференциал и динамический дифференциал проходят через нулевую ось, они создают сигнал продажи, образуя пересечение ниже нулевой оси. Это относится к механизму генерации торгового сигнала с двойным подтверждением, который может отфильтровать некоторые ложные сигналы и осуществлять отслеживание тенденции.
Эта стратегия имеет следующие преимущества:
Сочетание индикатора MACD и динамического индикатора позволяет отслеживать тенденции и избегать неэффективных сделок, когда цены активов имеют только шокирующие отсутствие направления.
На основе механизма двойного подтверждения генерируются торговые сигналы, которые могут отфильтровываться от шума и избегать помех от ложных сигналов.
Параметры индикатора MACD регулируемы, могут быть оптимизированы в зависимости от разных видов и торговых циклов, обладают высокой адаптивностью.
Двухсторонние торговые механизмы покупки и продажи позволяют двусторонне улавливать тренды.
Стратегии просты в понимании, имеют меньше параметров и подходят для начинающих.
Однако эта стратегия также несет в себе некоторые риски:
Как MACD, так и динамический индикатор относятся к трендовым, и в случае сильной волатильности рынка или отсутствия явного тренда, может быть произведено больше недействительных сделок.
Несмотря на то, что портфель двойных индикаторов может отфильтровывать ложные сигналы, он также может упустить торговые возможности, и параметры должны быть соответствующим образом скорректированы, чтобы сбалансировать риск.
При реверсии большого циклического тренда MACD-индекс будет задерживаться, что приведет к убыткам в торговле.
Частота сделок может быть высокой, поэтому следует обратить внимание на управление капиталом и контроль комиссионных.
Неправильные параметры могут привести к чрезмерной чувствительности или чрезмерной задержке, что требует постоянного тестирования и оптимизации в соответствии с рыночными условиями.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров MACD-индекса, чтобы найти оптимальную комбинацию параметров в зависимости от разных типов торгов и циклов.
Оптимизация параметров числа дней для показателей динамики, баланс чувствительности и фильтрации шума.
Добавление механизмов сдерживания убытков, чтобы контролировать максимальные потери от одной сделки.
Добавлен модуль управления позициями, позволяющий масштабам торгов следить за тенденциями.
Добавление фильтров, таких как концентрационные индикаторы, чтобы избежать ошибочных сделок в условиях кривой.
В сочетании с другими индикаторами, такими как BRI, RSI и т. д., образуются многократно подтвержденные торговые сигналы.
Добавить оптимизационный цикл, чтобы параметры могли постоянно повторяться и оптимизироваться
Применение MACD-индикатора и динамического индикатора Strengths позволяет отслеживать тренды. Его механизм двойного подтверждения позволяет эффективно заглушать рыночный шум и предотвращать неэффективные сделки. Стратегия проста, проста и понятна, особенно подходит для начинающих.
/*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")