この戦略は,マルチタイムフレームスーパートレンド指標に基づいた適応型トレンドフォローシステムです. 総合的なトレンド識別フレームワークを構築するために,15分,5分,2分タイムフレームからのスーパートレンド信号を統合します. 戦略は,最も活発な取引セッションでのみ動作を確保するために時間フィルターを採用し,一夜間のリスクを避けるため,1日の終わりに自動的にポジションを閉じる.
基本メカニズムは,複数のタイムフレームにわたるトレンド一貫性に依存し,取引シグナルを確認します.特に:
この戦略は,マルチタイムフレームのトレンド分析と厳格なリスク管理メカニズムを通じて堅牢な取引システムを構築する.最適化のための余地がある一方で,そのコアロジックは堅牢で,さらなる開発とライブ取引アプリケーションに適しています.モジュール式デザインは将来の拡張のための強力な基盤を提供します.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Multi-Timeframe Supertrend Strategy", overlay=true, shorttitle="MTF Supertrend TF", default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=50000, currency=currency.USD) // === Input Parameters === // atrPeriod = input.int(title="ATR Period", defval=10, minval=1) factor = input.float(title="Factor", defval=3.0, step=0.1) // === Time Filter Parameters === // // Define the trading session using input.session // Format: "HHMM-HHMM", e.g., "0930-1530" sessionInput = input("0930-1530", title="Trading Session") // Specify the timezone (e.g., "Europe/Istanbul") // Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').") // === Calculate Supertrend for Different Timeframes === // symbol = syminfo.tickerid // 15-Minute Supertrend [st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off) // 5-Minute Supertrend [st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off) // 2-Minute Supertrend [st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off) // === Current Timeframe Supertrend === // [st_current, dir_current] = ta.supertrend(factor, atrPeriod) // === Time Filter: Check if Current Bar is Within the Trading Session === // in_session = true // === Define Trend Directions Based on Supertrend === // is_up_15m = close > st_15m is_up_5m = close > st_5m is_up_2m = close > st_2m is_up_current = close > st_current // === Buy Condition === // buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0 // === Sell Conditions === // // 1. Price falls below the 5-minute Supertrend during trading session sellCondition1 = close < st_5m // 2. End of Trading Day: Sell at the close of the trading session is_new_day = ta.change(time("D")) sellCondition2 = not in_session and is_new_day // Combined Sell Condition: Only if in Position sellSignal = (sellCondition1 and in_session) or sellCondition2 sellCondition = sellSignal and strategy.position_size > 0 // === Execute Trades === // if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.close("Buy") // === Plot Supertrend Lines === // // Plotting current timeframe Supertrend plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line) // Plotting higher timeframe Supertrend lines plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line) plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line) plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line) // === Plot Buy and Sell Signals === // plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small) plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small) // === Optional: Background Color to Indicate Position === // bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background") // === Alerts === // // Create alerts for Buy and Sell signals alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.") alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")