MACD, RSI 및 EMA 전략

저자:차오장, 날짜: 2024-03-01 12:23:38
태그:

img

전반적인 설명

이 전략은 간단한 이동 평균 (SMA), 평균 진정한 범위 (ATR), 상품 채널 지수 (CCI) 및 볼링거 밴드를 결합하여 단기 및 중기 가격 추세를 파악하고 거래 결정을 지원합니다.

전략 원칙

이 전략은 5일, 10일, 50일 및 200일 라인을 포함한 가격 트렌드 방향을 인식하기 위해 서로 다른 기간을 가진 네 개의 SMA 라인을 사용합니다. ATR은 시장 변동성을 측정하고 스톱 로스 포인트를 설정하는 데 사용됩니다. CCI는 과소매 및 과소매 조건을 식별하는 데 사용됩니다. 볼링거 밴드의 상부 및 하부 레일은 지원 / 저항 수준으로 사용될 수 있습니다.

단기 SMA (5일 및 10일 라인) 이 장기 SMA (50일 및 200일 라인) 을 넘을 때 긴 라인. 단기 SMA가 장기 SMA를 넘을 때 짧은 라인. CCI가 100보다 높을 때 판매; CCI가 -100 미만일 때 구매. ATR 값에 따라 스톱 로스를 설정하십시오.

이점 분석

이동 평균 라인의 트렌드 판단과 CCI의 과잉 구매 / 과잉 판매 판단을 결합함으로써이 전략은 시장 기회를 효과적으로 포착 할 수 있습니다. 중장기 및 단기 거래에 특히 잘 작동합니다. 또한 위험 통제는 상대적으로 과학적이며 손실을 피할 수 있습니다.

위험 분석

이 전략은 상대적으로 보수적이며 거래 신호를 놓칠 가능성이 있습니다. 범위 제한 시장 또는 트렌드 반전이있을 때 수익 취득이 조기에 유발 될 수 있습니다. 또한 부적절한 매개 변수 설정은 성능에도 영향을 줄 수 있습니다.

최적화 방향

현재 시장 조건에 더 가깝게 만들기 위해 SMA의 매개 변수를 최적화하려고 노력하십시오. 볼링거 밴드의 표준 편차는 지원 / 저항 수준으로 더 나은 성능을 위해 조정 될 수 있습니다. 또한 KDJ, MACD 등 판단을 돕기 위해 다른 지표를 추가하는 것을 고려하십시오. 이것은 전략의 승률을 향상시킬 수 있습니다.

요약

이 전략은 시장을 판단하기 위해 다양한 분석 도구를 통합하여 매개 변수를 적절하게 설정하면 만족스러운 투자 수익을 얻을 수 있습니다. 스톱 로스 규칙은 또한 위험을 제어 할 수 있습니다. 종이 거래 및 라이브 거래에서 확인하고 최적화하는 것이 좋습니다.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © maizirul959

//@version=4
strategy("MACD,RSI & EMA strategy with MA+PSAR by MAM", overlay=true)

//Input Data
_ema_len1 = input(5, title="EMA1 length")
_ema_len2 = input(20, title="EMA2 length")

_macd_fast = input(12, title="MACD Fast")
_macd_slow = input(26, title="MACD Slow")
_macd_signal_len = input(20, title="MACD Signal length")

//MAM add SMA
_sma_len1 = input(5, title="SMA1 Length")
_sma_len2 = input(10, title="SMA2 Length")
_sma_len3 = input(50, title="SMA3 Length")
_sma_len4 = input(200, title="SMA4 Length")

lineWidth = input(1, minval=1, title="Line width")

src = input(close, title="Source")

SMA1 = if _sma_len1 != 0
    sma(src, _sma_len1)
SMA2 = if _sma_len2 != 0
    sma(src, _sma_len2)
SMA3 = if _sma_len3 != 0
    sma(src, _sma_len3)
SMA4 = if _sma_len4 != 0
    sma(src, _sma_len4)


//__________________________________________________________________________

_rsi_len = input(14, title="RSI length")
_rsi_signal_len = input(20, title="RSI signal length")

//_________________________________________________________________________
//MAM Add PSAR
PSAR_start = input(0.02)
PSAR_increment = input(0.02)
PSAR_maximum = input(0.2)

psar = sar(PSAR_start, PSAR_increment, PSAR_maximum)
//_________________________________________________________________________

_ema1 = ema(close, _ema_len1)
_ema2 = ema(close, _ema_len2)

//_________________________________________________________________________
//MAM add SMA
//_sma1 = ema(close, _sma_len1)
//_sma2 = ema(close, _sma_len2)
//_________________________________________________________________________

_macd = ema(close, _macd_fast) - ema(close, _macd_slow)
_macd_signal = ema(_macd, _macd_signal_len)

_rsi = rsi(close, _rsi_len)
_rsi_signal = ema(_rsi, _rsi_signal_len)


//PLOT SMA
plot(SMA1, color=#B71C1C, title="SMA1", linewidth=lineWidth)
plot(SMA2, color=#FFFF00, title="SMA2", linewidth=lineWidth)
plot(SMA3, color=#5b34ff, title="SMA3", linewidth=lineWidth)
plot(SMA4, color=#d7d7d7, title="SMA4", linewidth=lineWidth)


//PLOT PSAR
plot(psar, "ParabolicSAR", style=plot.style_cross, color=#3A6CA8)

//plot(_rsi, color=color.yellow)
//plot(_rsi_signal, color=color.green)
//plot(_macd, color=color.blue)
//plot(_macd_signal, color=color.red)


longCondition = close > _ema1 and close > _ema2 and _macd > _macd_signal and _rsi > _rsi_signal 
if (longCondition)
    strategy.entry("Buy",strategy.long)
    
shortCondition = close < _ema1 and close <_ema2 and _macd < _macd_signal and _rsi < _rsi_signal
if (shortCondition)
    strategy.entry("Sell",strategy.short)


더 많은