この戦略は,相対強度指数 (RSI) をベースとした多レベル指標重複取引システムである.特定の取引ウィンドウ内で動作し,RSIの過剰購入および過剰販売信号を通じて取引機会を特定し,不利な市場動向中にスケールされたエントリーアプローチを使用するダイナミックなポジション調整メカニズムと組み合わせます.この戦略は平均エントリー価格目標に基づいて利益を得ることを実施します.
戦略は以下の基本要素に基づいています. 1. RSI の 計算 に は,閉値 を ソース データ と し て 標準 14 期 を 用いる. 2. 取引ウィンドウは,2〜4時間間で制御され,市場の特徴に基づいて調整可能 3. RSI を ベース に し て 30 (過剰 売り) 以下のレベル と 70 (過剰 買い) 以下のレベル に 基づく 入力 信号 4. 位置構築には,初期位置と動的調整レベルが含まれます 5. 価格が1ポイントマイナスに動くとスケーリングメカニズムが起動する 平均入場価格から1.5ポイントで設定されます.
この戦略は,RSI指標とスケールされたエントリーメカニズムを組み合わせることで,比較的完全な取引システムを形成する.その主な利点は,多レベルのシグナルフィルタリングメカニズムと柔軟なポジション管理アプローチにあります.一方で,トレンド市場リスクとパラメータ最適化問題にも注意を払う必要があります.戦略の全体的なパフォーマンスは,トレンドフィルターを追加し,ストップロスのメカニズムを最適化するなどの強化によりさらに改善できます.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("TonyM RSI", overlay=true) // Input Settings rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window") endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window") // RSI Calculation change = ta.change(rsiSourceInput) up = ta.rma(math.max(change, 0), rsiLengthInput) down = ta.rma(-math.min(change, 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Time Filter inTradingWindow = (hour >= startHour and hour < endHour) // Strategy Settings buyLevel = 30 sellLevel = 70 scaleDistance = 1.0 // Distance in points to add to the position takeProfitPoints = 1.5 // Profit target from average price initialQty = 1 // Initial trade size scalingQty = 1 // Additional trade size for scaling // Trade Logic if inTradingWindow // Entry Logic if rsi <= buyLevel and strategy.position_size == 0 strategy.entry("Buy", strategy.long, qty=initialQty) if rsi >= sellLevel and strategy.position_size == 0 strategy.entry("Sell", strategy.short, qty=initialQty) // Scaling Logic if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance strategy.entry("Scale Buy", strategy.long, qty=scalingQty) if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance strategy.entry("Scale Sell", strategy.short, qty=scalingQty) // Exit Logic (based on average price) if strategy.position_size > 0 strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints) if strategy.position_size < 0 strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints) // Plot RSI plot(rsi, "RSI", color=color.blue, linewidth=1) rsiUpperBand = hline(70, "RSI Upper Band", color=color.red) rsiLowerBand = hline(30, "RSI Lower Band", color=color.green) fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))