Sumber daya yang dimuat... Pemuatan...

Indeks Volatilitas Dinamis (VIDYA) dengan Strategi Pembalikan Trend-Following ATR

Penulis:ChaoZhang, Tanggal: 2024-12-13 10:21:14
Tag:ATRCMOSMAMA

img

Gambaran umum

Strategi ini adalah sistem perdagangan yang mengikuti tren berdasarkan Variable Index Dynamic Average (VIDYA), dikombinasikan dengan band ATR untuk meningkatkan kemampuan identifikasi tren dan manajemen risiko. Strategi secara dinamis menyesuaikan tanggapannya terhadap volatilitas pasar sambil mempertahankan kemampuan mengikuti tren dan menangkap sinyal pembalikan pasar. Sistem ini menggunakan VIDYA sebagai indikator inti dan band ATR untuk penempatan stop-loss dinamis.

Prinsip Strategi

Prinsip utamanya terletak pada memanfaatkan karakteristik dinamis VIDYA untuk identifikasi tren. VIDYA menyesuaikan bobot rata-rata bergerak melalui perhitungan momentum, memberikan sensitivitas yang berbeda dalam berbagai kondisi pasar:

  1. Menggunakan Chande Momentum Oscillator (CMO) untuk menghitung momentum harga
  2. Menghitung faktor adaptatif alfa berdasarkan momentum
  3. Membangun band volatilitas dinamis menggunakan ATR
  4. Membuat sinyal panjang pada jalur atas dan sinyal pendek pada jalur bawah
  5. Menggunakan logika pembalikan posisi - sinyal baru menutup posisi yang ada dan membuka yang baru

Keuntungan Strategi

  1. Adaptasi Dinamis yang Kuat: VIDYA secara otomatis menyesuaikan parameter berdasarkan volatilitas pasar
  2. Pengendalian Risiko Komprehensif: Menggunakan pita dinamis ATR untuk penyesuaian stop loss
  3. Sinyal yang jelas: Menggunakan logika pembalikan tren dengan sinyal perdagangan yang berbeda
  4. Visualisasi yang sangat baik: Membedakan tren naik dan turun melalui kode warna
  5. Parameter Fleksibel: Parameter utama dapat dioptimalkan untuk karakteristik pasar yang berbeda

Risiko Strategi

  1. Risiko pasar berbelit-belit: rentan terhadap sinyal palsu di pasar yang berbeda-beda
  2. Dampak slippage: Perdagangan dua arah pada setiap sinyal meningkatkan eksposur slippage
  3. Risiko Pengelolaan Uang: Ukuran posisi tetap dapat menyebabkan kerugian yang signifikan di pasar yang tidak stabil
  4. Sensitivitas Parameter: Kinerja strategi sangat tergantung pada parameter VIDYA dan ATR
  5. Dependensi dari Lingkungan Pasar: Berkinerja baik di pasar tren tetapi mungkin berjuang di pasar lain

Arahan Optimasi

  1. Tambahkan Filter Tren: Melakukan penilaian tren jangka panjang untuk menyaring sinyal di berbagai pasar
  2. Meningkatkan Manajemen Posisi: Memperkenalkan ukuran posisi dinamis berdasarkan volatilitas pasar
  3. Enhance Entry Logic: Tambahkan konfirmasi indikator teknis untuk meningkatkan keandalan sinyal
  4. Memperbaiki Mekanisme Stop-Loss: Pertimbangkan stop trailing atau stop dinamis berbasis volatilitas
  5. Sertakan Filter Waktu: Sesuaikan parameter strategi berdasarkan karakteristik periode waktu yang berbeda

Ringkasan

Strategi ini mencapai pelacakan tren dan pengendalian risiko yang dinamis dengan menggabungkan VIDYA dan ATR. Kekuatannya utama terletak pada beradaptasi dengan volatilitas pasar sambil mempertahankan kemampuan mengikuti tren dan menangkap peluang pembalikan. Meskipun dapat menghadapi risiko dalam kondisi pasar tertentu, strategi ini mempertahankan nilai praktis melalui optimasi parameter yang tepat dan langkah-langkah manajemen risiko. Investor harus fokus pada pengendalian risiko, pengaturan parameter yang tepat, dan penyesuaian strategi yang tepat waktu berdasarkan kondisi pasar dalam perdagangan langsung.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PakunFX

//@version=5
strategy("VIDYA Auto-Trading(Reversal Logic)", overlay=true)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
int   vidya_length   = input.int(10, "VIDYA Length")       
int   vidya_momentum = input.int(20, "VIDYA Momentum")    
float band_distance  = input.float(2, "Distance factor for upper/lower bands", step = 0.1)  
float source         = input.source(close, "Source")    
color up_trend_color   = input(#17dfad, "+")  
color down_trend_color = input(#dd326b, "-")  
bool  shadow           = input.bool(true, "Shadow") 

// Define VIDYA (Variable Index Dynamic Average) function
vidya_calc(src, vidya_length, vidya_momentum) =>
    float momentum         = ta.change(src)
    float sum_pos_momentum = math.sum((momentum >= 0) ? momentum : 0.0, vidya_momentum)
    float sum_neg_momentum = math.sum((momentum >= 0) ? 0.0 : -momentum, vidya_momentum)
    float abs_cmo          = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum))
    float alpha            = 2 / (vidya_length + 1)
    var float vidya_value  = 0.0
    vidya_value           := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1])

    ta.sma(vidya_value, 15)

// Calculate VIDYA
float vidya_value = vidya_calc(source, vidya_length, vidya_momentum)

// Calculate upper and lower bands
float atr_value = ta.atr(200)
float upper_band = vidya_value + atr_value * band_distance
float lower_band = vidya_value - atr_value * band_distance

// Detect trend direction
bool is_trend_up = na
if ta.crossover(source, upper_band)
    is_trend_up := true
if ta.crossunder(source, lower_band)
    is_trend_up := false

// Smooth the trend line
float smoothed_value = na
if is_trend_up
    smoothed_value := lower_band
if not is_trend_up
    smoothed_value := upper_band

// Detect trend change
bool trend_cross_up = ta.crossover(source, upper_band)
bool trend_cross_down = ta.crossunder(source, lower_band)

// ENTRY & EXIT ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
// Long logic: Enter long when down arrow appears and exit when up arrow appears
if trend_cross_up
    strategy.close("Sell")  // Close short position if any
    strategy.entry("Buy", strategy.long)

if trend_cross_down
    strategy.close("Buy")  // Close long position if any
    strategy.entry("Sell", strategy.short)

Berkaitan

Lebih banyak