
Strategi perdagangan kuantitatif yang berasaskan struktur struktur harga adalah sistem perdagangan yang berdasarkan pengesahan struktur harga, yang memberi tumpuan kepada pengenalan puncak dan ketinggian yang kuat dan lemah, dan menggabungkan mekanisme pengurusan risiko dinamik untuk melaksanakan perdagangan. Inti strategi ini adalah untuk mengenal pasti struktur pasaran dengan bergoyang tinggi dan rendah (Swing Highs / Lows), dan hanya berdagang apabila harga menembusi tahap struktur yang paling baru-baru ini (Pendukung atau Rintangan yang Kuat).
Strategi ini berdasarkan kepada prinsip-prinsip utama berikut:
Mekanisme pengenalan strukturStrategi menggunakan Pivot Points untuk mengenal pasti kedudukan tinggi dan rendah dalam pasaran. Dengan parameter panjang ayunan yang ditetapkan, sistem dapat mencari puncak yang sesuai.
Mencari arah trendStrategi menentukan arah trend dengan membandingkan ketinggian dan ketinggian yang berturut-turut. Apabila ketinggian baru lebih rendah daripada ketinggian sebelumnya, ia dianggap sebagai kecenderungan menurun; apabila ketinggian baru lebih tinggi daripada ketinggian sebelumnya, ia dianggap sebagai kecenderungan naik.
Klasifikasi struktur yang kuat dan lemahSistem mengklasifikasikan titik tinggi dan rendah sebagai “kuat” atau “lemah”. Titik tinggi dalam trend menurun ditandakan sebagai “tinggi kuat”; Titik rendah dalam trend menaik ditandakan sebagai “rendah kuat”.
Signal penembusan dihasilkan: Hanya menghasilkan isyarat beli apabila harga menembusi “tinggi kuat” dan menghasilkan isyarat menjual apabila ia menembusi “rendah kuat”. Ini memastikan arah perdagangan selaras dengan struktur pasaran keseluruhan.
Tarikan Stop Loss dan Pendapatan DinamisStrategi: Tetapkan stop loss berdasarkan kedudukan penembusan, dan tambahkan buffer khusus untuk meningkatkan margin keselamatan. Sasaran keuntungan berdasarkan pengiraan dinamik nisbah pulangan risiko.
Pengurusan Kedudukan Berasaskan RisikoSistem ini mengira saiz kedudukan untuk setiap dagangan berdasarkan dana akaun, peratusan risiko, jarak berhenti dan nilai titik, memastikan risiko dapat dikawal.
Logik teras dalam kod ini adalah: mula-mula mengesan titik pergerakan harga, kemudian menilai arah trend, kemudian menghasilkan isyarat perdagangan berdasarkan struktur terobosan, dan akhirnya mengira sasaran berhenti, keuntungan dan saiz kedudukan yang sesuai.
Analisis pelaksanaan kod strategi ini dapat meringkaskan kelebihan penting berikut:
Keputusan urus niaga berstrukturStrategi: membuat keputusan perdagangan berdasarkan struktur pasaran dan bukannya petunjuk teknikal yang mudah, yang menjadikan logik perdagangan lebih sesuai dengan sifat asas pasaran, meningkatkan kualiti perdagangan.
Mekanisme kemasukan yang disahkanPerdagangan dilakukan hanya selepas harga mengesahkan penembusan tahap struktural, mengurangkan risiko penembusan palsu.
Pengurusan risiko dinamik: Kedudukan hentian setiap perdagangan adalah berdasarkan struktur sebenar pasaran, dan bukan nombor tetap, lebih sesuai untuk keadaan pasaran yang berbeza.
Kawalan risiko perkadaran modal: Menggunakan kaedah pengurusan risiko peratusan (parameter riskPercent), pastikan setiap perdagangan mempunyai lubang risiko yang berkadar dengan saiz akaun, untuk melindungi dana dengan berkesan.
Pengiraan kedudukan automatik: Ukuran kedudukan disesuaikan secara automatik mengikut jarak stop loss, dengan selokan risiko yang konsisten dalam persekitaran kadar turun naik yang berbeza.
Kawalan pegangan tunggalKaedah ini bertujuan untuk mengehadkan hanya satu dagangan pada satu masa untuk mengelakkan dagangan berlebihan dan pengumpulan risiko.
Maklum balas visualSistem ini secara automatik memetakan titik masuk, sasaran hentian dan keuntungan, yang membolehkan peniaga memahami dengan jelas risiko dan ganjaran setiap perdagangan.
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Kepekaan ParameterParameter swingLength mempunyai kesan yang ketara terhadap prestasi strategi. Nilai yang terlalu kecil boleh menyebabkan perdagangan berlebihan, nilai yang terlalu besar boleh kehilangan peluang perdagangan penting. Adalah disyorkan untuk mencari nilai parameter yang paling sesuai untuk pasaran tertentu dengan mengulang.
Kebolehan beradaptasi kepada perubahan struktur pasaranDalam keadaan pasaran yang berubah dengan cepat, struktur sejarah boleh rosak dengan cepat. Strategi yang tidak merangkumi mekanisme penapisan keadaan pasaran mungkin tidak berfungsi dengan baik dalam pasaran yang bergelombang tinggi atau di antara kawasan.
Titik tergelincir dan risiko pelaksanaan: Dalam perdagangan sebenar, harga pelaksanaan semasa penembusan mungkin berbeza dengan harga yang ideal, mempengaruhi ketepatan pengiraan stop loss dan keuntungan.
Batasan bagi nisbah ganjaran risiko tetapStrategi menggunakan nisbah ganjaran risiko tetap untuk menetapkan sasaran keuntungan, tanpa mempertimbangkan kedudukan rintangan / sokongan sebenar pasaran, yang boleh menyebabkan penetapan sasaran keuntungan tidak munasabah.
Asumsi pengurusan wangStrategi mengandaikan nilai titik ((pipValueUSD) tetap, tetapi sebenarnya nilai titik untuk produk tertentu akan berubah mengikut saiz kedudukan dan keadaan pasaran.
Penyelesaian termasuk: penambahan penapis keadaan pasaran, penyesuaian parameter berdasarkan kadar turun naik, penetapan sasaran keuntungan berpasangan dengan tahap harga kritikal, dan penilaian semula dan pengoptimuman parameter strategi secara berkala.
Berdasarkan analisis kod, strategi ini boleh dioptimumkan dalam beberapa arah:
Penapisan persekitaran pasaran: Tambah penapis kadar turun naik atau penapis kekuatan trend, sesuaikan strategi perdagangan atau hentikan perdagangan dalam keadaan pasaran yang berbeza. Ini boleh dilakukan dengan menambah penunjuk seperti ATR ((Average True Range) atau ADX ((Average Directional Index).
Pengesahan pelbagai kerangka masa: Memperkenalkan analisis struktur pada jangka masa yang lebih tinggi untuk penapisan arah perdagangan, memastikan arah perdagangan selaras dengan trend yang lebih besar, meningkatkan kadar kemenangan.
Tahap risiko dan ganjaran dinamik: Rasio pulangan risiko disesuaikan secara dinamik dengan turun naik pasaran atau tahap harga utama, dan bukannya menggunakan nilai tetap. RR yang lebih tinggi boleh digunakan dalam pasaran yang sedang tren dan RR yang lebih konservatif digunakan dalam pasaran yang bergolak.
Mekanisme keuntungan sebahagian: Menerapkan fungsi keuntungan berpecah, yang membolehkan sebahagian keuntungan dikunci apabila tahap keuntungan tertentu dicapai, sementara membiarkan baki kedudukan terus beroperasi.
Strategi untuk menghalang pergerakan: Tambah fungsi Tracking Stop Loss untuk melindungi keuntungan apabila harga bergerak ke arah yang menguntungkan.
Pengoptimuman kemasukan: Tambah syarat penapisan masuk tambahan, seperti penapisan masa perdagangan, pengesahan jumlah transaksi atau pengesahan petunjuk teknikal lain, meningkatkan kualiti isyarat.
Pengurusan dana yang lebih baik: Menerapkan model pengurusan wang yang lebih kompleks, seperti Kriteria Kelly (Kelly Criterion) atau peratusan risiko dinamik yang mempertimbangkan peluang kemenangan sejarah.
Perlindungan penembusan palsu: Menambah mekanisme penembusan pertahanan palsu, seperti meminta struktur harga untuk bertahan seketika selepas penembusan atau membentuk bentuk tanda pengesahan.
Arahan pengoptimuman ini bertujuan untuk meningkatkan kestabilan dan adaptasi strategi, meningkatkan pengurusan risiko dan kualiti kemasukan, sambil mengekalkan logik perdagangan berstruktur asal.
Strategi perdagangan kuantitatif yang menggabungkan teori struktur analisis teknikal dan prinsip-prinsip pengurusan risiko moden. Dengan mengenal pasti struktur pasaran utama dan pengesahan penembusan, strategi ini dapat menangkap peluang perdagangan berkualiti tinggi, sambil memastikan keselamatan dana melalui hentian kerugian dinamik, kawalan nisbah risiko dan pengiraan kedudukan automatik.
Kelebihan utama strategi ini adalah logik perdagangan yang tersusun dan mekanisme kawalan risiko yang ketat, menjadikannya sesuai untuk digunakan di pasaran dengan ciri struktur yang jelas, seperti logam berharga, indeks dan forex. Walau bagaimanapun, strategi ini juga mempunyai risiko yang berpotensi dari segi kepekaan parameter dan kesesuaian pasaran.
Dengan menambah langkah-langkah pengoptimuman seperti penapisan persekitaran pasaran, analisis jangka masa berbilang dan pengurusan risiko dinamik, strategi dapat meningkatkan lagi kestabilan dan keuntungan strategi. Akhirnya, strategi ini menyediakan kerangka kerja yang seimbang untuk menangkap peluang perdagangan dan mengawal risiko, menyediakan asas sistem perdagangan yang boleh dipercayai untuk pedagang kuantitatif.
/*backtest
start: 2024-05-30 00:00:00
end: 2025-05-29 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("LANZ Strategy 4.0 [Backtest]", overlay=true, default_qty_type=strategy.cash, default_qty_value=100)
// === INPUTS ===
swingLength = input.int(180, "Swing Length", minval=10)
slBufferPoints = input.float(50.0, "SL Buffer (Points)", minval=0.1)
rr = input.float(1.0, "TP Risk-Reward (RR)", minval=0.1)
riskPercent = input.float(1.0, "Risk per Trade (%)", minval=0.1, maxval=100)
pipValueUSD = input.float(10.0, "Pip Value in USD (1 lot)", minval=0.01) // Para XAUUSD = $10/punto
// === PIVOT DETECTION ===
pivotHigh = ta.pivothigh(high, swingLength, swingLength)
pivotLow = ta.pivotlow(low, swingLength, swingLength)
// === STATE TRACKING ===
var float lastTop = na
var float lastBottom = na
var float prevHigh = na
var float prevLow = na
var int trendDir = na
var bool topCrossed = false
var bool bottomCrossed = false
var bool topWasStrong = false
var bool bottomWasStrong = false
// === TREND EVALUATION ===
if not na(pivotHigh)
prevHigh := lastTop
lastTop := pivotHigh
trendDir := (not na(prevHigh) and pivotHigh < prevHigh) ? -1 : trendDir
topWasStrong := trendDir == -1
topCrossed := false
if not na(pivotLow)
prevLow := lastBottom
lastBottom := pivotLow
trendDir := (not na(prevLow) and pivotLow > prevLow) ? 1 : trendDir
bottomWasStrong := trendDir == 1
bottomCrossed := false
// === ENTRY SIGNALS ===
buySignal = not topCrossed and close > lastTop
sellSignal = not bottomCrossed and close < lastBottom
// === ENTRY FREEZE VARIABLES ===
var float entryPriceBuy = na
var float entryPriceSell = na
var bool signalTriggeredBuy = false
var bool signalTriggeredSell = false
// === RESET ON POSITION CLOSE ===
if strategy.opentrades == 0
signalTriggeredBuy := false
signalTriggeredSell := false
entryPriceBuy := na
entryPriceSell := na
// === CAPTURE ENTRY PRICE ===
if buySignal and not signalTriggeredBuy and strategy.opentrades == 0
entryPriceBuy := close
signalTriggeredBuy := true
if sellSignal and not signalTriggeredSell and strategy.opentrades == 0
entryPriceSell := close
signalTriggeredSell := true
// === SL/TP / RIESGO DINÁMICO ===
pip = syminfo.mintick * 10
buffer = slBufferPoints * pip
var float sl = na
var float tp = na
var float qty = na
// === OBJETOS VISUALES ===
var line epLine = na
var line slLine = na
var line tpLine = na
var label epLabel = na
var label slLabel = na
var label tpLabel = na
// === BUY ENTRY ===
if signalTriggeredBuy and strategy.opentrades == 0
sl := low - buffer
tp := entryPriceBuy + (entryPriceBuy - sl) * rr
slPips = math.abs(entryPriceBuy - sl) / pip
riskUSD = strategy.equity * (riskPercent / 100)
qty := slPips > 0 ? (riskUSD / (slPips * pipValueUSD)) : na
strategy.entry("BUY", strategy.long, qty=qty)
strategy.exit("TP/SL BUY", from_entry="BUY", stop=sl, limit=tp)
topCrossed := true
// === SELL ENTRY ===
if signalTriggeredSell and strategy.opentrades == 0
sl := high + buffer
tp := entryPriceSell - (sl - entryPriceSell) * rr
slPips = math.abs(entryPriceSell - sl) / pip
riskUSD = strategy.equity * (riskPercent / 100)
qty := slPips > 0 ? (riskUSD / (slPips * pipValueUSD)) : na
strategy.entry("SELL", strategy.short, qty=qty)
strategy.exit("TP/SL SELL", from_entry="SELL", stop=sl, limit=tp)
bottomCrossed := true