
Strategi ini adalah sistem perdagangan kuantitatif untuk penembusan tahap sokongan yang khusus untuk perdagangan kosong, untuk menangkap tren penurunan harga dengan mengenal pasti penembusan yang berkesan pada tahap sokongan utama. Strategi ini menggabungkan teori rintangan sokongan dalam analisis teknikal, prinsip pengesahan kuantiti transaksi, dan mekanisme pengurusan risiko dinamik ATR.
Prinsip-prinsip utama strategi ini adalah berdasarkan teori penembusan tahap sokongan dalam analisis teknikal. Pertama, sistem menentukan tahap sokongan utama dengan mengira harga terendah dalam 20 kitaran terakhir, yang mewakili kawasan pertahanan penting bagi kekuatan berganda. Apabila harga menembusi tahap sokongan ini dan memenuhi syarat pelindung penembusan, ini menunjukkan bahawa garis pertahanan berganda telah ditembusi dan kekuatan udara mendominasi. Untuk meningkatkan kebolehpercayaan isyarat, strategi ini diperkenalkan dalam mekanisme pengesahan jumlah dagangan, yang hanya dianggap berkesan apabila jumlah dagangan yang menembusi lebih besar daripada atau sama dengan purata pergerakan jumlah dagangan dalam 20 kitaran.
Strategi ini mempunyai pelbagai kelebihan teknikal, yang pertama adalah kualiti isyarat yang tinggi, yang secara besar-besaran mengurangkan kebarangkalian isyarat palsu melalui penyaringan tiga syarat penembusan sokongan, pengesahan jumlah transaksi dan penyaringan melintang. Mekanisme pengesahan jumlah transaksi memastikan keberkesanan penembusan dan mengelakkan penembusan palsu yang disebabkan oleh kekurangan kecairan.
Walaupun strategi ini mempunyai banyak kelebihan, terdapat beberapa risiko yang perlu diperhatikan. Pertama, risiko pembalikan trend, apabila pasaran berada dalam trend menaik yang kuat, penembusan tahap sokongan mungkin hanya pembalikan sementara, dan bukan pembalikan trend yang sebenar, yang boleh menyebabkan kedudukan kosong menghadapi kerugian pasaran yang cepat.
Terdapat beberapa arah yang boleh dioptimumkan dalam strategi untuk meningkatkan prestasi keseluruhan. Pertama, analisis pelbagai bingkai masa boleh diperkenalkan untuk menapis isyarat perdagangan dengan menggabungkan arah trend pada bingkai masa yang lebih tinggi, seperti isyarat penembusan kosong pada carta jam hanya apabila carta hari menunjukkan trend menurun. Ini dapat meningkatkan kadar kejayaan isyarat dengan ketara, mengelakkan operasi berlawanan. Kedua, mekanisme pengesahan jumlah transaksi dapat dioptimumkan dengan mempertimbangkan bukan sahaja nilai mutlak transaksi, tetapi juga analisis kadar perubahan relatif dalam jumlah transaksi dan ciri-ciri pengedaran jumlah transaksi.
Strategi ini adalah sistem perdagangan kuantitatif yang dirancang dengan baik untuk memecahkan kedudukan sokongan yang tinggi, mencapai kualiti isyarat yang lebih tinggi dan kawalan tahap risiko melalui penggunaan gabungan pelbagai petunjuk teknikal. Kelebihan utama strategi ini adalah mekanisme penapisan isyarat yang lengkap dan sistem pengurusan risiko dinamik berasaskan ATR.
/*backtest
start: 2024-05-26 00:00:00
end: 2024-08-13 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Breakout Strategy Pro [Dubic] - Short Only", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS === //
srRange = input.int(20, "Support Lookback", minval=5)
volMaLength = input.int(20, "Volume MA Length", minval=1)
atrLength = input.int(14, "ATR Period", minval=5)
trailMultiplier = input.float(1.5, "Trailing Stop Multiplier", minval=1.0)
stopMultiplier = input.float(1.0, "Initial Stop-Loss ATR Multiplier", minval=0.5)
breakoutBuffer = input.float(1.005, "Breakout Buffer", step=0.001)
rangeLength = input.int(20, "Range Detector Lookback", minval=5)
rangeThreshold = input.float(1.5, "Sideways Threshold (x ATR)", minval=0.5, step=0.1)
// === CALCULATIONS === //
lowLevel = ta.lowest(low, srRange)[1]
volMA = ta.sma(volume, volMaLength)
atr = ta.atr(atrLength)
trailOffsetTicks = math.max(int(math.round((atr * trailMultiplier) / syminfo.mintick)), 1)
stopLossTicks = math.max(int(math.round((atr * stopMultiplier) / syminfo.mintick)), 1)
// === SIDEWAYS DETECTION === //
highRange = ta.highest(high, rangeLength)
lowRange = ta.lowest(low, rangeLength)
priceRange = highRange - lowRange
isSideways = priceRange <= atr * rangeThreshold
// === ENTRY LOGIC === //
shortCondition = close <= lowLevel * breakoutBuffer and volume >= volMA and not isSideways
// === ENTRY & EXIT === //
if shortCondition and strategy.position_size >= 0
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", trail_price=close, trail_offset=trailOffsetTicks, stop=close + stopLossTicks * syminfo.mintick)
alert("Short Entry Signal - Breakout Strategy Pro [Dubic]", alert.freq_once_per_bar)
// === VISUALS === //
plot(lowLevel, "Support", color=color.new(color.green, 30))
plot(volMA, "Volume MA", color=color.gray)
plotshape(shortCondition, location=location.abovebar, style=shape.triangledown, color=color.red, size=size.small, title="Sell Signal")
bgcolor(isSideways ? color.new(color.orange, 85) : na, title="Sideways Market")