
Strategi pelacakan tren yang didasarkan pada rentang fluktuasi harga adalah sistem perdagangan kuantitatif yang secara cerdik menggabungkan indikator teknis seperti SMA, STDEV, dan rata-rata true range (ATR) untuk mengidentifikasi tren pasar dan perdagangan dengan membangun fluktuasi atas dan bawah. Strategi sinyal ini berpusat pada membangun saluran harga yang dinamis melalui kombinasi antara rata-rata dan fluktuasi, dan menggunakan ATR untuk menyesuaikan level stop loss secara dinamis, sambil memberikan opsi stop loss yang fleksibel, sehingga strategi dapat tetap sesuai dalam lingkungan pasar yang berbeda.
Mekanisme operasi strategi ini didasarkan pada langkah-langkah kunci berikut:
Perhitungan filter jangkauanPertama, strategi menggunakan rata-rata bergerak sederhana (SMA) sebagai garis tengah, lalu menghitung band gelombang atas dan bawah berdasarkan perbedaan standar harga. Jalur atas = SMA + kali × perbedaan standar; Jalur bawah = SMA - kali × perbedaan standar. Metode ini dapat menyesuaikan lebar saluran sesuai dengan dinamika pasar yang berfluktuasi.
Identifikasi trenKetika harga menembus tren, strategi mengidentifikasi sebagai tren naik; Ketika harga menembus tren, strategi mengidentifikasi sebagai tren turun. Metode penilaian tren ini membantu memfilter kebisingan pasar.
Syarat masuk: Bila harga terjatuh dari bawah dan tidak berada dalam tren naik, memicu sinyal multi; Bila harga terjatuh dari atas dan tidak berada dalam tren turun, memicu sinyal short.
Strategi KeluarStrategi ini menawarkan dua pilihan pertandingan:
Manajemen PosisiStrategi: Menggunakan metode manajemen posisi berdasarkan persentase ekuitas akun, secara default menggunakan 100% ekuitas akun untuk perdagangan.
Keunggulan utama dari strategi ini adalah kemampuan untuk beradaptasi, dengan kombinasi garis rata-rata, standar deviasi, dan indikator ATR, memungkinkan parameter strategi untuk menyesuaikan secara otomatis dengan volatilitas pasar, sehingga dapat mempertahankan kinerja yang baik di berbagai lingkungan pasar.
Setelah analisis kode yang mendalam, strategi ini memiliki keuntungan yang signifikan sebagai berikut:
AdaptifStrategi menggunakan standar deviasi untuk menyesuaikan lebar saluran secara dinamis, sehingga dapat secara otomatis beradaptasi di pasar yang berfluktuasi tinggi dan rendah, menghindari kegagalan strategi parameter tetap dalam lingkungan pasar yang berbeda.
Peningkatan manajemen risikoStrategi ini mengintegrasikan mekanisme stop loss dinamis berbasis ATR, sehingga pengendalian risiko lebih tepat dan masuk akal, dan stop loss dan stop loss level akan secara otomatis disesuaikan dengan perubahan volatilitas pasar.
Kualitas sinyal perdagangan yang tinggiDengan mekanisme pengakuan tren, strategi dapat secara efektif memfilter sinyal breakout palsu dan meningkatkan tingkat keberhasilan perdagangan. Sinyal perdagangan hanya akan dipicu jika ada breakout di atas / bawah rel dan tidak ada di tren sebelumnya.
Strategi Keluar yang FleksibelBerikan opsi stop loss dan tail loss yang tetap, trader dapat memilih cara keluar yang sesuai sesuai dengan preferensi risiko dan penilaian pasar mereka. Tail stop loss sangat cocok untuk menangkap tren besar.
Membantu pengambilan keputusan secara visualStrategi memberikan visibilitas yang jelas tentang trajectory up and down, garis rata-rata, dan level stop loss, membantu pedagang untuk memahami secara intuitif kondisi pasar dan kinerja strategi.
Parameter Optimasi Ruang BesarStrategi ini menyediakan beberapa parameter yang dapat disesuaikan, termasuk panjang filter jangkauan, kelipatan, panjang ATR, dan stop loss kelipatan, yang memungkinkan pedagang untuk melakukan optimasi yang disesuaikan dengan pasar dan jenis perdagangan yang berbeda.
Meskipun strategi ini dirancang dengan baik, ada risiko potensial berikut:
Parameter SensitivitasPerforma strategi sangat sensitif terhadap pengaturan parameter, terutama panjang dan kelipatan filter jangkauan. Parameter yang tidak tepat dapat menyebabkan overtrading atau kehilangan tren penting. Solusinya adalah mencari kombinasi parameter yang stabil dengan melakukan retesting dalam berbagai kondisi pasar.
Risiko pembalikan trenUntuk mengurangi risiko ini, sinyal konfirmasi dapat dipertimbangkan dalam kombinasi dengan indikator pembalikan tren lainnya.
Pasar rendah tidak efektifStrategi ini mungkin menghasilkan lebih banyak sinyal palsu di pasar yang stabil atau rendah. Di lingkungan pasar seperti itu, disarankan untuk meningkatkan filter multiplier secara tepat atau menambahkan kondisi penyaringan perdagangan tambahan.
Risiko Stop Loss SlipDalam periode kurangnya likuiditas atau volatilitas pasar, harga eksekusi stop loss yang sebenarnya mungkin berbeda dengan yang diharapkan. Anda dapat menyesuaikan jarak stop loss dengan menetapkan tingkat stop loss yang lebih konservatif atau mempertimbangkan faktor volatilitas pasar.
Risiko over-optimisasiKarena strategi menawarkan beberapa parameter yang dapat dioptimalkan, ada risiko over-fit dengan data historis. Solusi adalah menggunakan pengujian luar sampel dan pengujian ke depan untuk memverifikasi kehandalan strategi.
Berdasarkan analisis kode, strategi ini dapat dioptimalkan dari beberapa arah:
Bergabung dengan Marketplace Filter: Mekanisme penilaian lingkungan pasar tambahan dapat diperkenalkan, seperti indikator volatilitas (seperti nilai relatif VIX atau ATR) untuk menentukan kombinasi parameter mana yang sesuai untuk pasar saat ini, dan bahkan parameter penyesuaian dinamis dapat dipertimbangkan dalam lingkungan pasar yang berbeda. Ini dilakukan karena parameter optimal dalam lingkungan pasar yang berbeda seringkali memiliki perbedaan yang signifikan.
Meningkatkan mekanisme pengakuan tren: Dapat digabungkan dengan indikator tren lainnya (seperti ADX, MACD, dll) sebagai konfirmasi tambahan, meningkatkan akurasi penilaian tren. Dengan demikian, dapat secara efektif mengurangi sinyal palsu di pasar yang bergoyang.
Pengelolaan dana yang optimalStrategi saat ini adalah menggunakan persentase ekuitas akun tetap untuk berdagang, dan manajemen posisi yang didasarkan pada volatilitas atau disesuaikan dengan risiko, seperti rumus Kelly atau metode skor tetap, dapat dipertimbangkan untuk mendapatkan kurva pertumbuhan modal yang lebih baik.
Tambahkan filter waktuAnda dapat menambahkan filter waktu perdagangan untuk menghindari saat-saat di mana pasar berfluktuasi besar atau kurang likuid, seperti saat rilis data keuangan atau saat pasar terbuka / ditutup.
Analisis multi-frame waktu: Menggunakan mekanisme konfirmasi multi-frame, misalnya dengan meminta arah tren pada frame waktu yang lebih besar untuk konsisten dengan arah perdagangan, untuk meningkatkan tingkat keberhasilan perdagangan. Metode ini dapat secara efektif menyaring sinyal kemenangan rendah dari tren besar yang berbalik.
Optimalkan mekanisme keluarAnda dapat mempertimbangkan untuk menyesuaikan rasio stop loss yang dinamis dengan kondisi pasar yang berfluktuasi, atau menambahkan beberapa mekanisme pengambilan keuntungan (misalnya, keuntungan bertahap) untuk tidak melewatkan situasi besar sambil mempertahankan tingkat kemenangan yang tinggi.
Strategi pelacakan tren ATR dinamis adalah sistem perdagangan kuantitatif yang terstruktur, logis, dan jelas yang mengidentifikasi tren melalui saluran dinamis yang dibangun melalui garis rata-rata dan standar deviasi, dan digabungkan dengan ATR untuk mencapai manajemen risiko yang tepat. Karakteristik utama dari strategi ini adalah mekanisme kontrol risiko yang beradaptasi dan disempurnakan, yang memungkinkannya untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar.
Strategi ini memiliki potensi untuk mendapatkan keuntungan yang stabil di pasar yang sedang tren dengan pengaturan parameter yang masuk akal dan langkah-langkah optimasi yang mungkin. Namun, ketika menggunakan strategi ini, pedagang harus memperhatikan stabilitas optimasi parameter, menghindari over-fitting, dan melakukan penyesuaian yang ditargetkan sesuai dengan karakteristik varietas perdagangan yang sebenarnya.
Secara keseluruhan, ini adalah kerangka strategi kuantitatif yang dirancang dengan baik dan berfungsi dengan baik, cocok untuk diterapkan dan dioptimalkan lebih lanjut di pasar nyata oleh pedagang dengan pengalaman perdagangan kuantitatif.
/*backtest
start: 2024-05-26 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Optimized Range Filter Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
// Optimization Inputs
length = input.int(14, title="Range Filter Length", minval=5, maxval=50)
mult = input.float(2.0, title="Range Filter Multiplier", minval=0.5, maxval=3, step=0.1)
atrLength = input.int(14, title="ATR Length", minval=5, maxval=20)
tpMultiplier = input.float(1.5, title="Take Profit Multiplier", minval=0.5, maxval=3, step=0.1)
slMultiplier = input.float(1.0, title="Stop Loss Multiplier", minval=0.5, maxval=3, step=0.1)
useTrailing = input.bool(true, title="Use Trailing Stop")
trailOffset = input.float(1.5, title="Trailing Stop Offset (ATR Multiplier)", minval=0.5, maxval=3, step=0.1)
// Range Filter Calculation
src = close
smooth = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = smooth + dev
lower = smooth - dev
// ATR Calculation
atr = ta.atr(atrLength)
// Trend Direction
var bool uptrend = na
var bool downtrend = na
uptrend := close > upper and (na(uptrend[1]) or uptrend[1])
downtrend := close < lower and (na(downtrend[1]) or downtrend[1])
// Entry Conditions
longCondition = ta.crossover(close, upper) and not uptrend[1]
shortCondition = ta.crossunder(close, lower) and not downtrend[1]
// Exit Conditions
takeProfitLong = strategy.position_avg_price + (atr * tpMultiplier)
stopLossLong = strategy.position_avg_price - (atr * slMultiplier)
takeProfitShort = strategy.position_avg_price - (atr * tpMultiplier)
stopLossShort = strategy.position_avg_price + (atr * slMultiplier)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long)
if not useTrailing
strategy.exit("Exit Long", "Long", limit=takeProfitLong, stop=stopLossLong)
else
strategy.exit("Trail Long", "Long", trail_points=atr * trailOffset, trail_offset=atr * trailOffset)
if (shortCondition)
strategy.entry("Short", strategy.short)
if not useTrailing
strategy.exit("Exit Short", "Short", limit=takeProfitShort, stop=stopLossShort)
else
strategy.exit("Trail Short", "Short", trail_points=atr * trailOffset, trail_offset=atr * trailOffset)
// Plotting
plot(upper, color=color.new(color.green, 50), title="Upper Range")
plot(lower, color=color.new(color.red, 50), title="Lower Range")
plot(smooth, color=color.new(color.blue, 50), title="Smooth Line")
// Plot TP/SL levels when in position
plot(strategy.position_size > 0 and not useTrailing ? takeProfitLong : na, color=color.green, style=plot.style_circles, linewidth=2, title="TP Long")
plot(strategy.position_size > 0 and not useTrailing ? stopLossLong : na, color=color.red, style=plot.style_circles, linewidth=2, title="SL Long")
plot(strategy.position_size < 0 and not useTrailing ? takeProfitShort : na, color=color.red, style=plot.style_circles, linewidth=2, title="TP Short")
plot(strategy.position_size < 0 and not useTrailing ? stopLossShort : na, color=color.green, style=plot.style_circles, linewidth=2, title="SL Short")