
Strategi ini menggunakan pemikiran trailing stop yang dinamik, berdasarkan ATR dan nilai harga yang tinggi untuk mengira garis hentian jangka pendek. Menggabungkan pemikiran Chandelier Exit, berdasarkan arah garis hentian untuk menentukan arah posisi pendek panjang. Apabila garis hentian terobosan ke atas dinilai sebagai bullish, lakukan lebih banyak; Apabila garis hentian terobosan ke bawah dinilai sebagai bearish, lakukan kosong.
Strategi ini mempunyai fungsi berganda untuk menilai isyarat berhenti dan masuk.
Strategi ini terdiri daripada beberapa bahagian:
ATR dikira secara real-time berdasarkan tempoh dan kelipatan ATR yang ditetapkan oleh pengguna. Kemudian, garis hentian jangka panjang dan pendek dikira berdasarkan ATR dan paras paras harga:
longStop = 最高价 - ATR
shortStop = 最低价 + ATR
Bandingkan garis hentian K sebelumnya dengan garis hentian K semasa. Jika garis hentian K semasa pecah, isyarat perdagangan dikeluarkan:
长仓止损线上方突破,做多
短仓止损线下方突破,做空
Dari ATR, jarak hentian dan jarak berhenti dikira berdasarkan RRR berbanding RRR yang ditetapkan oleh pengguna. Ia juga menetapkan perintah berhenti dan berhenti apabila anda membuka kedudukan.
Strategi ini mempunyai kelebihan berikut:
Strategi ini menggunakan garis hentian yang dikesan secara dinamik untuk menghentikan kerugian dan mengawal risiko penurunan.
Garis hentian strategi ini juga digunakan sebagai syarat untuk masuk, mempermudah logik strategi.
Mengikut nisbah risiko/balasan yang ditetapkan, usaha untuk mendapatkan keuntungan yang lebih tinggi adalah wajar.
Strategi ini direka dengan mudah dan mudah difahami dan dioptimumkan.
Strategi ini mempunyai beberapa risiko:
Strategi ini adalah strategi perdagangan dua hala, dengan risiko over dan under.
Tetapan parameter ATR secara langsung mempengaruhi garis hentian dan frekuensi perdagangan. Tetapan yang tidak betul boleh menyebabkan hentian terlalu longgar atau frekuensi perdagangan terlalu tinggi.
Strategi ini lebih sesuai untuk penembusan selepas menyusun garis purata dan tidak sesuai untuk situasi yang terlalu trendy.
Untuk mengatasi risiko ini, anda boleh mengoptimumkan:
Menggabungkan indikator trend seperti MA untuk menilai trend pasaran dan mengelakkan dagangan berlawanan.
Mengoptimumkan parameter ATR dan parameter RRR untuk membuat stop loss dan stop loss lebih munasabah.
Meningkatkan syarat penapisan untuk jumlah transaksi atau indikator turun naik untuk memastikan kualiti transaksi.
Strategi ini masih boleh dioptimumkan lagi:
Menggunakan model pembelajaran mesin untuk meramalkan trend harga, meningkatkan ketepatan kemasukan.
Menggunakan kadar turun naik harga varian perlindungan pilihan untuk membina portfolio risiko bebas.
Arbitrage statistik antara pasaran dan varieti yang berbeza untuk mendapatkan Alpha yang stabil.
Pemantauan strategi yang cekap dan perdagangan dalam talian melalui enjin dagangan algoritma.
Artikel ini mengkaji secara mendalam strategi perdagangan kuantitatif yang berasaskan penghentian kehilangan pengesanan dinamik. Strategi ini mempunyai fungsi pengurusan penghentian dan penilaian isyarat perdagangan, yang dapat mengawal risiko dengan berkesan. Kami juga menganalisis kelebihan strategi, risiko yang mungkin ada, dan idea pengoptimuman seterusnya.
/*backtest
start: 2023-12-29 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chandelier Exit with 1-to-1 Risk-Reward", shorttitle='CE', overlay=true)
// Chandelier Exit Logic
length = input.int(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
useClose = input.bool(title='Use Close Price for Extremums', defval=true)
atr = mult * ta.atr(length)
longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop
shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop
var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir
// Risk-Reward Ratio
riskRewardRatio = input.int(1, title="Risk-Reward Ratio", minval=1, maxval=10, step=1)
// Calculate Take Profit and Stop Loss Levels
takeProfitLevel = atr * riskRewardRatio
stopLossLevel = atr
// Entry Conditions
longCondition = dir == 1 and dir[1] == -1
shortCondition = dir == -1 and dir[1] == 1
// Entry Signals
if (longCondition)
strategy.entry("Long", strategy.long, stop=close - stopLossLevel, limit=close + takeProfitLevel)
if (shortCondition)
strategy.entry("Short", strategy.short, stop=close + stopLossLevel, limit=close - takeProfitLevel)
longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.green)
shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.red)
midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false)
fill(midPricePlot, longStopPlot, color=color.new(color.green, 90), title='Long State Filling')
fill(midPricePlot, shortStopPlot, color=color.new(color.red, 90), title='Short State Filling')
// Alerts
if (dir != dir[1])
strategy.entry("Direction Change", strategy.long, comment="Chandelier Exit has changed direction!")
if (longCondition)
strategy.entry("Buy Signal", strategy.long, comment="Chandelier Exit Buy!")
if (shortCondition)
strategy.entry("Sell Signal", strategy.short, comment="Chandelier Exit Sell!")