Strategi ini adalah sistem perdagangan waktu dinamis berdasarkan volatilitas, menggabungkan fitur mengikuti tren dan manajemen risiko. Inti dari strategi ini menggunakan saluran volatilitas untuk mengidentifikasi perubahan tren pasar sambil menggabungkan mekanisme manajemen posisi dinamis berbasis ATR untuk mencapai kontrol yang tepat terhadap risiko perdagangan. Strategi ini sangat cocok untuk beroperasi di lingkungan pasar yang sangat volatile dan dapat menyesuaikan kepemilikan dengan volatilitas pasar.
Logika inti dari strategi ini didasarkan pada komponen utama berikut: 1. Perhitungan Saluran Volatilitas: Menggunakan indikator ATR (Average True Range) untuk mengukur volatilitas pasar dan membangun saluran volatilitas dinamis. Lebar saluran ditentukan oleh nilai ATR dan faktor pengganda, yang dapat disesuaikan secara fleksibel sesuai dengan karakteristik pasar. 2. Mekanisme Penentuan Tren: Menentukan arah tren melalui posisi relatif harga terhadap saluran volatilitas. Sistem Manajemen Posisi: Menghitung secara dinamis ukuran posisi berdasarkan modal awal dan risiko yang telah ditetapkan per perdagangan, dikombinasikan dengan jarak stop-loss real-time, memastikan eksposur risiko yang konsisten untuk setiap perdagangan. 4. Mekanisme Kontrol Risiko: Mengimplementasikan stop-loss dinamis berdasarkan saluran volatilitas, secara otomatis menutup posisi ketika harga mencapai level stop, dan memaksa penutupan posisi sebelum pasar ditutup untuk menghindari risiko overnight.
Ini adalah sistem perdagangan lengkap yang menggabungkan volatilitas, mengikuti tren, dan manajemen risiko. Strategi ini menangkap perubahan tren melalui saluran volatilitas sambil menggunakan metode manajemen modal ilmiah untuk mengendalikan risiko. Meskipun kinerja mungkin tidak optimal di berbagai pasar, melalui optimasi parameter yang tepat dan mekanisme penyaringan tambahan, strategi ini dapat beroperasi stabil di sebagian besar lingkungan pasar. Keuntungan inti dari strategi ini terletak pada kemampuan beradaptasi dan pengendalian risiko, menjadikannya cocok sebagai kerangka dasar untuk perluasan dan optimasi strategi jangka menengah hingga panjang.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BNF FUT 5 min Volatility Strategy", overlay=true) // Inputs length = input.int(20, "Length", minval=2) src = input.source(close, "Source") factor = input.float(2.0, "Multiplier", minval=0.25, step=0.25) initial_capital = input.float(100000, "Initial Capital ($)") risk_per_trade = input.float(1.0, "Risk per Trade (%)", minval=0.1, maxval=10.0) // Volatility Stop Function volStop(src, atrlen, atrfactor) => if not na(src) var max = src var min = src var uptrend = true var float stop = na atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr) max := math.max(max, src) min := math.min(min, src) stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] // Calculate Volatility Stop [vStop, uptrend] = volStop(src, length, factor) // Plot Volatility Stop plot(vStop, "Volatility Stop", style=plot.style_cross, color=uptrend ? #009688 : #F44336) // Risk Management and Position Sizing atr = ta.atr(length) stop_distance = math.abs(close - vStop) // Distance to stop level position_size = (initial_capital * (risk_per_trade / 100)) / stop_distance // Position size based on risk per trade position_size := math.max(position_size, 1) // Ensure minimum size of 1 // Strategy Logic if not na(vStop) if uptrend and not uptrend[1] // Transition to uptrend strategy.close("Short") strategy.entry("Long", strategy.long, qty=position_size) if not uptrend and uptrend[1] // Transition to downtrend strategy.close("Long") strategy.entry("Short", strategy.short, qty=position_size) // Exit on Stop Hit if strategy.position_size > 0 and low < vStop // Exit long if stop hit strategy.close("Long", comment="Stop Hit") if strategy.position_size < 0 and high > vStop // Exit short if stop hit strategy.close("Short", comment="Stop Hit") if (hour == 15 and minute == 15) strategy.close_all()