Ini adalah sistem perdagangan trend-mengikuti berdasarkan jurang harga dan penapisan purata bergerak. Strategi ini menangkap peluang trend dengan mengenal pasti jurang harga yang signifikan secara statistik digabungkan dengan penapisan trend SMA, melaksanakan perdagangan apabila trend pasaran yang jelas muncul. Konsep teras adalah untuk memanfaatkan peluang kesinambungan trend yang dicipta oleh ketidakseimbangan bekalan-permintaan yang menampakkan sebagai jurang harga.
Strategi ini beroperasi pada beberapa elemen utama:
Strategi ini menggabungkan jurang harga dan penapisan trend purata bergerak untuk mewujudkan sistem perdagangan dengan logik yang jelas dan risiko terkawal. Melalui tetapan parameter yang sesuai dan pengoptimuman berterusan, strategi ini dapat mencapai pulangan yang stabil di pasaran yang sedang berkembang.
/*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)