향상된 이동 평균 컨버전스 트렌드 전략

저자:차오장, 날짜: 2023-09-14 16:46:53
태그:

전략 논리

이 트렌드를 따르는 전략은 향상된 MACD 지표를 사용합니다. 빠른 EMA, 느린 EMA, 그 차이, 그 차이의 EMA를 계산하여 신호를 생성합니다.

논리는 다음과 같습니다.

  1. 빠른 EMA 기간을 계산합니다. 예를 들어 12일

  2. 느린 EMA 기간을 계산합니다. 예를 들어 26일

  3. MACD를 얻기 위해 느린 EMA에서 빠른 EMA를 빼십시오.

  4. MACD의 EMA를 신호 라인으로 사용하십시오. 예를 들어 9일

  5. MACD 마이너스 신호의 EMA는 증강 신호를 제공합니다.

  6. 증강 신호가 0선을 넘을 때 길게 이동합니다.

  7. 증강 신호가 0선 아래로 넘어가면 긴 문을 닫습니다.

이 전략은 MACD의 트렌드 추적 능력을 활용하고 중장기 트렌드 신호를 위해 더 이상 최적화합니다.

장점

  • 향상된 MACD는 소음을 줄이고 신호를 향상시킵니다.

  • 빠른 / 느린 EMA 조합 가이드 방향 및 강도

  • 느린 매개 변수는 중장기 동향에 초점을 맞추고 있습니다.

위험성

  • EMA 기간의 신중한 최적화가 필요합니다.

  • LONG 단기 기회만 사용할 수 없습니다.

  • 신호 발생 빈도가 낮습니다.

요약

이 전략은 중장기 트렌드 식별을 향상시키기 위해 향상된 MACD를 활용합니다. 그러나 최적화와 위험 통제가 중요합니다. 다른 요소와 결합하면 성능을 향상시킬 수 있습니다.


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

//@version=3
//study("MACDAS")
// strategy("macdas",shorttitle="macdas",overlay=true,default_qty_value=10000,initial_capital=10000,currency=currency.USD)

// Date range filter
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

inTimeRange = true


fastperiod = input(12,title="fastperiod",minval=1,maxval=500)
slowperiod = input(26,title="slowperiod",minval=1,maxval=500)
signalperiod = input(9,title="signalperiod",minval=1,maxval=500)
fastMA = ema(close, fastperiod)
slowMA = ema(close, slowperiod)
macd = fastMA - slowMA
signal = ema(macd, signalperiod)
macdAS = macd - signal
signalAS = ema(macdAS, signalperiod)
plot(macdAS, color=blue, linewidth=2)
plot(signalAS, color=red, linewidth=2)
plot(0, color=black)

strategy.entry("LONG", strategy.long, when =inTimeRange and crossover(macdAS,signalAS))
strategy.close("LONG", when= inTimeRange and crossunder(macdAS,signalAS))

plotshape(crossover(macdAS, signalAS) , style = shape.arrowup, text="Long",color=green,size=size.huge)
plotshape(crossover(signalAS,macdAS) , style = shape.arrowdown, text="End Long",color=red,size=size.huge)



더 많은