Đây là một hệ thống giao dịch theo xu hướng dựa trên khoảng cách giá và lọc trung bình động. Chiến lược nắm bắt các cơ hội xu hướng bằng cách xác định các khoảng cách giá có ý nghĩa thống kê kết hợp với bộ lọc xu hướng SMA, thực hiện giao dịch khi xu hướng thị trường rõ ràng xuất hiện. Khái niệm cốt lõi là tận dụng các cơ hội tiếp tục xu hướng được tạo ra bởi sự mất cân bằng cung-nhu cầu biểu hiện dưới dạng khoảng cách giá.
Chiến lược hoạt động trên một số yếu tố chính:
Chiến lược này kết hợp các khoảng cách giá và lọc xu hướng trung bình động để tạo ra một hệ thống giao dịch với logic rõ ràng và rủi ro được kiểm soát. Thông qua các thiết lập tham số thích hợp và tối ưu hóa liên tục, chiến lược có thể đạt được lợi nhuận ổn định trong các thị trường xu hướng. Các nhà giao dịch được khuyên nên tiến hành kiểm tra lịch sử kỹ lưỡng trước khi thực hiện trực tiếp và tối ưu hóa dựa trên các đặc điểm thị trường cụ thể.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simplified Gap Strategy with SMA Filter", overlay=true) // Input fields for user control long_gap_threshold = input.float(0.1, title="Gap Threshold (%)", minval=0.01, step=0.01) // Minimum percentage for gaps hold_duration = input.int(10, title="Hold Duration (bars)", minval=1) // Duration to hold the position gap_trade_option = input.string("Long Up Gap", title="Select Trade Option", options=["Long Up Gap", "Short Down Gap", "Short Up Gap", "Long Down Gap"]) // Combined option use_sma_filter = input.bool(false, title="Use SMA Filter") // Checkbox to activate SMA filter sma_length = input.int(200, title="SMA Length", minval=1) // Length of the SMA // RGB color definitions for background color_up_gap = color.new(color.green, 50) // Green background for up gaps color_down_gap = color.new(color.red, 50) // Red background for down gaps // Gap size calculation in percentage terms gap_size = (open - close[1]) / close[1] * 100 // Gap size in percentage // Calculate gaps based on threshold input up_gap = open > close[1] and gap_size >= long_gap_threshold // Long gap condition down_gap = open < close[1] and math.abs(gap_size) >= long_gap_threshold // Short gap condition // Calculate the SMA sma_value = ta.sma(close, sma_length) // Define the trading logic based on selected option and SMA filter if (gap_trade_option == "Long Up Gap" and up_gap and (not use_sma_filter or close > sma_value)) strategy.entry("Long", strategy.long) if (gap_trade_option == "Short Down Gap" and down_gap and (not use_sma_filter or close < sma_value)) strategy.entry("Short", strategy.short) if (gap_trade_option == "Short Up Gap" and up_gap and (not use_sma_filter or close < sma_value)) strategy.entry("Short", strategy.short) if (gap_trade_option == "Long Down Gap" and down_gap and (not use_sma_filter or close > sma_value)) strategy.entry("Long", strategy.long) // Exit position after the hold duration if (strategy.opentrades > 0) if (bar_index - strategy.opentrades.entry_bar_index(0) >= hold_duration) strategy.close("Long") strategy.close("Short") // Background coloring to highlight gaps on the chart bgcolor((gap_trade_option == "Long Up Gap" and up_gap) ? color_up_gap : na, title="Up Gap Background") bgcolor((gap_trade_option == "Short Down Gap" and down_gap) ? color_down_gap : na, title="Down Gap Background") bgcolor((gap_trade_option == "Short Up Gap" and up_gap) ? color_down_gap : na, title="Short Up Gap Background") bgcolor((gap_trade_option == "Long Down Gap" and down_gap) ? color_up_gap : na, title="Long Down Gap Background") // Plot the SMA for visualization plot(use_sma_filter ? sma_value : na, color=color.white, title="SMA", linewidth=1)