Volatiliti dan Volum Indeks Komposit Trend Mengikuti Strategi

SMA FIBONACCI volatility VOLUME TREND FOLLOWING REVERSAL PATTERN
Tarikh penciptaan: 2025-05-26 13:20:39 Akhirnya diubah suai: 2025-05-26 13:20:39
Salin: 0 Bilangan klik: 378
2
fokus pada
319
Pengikut

Volatiliti dan Volum Indeks Komposit Trend Mengikuti Strategi Volatiliti dan Volum Indeks Komposit Trend Mengikuti Strategi

Gambaran keseluruhan

Strategi pengesanan trend dalam indeks komposit kadar turun naik dan volumes adalah sistem perdagangan kuantitatif berdasarkan hubungan antara jumlah dagangan dan kadar turun naik harga. Strategi ini menangkap perubahan dalam jumlah pasaran dengan mengira hubungan antara jumlah dagangan dan turun naik harga, mewujudkan indeks komposit, dan menggabungkan arah tren yang disahkan oleh garis rata-rata jangka pendek dan jangka panjang.

Prinsip Strategi

Logik pengiraan teras strategi ini merangkumi beberapa langkah penting:

  1. Analisis jumlah transaksi: Menggunakan purata bergerak sederhana ((SMA) untuk mengira jumlah perdagangan rata-rata ((vol_ma), dan membandingkan jumlah perdagangan semasa dengan nilai rata-rata, untuk mendapatkan peratusan ((vol_percent = volume / vol_ma * 100) }}.

  2. Pengiraan kadar turun naik: Kuantifikasi kadar turun naik harga dengan mengira nisbah K-line momentum kepada harga penutupan ((volatility = (high - low) / close * 100) }}

  3. Pembinaan indeks kompositPeratusan jumlah dagangan kalikan dengan kadar turun naik untuk mencipta indeks kompleks ((volatility_index = volume * volatility), yang mencerminkan kedua-dua kecacatan jumlah dagangan dan turun naik harga.

  4. Sistem linear: Mengira purata bergerak jangka pendek (index_short_ma) dan jangka panjang (index_long_ma) untuk indeks komposit, dan menggunakan perkalian pembesaran kepekaan (index_magnification) untuk meningkatkan kepekaan isyarat.

  5. Dinamika penurunan nilai: Membina nilai penapis dinamik untuk penapisan bunyi pasaran dengan faktor pembesaran had rata-rata jangka panjang ((index_threshold_magnification)).

  6. Pengiktirafan bentuk: Dengan menganalisis garis K akar lookback_bars, untuk mengesan corak kebalikan tertentu, seperti isyarat yang dicetuskan apabila terdapat trend perubahan tertentu dalam indeks kadar turun naik dan bentuk harga sesuai dengan keadaan kebalikan.

  7. Penjanaan isyarat

    • Melakukan banyak isyarat: dihasilkan apabila indeks jangka pendek melintasi garis rata-rata jangka panjang, dan indeks komposit menembusi nilai terhad dinamik, sambil memenuhi syarat bentuk terbalik.
    • Isyarat kosong: dihasilkan apabila indeks jangka pendek menembusi garis purata jangka panjang di bawah garis purata, dan indeks komposit jatuh di bawah nilai terendah dinamik, sambil memenuhi syarat bentuk terbalik.
    • Mod pembalikan: Apabila strategi pembalikan diaktifkan, isyarat short boleh ditukar menjadi isyarat long untuk operasi kenaikan saham dalam keadaan trend.
  8. Pengurusan RisikoBerdasarkan nisbah Fibonacci, set stop_take_profit dan stop_loss secara automatik, dikira berdasarkan jangkauan bearish, untuk memastikan risiko berbanding keuntungan ditetapkan dengan wajar.

Kelebihan Strategik

  1. Kelebihan indeks kompositDengan menggabungkan jumlah dagangan dengan kadar turun naik, strategi ini dapat menangkap titik-titik pasaran yang tidak aktif secara lebih komprehensif, mengelakkan penyesatan yang mungkin disebabkan oleh satu petunjuk.

  2. Kebolehan beradaptasi: Menggunakan mekanisme penurunan nilai dinamik ((index_threshold_magnification_auto), membolehkan strategi menyesuaikan diri dengan ciri-ciri turun naik dalam keadaan pasaran yang berbeza, mengurangkan isyarat salah.

  3. Mekanisme pengesahan bentuk: Analisis mundur bentuk K-bar dengan parameter lookback_bars, meningkatkan kebolehpercayaan isyarat, bukan hanya bergantung pada penyambungan indikator, tetapi juga memerlukan kerjasama bentuk harga, mengurangkan risiko penembusan palsu secara ketara.

  4. Mod strategi yang fleksibelPertukaran antara trend track dan strategi pembalikan melalui parameter reversal_s membolehkan sistem untuk menyesuaikan diri dengan keadaan pasaran yang berbeza dan keperluan perdagangan.

  5. Pengurusan risiko sistematikMekanisme Stop Loss Berasaskan Tahap Fibonacci, yang secara automatik menyesuaikan parameter risiko mengikut ketinggian turun naik pasaran sebenar, mengelakkan ketidakcocokan yang mungkin disebabkan oleh titik tetap.

  6. Visualisasi IntuitifStrategi: menyediakan paparan visual pada carta pilar dan kurva penunjuk, dan isyarat perdagangan yang jelas dan intuitif, memudahkan pedagang memahami keadaan pasaran dan asas keputusan.

  7. Parameter yang boleh disesuaikanIa menyediakan pelbagai parameter yang boleh disesuaikan (vol_length, index_short_length, index_long_length, dan lain-lain), yang membolehkan peniaga menyesuaikan tetapan mengikut ciri-ciri pasaran yang berbeza dan pilihan risiko peribadi.

Risiko Strategik

  1. Risiko sensitiviti parameterStrategi ini bergantung pada pelbagai parameter seperti panjang garis purata jumlah perdagangan (vol_length), panjang garis purata indeks (index_short_length, index_long_length) dan lain-lain. Pilihan parameter yang tidak betul boleh menyebabkan kecocokan berlebihan atau kelewatan isyarat. Penyelesaian: melakukan pengoptimuman sejarah, mencari kombinasi parameter yang stabil dalam keadaan pasaran yang berbeza, dan mengelakkan pengoptimuman data yang berlebihan untuk tempoh tertentu.

  2. Risiko penembusan palsuWalaupun strategi ini mempunyai mekanisme penapisan penurunan nilai yang dinamik, ia masih boleh berlaku dalam pasaran yang bergelombang tinggi, di mana indeks dapat kembali dengan cepat selepas pecah nilai rendah untuk sementara waktu. Penyelesaian: Tambah tempoh pengesahan isyarat, atau gabungan dengan petunjuk teknikal lain (seperti RSI, MACD) untuk pengesahan berganda, meningkatkan kebolehpercayaan isyarat.

  3. Had Had Had Had Had Had Had HadPengaturan Hentian Kerosakan Berasaskan Fibonacci mungkin tidak cukup untuk melindungi dana anda dalam pasaran yang sangat bergolak. Penyelesaian: Tambah had peratusan hentian maksimum, atau sesuaikan parameter stopLossFib secara dinamik mengikut kadar turun naik sejarah, memastikan kawalan risiko dalam julat yang boleh diterima.

  4. Risiko Kesesatan Perkiraan TrendTanda-tanda persilangan garis rata mungkin berlaku dengan kerap dalam keadaan pasaran yang stabil atau bergolak, yang menyebabkan perdagangan berlebihan. Penyelesaian: memperkenalkan penunjuk kekuatan trend (seperti ADX) untuk menapis isyarat pasaran yang lemah, atau meningkatkan syarat untuk sekatan frekuensi perdagangan.

  5. Risiko kecairanStrategi ini sensitif terhadap perubahan jumlah dagangan dan boleh menimbulkan isyarat yang salah atau menghadapi masalah slippage dalam pasaran yang kurang cair. Penyelesaian: Tambah syarat penurunan nilai minimum untuk mengelakkan perdagangan dalam keadaan likuiditi rendah, atau sesuaikan sensitiviti indeks (index_magnification) untuk mengurangkan tindak balas terhadap perubahan kecil.

  6. Risiko di luar tempoh pengkajianStrategi ini telah menunjukkan prestasi yang baik pada data sejarah, tetapi perubahan keadaan pasaran pada masa akan datang boleh menyebabkan penurunan prestasi. Penyelesaian: Menggunakan kaedah ujian luar sampel dan ujian ke hadapan, menilai semula dan menyesuaikan parameter strategi secara berkala, dan mengekalkan kebolehlakuan strategi.

Arah pengoptimuman strategi

  1. Mekanisme pengesahan pelbagai kitaran masaStrategi semasa hanya berjalan dalam satu kitaran masa, boleh memperkenalkan kerangka analisis kitaran masa yang lebih tinggi, yang memerlukan arah trend dalam kitaran masa yang lebih tinggi untuk menyesuaikan dengan isyarat perdagangan, meningkatkan kadar kemenangan. Ini dapat mengelakkan operasi terbalik dalam trend besar dan mengurangkan risiko “dihalangi”.

  2. Pemprosesan keadaan pasaran: Menambah mekanisme klasifikasi keadaan pasaran ((kedai trend / pasaran goyah), menyesuaikan parameter strategi atau peraturan perdagangan secara automatik mengikut keadaan pasaran yang berbeza. Sebagai contoh, keadaan pasaran dapat dinilai melalui ATR atau indikator kadar turun naik, meningkatkan keperluan nilai rendah dalam persekitaran turun naik yang tinggi, dan kelonggaran dalam persekitaran turun naik yang rendah.

  3. Parameter pengoptimuman pembelajaran mesin: memperkenalkan algoritma pembelajaran mesin untuk mengoptimumkan parameter strategi secara dinamik, seperti mencari kombinasi parameter yang optimum menggunakan algoritma genetik atau kaedah pembelajaran penguatan, supaya strategi dapat menyesuaikan diri dengan perubahan pasaran.

  4. Penunjuk emosi bersepaduMengintegrasikan penunjuk sentimen pasaran (seperti VIX, aliran dana, dan lain-lain) ke dalam logik penjanaan isyarat, meningkatkan kebolehan pra-pemeriksaan untuk titik perubahan pasaran. Sentimen pasaran sering mendahului perubahan harga, dan gabungan penunjuk sentimen dapat menangkap isyarat perubahan pasaran lebih awal.

  5. Pengoptimuman strategi penangguhanMekanisme Hentikan Batch: Mekanisme Hentikan Batch yang dilaksanakan untuk mendapatkan keuntungan mengikut urutan Fibonacci, yang dapat mengunci sebahagian keuntungan dan membolehkan kedudukan yang tersisa menikmati keuntungan trend sepenuhnya. Sebagai contoh, kedudukan yang boleh ditetapkan pada tahap 0.382, 0.618, 1.0 dan 1.618 yang meratakan peratusan kedudukan masing-masing.

  6. Pertimbangan kos urus niagaStrategi semasa tidak mengambil kira kos urus niaga, dan boleh dimasukkan ke dalam logik pengiraan kos urus niaga, untuk memastikan keuntungan yang dijangkakan dari isyarat melebihi kos urus niaga, dan mengelakkan kos yang disebabkan oleh perdagangan kecil yang kerap.

  7. Pengurusan kedudukan risikoMenambah modul pengurusan kedudukan dinamik, yang secara automatik mengira saiz kedudukan optimum berdasarkan kadar turun naik sejarah, kekuatan isyarat semasa dan ketahanan risiko akaun, untuk pengurusan dana yang lebih saintifik.

  8. Penapisan relevansiDalam senario perdagangan pelbagai aset, tambah modul analisis relevansi untuk mengelakkan pembentukan kedudukan yang sama pada beberapa aset yang sangat berkaitan dan mengurangkan risiko sistemik.

ringkaskan

Strategi untuk mengesan trend dalam indeks komposit volatility and turnover telah membina sistem perdagangan kuantitatif yang mampu menangkap perubahan dalam dinamik pasaran dengan menggabungkan jumlah dagangan dan indikator volatiliti harga secara inovatif. Strategi ini berprestasi dalam mengenal pasti titik-titik perubahan dan pengesahan trend yang berpotensi, sambil menyediakan mekanisme pelaksanaan perdagangan yang fleksibel melalui pengurusan stop-loss Fibonacci dan model pembalikan pilihan.

Kelebihan utama strategi adalah sistem indikator komprehensif dan adaptasi dinamik, yang dapat mengenal pasti peluang perdagangan berkualiti tinggi dalam pelbagai persekitaran pasaran. Walau bagaimanapun, pengguna perlu berjaga-jaga terhadap risiko yang berpotensi seperti sensitiviti parameter, penembusan palsu dan kesalahan penghakiman trend, dan dapat meningkatkan lagi kestabilan dan adaptasi strategi melalui pengesahan pelbagai kitaran masa, klasifikasi keadaan pasaran, pengoptimuman pembelajaran mesin.

Dengan parameter yang ditetapkan dengan bijak dan pengoptimuman yang berterusan, strategi ini boleh menjadi senjata yang kuat dalam toolkit peniaga, terutama untuk mencari titik-titik perubahan pasaran yang tidak biasa di mana jumlah dagangan dan turun naik harga berkolaborasi, membantu peniaga menangkap peluang perdagangan utama di pasaran yang berubah-ubah yang kompleks.

Kod sumber strategi
/*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)