
Enhanced Dynamic Channel Breakout Trend Tracking Trading System adalah strategi perdagangan kuantitatif komprehensif yang didasarkan pada sistem perdagangan pirus klasik dan dioptimalkan secara modern melalui beberapa indikator teknis. Sistem ini terutama menggunakan saluran Donchian untuk mengidentifikasi harga yang terobosan, sementara menggabungkan garis rata-rata (SMA) untuk menilai arah tren pasar, indikator yang relatif lemah (RSI) untuk memfilter sinyal masuk ke arena, dan rata-rata gelombang nyata (ATR) untuk mengelola risiko dan ukuran posisi.
Strategi ini didasarkan pada beberapa indikator teknis utama:
Saluran Donchian: Menggunakan dua siklus yang berbeda dari saluran Dongxian, satu siklus yang lebih panjang ((default 15) digunakan untuk mengidentifikasi harga terobosan dan memicu sinyal masuk, satu siklus yang lebih pendek ((default 5) digunakan untuk menentukan titik keluar.
Mekanisme pengakuan tren: Menggunakan 200 siklus Simple Moving Average (SMA) sebagai filter tren, hanya dipertimbangkan jika harga berada di atas SMA dan dipertimbangkan jika harga berada di bawah SMA.
Filter RSI: Menggunakan indikator relatif kuat ((RSI) sebagai filter sekunder untuk mencegah masuk ke zona overbought atau oversold yang berlebihan, sehingga mengurangi risiko perdagangan berlawanan.
Manajemen Posisi DinamisPerhitungan berdasarkan ATR untuk menentukan ukuran posisi per transaksi, memastikan bahwa celah risiko tetap konsisten dalam berbagai lingkungan fluktuasi. Metode perhitungan yang tepat adalah dengan membagi dana risiko (((2%) dari dana akun dengan (((ATR dikalikan harga)).
Mekanisme Masuk Multi Unit: Ketika harga bergerak ke arah yang menguntungkan 0,5 kali ATR, posisi dapat ditingkatkan, dengan posisi maksimum 4 unit, membentuk struktur kenaikan posisi piramida.
Sistem Stop Loss DinamisStop loss yang ditetapkan berdasarkan ATR, dengan stop loss awal yang ditetapkan sebagai 2 kali jarak ATR dari harga masuk, dan dengan mekanisme tracking stop loss yang memungkinkan stop loss untuk disesuaikan dengan pergerakan harga ke arah yang menguntungkan.
Syarat masuknya adalah sebagai berikut:
Kondisi untuk keluar:
Filter multi-lapisan yang mengkonfirmasi trenDengan menggabungkan saluran Dongguan, Moving Average dan RSI, sebuah sistem penyaringan multi-lapisan dibuat, yang secara signifikan meningkatkan kualitas sinyal masuk dan mengurangi kerugian yang disebabkan oleh false breakout.
Manajemen Posisi AdaptifMetode perhitungan posisi berbasis ATR memungkinkan strategi untuk menyesuaikan ukuran posisi sesuai dengan dinamika volatilitas pasar, mengurangi posisi di lingkungan yang berfluktuasi tinggi, meningkatkan posisi di lingkungan yang berfluktuasi rendah, dan mencapai kontrol konsistensi risiko.
Mekanisme Pembentukan Gudang BerkelanjutanPeningkatan posisi piramida memungkinkan untuk meningkatkan posisi setelah konfirmasi tren, meningkatkan potensi keuntungan, sementara posisi awal lebih kecil, secara efektif mengendalikan risiko.
Perlindungan Stop Loss DinamisTracking stop loss berbasis ATR dapat menyesuaikan posisi stop loss sesuai dengan fluktuasi pasar yang sebenarnya, yang dapat secara efektif mencegah stop loss prematur dan melindungi keuntungan tepat waktu ketika tren berbalik.
Pengaturan parameter yang fleksibelStrategi ini menawarkan beberapa parameter yang dapat disesuaikan, termasuk siklus saluran Dongguan, siklus ATR, dan RSI threshold, yang memungkinkan pedagang untuk menyesuaikan dengan berbagai kondisi pasar dan preferensi risiko pribadi.
Aturan transaksi yang jelasKebijakan yang jelas dan sistematis, mengurangi penilaian subjektif dan pengaruh emosional, dan membantu menjaga disiplin perdagangan.
Performa Bursa BergoyangSebagai sistem pelacakan tren, strategi ini dapat menghasilkan sinyal palsu dan kerugian kecil yang sering terjadi di pasar yang bergoyang tanpa tren yang jelas, membentuk apa yang disebut “kerugian pivot”. Solusinya adalah dengan menambahkan filter lingkungan pasar tambahan, atau menghentikan perdagangan sementara ketika pasar yang bergoyang dikonfirmasi.
Titik geser dan risiko likuiditasDalam pasar cepat, terutama ketika unit tambahan ditambahkan, mungkin ada peningkatan slippage dan kekurangan likuiditas. Hal ini dapat diminimalkan dengan menetapkan batas slippage maksimum dan menghindari perdagangan pada saat likuiditas rendah.
Parameter yang terlalu dioptimalkanParameter yang terlalu dioptimalkan dapat menyebabkan strategi berkinerja baik pada data historis tetapi tidak bekerja dengan baik di lapangan. Disarankan untuk menggunakan verifikasi ke depan dan pengujian stabilitas untuk menilai kinerja strategi dalam pengaturan parameter yang berbeda.
Ketergantungan pada pasar tunggalAplikasi hanya pada satu pasar mungkin membuat strategi menghadapi risiko pasar tertentu. Anda dapat mempertimbangkan untuk menerapkan strategi ke beberapa pasar yang tidak terkait, membentuk portofolio multi-pasar, menyebarkan risiko.
Risiko Kejadian Luar BiasaKejadian pasar yang tidak terduga dapat menyebabkan harga melonjak tinggi, melampaui pengaturan stop loss, dan menyebabkan kerugian yang lebih besar dari yang diharapkan. Dampaknya dapat diminimalkan dengan menetapkan batas risiko maksimum dan menggunakan alat manajemen risiko lainnya seperti perlindungan opsi.
Kondisi pasar beradaptasi: Memperkenalkan mekanisme identifikasi kondisi pasar, memungkinkan strategi untuk membedakan pasar tren dan pasar bergolak, dan secara otomatis menyesuaikan parameter atau perilaku perdagangan sesuai dengan kondisi pasar yang berbeda. Anda dapat mempertimbangkan untuk menambahkan ADX (Indeks Arah Rata-rata) untuk mengukur kekuatan tren, atau menggunakan indikator volatilitas seperti Brin bandwidth untuk menilai kondisi pasar.
Analisis multi-frame waktu: Mengintegrasikan sinyal dengan siklus waktu yang lebih lama sebagai filter tambahan, misalnya hanya masuk jika arah tren garis matahari sesuai dengan arah tren garis jam, meningkatkan kualitas sinyal.
Meningkatkan strategi stop lossAnda dapat mencoba memperbaiki strategi stop loss berdasarkan metode seperti level resistensi dukungan, persentase volatilitas, atau faktor kemerosotan waktu, untuk membuat stop loss lebih fleksibel dan efektif. Terutama, pertimbangkan untuk mengatur tingkat stop loss yang berbeda untuk unit penambahan saham yang berbeda, untuk melindungi keuntungan dengan lebih baik.
Optimalkan strategi kenaikan: Mekanisme pegangan saat ini didasarkan pada ATR tetap, dan dapat dipertimbangkan untuk menyesuaikan kondisi pegangan secara dinamis sesuai dengan intensitas tren, lebih aktif dalam tren yang kuat dan lebih konservatif dalam tren yang lemah.
Integrasi model pembelajaran mesinIntroduksi algoritma pembelajaran mesin untuk memprediksi waktu masuk yang optimal atau pilihan parameter optimasi, misalnya menggunakan hutan acak atau mendukung mesin vektor untuk mengklasifikasikan berbagai indikator teknis untuk mengidentifikasi peluang perdagangan dengan probabilitas keberhasilan yang tinggi.
Meningkatkan mekanisme penyesuaian volatilitas: Mengatur parameter strategi secara otomatis ketika ada perubahan signifikan dalam volatilitas pasar, sehingga strategi dapat beradaptasi dengan lingkungan pasar yang berbeda. Misalnya, meningkatkan siklus saluran Dongxian dan ATR dalam lingkungan yang berfluktuasi tinggi, mengurangi sinyal yang menyesatkan.
Enhanced Dynamic Channel Breakout Trend Tracking Trading System adalah strategi perdagangan kuantitatif yang komprehensif yang menggabungkan konsep trend tracking klasik dengan indikator teknologi modern. Dengan memanfaatkan breakout identifikasi saluran Dongguan, menggabungkan sinyal penyaringan SMA dan RSI, serta manajemen posisi dan stop loss dinamis berbasis ATR, strategi ini secara signifikan meningkatkan kemampuan adaptasi dan kontrol risiko, sambil mempertahankan kesederhanaan dari sistem perdagangan original.
Strategi ini sangat cocok untuk pasar dengan tren jangka menengah dan panjang yang jelas, dengan filter sinyal bertingkat dan posisi bertahap, dapat secara efektif menangkap tren utama dan mengelola risiko. Meskipun mungkin tidak berkinerja baik di pasar yang bergoyang, strategi ini dapat ditingkatkan lebih lanjut dengan arah optimasi yang diusulkan, terutama dengan penyesuaian diri terhadap kondisi pasar dan analisis jangka waktu multi-frame.
Untuk trader kuantitatif, strategi ini memberikan kerangka kerja yang seimbang, yang mencakup sistem aturan yang jelas untuk implementasi sistematis, dengan ruang yang cukup untuk menyesuaikan parameter agar sesuai dengan preferensi risiko pribadi dan karakteristik pasar tertentu. Dengan pemantauan dan pengoptimalan yang berkelanjutan, strategi ini berpotensi menjadi alat pelacakan tren yang efektif 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)