この戦略は,モメント指標RSIとトレンド指標EMAを組み合わせた複合取引システムである. 1分および5分間のタイムフレームの両方で動作し,RSIオーバーバイト/オーバーセールシグナルとトリプルEMAトレンド決定に基づいて取引決定を行う.この戦略は,トレンドフォローと平均逆転の両方の特徴を組み込み,異なる市場環境で取引機会を把握することを可能にします.
この戦略は,トレンド判断基準として21/50/200日トリプルEMAを使用し,市場過剰購入/過剰販売状況を特定するために,修正されたRSI指標 (チェビシェフ方法を使用して計算される) と組み合わせたトレンド判断基準として使用する. 1分間の時間枠では,RSIが94を超えるとショートポジションを開始し,RSIが4を下回ると閉じる.RSIが50に戻るとブレイクイブンストップが設定される. 5分間の時間枠では,RSIが200日間のEMAを下回った後に価格がリバウンドするとロングポジションを開始し,RSIが過剰購入またはミディアンを下回るとポジションを閉じる.PositionLongとPositionShortのポジション管理変数は繰り返しのエントリを防ぐ.
この戦略は,複数の技術指標とマルチタイムフレーム分析の組み合わせによって取引の安定性と信頼性を向上させる.特定のリスクが存在するが,適切なポジション管理とストップロスのメカニズムによって効果的に制御することができる.この戦略には重要な最適化可能性があり,追加の技術指標とパラメータの最適化によってパフォーマンスをさらに改善することができる.
/*backtest start: 2023-11-12 00:00:00 end: 2024-07-10 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined RSI Primed and 3 EMA Strategy", overlay=true) // Input for EMA lengths emaLength1 = input(21, title="EMA Length 1") emaLength2 = input(50, title="EMA Length 2") emaLength3 = input(200, title="EMA Length 3") // Input for RSI settings rsiLength = input(14, title="RSI Length") rsiOverbought = input(94, title="RSI Overbought Level") rsiNeutral = input(50, title="RSI Neutral Level") rsiOversold = input(4, title="RSI Oversold Level") // Calculate EMAs ema1 = ta.ema(close, emaLength1) ema2 = ta.ema(close, emaLength2) ema3 = ta.ema(close, emaLength3) // Calculate RSI using Chebyshev method from RSI Primed rsi(source) => up = math.max(ta.change(source), 0) down = -math.min(ta.change(source), 0) rs = up / down rsiValue = down == 0 ? 100 : 100 - (100 / (1 + rs)) rsiValue rsiValue = rsi(close) // Plot EMAs plot(ema1, color=color.red, title="EMA 21") plot(ema2, color=color.white, title="EMA 50") plot(ema3, color=color.blue, title="EMA 200") // Plot RSI for visual reference hline(rsiOverbought, "Overbought", color=color.red) hline(rsiNeutral, "Neutral", color=color.gray) hline(rsiOversold, "Oversold", color=color.green) plot(rsiValue, color=color.blue, title="RSI") // Trading logic with position management var bool inPositionShort = false var bool inPositionLong = false // Trading logic for 1-minute timeframe if (rsiValue > rsiOverbought and not inPositionShort) strategy.entry("Sell", strategy.short) inPositionShort := true if (rsiValue < rsiOversold and inPositionShort) strategy.close("Sell") inPositionShort := false if (ta.crossover(rsiValue, rsiNeutral) and inPositionShort) strategy.exit("Break Even", "Sell", stop=close) // Trading logic for 5-minute timeframe var float lastBearishClose = na if (close < ema3 and close[1] >= ema3) // Check if the current close is below EMA200 lastBearishClose := close if (not na(lastBearishClose) and close > lastBearishClose and not inPositionLong) strategy.entry("Buy", strategy.long) inPositionLong := true if (rsiValue > rsiOverbought and inPositionLong) strategy.close("Buy") inPositionLong := false if (ta.crossunder(rsiValue, rsiNeutral) and inPositionLong) strategy.exit("Break Even", "Buy", stop=close) lastBearishClose := na // Reset after trade execution