이 전략은 상대적으로 강한 지수 (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")