향상된 이동 평균 집계 추세 전략


생성 날짜: 2023-09-14 16:46:53 마지막으로 수정됨: 2023-09-14 16:46:53
복사: 6 클릭수: 647
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

전략 원칙

이 전략은 강화된 MACD 지표에 기반하여 트렌드 추적을 한다. 그것은 동시에 빠른 이동 평균, 느린 이동 평균, 그리고 둘의 차이를 계산하고 그 차이를 이동 평균으로 하여 거래 신호를 생성한다.

그 논리는 다음과 같습니다.

  1. 빠른 EMA 주기를 계산합니다. 12일

  2. 26일처럼 느린 EMA 주기를 계산합니다.

  3. MACD로 EMA의 차이를 계산합니다.

  4. MACD에 대한 신호선 EMA, 9일 EMA

  5. MACD와 신호 라인의 차이는 EMA가 강화 신호 라인을 생성합니다.

  6. 증강 신호 라인에 0 축을 통과 할 때 더 많은

  7. 증강 신호가 0축을 통과할 때 평상시

이 전략은 MACD 지표의 트렌드 추적 특성을 최대한 활용하고, 2차 최적화 필터를 사용하여 신호 품질을 향상시키고, 중장선 트렌드를 추적한다.

전략적 이점

  • 강화된 MACD 소음 감소가 신호 정확도를 높인다.

  • EMA는 조속히 판단의 방향과 힘에 대해 협조한다

  • 느린 변수 중 중장선 트렌드

전략적 위험

  • 신중하게 선택된 EMA 주기 변수

  • 더 많은 일을 해야만 공허한 기회를 잡을 수 없습니다.

  • 신호의 빈도

요약하다

이 전략은 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)