MACD 및 RSI 크로스오버 신호에 기초한 거래 전략

저자:차오장, 날짜: 2023-12-18 17:19:03
태그:

img

전반적인 설명

이 전략은 시장 동향을 판단하고 잠재적 인 거래 지점을 식별하기 위해 MACD 지표를 사용하여 RSI 지표를 결합하여 과잉 구매 / 과잉 판매 조건을 확인합니다. MACD가 구매 / 판매 신호를 제공하고 RSI가 동시에 시장이 과잉 판매 / 과잉 구매를 확인 할 때만 거래 신호가 생성됩니다. 이것은 잘못된 신호를 효과적으로 필터링하고 전략의 안정성을 향상시킬 수 있습니다.

전략 원칙

MACD 지표 계산

MACD 지표는 빠른 EMA와 느린 EMA의 차이로 구성되어 있으며, 단기 및 장기 평균 가격 추세의 차이를 반영합니다. 이 전략에서 빠른 라인 기간은 12 일이고 느린 라인 기간은 26 일입니다.

빠른 선이 느린 선 위에 넘어가면 상승 추세를 나타내는 황금 십자 신호입니다. 빠른 선이 느린 선 아래에 넘어가면 하락 추세를 나타내는 죽음의 십자 신호입니다.

RSI 지표 계산

RSI 지표는 시장에서 과잉 구매 / 과잉 판매 조건을 반영합니다. 이 전략에서 RSI 기간 매개 변수는 14로 설정됩니다.

RSI BELOW 30는 ASSET가 OVERSOLD되었음을 암시합니다.

RSI Above 70는 매출 압력이 매출 압력을 초과했기 때문에 자산이 과잉이었다고 제안합니다.

30 이하의 값은 과반 판매 상태를 나타내고 70 이상의 값은 과반 구매 상태를 나타냅니다.

전략 신호

거래 신호를 위해 MACD에만 의존하면 일부 잘못된 신호가 발생할 수 있습니다. 이 전략은 RSI를 사용하여 신호를 필터링하여 MACD가 신호를 주고 RSI가 동시에 과소매 / 과소매 극단성을 확인 할 때만 실제 거래 신호를 생성합니다.

특히, MACD가 황금 십자가를 생성할 때, RSI <=34이 동시에 과잉 매매 시장을 확인하면 구매 신호가 생성됩니다. MACD가 죽음의 십자가를 형성할 때, RSI>=75이 과잉 매매 시장을 확인하면 판매 신호가 생성됩니다.

이 이중 확인 메커니즘은 많은 신뢰할 수 없는 거래 신호를 필터링하여 전략의 안정성과 신뢰성을 향상시킬 수 있습니다.

이점 분석

이중 표시기 필터링 은 신호 신뢰성 을 높인다

이 전략은 MACD와 RSI 지표를 결합하여 이중 확인을 통해 잘못된 신호의 간섭을 효과적으로 줄이고 신뢰할 수없는 거래 신호를 필터링하여 신호 신뢰성과 안정성을 향상시킬 수 있습니다.

명확한 추세 판단

가격 및 부피 지표로서 MACD는 시장 상승 추세와 하락 추세를 명확하게 결정할 수 있습니다. RSI의 과잉 구매/ 과잉 판매 판단과 결합하여 시장의 중요한 역전 지점을 정확하게 파악 할 수 있습니다. 진입 및 출구 신호는 명확합니다.

큰 매개 변수 최적화 공간

이 전략의 MACD 및 RSI 구성 요소의 매개 변수는 다양한 주기와 거래 도구에 맞게 최적화 및 조정 할 수 있습니다. 다른 시장에서 전략 성능을 향상시키기 위해 매개 변수 조정을 통해 최적화 할 수있는 충분한 공간이 있습니다.

이해하기 쉽고 적용 하기 쉽다

이 전략에서 사용되는 MACD, RSI 및 기타 지표는 이해하기 쉬운 매우 전형적이고 일반적으로 사용되는 기술적 지표입니다. 전략 코드는 또한 매개 변수 조정 및 최적화에 편리함을 제공하는 매우 간단하고 직관적입니다.

위험 분석

일부 무역 기회 를 놓칠 수 있다

이 전략은 비교적 보수적인 이중 확인 접근 방식을 채택하고 있으며, 잘못된 신호를 필터링함으로써 단일 지표 신호에 기반한 수익을 초래할 수 있는 몇 가지 놓친 거래 기회를 초래할 수 있습니다.

  • 솔루션: 확인의 엄격성을 줄이고 전략이 더 많은 거래 기회를 잡을 수 있도록 RSI 임계 범위를 적절히 확장하십시오.

극심한 시장 변동 중 손실 발생

극심한 시장 변동의 경우 MACD와 RSI 지표가 판단에 지연하여 전략으로 인해 발생하는 잘못된 거래 신호와 손실로 이어질 수 있습니다.

  • 솔루션: 단일 거래에서 과도한 손실을 방지하기 위해 스톱 로스 메커니즘을 통합하십시오. 극심한 시장 움직임에 대한 지표의 적절한 감수성을 구축하기 위해 매개 변수를 조정하십시오.

성능은 파라미터 설정에 크게 달려 있습니다.

이 전략의 성능은 크게 MACD, RSI 및 기타 매개 변수 설정의 품질에 달려 있습니다. 잘못된 매개 변수 구성은 쉽게 역전 된 거래 신호로 이어질 수 있습니다.

  • 해결책: 최적의 매개 변수 설정을 찾기 위해 백테스팅을 통해 매개 변수 조합을 최적화합니다.

최적화 방향

리스크를 제어하기 위해 손해 중지 메커니즘을 포함

가격 또는 지표에 기반한 스톱 로스 규칙은 미리 정의된 허용 손실 문턱을 가진 출구 포지션에 적용될 수 있으며, 개별 거래에서 손실을 효과적으로 제한할 수 있습니다.

시장 특성에 맞는 매개 변수를 조정

MACD 빠른 / 느린 라인 기간 및 RSI 과잉 구매 / 과잉 판매 문턱과 같은 주요 매개 변수의 지속적인 최적화

가장 잘 어울리는 재산을 찾아보기 위해 재산을 모두 시험해 보십시오

주식 지수, 암호화폐, 외환 쌍, 상품 및 기타 자산에 대한 백테스트를 수행하여 전략의 특성에 가장 적합한 시장을 발견하십시오.

다차원 확인을 위한 추가 지표를 포함

스토카스틱, OBV, CCI 등과 같은 지표는 다차원 신호 필터링 접근 방식을 통해 더 높은 확인 정확성을 위해 MACD 및 RSI 구성 요소 위에 추가 될 수 있습니다.

결론

이 전략은 MACD 지표에 기반하여 시장 추세와 거래 신호를 결정하고, RSI는 잘못된 신호를 필터하기 위해 과소 구매/ 과소 판매 조건을 확인합니다. 이 이중 확인 메커니즘은 신호 품질과 안정성을 효과적으로 향상시킬 수 있습니다.

성능은 최적화 기술, 스톱 손실, 멀티 프롱 확인 등으로 더욱 향상 될 수 있습니다. 간단한 논리와 좋은 안정성으로 초보자 양자가 연습하고 최적화하는 좋은 시작 전략으로 사용됩니다.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(default_qty_type = strategy.percent_of_equity, default_qty_value = 25, pyramiding = 10, title="MACD crossover while RSI Oversold/Overbought", overlay=true, shorttitle="MACD Cross + RSI Oversold Overbought", initial_capital = 1000)

//MACD Settings
fastMA = input(title="Fast moving average",  defval = 12, minval = 7) //7 16
slowMA = input(title="Slow moving average",  defval = 26, minval = 7) //24 26 
signalLength = input(9,minval=1) //9 6

//RSI settings
RSIOverSold = input(34 ,minval=1) //26
RSIOverBought = input(75 ,minval=1) //77
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought


[currMacd,_,_] = macd(close[0], fastMA, slowMA, signalLength)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, signalLength)
signal = ema(currMacd, signalLength)

crossoverBear = cross(currMacd, signal) and currMacd < signal ? avg(currMacd, signal) : na
crossoverBull = cross(currMacd, signal) and currMacd > signal ? avg(currMacd, signal) : na

plotshape(crossoverBear and wasOverbought , title='MACD-BEAR', style=shape.triangledown, text='overbought', location=location.abovebar, color=orange, textcolor=orange, size=size.tiny) 
plotshape(crossoverBull and wasOversold, title='MACD-BULL', style=shape.triangleup, text='oversold', location=location.belowbar, color=lime, textcolor=lime, size=size.tiny) 

// Configure backtest start date with inputs
startDate = input(title="Start Date",
     defval=8, minval=1, maxval=31)
startMonth = input(title="Start Month",
     defval=3, minval=1, maxval=12)
startYear = input(title="Start Year",
     defval=2021, minval=1800, maxval=2100)

afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))
     
if (afterStartDate==true)
    posSize = abs(strategy.position_size)
    strategy.order("long", strategy.long, when = crossoverBull and wasOversold) 
    strategy.order("long", long=false, qty=posSize/3, when = crossoverBear and wasOverbought) 


더 많은