
Ini adalah sistem perdagangan pengesanan trend yang berdasarkan pada harga lompat dan penapis purata bergerak. Strategi ini melakukan perdagangan apabila pasaran membentuk trend yang jelas dengan mengenal pasti isyarat lompat harga yang signifikan secara statistik, digabungkan dengan penapis trend SMA.
Strategi ini adalah berdasarkan kepada beberapa faktor utama:
Strategi ini membina sistem perdagangan yang jelas dan terkawal dengan risiko dengan menggabungkan penapis trend harga dan trend garis rata. Dengan parameter yang ditetapkan dengan bijak dan pengoptimuman berterusan, strategi ini dapat memperoleh keuntungan yang stabil di pasaran yang sedang tren.
/*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)