
Enhanced Dynamic Channel Breakout Trend Tracking Trading System adalah strategi perdagangan kuantitatif yang komprehensif, berdasarkan sistem perdagangan pantai klasik, dan telah dioptimumkan oleh beberapa petunjuk teknikal. Sistem ini menggunakan saluran Donchian untuk mengenal pasti harga yang pecah, sambil menggabungkan garis rata (SMA) untuk menentukan arah trend pasaran, indikator yang agak lemah (RSI) untuk memfilter isyarat masuk ke lapangan, dan rata-rata gelombang yang benar (ATR) untuk menguruskan risiko dan saiz kedudukan.
Strategi ini berpusat pada beberapa indikator teknikal utama:
Saluran Donchian: Menggunakan dua kitaran yang berlainan saluran Dongxian, satu kitaran yang lebih panjang ((default15) digunakan untuk mengenal pasti harga pecah dan mencetuskan isyarat masuk, satu kitaran yang lebih pendek ((default5) digunakan untuk menentukan titik keluar.
Mekanisme pengesahan trend: Menggunakan purata bergerak sederhana 200 kitaran ((SMA) sebagai penapis trend, hanya mengambil kira lebih apabila harga berada di atas SMA, dan mengambil kira lebih apabila harga berada di bawah SMA.
Penapis RSIMenggunakan indikator RSI yang agak kuat sebagai penapis sekunder untuk mengelakkan masuk ke kawasan yang terlalu terlampau beli atau terlampau jual, yang mengurangkan risiko perdagangan yang bertentangan.
Pengurusan kedudukan dinamikUkuran kedudukan bagi setiap dagangan dikira berdasarkan ATR, memastikan celah risiko tetap sama dalam pelbagai persekitaran turun naik. Kaedah pengiraan khusus adalah dengan membahagikan dana risiko (((2%) dana akaun dengan ((ATR kali harga)).
Mekanisme kemasukan berbilang unit: Apabila harga bergerak ke arah yang menguntungkan sebanyak 0.5 kali ATR, anda boleh menambah kedudukan dan memegang kedudukan sehingga 4 unit, membentuk struktur penambahan simpanan piramid.
Sistem Hentikan Kerosakan Dinamik: Tetapkan penutupan berdasarkan ATR, penutupan awal ditetapkan sebagai 2 kali jarak ATR harga masuk, dan menggunakan mekanisme penutupan pengesanan yang membolehkan penutupan disesuaikan dengan pergerakan harga ke arah yang menguntungkan.
Syarat kemasukan adalah seperti berikut:
Syarat untuk keluar:
Penapisan berlapis yang mengesahkan trendDengan menggabungkan saluran Dongxian, purata bergerak dan RSI, sistem penapisan berlapis telah dicipta, meningkatkan kualiti isyarat masuk secara ketara dan mengurangkan kerosakan akibat penembusan palsu.
Pengurusan kedudukan yang bersesuaianKaedah pengiraan kedudukan berasaskan ATR membolehkan strategi menyesuaikan saiz kedudukan mengikut dinamik turun naik pasaran, mengurangkan kedudukan dalam keadaan turun naik yang tinggi, meningkatkan kedudukan dalam keadaan turun naik yang rendah, dan mencapai kawalan konsistensi risiko.
Mekanisme pembinaan gudang secara beransur-ansurPeningkatan kedudukan piramida membolehkan peningkatan kedudukan selepas trend disahkan, meningkatkan potensi keuntungan, sementara kedudukan awal lebih kecil, mengawal risiko dengan berkesan.
Perlindungan Hentikan Kerosakan DinamikTracking stop loss berdasarkan ATR boleh menyesuaikan kedudukan stop loss mengikut turun naik pasaran sebenar, dengan berkesan mencegah stop loss terlalu awal dan melindungi keuntungan tepat pada masanya apabila trend berbalik.
Tetapan parameter yang fleksibelStrategi ini menyediakan pelbagai parameter yang boleh disesuaikan, termasuk kitaran saluran Dongguan, kitaran ATR, nilai RSI, dan lain-lain, yang membolehkan peniaga menyesuaikan diri dengan keadaan pasaran yang berbeza dan pilihan risiko peribadi.
Peraturan perdagangan yang jelasPeraturan strategi jelas dan sistematis, mengurangkan penilaian subjektif dan pengaruh emosi, membantu mengekalkan disiplin perdagangan.
Perkembangan pasaran yang burukSebagai sistem trend-tracking, strategi ini mungkin menghasilkan isyarat palsu yang kerap dan kerugian kecil dalam pasaran goyah yang tidak mempunyai trend yang jelas, membentuk apa yang dikenali sebagai “kerugian goyah”. Penyelesaian adalah dengan menambah penapis persekitaran pasaran tambahan, atau menghentikan perdagangan sementara apabila pasaran goyah disahkan.
Titik tergelincir dan risiko kecairanDalam pasaran pantas, terutamanya apabila unit tambahan ditambah, anda mungkin menghadapi masalah peningkatan slippage dan kekurangan kecairan. Ini boleh dikurangkan dengan menetapkan had slippage maksimum dan mengelakkan perdagangan pada masa kecairan rendah.
Parameter optimasi berlebihanParameter yang terlalu optimum boleh menyebabkan strategi berfungsi dengan baik pada data sejarah tetapi tidak berfungsi dengan baik di lapangan. Ujian kepastian dan kestabilan ke hadapan disyorkan untuk menilai prestasi strategi dalam pelbagai tetapan parameter.
Ketergantungan kepada pasaran tunggalIa boleh dipertimbangkan untuk menerapkan strategi ke beberapa pasaran yang tidak berkaitan, membentuk portfolio pelbagai pasaran, menyebarkan risiko.
Risiko Kejadian Tiba-tibaKejadian pasaran yang tidak dijangka boleh menyebabkan harga melonjak tinggi, melebihi tetapan stop loss, menyebabkan kerugian melebihi jangkaan. Kesan boleh dikurangkan dengan menetapkan had risiko maksimum dan menggunakan alat pengurusan risiko lain seperti perlindungan opsyen.
Keadaan Pasaran Beradaptasi: Memperkenalkan mekanisme pengenalan keadaan pasaran, membolehkan strategi membezakan pasaran yang sedang tren dan pasaran yang bergolak, dan menyesuaikan parameter atau tingkah laku perdagangan secara automatik mengikut keadaan pasaran yang berbeza. Anda boleh mempertimbangkan untuk menambah ADX (Indeks Arah Rata-rata) untuk mengukur kekuatan trend, atau menggunakan indikator kadar turun naik seperti lebar jalur Brin untuk menilai keadaan pasaran.
Analisis pelbagai kerangka masa: Mengintegrasikan isyarat dengan kitaran masa yang lebih lama sebagai penapis tambahan, contohnya hanya masuk apabila arah trend garis matahari selaras dengan arah trend garis jam, meningkatkan kualiti isyarat.
Peningkatan strategi penangguhan kerugianAnda boleh cuba memperbaiki strategi hentian kerugian berdasarkan kaedah seperti tahap rintangan sokongan, peratusan kadar turun naik atau faktor kemerosotan masa, untuk menjadikan hentian lebih fleksibel dan berkesan. Terutama, pertimbangkan untuk menetapkan tahap hentian yang berbeza untuk unit simpanan yang berbeza, untuk melindungi keuntungan dengan lebih baik.
Optimumkan strategi penambahbaikanMekanisme pegangan semasa adalah berdasarkan ATR tetap dan boleh dipertimbangkan untuk menyesuaikan keadaan pegangan secara dinamik mengikut kekuatan trend, lebih aktif dalam trend yang kuat dan lebih konservatif dalam trend yang lemah.
Mengintegrasikan model pembelajaran mesin: Memperkenalkan algoritma pembelajaran mesin untuk meramalkan masa kemasukan yang terbaik atau pilihan parameter yang dioptimumkan, seperti menggunakan hutan rawak atau mesin vektor sokongan untuk mengklasifikasikan pelbagai jenis penunjuk teknikal untuk mengenal pasti peluang perdagangan yang mempunyai kebarangkalian tinggi untuk berjaya.
Peningkatan mekanisme penyesuaian kadar turun naik: Mengubah parameter strategi secara automatik apabila terdapat perubahan ketara dalam turun naik pasaran, membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berbeza. Sebagai contoh, meningkatkan kitaran saluran Dongxian dan kelipatan ATR dalam keadaan turun naik yang tinggi, mengurangkan isyarat yang menyesatkan.
Enhanced Dynamic Channel Breakout Trend Tracking Trading System adalah strategi perdagangan kuantitatif yang komprehensif yang menggabungkan konsep trend tracking klasik dengan penunjuk teknologi moden. Dengan menggunakan penembusan pengenalan saluran Dongguan, menggabungkan isyarat penapisan SMA dan RSI, serta pengurusan kedudukan dan hentian dinamik berdasarkan ATR, strategi ini meningkatkan kemampuan adaptasi dan kawalan risiko dengan ketara, sambil mengekalkan kesederhanaan sistem perdagangan original.
Strategi ini sangat sesuai untuk pasaran yang jelas trend jangka menengah dan jangka panjang, dengan penapisan isyarat berlapis dan pembinaan kedudukan secara beransur-ansur, dapat menangkap trend utama dan menguruskan risiko dengan berkesan. Walaupun prestasi mungkin kurang baik dalam pasaran yang bergolak, tetapi dengan arah pengoptimuman yang dikemukakan, terutamanya penyesuaian diri keadaan pasaran dan analisis pelbagai kerangka masa, strategi ini dapat meningkatkan lagi ketahanan dan adaptasi.
Bagi peniaga kuantitatif, strategi ini memberikan kerangka yang seimbang, yang merangkumi sistem peraturan yang jelas untuk pelaksanaan yang sistematik, dengan ruang yang cukup untuk menyesuaikan parameter untuk menyesuaikan diri dengan pilihan risiko peribadi dan ciri-ciri pasaran tertentu. Dengan pemantauan dan pengoptimuman yang berterusan, strategi ini berpotensi menjadi alat pemantauan trend yang berkesan dalam jangka panjang.
/*backtest
start: 2024-03-05 00:00:00
end: 2025-03-03 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Enhanced Turtle Trading for BTC 1H", overlay=true)
// --- Adjustable Parameters ---
donchianPeriodEntry = input.int(15, "Donchian Entry Period", minval=1)
donchianPeriodExit = input.int(5, "Donchian Exit Period", minval=1)
atrPeriod = input.int(10, "ATR Period", minval=1)
capitalRisk = input.float(2.0, "Risk per Trade (%)", minval=0.1, step=0.1) / 100
volumeUnits = input.int(4, "Max Units per Position", minval=1)
smaPeriod = input.int(200, "SMA Trend Period", minval=1)
rsiPeriod = input.int(14, "RSI Period", minval=1)
rsiOverbought = input.int(70, "RSI Overbought Level", minval=0, maxval=100)
rsiOversold = input.int(30, "RSI Oversold Level", minval=0, maxval=100)
atrMultiplierStop = input.float(2.0, "ATR Multiplier for Stop", minval=0.1, step=0.1)
atrMultiplierAdd = input.float(1.0, "ATR Multiplier for Adding Units", minval=0.1, step=0.1)
// --- Calculations ---
donchianHiEntry = ta.highest(high, donchianPeriodEntry)
donchianLoEntry = ta.lowest(low, donchianPeriodEntry)
donchianHiExit = ta.highest(high, donchianPeriodExit)
donchianLoExit = ta.lowest(low, donchianPeriodExit)
atr = ta.atr(atrPeriod)
sma = ta.sma(close, smaPeriod)
rsi = ta.rsi(close, rsiPeriod)
// --- Trend Filter ---
uptrend = close > sma
downtrend = close < sma
// --- Entry Conditions with Filters ---
longEntry = high > donchianHiEntry[1] and uptrend and rsi < rsiOverbought
shortEntry = low < donchianLoEntry[1] and downtrend and rsi > rsiOversold
// --- Exit Conditions ---
longExit = low < donchianLoExit[1]
shortExit = high > donchianHiExit[1]
// --- Position Sizing ---
capitalPerUnit = strategy.equity * capitalRisk
unitsSize = math.floor(capitalPerUnit / (atr * close))
// --- Conditions for Adding Units ---
addUnitLong = strategy.position_size > 0 and strategy.position_size / unitsSize < volumeUnits and high > strategy.position_avg_price + atrMultiplierAdd * atr
addUnitShort = strategy.position_size < 0 and math.abs(strategy.position_size) / unitsSize < volumeUnits and low < strategy.position_avg_price - atrMultiplierAdd * atr
// --- Plots ---
plot(donchianHiEntry, "Donchian High Entry", color=color.new(color.green, 0))
plot(donchianLoEntry, "Donchian Low Entry", color=color.new(color.red, 0))
plot(donchianHiExit, "Donchian High Exit", color=color.new(color.lime, 50))
plot(donchianLoExit, "Donchian Low Exit", color=color.new(color.orange, 50))
plot(sma, "SMA Trend", color=color.new(color.blue, 0))
// --- Trade Management ---
// Long Entry
if (longEntry and strategy.position_size <= 0)
strategy.close_all()
strategy.entry("Long Entry", strategy.long, qty=unitsSize)
// Short Entry
if (shortEntry and strategy.position_size >= 0)
strategy.close_all()
strategy.entry("Short Entry", strategy.short, qty=unitsSize)
// Adding Units
if (addUnitLong)
strategy.entry("Add Long", strategy.long, qty=unitsSize)
if (addUnitShort)
strategy.entry("Add Short", strategy.short, qty=unitsSize)
// Exits
if (longExit and strategy.position_size > 0)
strategy.close_all()
if (shortExit and strategy.position_size < 0)
strategy.close_all()
// --- Stop Loss and Trailing Stop ---
longStopPrice = strategy.position_avg_price - atrMultiplierStop * atr
shortStopPrice = strategy.position_avg_price + atrMultiplierStop * atr
var float longTrailingStop = na
var float shortTrailingStop = na
if (strategy.position_size > 0)
longTrailingStop := math.max(longTrailingStop[1], longStopPrice)
strategy.exit("Long Stop", "Long Entry", stop=longTrailingStop)
strategy.exit("Long Stop", "Add Long", stop=longTrailingStop)
if (strategy.position_size < 0)
shortTrailingStop := math.min(shortTrailingStop[1], shortStopPrice)
strategy.exit("Short Stop", "Short Entry", stop=shortTrailingStop)
strategy.exit("Short Stop", "Add Short", stop=shortTrailingStop)