
이 전략은 MACD 지표를 사용하여 시장의 추세를 판단하고 잠재적 인 매도 지점을 찾으며 RSI 지표와 결합하여 과매도 과매도 현상을 확인합니다. MACD 지표가 구매 / 판매 신호를 발송 할 때 RSI가 시장이 과매도 / 과매도 상태임을 확인 할 때만 거래 신호를 생성하여 구매 또는 판매합니다. 이 전략은 가짜 신호를 효과적으로 필터링하여 전략의 안정성을 향상시킵니다.
MACD 지표는 빠른 이동 평균 (EMA) 과 느린 이동 평균의 차원으로 구성되어 있으며, 단기 및 장기 평균 가격 변화의 경향의 차이를 나타냅니다. 이 전략에서 빠른 선의 주기는 12 일, 느린 선의 주기는 26 일입니다.
빠른 선에서 느린 선을 통과할 때 황금 포크 신호로, 시장의 상승 추세를 나타냅니다. 빠른 선 아래에서 느린 선을 통과할 때 사다리 신호로, 시장의 하향 추세를 나타냅니다.
RSI 지표는 시장의 과매매 현상을 나타냅니다. 이 전략에서 RSI의 파라미터는 주기적으로 14로 설정됩니다.
RSI BELOW 30 when buyers outpaced sellers for an extended period suggests ASSET was OVERSOLD.
RSI ABOVE 70 when selling pressure outpaced buying pressure over the tracked timeline suggests ASSET was OVERBOUGHT.
RSI가 30보다 낮으면 시장이 과매매 상태임을 나타냅니다. RSI가 70보다 높으면 시장이 과매매 상태임을 나타냅니다.
MACD 지표에만 의존하여 거래 신호를 생성하면, 특정 가짜 신호가 발생할 수 있습니다. 이 전략은 RSI 지표 필터링 신호를 사용합니다. MACD 신호를 발신하는 동시에 RSI가 시장의 과매매 과매매 상태를 확인 할 때만 실제 거래 신호를 생성합니다.
구체적으로, MACD가 금포크 신호를 형성할 때, 이 때 RSI<=34, 시장이 과매매 상태임을 확인하면, 구매 신호를 생성한다. MACD가 사다리 신호를 형성할 때, 이 때 RSI>=75, 시장이 과매매 상태임을 확인하면, 판매 신호를 생성한다.
이중 확인 메커니즘은 많은 신뢰할 수 없는 거래 신호를 필터링하여 전략의 안정성과 신뢰성을 높일 수 있습니다.
이 전략은 MACD와 RSI의 두 지표를 결합하여 이중 확인을 수행합니다. 이것은 가짜 신호의 간섭을 효과적으로 줄이고 신뢰할 수없는 거래 신호를 필터링하여 신호의 신뢰성과 안정성을 향상시킵니다.
MACD는 물가 지표로서 시장의 하락 추세를 명확하게 판단할 수 있다. RSI 지표의 과매매 판단과 결합하여 시장의 중요한 반전점을 정확하게 잡을 수 있으며 입출장 신호를 명확하게 파악할 수 있다.
이 전략의 MACD 및 RSI의 파라미터는 최적화 조정할 수 있으며, 다른 주기 및 다른 품종에 적응할 수 있으며, 최적화 공간은 넓다. 파라미터 조정으로 타겟팅 된 지리적 조정을 할 수 있으며, 더 나은 전략 효과를 얻을 수 있다.
이 전략이 사용하는 MACD와 RSI와 같은 지표는 매우 전형적이고 일반적인 기술 지표이며, 이해하기 쉽고, 코드 구현도 매우 간단하고 직관적입니다. 이것은 변수 조정과 최적화를 용이하게 만듭니다.
이 전략은 비교적 신중한 이중 확인 전략을 채택하고 있으며, 가짜 신호를 필터링하여 일부 단일 지표 조건에서 수익을 얻을 수있는 거래 기회를 놓칠 수 있습니다.
시장이 급격하게 변할 때 MACD와 RSI 지표는 판단을 지연시킬 수 있으며, 전략이 잘못된 거래 신호를 생성하여 손실을 초래할 수 있습니다.
이 전략의 효과는 MACD와 RSI와 같은 파라미터의 설정에 크게 달려 있습니다. 파라미터가 잘못 설정되면 역 거래 신호를 쉽게 얻을 수 있습니다.
가격정지 또는 지표정지 규칙을 설정하여 손실이 어느 정도까지 확대될 때 출전을 중지하여 단독 손실을 효과적으로 제어할 수 있다.
MACD의 빠르고 느린 선 주기, RSI의 오버오버오버오버오버 판매 마이너스 등과 같은 파라미터를 조정하여 파라미터 설정을 최적화하여 다른 주기 및 품종의 시장 특성에 더 적합하게 만들 수 있습니다.
주식 지수, 디지털 화폐, 외환, 상품 등과 같은 다양한 품종에 대한 재검토를 통해 전략적으로 가장 효과적인 품종을 찾을 수 있습니다.
기존의 MACD와 RSI를 기반으로 stoch, OBV, CCI 등의 다른 지표를 도입하여 멀티 지표 확인을 구현하여 신호 품질을 더욱 향상시킬 수 있습니다.
이 전략은 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)