이동 평균 및 MACD와 결합된 RSI 전략

저자:차오장, 날짜: 2024-02-20 14:28:59
태그:

img

전반적인 설명

이 전략은 이동 평균, MACD 지표 및 RSI 지표를 결합하여 가격 트렌드를 식별하고 낮은 판매 높은 결정을 내립니다. 짧은 기간 이동 평균이 장기 이동 평균을 넘어서고 닫는 가격이 50 일 이동 평균을 넘어서면 구매 신호를 생성합니다. 반대로 발생하면 판매 신호를 생성합니다. 또한 전략은 과잉 구매 및 과잉 판매 구역을 피하기 위해 RSI 지표를 사용하고 중장기 트렌드를 결정하기 위해 MACD 히스토그램을 사용합니다.

전략 논리

이 전략의 핵심은 이중 이동 평균 크로스오버 시스템에 의존하며, 짧은 기간 EMA (3일) 가 긴 기간 EMA (30일) 를 넘을 때 구매 및 판매 신호를 생성합니다. 이것은 가격의 단기 및 장기 트렌드를 결정하는 일반적인 기술입니다.

또한, 전략은 빈번한 거래를 피하기 위해 50 일 이동 평균 라인을 포함하고, 무역 신호를 필터로 사용합니다. 50 일 라인 이상만 구매 신호가 트리거 될 것이고, 반대로.

또한, RSI 지표는 과잉 구매 (70 이상) 및 과잉 판매 (30 이하) 시나리오를 식별합니다. 전략은 이러한 비합리 영역에서 MA 크로스오버 신호가 나타나더라도 포지션을 취하는 것을 생략합니다.

마지막으로, MACD 히스토그램은 시장의 중장기 트렌드를 결정하는 데 사용됩니다. MACD 히스토그램 > 0으로 배경은 상승 추세이기 때문에 구매 신호가 더 신뢰할 수 있습니다. MACD 히스토그램 < 0이면 배경은 하락 추세이기 때문에 구매 신호는 곧 수정에 직면 할 수 있습니다.

장점

이 전략의 가장 큰 장점은 여러 지표의 조합 사용으로 모든 거래 결정이 매우 자신감 있고 신뢰할 수 있습니다. 잘못된 신호는 개별 지표에 매우 자주 발생할 수 있지만이 전략은 단기 트렌드, 장기 트렌드, 과소 구매 / 과소 판매 상태, 중간 트렌드 등을 통해 신호를 확인함으로써 정확성을 향상시킵니다.

또 다른 장점은 트렌드 트레이딩과 평균 리버션 트레이딩을 결합한다는 것입니다. 트렌드를 따르는 것은 트렌드 트레이더에게 매우 중요합니다. 그러나 고급 전략은 이에 대해 딱딱하지 않습니다. 합리적인 영역에서 반대 입장을 취하는 것은 수익성 높은 초과 수익을 초래할 수 있습니다.

위험성

주요 위험은 중요한 뉴스 사건으로 인한 갑작스러운 가격 충격으로 인해 발생하며, 이는 스톱 손실 지점을 침투하여 큰 손실을 초래할 수 있습니다. 정책 변화는 또한 전략 성과에 장애를 일으킬 수 있습니다.

또 다른 위험은 중장기 불 시장에서 일시적 인 하락을 중단하는 것입니다. 전략은 조기에 중단되면 상승 잠재력을 완전히 포착하지 못할 수 있습니다.

개선

전략은 다음 차원에서 최적화 될 수 있습니다.

  1. 최적의 조합을 찾기 위해 매개 변수 최적화

  2. 볼링거 밴드나 KDJ 같은 더 많은 지표를 포함해서 모델을 더 풍부하게 만들 수 있습니다.

  3. 트레일링 스톱 로스, 변동성 스톱 로스 같은 더 고급 스톱 로스 메커니즘을 테스트합니다.

  4. 더 많은 유형의 시장에 적응하기 위해 전략의 일부를 최적화하십시오.

결론

결론적으로, 이동 평균, RSI 및 MACD를 결합함으로써이 전략은 고품질 신호를 생성하고 단일 지표의 한계를 피하는 데 성공합니다. 트렌드를 확인함으로써 모든 거래를 자신있게 수행합니다. 또한, 전략은 트렌드 거래와 역행 거래를 균형있게하며, 적절한 경우 모멘텀을 추격하고 반주기적 위치를 취하는 데 두각을 나타냅니다. 전체적으로 탄탄하고 효율적인 양적 전략입니다.


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

//@version=5
strategy('sachin 3.30 ', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(70, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(30, title='RSI Oversold Level', minval=0, maxval=100)
ema3_length = input(3, title='EMA 3 Length')
ema30_length = input(30, title='EMA 30 Length')
ema50_length = input(50, title='EMA 50 Length')

// Calculate EMAs
ema3 = ta.ema(close, ema3_length)
ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition = ta.crossover(ema3, ema30) and close > ema50
if (buyCondition)
    buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry
exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
if (exitLongCondition)
    strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = ta.crossunder(ema3, ema30) and close < ema50
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
exitShortCondition = close > ema30 and close > ta.highest(high, 3)
if (exitShortCondition)
    strategy.close('SellExit')

// Plot EMAs on the chart
plot(ema3, color=color.new(color.blue, 0), title='EMA 3')
plot(ema30, color=color.new(color.red, 0), title='EMA 30')

// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.blue, 0) : hist < 0 ? color.new(color.black, 0) : color.new(color.blue, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue < overbought ? color.new(color.red, 0) : color.new(color.blue, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
bgcolor(buyCondition ? color.new(color.green, 90) : na)
bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)


더 많은