Sistem perdagangan ini disebut
Sistem ini mengikuti langkah-langkah berikut:
Menghitung ATR 14 periode dan menormalkannya dengan membagi dengan harga penutupan.
Menghitung 100 hari Simple Moving Average (SMA) dari ATR normalisasi.
Hitung rasio ATR normal terhadap SMA 100 hari.
Tentukan target leverage berdasarkan kebalikan dari rasio (2/ratio).
Hitung jumlah target perdagangan terbuka dengan mengalikan target leverage dengan 5.
Target plot dan perdagangan terbuka saat ini pada grafik.
Periksa apakah ada kesempatan untuk membeli (jika perdagangan terbuka saat ini kurang dari target) atau menutup perdagangan (jika perdagangan terbuka saat ini lebih besar dari target ditambah 1).
Jika kesempatan untuk membeli, buka perdagangan panjang dan tambahkan ke array openTrades.
Jika kesempatan untuk menutup perdagangan dan perdagangan ada di array openTrades, tutup perdagangan terbaru dengan mengacu array dan hapus dari array.
Sistem ini bertujuan untuk menangkap tren dengan secara dinamis menyesuaikan perdagangan terbuka dan leverage berdasarkan volatilitas pasar.
Keuntungan dari strategi ini:
Penyesuaian dinamis leverage dan ukuran posisi berdasarkan perubahan volatilitas pasar dapat secara efektif mengelola risiko.
Menggunakan indikator ATR untuk menghitung ukuran posisi target, yang mencerminkan volatilitas pasar, adalah pilihan yang wajar.
Piramida dengan beberapa posisi dapat mendapatkan keuntungan dari tren.
Mencatat setiap perdagangan dalam array memungkinkan kontrol eksplisit pembukaan dan penutupan perdagangan.
Strategi ini memiliki beberapa parameter dan mudah diterapkan dan dioperasikan.
Logika jelas dan struktur kode terorganisir dengan baik untuk pengoptimalan dan iterasi yang mudah.
Risiko dari strategi ini:
ATR hanya mencerminkan volatilitas masa lalu, tidak dapat memprediksi perubahan masa depan, dapat menyebabkan penyesuaian leverage yang tidak tepat.
Pyramiding dapat mengumpulkan kerugian ketika tren berbalik.
Array recording hanya berlaku untuk operasi open/close sederhana.
Target leverage dan pengaturan ukuran posisi perlu disesuaikan berdasarkan spesifikasi simbol daripada parameter tetap.
Mengandalkan indikator tunggal dapat menyesatkan. indikator volatilitas lain atau algoritma pembelajaran mesin dapat meningkatkan ketahanan.
Strategi dapat dioptimalkan dalam aspek berikut:
Tambahkan stop loss untuk secara aktif memotong kerugian saat mencapai level stop loss.
Mengoptimalkan parameter indikator dengan menguji periode ATR yang berbeda.
Cobalah strategi entri lain seperti entri kuantitas tetap dan uji hasilnya.
Tambahkan metrik volatilitas lainnya seperti Bollinger Bands WIDTH, KD, RSI dll untuk penggunaan kombinasi.
Gunakan model pembelajaran mesin untuk memprediksi volatilitas alih-alih kelancaran sederhana.
Mengoptimalkan perhitungan ukuran posisi, seperti menggunakan kelipatan ATR atau fungsi volatilitas.
Catat lebih banyak detail entri seperti harga masuk, waktu dll untuk analisis strategi dan optimasi.
Tambahkan pengoptimalan parameter untuk pengoptimalan otomatis untuk menemukan set parameter optimal.
Strategi ini secara dinamis menyesuaikan leverage dan ukuran posisi berdasarkan ATR untuk mengelola eksposur risiko selama tren, dan memiliki keuntungan tertentu. tetapi tantangan seperti kesulitan pengaturan parameter dan ruang pengoptimalan indikator tetap untuk perbaikan lebih lanjut. secara keseluruhan, logika jelas dan mudah dioperasikan dan dioptimalkan, layak untuk penelitian dan aplikasi yang mendalam.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L - Risk Adjusted Leveraging", overlay=false, pyramiding=25, default_qty_value=20, initial_capital=20000, default_qty_type=strategy.percent_of_equity,process_orders_on_close=false, calc_on_every_tick=false) atr = ta.atr(14) / close avg_atr = ta.sma(atr,100) ratio = atr / avg_atr targetLeverage = 2 / ratio targetOpentrades = 5 * targetLeverage plot(targetOpentrades) plot(strategy.opentrades) isBuy = strategy.opentrades < targetOpentrades isClose = strategy.opentrades > targetOpentrades + 1 var string[] openTrades = array.new_string(0) if(isBuy) strategy.entry("Buy"+str.tostring(array.size(openTrades)),strategy.long) array.push(openTrades, "Buy" + str.tostring(array.size(openTrades))) if(isClose) if array.size(openTrades) > 0 strategy.close(array.get(openTrades, array.size(openTrades) - 1)) array.pop(openTrades)