
이 전략은 MACD와 RSI 두 지표의 교차를 계산하여 거래 신호를 생성한다. RSI가 초과 초과 할 때, MACD 금 포크가 발생하면 구매 및 판매 신호를 생성한다. 이 전략은 가격의 경향성을 고려하고 초과 초과 초과 상황을 고려하여 전략의 효과를 향상시키기 위해 두 가지 다른 유형의 지표의 장점을 결합합니다.
이 전략은 주로 MACD와 RSI의 두 지표의 조합을 사용하여 거래 신호를 생성합니다. 그 중 MACD는 일반적으로 가격 추세와 동력의 변화를 판단하는 데 사용되며, RSI는 일반적으로 과매매를 판단하는 데 사용됩니다.
이 전략은 먼저 MACD의 급속도 평균선과 신호선을 계산한다. 빠른 선이 느린 선보다 크면 황금 포크 신호를 발생시키고, 빠른 선이 느린 선보다 작으면 죽은 포크 신호를 발생시킨다. 이것은 가격의 추세와 동력이 변화하고 있음을 나타냅니다.
동시에, 이 전략은 RSI 지표를 계산하고, 오버 바이 라인과 오버 소이 라인을 설정한다. RSI가 오버 바이 라인보다 높을 때 오버 바이를 의미하며, RSI가 오버 소이 라인보다 낮을 때 오버 소이를 의미한다.
RSI가 과매매하는 경우, 전략은 MACD 금 포크 때 구매 신호를 생성하고 MACD 죽은 포크 때 판매 신호를 생성합니다. 즉, 가격 추세가 전환되는 경우 MACD 지표의 민감성을 사용하여 전환점을 잡습니다. RSI 지표의 역할은 과매매가없는 경우 잘못된 거래를 피하는 것입니다.
이 전략은 MACD와 RSI 두 지표의 장점을 결합하여 전략의 효과를 향상시킬 수 있습니다.
MACD 지표는 가격 변화를 민감하게 포착하고, RSI 지표는 과매매 상황을 고려하며, 둘은 상호 보완한다.
두 지표가 결합되면, 잡음 거래 신호를 필터링하여 불필요한 거래를 줄일 수 있습니다.
MACD 통계 가격 평균 수차 값, RSI 통계 가격 변화 비율, 두 가지 방법은 서로 검증할 수 있다.
MACD 반응 가격은 빠르게 변하고, RSI 반응 가격은 비교적 뚜렷하게 떨어져, 조합 사용 효과는 좋다.
이 전략에는 위험도 있습니다.
MACD와 RSI는 갑작스러운 사건에 영향을 받을 수 있으며 잘못된 신호가 발생할 수 있습니다. 적절한 변수를 조정하여 신호를 필터링 할 수 있습니다.
단일 주식 효과는 좋지 않을 수 있으며, 지수 또는 조합을 고려할 수 있다.
MACD 크로스 및 RSI 오버 바이 오버 세 조건이 동시에 충족되어야 신호를 발산할 수 있으며, 일부 기회를 놓칠 수 있습니다. RSI 파라미터 요구 사항을 적절하게 낮출 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
MACD와 RSI의 매개 변수를 최적화하여 다른 품종의 특성에 더 적합하게 만듭니다.
손실이 일정 비율에 도달했을 때 적당히 멈출 수 있도록 손실을 막는 전략을 늘리십시오.
다른 지표들, 예를 들어, 브린 띠, KDJ 등과 결합하여 더 엄격한 거래 신호 조건을 설정한다.
높은 주파수 데이터에서 전략을 실행하여 MACD의 느린 속성을 활용하여 전략 효과를 향상시킵니다.
재검토 결과에 따라 RSI의 오버 바이 오버 셀 라인을 조정하여 최적의 변수 조합을 찾습니다.
이 MACD와 RSI 교차 전략은 트렌드 추적과 오버 바이 오버 셀 판단을 결합하여 가격 전환점을 효과적으로 확보하여 전략 효과를 강화 할 수 있습니다. 그러나 제한이 있지만 시장 상황에 따라 지속적으로 테스트 및 최적화가 필요합니다. 전략 효과를 충분히 발휘하기 위해.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
// © sabirt
strategy(title='MACD and RSI', overlay=true, shorttitle='MACD&RSI')
//MACD Settings
fastMA = input.int(title='Fast moving average', defval=12, minval=1)
slowMA = input.int(title='Slow moving average', defval=26, minval=1)
signalLength = input.int(9, minval=1)
//RSI settings
RSIOverSold = input.int(35, minval=1)
RSIOverBought = input.int(80, minval=1)
src = close
len = input.int(14, minval=1, title='Length')
up = ta.rma(math.max(ta.change(src), 0), len)
down = ta.rma(-math.min(ta.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, _, _] = ta.macd(close[0], fastMA, slowMA, signalLength)
[prevMacd, _, _] = ta.macd(close[1], fastMA, slowMA, signalLength)
signal = ta.ema(currMacd, signalLength)
avg_1 = math.avg(currMacd, signal)
crossoverBear = ta.cross(currMacd, signal) and currMacd < signal ? avg_1 : na
avg_2 = math.avg(currMacd, signal)
crossoverBull = ta.cross(currMacd, signal) and currMacd > signal ? avg_2 : na
strategy.entry('buy', strategy.long, when=crossoverBull and wasOversold)
strategy.close('buy', when=crossoverBear and wasOverbought)