Chiến lược này là một hệ thống theo xu hướng thích nghi dựa trên chỉ số Supertrend Multi-Timeframe. Nó tích hợp các tín hiệu Supertrend từ các khung thời gian 15 phút, 5 phút và 2 phút để xây dựng một khuôn khổ xác định xu hướng toàn diện. Chiến lược sử dụng bộ lọc thời gian để đảm bảo hoạt động chỉ trong các phiên giao dịch tích cực nhất và tự động đóng các vị trí vào cuối ngày để tránh rủi ro qua đêm.
Cơ chế cốt lõi dựa trên sự nhất quán xu hướng trên nhiều khung thời gian để xác nhận tín hiệu giao dịch.
Chiến lược này xây dựng một hệ thống giao dịch mạnh mẽ thông qua phân tích xu hướng nhiều khung thời gian và các cơ chế kiểm soát rủi ro nghiêm ngặt. Mặc dù có chỗ để tối ưu hóa, logic cốt lõi của nó vững chắc và phù hợp với việc phát triển hơn nữa và ứng dụng giao dịch trực tiếp.
/*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.")