
Strategi pelacakan tren indeks kompleks volatilitas dan volume transaksi adalah sistem perdagangan kuantitatif yang didasarkan pada hubungan volume transaksi dengan volatilitas harga. Strategi ini menangkap perubahan dinamika pasar dengan menghitung hubungan volume transaksi dengan fluktuasi harga, menciptakan indeks kompleks, dan menggabungkan arah tren yang dikonfirmasi oleh garis rata-rata lintas jangka pendek dan jangka panjang.
Logika komputasi inti dari strategi ini terdiri dari beberapa langkah kunci sebagai berikut:
Analisis volume transaksi: Menggunakan Simple Moving Average (SMA) untuk menghitung volume transaksi rata-rata (vol_ma) dan membandingkan volume transaksi saat ini dengan nilai rata-rata untuk mendapatkan persentase (vol_percent = volume / vol_ma * 100) [2].
Perhitungan volatilitas: Kuantitatifkan volatilitas harga dengan menghitung rasio K-line momentum terhadap harga penutupan (volatility = (high - low) / close * 100).
Komposisi indeksPerkalian persentase volume transaksi dengan volatilitas menciptakan indikator komposit (volatility_index = volume * volatility) yang mencerminkan ketidaknormalan ganda volume transaksi dan fluktuasi harga.
Sistem linierUntuk indeks kompleks, perhitungan rata-rata bergerak jangka pendek (index_short_ma) dan jangka panjang (index_long_ma) dan penggunaan perkalian perbesaran sensitivitas (index_magnification) untuk meningkatkan sensitivitas sinyal.
Dinamika penurunan: Membangun nilai filter dinamis untuk memfilter kebisingan pasar dengan mengkalikan faktor pembesaran ambang batas (index_threshold_magnification) dengan rata-rata jangka panjang.
Identifikasi bentuk: Dengan menganalisis garis K akar lookback_bars, untuk mendeteksi pola pola pembalikan tertentu, seperti sinyal yang dipicu ketika ada perubahan tren tertentu dalam indeks volatilitas dan pola harga sesuai dengan kondisi pembalikan.
Pembuatan sinyal:
Manajemen RisikoBerdasarkan rasio Fibonacci, stop loss dan take profit diatur secara otomatis, dan berskala bearish range, untuk memastikan rasio risiko-keuntungan yang masuk akal.
Keuntungan dari KomposisiDengan menggabungkan volume perdagangan dengan volatilitas, strategi ini dapat menangkap titik-titik yang tidak aktif secara lebih komprehensif, menghindari kesalahan yang mungkin disebabkan oleh indikator tunggal.
Adaptasi Dinamis: Menggunakan mekanisme penurunan nilai dinamis ((index_threshold_magnification_auto), memungkinkan strategi untuk beradaptasi dengan karakteristik fluktuasi dalam kondisi pasar yang berbeda, mengurangi sinyal palsu.
Mekanisme konfirmasi bentuk: Analisis mundur bentuk garis K dengan parameter lookback_bars, meningkatkan keandalan sinyal, tidak hanya bergantung pada crossover indikator, tetapi juga meminta koordinasi bentuk harga, secara signifikan mengurangi risiko penembusan palsu.
Model strategi yang fleksibel: Dengan parameter reversal_s dapat beralih antara trend tracking dan reversal strategi, memungkinkan sistem untuk beradaptasi dengan lingkungan pasar yang berbeda dan kebutuhan perdagangan.
Manajemen risiko sistematisSistem Stop Loss yang didasarkan pada Fibonacci level, dapat secara otomatis menyesuaikan parameter risiko sesuai dengan tingkat fluktuasi pasar yang sebenarnya, menghindari ketidakcocokan yang mungkin ditimbulkan oleh posisi tetap.
Visualisasi IntuitifStrategi menyediakan tampilan visual dari grafik volume perdagangan dan kurva indikator, sinyal perdagangan jelas dan intuitif, memudahkan pedagang untuk memahami keadaan pasar dan dasar keputusan.
Parameter yang dapat disesuaikan: menyediakan beberapa parameter yang dapat disesuaikan (vol_length, index_short_length, index_long_length, dll), memungkinkan pedagang untuk menyesuaikan pengaturan sesuai dengan karakteristik pasar yang berbeda dan preferensi risiko pribadi.
Risiko sensitivitas parameterStrategi ini bergantung pada beberapa pengaturan parameter, seperti volume rata-rata panjang (vol_length), indeks rata-rata panjang (index_short_length, index_long_length), dan lain-lain. Pilihan parameter yang tidak tepat dapat menyebabkan overfitting atau keterlambatan sinyal. Solusinya: melakukan optimasi retrospeksi historis, menemukan kombinasi parameter yang stabil dalam berbagai kondisi pasar, dan menghindari overoptimasi data periode tertentu.
Risiko Penembusan PalsuMeskipun strategi ini memiliki mekanisme penyaringan penurunan nilai yang dinamis, namun dalam pasar yang sangat bergejolak, mungkin terjadi penurunan indeks yang cepat setelah penembusan nilai yang singkat. Solusi: Meningkatkan siklus konfirmasi sinyal, atau kombinasi dengan indikator teknis lainnya (seperti RSI, MACD) untuk konfirmasi ganda, meningkatkan keandalan sinyal.
Stop loss yang tidak sesuai dengan risikoHal ini dikarenakan banyaknya orang yang menggunakan sistem Fibonacci sebagai dasar untuk menentukan nilai tukar mata uang. Solusi: Tambahkan batas maksimum stop loss ratio, atau menyesuaikan parameter stopLossFib secara dinamis sesuai dengan volatilitas historis, memastikan kontrol risiko dalam kisaran yang dapat diterima.
Risiko kesalahan penilaian trenDalam situasi pasar yang stabil atau bergejolak, sinyal persilangan garis rata mungkin sering terjadi, yang menyebabkan overtrading. Solusi: memperkenalkan indikator kekuatan tren (seperti ADX) untuk memfilter sinyal pasar tren yang lemah, atau meningkatkan frekuensi pembatasan perdagangan.
Risiko likuiditasStrategi ini sensitif terhadap perubahan volume transaksi yang dapat menyebabkan kesalahan sinyal atau slippage di pasar yang kurang likuid. Solusi: Tambahkan kondisi penurunan volume transaksi minimum, menghindari perdagangan di lingkungan likuiditas rendah, atau menyesuaikan sensitivitas indeks (index_magnification) untuk mengurangi respons terhadap fluktuasi kecil.
Risiko di luar periode pengamatanStrategi ini bekerja dengan baik pada data historis, tetapi perubahan kondisi pasar di masa depan dapat menyebabkan penurunan kinerja. Solusi: Menggunakan tes luar sampel dan metode pengujian ke depan, evaluasi ulang dan penyesuaian parameter kebijakan secara berkala, menjaga fleksibilitas kebijakan.
Mekanisme konfirmasi multi-periodeStrategi saat ini hanya berjalan dalam satu periode waktu, dapat diperkenalkan dalam kerangka analisis periode waktu multi, yang mengharuskan arah tren dalam periode waktu yang lebih tinggi sesuai dengan sinyal perdagangan, meningkatkan tingkat kemenangan. Hal ini dapat menghindari operasi terbalik pada tren besar, mengurangi risiko “dipencet”.
Pengolahan Klasifikasi Status Pasar: Menambahkan mekanisme klasifikasi kondisi pasar ((Trend market / volatility market), secara otomatis menyesuaikan parameter strategi atau aturan perdagangan sesuai dengan kondisi pasar yang berbeda. Sebagai contoh, kondisi pasar dapat dinilai melalui ATR atau indikator volatilitas, meningkatkan persyaratan margin dalam lingkungan volatilitas tinggi, dan kondisi pelepasan lingkungan volatilitas rendah.
Parameter pengoptimalan pembelajaran mesinIntroduksi algoritma pembelajaran mesin untuk mengoptimalkan parameter strategi secara dinamis, seperti mencari kombinasi parameter optimal menggunakan algoritma genetik atau metode pembelajaran penguatan, sehingga strategi dapat beradaptasi dengan perubahan pasar.
Integrasi indikator emosi: Mengintegrasikan indikator sentimen pasar (seperti VIX, aliran dana, dll) ke dalam logika pembuatan sinyal, meningkatkan kemampuan untuk memprediksi titik-titik perubahan pasar. Sentimen pasar sering mendahului perubahan harga, kombinasi dengan indikator sentimen dapat menangkap sinyal perubahan pasar lebih awal.
Optimalisasi strategi penangguhanImplementasi mekanisme batch-stop, yang menghasilkan keuntungan berdasarkan urutan Fibonacci, yang dapat mengunci sebagian dari keuntungan dan memungkinkan sisa posisi untuk menikmati keuntungan tren. Misalnya, posisi yang dapat diatur pada tingkat 0,382, 0,618, 1,0, 1,618 dan sebagian dari posisi kosong.
Pertimbangan biaya transaksiStrategi saat ini tidak memperhitungkan biaya transaksi, dapat dimasukkan ke dalam logika perhitungan biaya transaksi, memastikan bahwa sinyal menghasilkan keuntungan yang diharapkan melebihi biaya transaksi, dan menghindari penggoresan biaya yang disebabkan oleh perdagangan kecil yang sering terjadi.
Manajemen Posisi RisikoTambahkan modul manajemen posisi dinamis, yang secara otomatis menghitung ukuran posisi optimal berdasarkan volatilitas historis, kekuatan sinyal saat ini, dan toleransi risiko akun, untuk manajemen dana yang lebih ilmiah.
Filter relevansiDalam skenario perdagangan multi-aset, tambahkan modul analisis relevansi untuk menghindari posisi simetris pada beberapa aset yang sangat relevan secara bersamaan dan mengurangi risiko sistemik.
Strategi pelacakan tren indeks komposit volatilitas dan volume transaksi dengan menggabungkan volume transaksi dan indikator volatilitas harga secara inovatif untuk membangun sistem perdagangan kuantitatif yang mampu menangkap perubahan dinamika pasar. Strategi ini berkinerja baik dalam mengidentifikasi titik balik potensial dan konfirmasi tren, sementara memberikan mekanisme eksekusi perdagangan yang fleksibel melalui manajemen stop loss dan modus pembalikan opsional Fibonacci.
Keunggulan inti dari strategi adalah sistem indikator komprehensif dan adaptasi dinamis yang dapat mengidentifikasi peluang perdagangan berkualitas tinggi di berbagai lingkungan pasar. Namun, pengguna perlu waspada terhadap risiko potensial seperti sensitivitas parameter, terobosan palsu, dan kesalahan penilaian tren, dan dapat meningkatkan stabilitas dan adaptasi strategi lebih lanjut melalui konfirmasi multi-siklus waktu, klasifikasi status pasar, dan pengoptimalan pembelajaran mesin.
Dengan pengaturan parameter yang masuk akal dan pengoptimalan terus menerus, strategi ini dapat menjadi senjata yang kuat dalam toolkit pedagang, terutama cocok untuk mencari titik pivot pasar yang tidak biasa di mana volume perdagangan dan fluktuasi harga berkolaborasi, membantu pedagang untuk menangkap peluang perdagangan penting di pasar yang berubah-ubah dan kompleks.
/*backtest
start: 2024-05-26 00:00:00
end: 2025-05-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("Volume and Volatility Ratio Indicator-WODI", overlay=false)
// === 用户自定义参数 ===
vol_length = input(48, title="交易量均线长度") // 交易量均线长度
index_short_length = input(13, title="指数短均线长度") // 交易量均线长度
index_long_length = input(26, title="指数均线长度") // 交易量均线长度
index_magnification = input(2, title="指数均线敏感度") // 调整指数倍率
index_threshold_magnification = input(200, title="指数阈值百分比") // 交易量/波动率指数阈值
lookback_bars = input(3, title="K线形态检测长度") // 形态检测 K 线数量
reversal_s = input.bool(title = "反转策略", defval = false, group="Position")
stopLossFib = input.float(title="止损斐波那契", defval=0, options=[0, 0.127, 0.236, 0.382, 0.5, 0.618, 0.692, 0.786, 1, 1.272, 1.414, 1.618, 2.272, 2.414, 2.618, 3, 3.414, 3.618, 4, 4.236, 4.272, 4.414, 5], group="Position")
takeProfitFib = input.float(title="止盈斐波那契", defval=1.618, options=[0, 0.127, 0.236, 0.382, 0.5, 0.618, 0.692, 0.786, 1, 1.272, 1.414, 1.618, 2.272, 2.414, 2.618, 3, 3.414, 3.618, 4, 4.236, 4.272, 4.414, 5], group="Position")
// === 计算交易量均线 ===
vol_ma = ta.sma(volume, vol_length)
// === 计算当前交易量为平均交易量的百分比 ===
vol_percent = volume / vol_ma * 100
// === 计算波动率(当前 K 线振幅) ===
volatility = (high - low) / close * 100
// === 计算交易量/波动率指数 ===
new_module = ((volume*volume)/volatility) //新算法,不好用
volatility_index = volume*volatility //
// === 计算指数平均值,用平均值做触发阈值 ===
index_short_ma = ta.sma(volatility_index, index_short_length)
index_long_ma = ta.sma(volatility_index, index_long_length)
index_threshold_magnification_auto = index_long_ma * index_threshold_magnification /100
// === 计算前 lookback_bars 根 K 线的指数趋势 ===
is_reversal_pattern = false
is_reversal_pattern_s = false
for i = 1 to lookback_bars
if volatility_index[1] > volatility_index[2] and (volatility_index[1] > volatility_index[0] or volume[1] > volume[0])and close[i+1] > close[i] and close[1] < close[0] and volume > vol_ma and volatility_index > index_threshold_magnification_auto and ((open[1] - close[1] < close[1] - low[1]) or (open[0] - close[0] < close[0] - low[0]))
if i >= lookback_bars
is_reversal_pattern := true
else if i < lookback_bars
break
for i = 1 to lookback_bars
if volatility_index[1] > volatility_index[2] and (volatility_index[1] > volatility_index[0] or volume[1] > volume[0])and close[i+1] < close[i] and close[1] > close[0] and volume > vol_ma and volatility_index > index_threshold_magnification_auto and ((close[1] - open[1] < high[1] - close[1]) or (close[0] - open[0] < high[0] - close[0]))
if i >= lookback_bars
is_reversal_pattern_s := true
else if i < lookback_bars
break
// === 绘制指标 ===
//plot(vol_ma, color=color.rgb(158, 161, 170), linewidth = 1, title="交易量均线")
//plot(index_short_ma * index_magnification, color=color.gray, linewidth = 1, title="指数短均线")
//plot(index_long_ma * index_magnification, color=#2ad7f6, linewidth = 1, title="指数长均线")
plot(index_threshold_magnification_auto, color=color.rgb(238, 66, 193), linewidth = 1, title="波动率阈值")
// === 交易量柱状图(高亮大于均值的交易量) ===
bar_color = volume > vol_ma ? (is_reversal_pattern? #bc2af6 : (is_reversal_pattern_s? #f22a2a : color.rgb(77, 231, 255, 37))) : color.rgb(120, 123, 134, 70)
plot(volatility_index*2, style=plot.style_columns, color=bar_color, title="交易量柱状图")
plot(volume, style=plot.style_stepline, color=#00000055, title="交易量")
// === 反转做多策略 ===
var float stop_loss = na
var float take_profit = na
if is_reversal_pattern and (reversal_s ? strategy.position_size >= 0 : strategy.position_size <= 0)
bearish_low = low[1] < low[0]? low[1] : low [0]// 形态最低点
bearish_high = high[lookback_bars] > high[0] ? high[lookback_bars] : high[0]// 形态最高点
bearish_range = bearish_high - bearish_low // 形态振幅
// === 计算止损 (SL) 和止盈 (TP) ===
stop_loss := reversal_s ? bearish_high + (bearish_range * stopLossFib) : bearish_low - (bearish_range * stopLossFib) //止损斐波那契
take_profit := reversal_s ? bearish_high - (bearish_range * takeProfitFib) : bearish_low + (bearish_range * takeProfitFib) //止盈斐波那契
is_reversal_pattern := false
strategy.entry(reversal_s ? "short" : "Long", reversal_s ? strategy.short : strategy.long)
if is_reversal_pattern_s and (reversal_s ? strategy.position_size <= 0 : strategy.position_size >= 0)
bearish_low = low[lookback_bars] < low[0] ? low[lookback_bars] : low[0]// 形态低点
bearish_high = high[1] > high[0]? high[1] : high [0]// 形态高点
bearish_range = bearish_high - bearish_low // 形态振幅
// === 计算止损 (SL) 和止盈 (TP) ===
stop_loss := reversal_s ? bearish_low - (bearish_range * stopLossFib) : bearish_high + (bearish_range * stopLossFib) //止损斐波那契
take_profit := reversal_s ? bearish_low + (bearish_range * takeProfitFib) : bearish_high - (bearish_range * takeProfitFib) //止盈斐波那契
is_reversal_pattern_s := false
strategy.entry(reversal_s ? "Long" : "short", reversal_s ? strategy.long : strategy.short)
// === 止损 (SL) 和止盈 (TP) ===
if low[0] < stop_loss and strategy.position_size >= 0
strategy.close("Long", qty_percent = 100)
if high[0] > take_profit and strategy.position_size >= 0
strategy.close("Long", qty_percent = 100)
if high[0] > stop_loss and strategy.position_size <= 0
strategy.close("short", qty_percent = 100)
if low[0] < take_profit and strategy.position_size <= 0
strategy.close("short", qty_percent = 100)