
Ini ialah strategi dagangan kuantitatif yang menggabungkan aliran EMA, pemecahan kitaran dan penapisan sesi dagangan. Strategi ini terutamanya berdasarkan pertimbangan arah aliran purata bergerak, dan menggunakan corak terobosan harga pada kedudukan kitaran utama sebagai isyarat dagangan Pada masa yang sama, penapisan tempoh dagangan diperkenalkan untuk meningkatkan kualiti dagangan. Strategi ini menggunakan kaedah henti rugi peratusan dan ambil untung untuk mengawal risiko.
Logik teras strategi merangkumi elemen utama berikut:
Strategi ini membina sistem perdagangan yang ketat secara logik dengan menggabungkan pelbagai mekanisme seperti trend purata bergerak, corak harga dan penapisan tempoh masa. Walaupun terdapat batasan tertentu, kestabilan dan keuntungan strategi dijangka akan dipertingkatkan lagi melalui pengoptimuman dan penambahbaikan berterusan. Strategi ini sesuai sebagai rangka kerja asas sistem penjejakan arah aliran jangka sederhana dan panjang, dan boleh disesuaikan dan dipertingkatkan mengikut keperluan dagangan sebenar.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("The Gold Box Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Inputs
roundNumberInterval = input.int(5, title="Round Number Interval ($)", minval=1)
useEMA = input.bool(true, title="Use 20 EMA for Confluence")
emaLength = input.int(20, title="EMA Length")
// Session times for London and NY
londonSession = input("0300-1200", title="London Session (NY Time)")
nySession = input("0800-1700", title="New York Session (NY Time)")
// EMA Calculation
emaValue = ta.ema(close, emaLength)
// Plot Round Number Levels
roundLow = math.floor(low / roundNumberInterval) * roundNumberInterval
roundHigh = math.ceil(high / roundNumberInterval) * roundNumberInterval
// for level = roundLow to roundHigh by roundNumberInterval
// line.new(x1=bar_index - 1, y1=level, x2=bar_index, y2=level, color=color.new(color.gray, 80), extend=extend.both)
// Session Filter
inLondonSession = not na(time("1", londonSession))
inNYSession = not na(time("1", nySession))
inSession = true
// Detect Bullish and Bearish Engulfing patterns
bullishEngulfing = close > open[1] and open < close[1] and close > emaValue and inSession
bearishEngulfing = close < open[1] and open > close[1] and close < emaValue and inSession
// Entry Conditions
if bullishEngulfing
strategy.entry("Long", strategy.long, comment="Bullish Engulfing with EMA Confluence")
if bearishEngulfing
strategy.entry("Short", strategy.short, comment="Bearish Engulfing with EMA Confluence")
// Stop Loss and Take Profit
stopLossPercent = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100
takeProfitPercent = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent), limit=close * (1 + takeProfitPercent))
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent), limit=close * (1 - takeProfitPercent))