
Strategi volatilitas dan volatilitas tren silang adalah sistem perdagangan kuantitatif yang didasarkan pada market timing untuk membuat keputusan perdagangan dengan mengidentifikasi titik-titik perubahan pasar dari volatilitas rendah ke volatilitas tinggi. Strategi ini menggabungkan dua indikator kunci: volatilitas indikator ((VMI) dan kapasitas pusat harga berbobot ((VWPC)). VMI mengukur akselerasi volatilitas, digunakan untuk masuk ke dalam pasar ketika pasar beralih dari fase tenang ke fase aktif, dan keluar ketika volatilitas mencapai titik puncak kekacauan; dan VWPC berfungsi sebagai filter tren berdasarkan volume perdagangan, untuk menentukan arah keseluruhan pasar melalui harga khas.
Prinsip inti dari strategi ini adalah memanfaatkan siklus perubahan volatilitas pasar dan arah tren untuk membuat keputusan perdagangan.
Indikator Variabel Mobilitas (VMI) dihitung:
Pusat Harga Berat Kapasitas (VWPC):
Implementasi Logika Transaksi dalam Dua Tahap:
Strategi memungkinkan untuk mengkonfigurasi arah perdagangan ((hanya melakukan lebih, hanya melakukan lebih atau perdagangan dua arah), dan mengoptimalkan parameter untuk menyesuaikan dengan lingkungan pasar yang berbeda.
Analisis lebih dalam terhadap kode strategi ini dapat disimpulkan sebagai berikut:
Pemilihan waktu perdagangan berdasarkan siklus pasarStrategi ini menggunakan indikator VMI untuk mengidentifikasi titik-titik transisi dari pasar yang berfluktuasi rendah ke pasar yang berfluktuasi tinggi, yang seringkali merupakan awal dari pergerakan harga baru, yang membantu masuk pada awal tren.
Mengkonfirmasi tren yang terkait dengan volume transaksiVWPC memberikan indikator tren yang lebih representatif daripada Simple Moving Average, mengurangi sinyal palsu dengan menambahkan bobot volume transaksi.
Syarat masuk dan keluar yang jelasStrategi memiliki logika masuk yang jelas ((fluktuasi mulai meningkat) dan logika keluar ((fluktuasi mencapai batas), menghindari penilaian subjektif.
Sangat mudah beradaptasiDengan optimasi parameter, strategi ini dapat disesuaikan dengan lingkungan pasar dan varietas perdagangan yang berbeda. Khususnya, zona tenang dan zona kekacauan di VMI dapat disesuaikan dengan karakteristik pasar.
Integrasi Manajemen RisikoStrategi ini memiliki manajemen posisi (default 15% dari akun) dan pembatasan perdagangan terbalik (pyramiding = 0), yang membantu mengendalikan risiko.
Bantuan visualStrategi: Garis tren VWPC dan sinyal masuk/keluar dipetakan pada grafik untuk membantu trader memahami keadaan pasar dan logika strategi secara langsung.
Efisiensi komputasi tinggi: Dengan menggunakan fungsi built-in seperti ta.rma dan ta.barssince, strategi ini memiliki efisiensi komputasi yang lebih tinggi, cocok untuk aplikasi perdagangan real-time.
Meskipun ada banyak keuntungan dari strategi ini, ada juga risiko potensial:
Risiko terobosan palsu yang tidak stabil: Pasar mungkin mengalami kenaikan volatilitas singkat kemudian kembali dengan cepat, menyebabkan sinyal yang salah. Solusinya adalah dengan menyesuaikan nilai terendah zona tenang VMI atau meningkatkan kondisi konfirmasi.
Penundaan penilaian tren:VWPC sebagai indikator tren mungkin memiliki keterlambatan tertentu, dan mungkin tidak bereaksi tepat waktu ketika pasar berubah secara tiba-tiba. Pertimbangan dapat dilakukan untuk penilaian tambahan dalam kombinasi dengan indikator momentum jangka pendek.
Parameter SensitivitasPerforma strategi sangat sensitif terhadap pengaturan parameter (khususnya panjang VMI dan threshold), dan mungkin memerlukan kombinasi parameter yang berbeda untuk situasi pasar yang berbeda.
Ketidakpastian frekuensi transaksiKarena strategi didasarkan pada perubahan volatilitas, pada fase pasar yang berbeda, frekuensi sinyal perdagangan dapat sangat bervariasi, mempengaruhi tingkat keuntungan keseluruhan dan kontrol penarikan.
Dampak biaya transaksi: Meskipun strategi mempertimbangkan komisi perdagangan ((0.075%), dalam perdagangan aktual, slippage dan biaya transaksi lainnya dapat mempengaruhi kinerja strategi lebih lanjut.
Bergantung pada data volume transaksiIndikator VWPC bergantung pada data volume transaksi yang mungkin tidak akurat atau tidak dapat diandalkan di beberapa pasar atau periode waktu, yang mempengaruhi akurasi standar.
Dengan menganalisis kode secara mendalam, kita dapat mengusulkan arah optimasi sebagai berikut:
Menambahkan filter volatilitasDengan adanya mekanisme penyesuaian nilai tren dinamis berdasarkan volatilitas historis, nilai tren zona tenang dan zona kacau VMI dapat secara otomatis disesuaikan dengan tingkat fluktuasi pasar secara keseluruhan, meningkatkan fleksibilitas strategi.
Meningkatkan mekanisme pengakuan tren: Dapat menambah konfirmasi tren multi-frame berdasarkan VWPC, atau dikombinasikan dengan indikator tren lainnya (seperti indikator arah ADX), meningkatkan akurasi penilaian tren.
Pengoptimalan mekanisme pertandinganStrategi saat ini hanya berlaku ketika VMI mencapai zona kekacauan, Anda dapat mempertimbangkan untuk menambahkan stop loss dan target tingkat keuntungan, atau strategi stop loss dinamis berdasarkan volatilitas untuk mengendalikan risiko dan mengunci keuntungan dengan lebih baik.
Meningkatkan filter volume transaksi: Anda dapat menambahkan syarat konfirmasi volume transaksi, hanya masuk jika volume transaksi meningkat, menghindari perdagangan di lingkungan likuiditas rendah.
Tambahkan filter waktu: Beberapa pasar mungkin memiliki pola volatilitas pada periode waktu tertentu, dapat menambahkan kondisi penyaringan waktu, menghindari periode perdagangan yang diketahui tidak efisien.
Parameter AdaptifSebuah mekanisme yang dapat dikembangkan untuk menyesuaikan parameter secara otomatis berdasarkan kinerja pasar baru-baru ini, sehingga strategi dapat beradaptasi dengan lebih baik terhadap perubahan pasar.
Pengelolaan dana yang optimalHal ini memungkinkan manajemen posisi dinamis berdasarkan volatilitas, menyesuaikan skala perdagangan dalam berbagai lingkungan fluktuasi, menyeimbangkan risiko dan keuntungan.
Strategi lintas tren bertimbangan volume dan kapasitas adalah sistem perdagangan kuantitatif yang menggabungkan analisis volatilitas dan pelacakan tren. Ini masuk melalui indikator VMI untuk menangkap pasar dari titik transisi yang tenang ke yang aktif, dan keluar saat volatilitas mencapai puncaknya; dan menggunakan indikator VWPC untuk memastikan arah perdagangan sesuai dengan tren keseluruhan.
Namun, strategi ini juga menghadapi tantangan seperti false breaks yang berfluktuasi, penundaan penilaian tren, dan sensitivitas parameter. Strategi ini dapat ditingkatkan lebih lanjut dengan cara meningkatkan kehandalan dan fleksibilitas strategi dengan memperkenalkan penyesuaian tren yang dinamis, meningkatkan mekanisme konfirmasi tren, mengoptimalkan logika keluar, dan mewujudkan parameter adaptasi.
Pada akhirnya, strategi ini memberikan kerangka perdagangan yang didasarkan pada pasar yang bergejolak dan siklus fluktuasi yang cocok untuk diterapkan di berbagai lingkungan pasar, namun pedagang masih perlu mengoptimalkan parameter dan menyesuaikan strategi sesuai dengan varietas perdagangan dan karakteristik pasar tertentu untuk mencapai efek optimal.
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TiamatCrypto
//@version=5
strategy("Market Entropy Strategy V2.5",
overlay=true,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=15, // Slightly more aggressive allocation
commission_type=strategy.commission.percent,
commission_value=0.075,
pyramiding=0) // Allow only one trade in one direction
// --- General Settings ---
trade_direction = input.string("Both", "Trade Direction", options=["Long", "Short", "Both"], group="General Settings")
// --- Inputs for Optimization ---
// VMI Settings
vmi_length = input.int(14, "VMI Length", group="VMI Settings")
atr_period = input.int(10, "ATR Period for VMI", group="VMI Settings")
vmi_calm_zone = input.int(25, "VMI Calm Zone (Entry Level)", group="VMI Settings", step=5)
vmi_chaos_zone = input.int(85, "VMI Chaos Zone (Exit Level)", group="VMI Settings", step=5)
// VWPC Settings
vwpc_length = input.int(50, "VWPC Filter Length", group="VWPC Trend Filter")
setup_lookback = input.int(10, "How far to look for 'Armed' (candles)", group="Entry Logic")
// --- Indicator #1: Volatility Momentum Index (VMI) ---
current_atr = ta.atr(atr_period)
atr_change = current_atr - current_atr[1]
up_accel = atr_change > 0 ? atr_change : 0
down_accel = atr_change < 0 ? -atr_change : 0
avg_up_accel = ta.rma(up_accel, vmi_length)
avg_down_accel = ta.rma(down_accel, vmi_length)
rs_vmi = avg_down_accel == 0 ? 0 : avg_up_accel / avg_down_accel
vmi = avg_down_accel == 0 ? 100 : avg_up_accel == 0 ? 0 : 100 - (100 / (1 + rs_vmi))
// --- Indicator #2: Volume-Weighted Price Center (VWPC) ---
// Function to calculate VWPC
f_vwpc(length) =>
sum_price_volume = 0.0
sum_volume = 0.0
// We use the typical price, which better represents the candle
typical_price = (high + low + close) / 3
for i = 0 to length - 1
sum_price_volume += typical_price[i] * nz(volume[i])
sum_volume += nz(volume[i])
sum_volume == 0 ? typical_price : sum_price_volume / sum_volume
vwpc = f_vwpc(vwpc_length)
// --- Strategy Logic ---
// Trend Definition
is_uptrend = close > vwpc
is_downtrend = close < vwpc
// Phase 1: "Armed" Condition (Setup)
// We check if VMI WAS in the calm zone in the recent past
was_calm_recently = ta.barssince(vmi < vmi_calm_zone) < setup_lookback
// Phase 2: "Fire" Condition (Trigger)
// VMI is currently crossing the Calm Zone upwards
trigger_fire = ta.crossover(vmi, vmi_calm_zone)
// Combination for ENTRY
buy_signal = is_uptrend and was_calm_recently and trigger_fire
sell_signal = is_downtrend and was_calm_recently and trigger_fire
// Condition for EXIT ("Exhaustion")
// The same condition applies for both long and short - peak chaos
exit_signal = ta.crossover(vmi, vmi_chaos_zone)
// --- Executing Orders ---
// Entry Conditions
allow_longs = trade_direction == "Long" or trade_direction == "Both"
allow_shorts = trade_direction == "Short" or trade_direction == "Both"
// Entries
if (buy_signal and allow_longs)
strategy.entry("Buy", strategy.long, comment="Enter LONG (Armed->Fire)")
if (sell_signal and allow_shorts)
strategy.entry("Sell", strategy.short, comment="Enter SHORT (Armed->Fire)")
// Exits
if (strategy.position_size > 0 and exit_signal)
strategy.close("Buy", comment="Exit LONG (Chaos)")
if (strategy.position_size < 0 and exit_signal)
strategy.close("Sell", comment="Exit SHORT (Chaos)")
// --- Plotting on the chart for visual inspection ---
plot(vwpc, "VWPC Center of Gravity", color=color.new(color.yellow, 0), linewidth=2)
plotshape(buy_signal and allow_longs, "LONG Entry", shape.labelup, location.belowbar, color=color.new(color.aqua, 0), text="ENTRY ↑", textcolor=color.white, size=size.small)
plotshape(sell_signal and allow_shorts, "SHORT Entry", shape.labeldown, location.abovebar, color=color.new(color.fuchsia, 0), text="ENTRY ↓", textcolor=color.white, size=size.small)
// Plotting the exit signal for a better overview
exit_marker_y_pos = strategy.position_size > 0 ? high : low
plotshape(series=(exit_signal and strategy.position_size != 0 ? exit_marker_y_pos : na), title="Exit", style=shape.xcross, location=location.absolute, color=color.new(color.orange, 0), size=size.tiny, text="END")