이 전략은 상대적 강도 지수 (RSI) 와 이동 평균 컨버전스 디버전스 (MACD) 라는 두 가지 기술 지표를 결합합니다. 그것은 과소득 및 과소득 조건을 결정하기 위해 RSI를 사용하고, 트렌드 방향을 식별하기 위해 MACD를 사용하여 완전한 장기 단위 전략을 형성합니다. RSI가 과소득되면 판매 신호가 생성되고 MACD 빠른 라인이 느린 라인을 넘을 때 포지션은 닫습니다. RSI가 과소득되면 구매 신호가 생성되며 MACD 빠른 라인이 느린 라인을 넘을 때 포지션은 닫습니다. 스톱-러스 포인트는 자산의 평균 가격 변화의 절반을 계산하여 설정됩니다.
RSI를 사용하여 과소득 및 과소득 조건을 결정함으로써 전략은 반전의 시작에 입력됩니다. 트렌드 방향을 식별하기 위해 MACD를 사용하여 트렌드의 시작에서 위치를 닫고 효과적으로 트렌드를 캡처합니다. 두 지표는 서로를 보완하여 완전한 거래 시스템을 형성합니다.
이 전략은 과반 구매 및 과반 판매 조건을 결정하기 위해 RSI와 트렌드 방향을 파악하기 위해 MACD를 사용하여 완전한 장기-단계 거래 시스템을 형성합니다. 전략 논리는 명확하고 장점은 분명하지만 특정 위험도 있습니다. 매개 변수 최적화, 필터링 조건 추가, 위치 관리 및 다른 전략과 결합하여 이 전략의 성능을 더욱 향상시켜 견고한 거래 전략이 될 수 있습니다.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="RSI & MACD Strategy", shorttitle="RSI & MACD", overlay=true) // Définition des entrées rsi_length = 14 rsi_overbought = 70 rsi_oversold = 30 macd_fast_length = 12 macd_slow_length = 26 macd_signal_length = 9 // Fonction pour calculer le RSI calculate_rsi(source, length) => price_change = ta.change(source) up = ta.rma(price_change > 0 ? price_change : 0, length) down = ta.rma(price_change < 0 ? -price_change : 0, length) rs = up / down rsi = 100 - (100 / (1 + rs)) rsi // Fonction pour calculer le MACD calculate_macd(source, fast_length, slow_length, signal_length) => fast_ma = ta.ema(source, fast_length) slow_ma = ta.ema(source, slow_length) macd = fast_ma - slow_ma signal = ta.ema(macd, signal_length) hist = macd - signal [macd, signal, hist] // Calcul des indicateurs rsi_value = calculate_rsi(close, rsi_length) [macd_line, signal_line, _] = calculate_macd(close, macd_fast_length, macd_slow_length, macd_signal_length) // Conditions d'entrée et de sortie // Entrée en vente : RSI passe de >= 70 à < 70 sell_entry_condition = ta.crossunder(rsi_value, rsi_overbought) // Sortie en vente : MACD fast MA croise au-dessus de slow MA sell_exit_condition = ta.crossover(macd_line, signal_line) // Entrée en achat : RSI passe de <= 30 à > 30 buy_entry_condition = ta.crossover(rsi_value, rsi_oversold) // Sortie en achat : MACD fast MA croise en-dessous de slow MA buy_exit_condition = ta.crossunder(macd_line, signal_line) // Affichage des signaux sur le graphique plotshape(series=sell_entry_condition, title="Sell Entry", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small) plotshape(series=sell_exit_condition, title="Sell Exit", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small) plotshape(series=buy_entry_condition, title="Buy Entry", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=buy_exit_condition, title="Buy Exit", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small) // Entrées et sorties de la stratégie if (sell_entry_condition) strategy.entry("Short", strategy.short) if (sell_exit_condition) strategy.close("Short") if (buy_entry_condition) strategy.entry("Long", strategy.long) if (buy_exit_condition) strategy.close("Long")