この戦略は,相対強度指数 (RSI) と移動平均収束分差 (MACD) の2つの技術指標を組み合わせます.RSIを使用してオーバーバイトとオーバーセール条件を決定し,MACDを使用してトレンド方向を特定し,完全なロングショート戦略を形成します.RSIがオーバーバイトになったとき,セールシグナルが生成され,MACDの速いラインがスローラインを越えるとポジションが閉鎖されます.RSIがオーバーセールしたとき,買いシグナルが生成され,MACDの速いラインがスローラインを下回るとポジションが閉鎖されます.ストップ・ロスは資産の平均価格変化の半分を計算することによって設定されます.
RSIを使用して過買い・過売り状態を決定することで,戦略は逆転の開始時に入力される.MACDを使用してトレンド方向を特定することで,トレンドの開始時にポジションを閉鎖し,効果的にトレンドを把握する.この2つの指標は互いを補完し,完全な取引システムを形成する.
この戦略は,過剰購入および過剰販売条件を決定するために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")