
Ringkasan
Strategi ini adalah sistem perdagangan kuantitatif dengan pengembalian rendah yang menggabungkan filter rentang (Range Filter) dan amplitudo rata-rata riil (Average True Rate (ATR)). Ini mengidentifikasi arah tren melalui filter rentang, dan menggunakan ATR untuk secara dinamis menyesuaikan ukuran posisi dan mengatur trailing loss, secara efektif mengendalikan risiko. Strategi ini meminta harga untuk menerobos dua siklus berturut-turut dari filter rentang sebelum mengkonfirmasi tren, dan mekanisme konfirmasi ganda ini secara efektif mengurangi terobosan palsu.
Prinsip Strategi
Prinsip inti dari strategi ini adalah kombinasi antara pengidentifikasi tren filter ruang lingkup dan sistem manajemen risiko ATR:
Perhitungan filter jangkauan:
- Pertama, menghitung harga rata-rata bergerak sederhana (SMA) sebagai garis tengah.
- Kemudian menghitung rata-rata bergerak dari harga dengan nilai absolut deviasi dari garis tengah, sebagai rentang fluktuasi
- Garis atas = garis tengah + kisaran fluktuasi
- Garis bawah = garis tengah - kisaran fluktuasi
Kondisi konfirmasi tren:
- Uptrend: Dua Periode Berturut-turut, Harga Terakhir di Atas Rel
- Tren penurunan: Harga ditutup di bawah rel untuk dua siklus berturut-turut
- Mekanisme konfirmasi ganda ini mengurangi sinyal palsu
ATR posisi dinamis:
- Menggunakan ATR untuk mengukur volatilitas pasar saat ini
- Rumus perhitungan posisi: (Akun modal * persentase risiko) / (ATR * nilai poin)
- Semakin besar volatilitas pasar, semakin kecil posisi; Semakin kecil volatilitas, semakin besar posisi
Hilangnya ATR:
- Stop loss multihead disetel ke: harga saat ini - (ATR * kelipatan)
- Stop loss headset adalah: harga saat ini + (ATR * kali)
- Ketika harga bergerak ke arah yang menguntungkan, stop loss juga akan bergerak dan mengunci keuntungan.
Keunggulan Strategis
Adaptif:
- Filter rentang secara otomatis beradaptasi dengan karakteristik fluktuasi dari siklus pasar yang berbeda
- Mekanisme penyesuaian posisi ATR memungkinkan strategi untuk secara otomatis beradaptasi dengan lingkungan yang bergejolak
Pengendalian risiko yang baik:
- Persentase risiko tetap per transaksi (default 1%)
- Ukuran posisi disesuaikan dengan dinamika pasar yang berfluktuasi
- Mekanisme Stop Loss Efektif Mengunci Keuntungan dan Membatasi Kerugian
Kualitas sinyal tinggi:
- Mekanisme double confirmation ((dua siklus terobosan berturut-turut) mengurangi sinyal palsu
- Spektrum Filter Efektif Menyaring Kebisingan Pasar dan Mengidentifikasi Tren Sejati
Karakteristik penarikan rendah:
- Trailing Stop Machine membatasi kerugian maksimum dalam satu transaksi
- Pengaturan parameter risiko konservatif (risiko 1%) mengurangi overall withdrawal
- Posisi dinamis secara otomatis berkurang selama fluktuasi tinggi, mengurangi risiko
Transparan dan dapat disesuaikan:
- Parameter kebijakan yang jelas dan logis
- Parameter dapat disesuaikan dengan pasar yang berbeda dan preferensi risiko pribadi
Risiko Strategis
Pasar horizontal tidak berjalan dengan baik:
- Dalam pasar konsolidasi yang tidak berorientasi, sinyal-sinyal palsu yang sering terjadi dapat dihasilkan
- Solusi: Anda dapat menambahkan filter tren tambahan atau meningkatkan jumlah siklus konfirmasi
Risiko terbalik dengan cepat:
- Stop loss yang mengikuti mungkin tidak akan muncul pada waktu yang tepat ketika tren yang kuat tiba-tiba berbalik
- Solusi: Dapat digabungkan dengan indikator peningkatan fluktuasi atau pengurangan jarak trailing stop loss
Parameter Sensitivitas:
- Siklus filter rentang dan ATR multipel pilihan memiliki pengaruh besar pada kinerja strategi
- Solusinya: melakukan retrospeksi historis yang memadai untuk menemukan kombinasi parameter yang kuat
Risiko kerugian berkelanjutan:
- Bahkan jika setiap transaksi memiliki risiko yang terkontrol dengan baik, transaksi kerugian berturut-turut dapat menyebabkan penarikan yang lebih besar.
- Solusi: Atur batas kerugian maksimum berturut-turut atau tambahkan filter lingkungan pasar
Titik geser dan dampak biaya:
- Dalam perdagangan langsung, slippage dan biaya dapat secara signifikan mempengaruhi kinerja strategi
- Solusi: Menambahkan biaya yang wajar dan estimasi slippoint dalam pengukuran ulang, untuk menjaga ruang untung yang cukup
Arah optimasi strategi
Menambahkan filter lingkungan pasar:
- Indikator volatilitas (seperti Bollinger Bandwidth) dapat diperkenalkan untuk mengidentifikasi kondisi pasar
- Menghentikan perdagangan atau menyesuaikan parameter di pasar dengan volatilitas rendah atau di pasar yang sedang stabil
- Hal ini dapat mengurangi sinyal palsu di pasar horizontal dan meningkatkan tingkat kemenangan secara keseluruhan.
Optimalkan siklus filter:
- Pertimbangkan untuk menggunakan siklus adaptif dan bukan siklus tetap
- Siklus filter rentang dapat disesuaikan secara otomatis berdasarkan fluktuasi pasar
- Ini akan membuat strategi lebih baik untuk beradaptasi dengan fase pasar yang berbeda.
Pengenalan multiple timeframe validasi:
- Meningkatkan kondisi konfirmasi tren pada kerangka waktu yang lebih tinggi
- Perdagangan hanya di arah tren utama, hindari perdagangan berlawanan
- Ini akan meningkatkan kualitas sinyal dan tingkat kemenangan secara signifikan.
Dinamika penyesuaian ATR:
- Faktor ATR yang diikuti oleh stop loss yang disesuaikan secara dinamis berdasarkan karakteristik fluktuasi pasar
- Penggunaan multiplier yang lebih kecil di pasar yang kurang fluktuatif, menggunakan multiplier yang lebih besar di pasar yang lebih fluktuatif
- Ini akan meningkatkan efektivitas dan fleksibilitas stop loss.
Menambahkan mekanisme keluar berdasarkan waktu:
- Tetapkan batas waktu maksimum
- Jika harga tidak bergerak ke arah yang diharapkan dalam jangka waktu tertentu, maka penutupan obligasi
- Hal ini dapat mencegah uang Anda terkurung dalam transaksi yang tidak valid untuk waktu yang lama.
Meringkaskan
Strategi penyaring jangkauan konfirmasi ganda yang menggabungkan posisi ATR dinamis dengan sistem trailing stop adalah strategi perdagangan kuantitatif yang berfokus pada pengendalian risiko. Ini mengidentifikasi arah tren melalui filter jangkauan, meminta dua siklus berturut-turut untuk menerobos untuk mengkonfirmasi sinyal, menggunakan ATR untuk secara dinamis menyesuaikan ukuran posisi dan mengatur trailing stop, secara efektif mengontrol risiko setiap perdagangan dalam persentase yang telah ditetapkan. Keuntungan utama dari strategi ini adalah kemampuan beradaptasi yang kuat dan kemampuan pengendalian risiko yang luar biasa, terutama cocok untuk pasar yang berfluktuasi besar tetapi dengan tren yang jelas.
Kode Sumber Strategi
/*backtest
start: 2025-02-01 00:00:00
end: 2025-05-25 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Range Filter + ATR Strategy (Low Drawdown)", overlay=true,
pyramiding=0, default_qty_type=strategy.percent_of_equity,
default_qty_value=100, commission_type=strategy.commission.percent,
commission_value=0.1, initial_capital=10000)
// Input parameters
rangePeriod = input.int(14, title="Range Filter Period")
atrPeriod = input.int(14, title="ATR Period")
riskPercent = input.float(1.0, title="Risk % per Trade", minval=0.1, maxval=5)
useATRSizing = input(true, title="Use ATR Position Sizing")
trailATR = input(1.5, title="Trailing Stop ATR Multiple")
// Calculate Range Filter
src = close
smooth = ta.sma(src, rangePeriod)
filter = ta.sma(math.abs(src - smooth), rangePeriod)
upper = smooth + filter
lower = smooth - filter
// Calculate ATR
atr = ta.atr(atrPeriod)
// Trend direction
upTrend = src > upper and src[1] > upper[1]
downTrend = src < lower and src[1] < lower[1]
// Position sizing based on ATR
atrPositionSize = (strategy.equity * riskPercent/100) / (atr * syminfo.pointvalue)
// Strategy logic
if (upTrend)
strategy.entry("Long", strategy.long, qty=useATRSizing ? atrPositionSize : na)
if (downTrend)
strategy.entry("Short", strategy.short, qty=useATRSizing ? atrPositionSize : na)
// Corrected trailing stop using trail_offset instead of trail_points
if (strategy.position_size > 0)
strategy.exit("Long Exit", "Long", trail_price=na, trail_offset=trailATR * atr)
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", trail_price=na, trail_offset=trailATR * atr)
// Plotting
plot(upper, color=color.green, title="Upper Range")
plot(lower, color=color.red, title="Lower Range")
plot(smooth, color=color.blue, title="Smooth Line")