이동평균과 MACD를 결합한 RSI 지표 거래 전략


생성 날짜: 2024-02-20 14:28:59 마지막으로 수정됨: 2024-02-20 14:28:59
복사: 0 클릭수: 880
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균과 MACD를 결합한 RSI 지표 거래 전략

개요

이 전략은 이동 평균, MACD 지표와 RSI 지표를 조합하여 주식 가격 동향을 식별하여 낮은 가격과 높은 가격으로 이익을 얻습니다. 단기 이동 평균에서 장기 이동 평균을 통과하고 50 일 이동 평균보다 더 높은 가격으로 닫으면 구매 신호가 발생합니다. 단기 이동 평균 아래에서 장기 이동 평균을 통과하고 50 일 이동 평균보다 낮은 가격으로 닫으면 판매 신호가 발생합니다. 또한 이 전략은 RSI 지표를 통해 과매 지역인지 여부를 판단하여 입시 신호를 수정하고 MACD 지표의 직선 그래프를 통해 중장선 동향 판단을 수정합니다.

전략 원칙

이 전략은 주로 이중 이동 평균 전략에 의존한다. 즉, 단기 이동 평균 ((3일 EMA) 위에 장기 이동 평균 ((30일 EMA) 을 가로질러 구매 신호를 발생시키고, 단기 이동 평균 (SMA) 아래에서 장기 이동 평균 (SMA) 을 가로질러 판매 신호를 발생시킨다. 이것은 주식 가격의 단기 및 장기 동향을 판단하는 일반적인 기술이다.

또한, 이 전략은 50일 이동 평균을 도입하여, 50일선보다 가격이 높을 때만 구매 신호를 생성하고, 그보다 낮을 때만 판매 신호를 생성합니다. 이는 빈번한 거래를 피하고, 몇 가지 가짜 신호를 필터링하기 위한 것입니다.

또한, RSI 지표는 오버 바이 오버 소를 판단하는 데 사용됩니다. RSI가 70 이상이면 오버 바이 지역으로 간주되며, 이 때 단기 상승세가 강해도 회귀가 발생할 수 있습니다.

마지막으로, MACD 직선은 중·장기 경향을 판단하는데 사용된다. MACD 직선은>0이면 중·장선은 상승 경향을 나타내는데, 이 때 입시 신호는 더 신뢰된다. MACD 직선은이면 중·장선은 하향 경향을 나타내는데, 이 때 단기간에 구매 신호가 발생하더라도 조정될 수 있다.

전략적 이점

이 전략의 가장 큰 장점은 여러 지표의 조합으로 입력 및 종료 신호가 더 정확하고 신뢰할 수 있다는 것입니다. 단일 지표는 가짜 신호를 생성하기 쉽지만, 이 전략은 이동 평균을 통해 단기 트렌드를 판단하고, RSI를 판단하고, MACD를 판단하고, 중장기 트렌드를 판단하여 각 거래의 성공 가능성을 크게 향상시킵니다.

또 다른 장점은 트렌드 거래와 역전 거래의 조화를 이루는 것입니다. 트렌드를 따르고, 동력을 따라가는 것은 모든 트렌드 거래자의 신조입니다. 그러나 고급 전략은 흐름을 막지 않으며, 적절한 역전 거래는 풍부한 초과 수익을 얻을 수 있습니다. 이 전략은 초과 구매가 아닌 초과 판매 지역에서 여전히 역전 입장을 선택하여 전략에 활력을 불어넣습니다.

전략적 위험

이 전략의 주요 위험은 갑작스러운 사건으로 인해 급격한 조정이다. 어떤 양적 전략도 중요한 이익 격차 또는 좋은 소식으로 인한 급격한 가격 변동에 대처하기가 어렵습니다. 이 때 정지 손실 지점은 돌파되어 큰 손실이 발생할 수 있습니다. 또한 정책 위험은 전략에 충격을 줄 수 있습니다.

또 다른 위험은 다방면 이동 중 단기 조정으로 인해 손실이 발생한다. 중장선은 여전히 황소 시장에 속한다 할지라도, 단기 조정 시에는 긴 입장을 종료하는 데 손실이 발생할 수 있다. 이 때 이후의 상승 상황을 놓치게 된다.

전략 최적화

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

  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)