이중 이동 평균 컨버전스 트렌드 추적 전략

저자:차오장, 날짜: 2023-12-28 17:24:53
태그:

img

전반적인 설명

이중 이동 평균 컨버전스 트렌드 추적 전략은 가격 트렌드 방향을 결정하고 트렌드 추적 거래를 구현하기 위해 MACD 지표와 결합하여 빠른, 느린 및 초 느린 이동 평균 라인을 계산합니다. 빠른 이동 평균과 느린 이동 평균이 골든 크로스를 가지고있을 때 길게 이동하고 죽은 크로스가 발생하면 짧게 이동합니다. 거짓 브레이크를 필터하기 위해 장기 이동 평균을 사용하십시오.

원칙

이 전략은 먼저 12일 빠른 이동 평균, 26일 느린 이동 평균, 200일 초저 느린 이동 평균을 계산한다. 빠른 이동 평균이 느린 평균을 넘을 때 황소 시장을 나타내는 황금 십자화가 발생한다. 느린 아래로 빠른 십자화가 발생하면 죽은 십자화가 발생하며 곰 시장을 나타낸다. 이 전략은 황금 십자점에 장기화되고 죽은 십자시에 단축된다.

이 전략은 또한 트렌드 방향을 결정하기 위해 MACD 지표를 사용합니다. MACD는 빠른 라인, 느린 라인 및 MACD 바로 구성됩니다. 빠른 라인이 느린 라인 위에 넘어가면 상승 신호이며 그 아래에 넘어가면 하락 신호입니다. 거짓 신호를 필터하기 위해 장기 이동 평균과 결합하면 빠른 라인이 느린 라인을 깨면 MACD 바가 부정적에서 긍정으로 변하고 가격이 200 일 MA 이상으로 유지되면 긴 신호가 발생합니다. 빠른 라인이 느린 라인을 깨면 MACD 바가 긍정적에서 부정적으로 변하고 가격이 200 일 MA 이하로 떨어지면 짧은 신호가 발생합니다.

이동 평균 시스템과 MACD 지표의 이중 확인으로 잘못된 브레이크를 피할 수 있고 트렌드 시작에 진입 할 수 있습니다.

장점

  1. 이중 확인은 잘못된 브레이크를 피하고 트렌드 시작에서 진입을 보장합니다.

  2. 200일 MA는 시장 변동 중에 잘못된 거래를 필터링합니다.

  3. 최대 손실을 제한하기 위해 손실을 중지 설정.

  4. MA 길이, 중지 손실 수준 등과 같은 사용자 정의 가능한 매개 변수

  5. 단순하고 명확한 논리, 이해하기 쉽고 최적화하기 쉽습니다.

위험성

  1. 장기적인 트렌드 추적은 단기적인 기회를 포착할 수 없습니다.

  2. 추적 효과는 매개 변수 설정에 달려 있습니다. 잘못된 매개 변수는 트렌드를 파악하지 못합니다.

  3. 부적절한 스톱 손실 설정은 너무 느슨하거나 너무 단단하여 손실을 증가시키거나 조기 중단 할 수 있습니다.

  4. 장기 보유 기간은 일정 자본 압력을 초래합니다.

최적화

  1. 가장 좋은 매개 변수 조합을 위해 MA 길이 매개 변수를 최적화합니다.

  2. 보조 판단을 위해 KDJ 같은 다른 지표를 추가합니다.

  3. 강화 중지, 후속 중지 등과 같은 손실 중지 전략을 최적화합니다.

  4. 제품 및 시간 틀에 따라 MA 매개 변수를 조정합니다.

  5. 가짜 신호를 피하기 위해 볼륨 필터를 추가합니다.

결론

듀얼 MA 컨버전스 트렌드 추적 전략은 여러 MA 시스템을 계산하여 트렌드 방향을 판단하고 MACD 필터를 사용합니다. 그것의 장점은 간단하고 명확한 논리, 제어 가능한 위험, 트렌드 추적에 적합합니다. 매개 변수 최적화, 스톱 로스 최적화, 보조 지표 등을 추가하여 개선 할 수 있습니다. 권장되는 트렌드 추적 전략입니다.


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

//@version=2
strategy("Trend Strategy", shorttitle="TSTrend Strategy", overlay=true)


// Trend Strategy
// If the inverse logic is true, the strategy
// goes short. For the worst case there is a
// max intraday equity loss of 50% filter.


// Input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")
veryslowLength=input(200,minval=1, title="Very slow moving average")
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Moving Averages?")
switch3=input(true, title="Enable Background Color?")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)
veryslowMA = sma(source, veryslowLength)
macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

// Colors
MAtrendcolor = change(veryslowMA) > 0 ? green : red
trendcolor = fastMA > slowMA and change(veryslowMA) > 0 and close > slowMA ? green : fastMA < slowMA and change(veryslowMA) < 0 and close < slowMA ? red : blue
bartrendcolor = close > fastMA and close > slowMA and close > veryslowMA and change(slowMA) > 0 ? green : close < fastMA and close < slowMA and close < veryslowMA and change(slowMA) < 0 ? red : blue
backgroundcolor = slowMA > veryslowMA and crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA ? green : slowMA < veryslowMA and crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA ? red : na
bgcolor(switch3?backgroundcolor:na,transp=80)
barcolor(switch1?bartrendcolor:na)

// Output
F=plot(switch2?fastMA:na,color=trendcolor)
S=plot(switch2?slowMA:na,color=trendcolor,linewidth=2)
V=plot(switch2?veryslowMA:na,color=MAtrendcolor,linewidth=4)
fill(F,V,color=gray)

// Strategy
buyprice = low
sellprice = high
cancelLong = slowMA < veryslowMA
cancelShort = slowMA > veryslowMA

if (cancelLong)
    strategy.cancel("MACDLE")

if crossover(hist, 0) and macd > 0 and fastMA > slowMA and close[slowLength] > veryslowMA 
    strategy.entry("MACDLE", strategy.long, stop=buyprice, comment="Bullish")

if (cancelShort)
    strategy.cancel("MACDSE")

if crossunder(hist, 0) and macd < 0 and fastMA < slowMA and close[slowLength] < veryslowMA 
    strategy.entry("MACDSE", strategy.short, stop=sellprice, comment="Bearish")

// maxIdLossPcnt = input(50, "Max Intraday Loss(%)", type=float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

더 많은