Sumber dimuat naik... memuat...

Indeks Volatiliti Dinamik (VIDYA) dengan Strategi Pembalikan Trend-Following ATR

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

img

Ringkasan

Strategi ini adalah sistem perdagangan trend-mengikuti berdasarkan Purata Dinamik Indeks Berubah (VIDYA), digabungkan dengan jalur ATR untuk meningkatkan pengenalan trend dan keupayaan pengurusan risiko. Strategi ini secara dinamik menyesuaikan tindak balasnya terhadap turun naik pasaran sambil mengekalkan keupayaan trend-mengikuti dan menangkap isyarat pembalikan pasaran. Sistem ini menggunakan VIDYA sebagai penunjuk utamanya dan jalur ATR untuk penempatan stop-loss dinamik.

Prinsip Strategi

Prinsip terasnya terletak pada penggunaan ciri dinamik VIDYA untuk pengenalan trend. VIDYA menyesuaikan berat purata bergerak melalui pengiraan momentum, memberikan kepekaan yang berbeza dalam pelbagai keadaan pasaran:

  1. Menggunakan Chande Momentum Oscillator (CMO) untuk pengiraan momentum harga
  2. Mengira faktor penyesuaian alfa berdasarkan momentum
  3. Membina rentang turun naik dinamik menggunakan ATR
  4. Menghasilkan isyarat panjang pada pecah pita atas dan isyarat pendek pada pecah pita bawah
  5. Menggunakan logik pembalikan kedudukan - isyarat baru menutup kedudukan sedia ada dan membuka yang baru

Kelebihan Strategi

  1. Penyesuaian Dinamik yang Kuat: VIDYA menyesuaikan parameter secara automatik berdasarkan turun naik pasaran
  2. Kawalan Risiko Komprehensif: Menggunakan jalur dinamik ATR untuk penyesuaian stop-loss
  3. Isyarat yang jelas: Menggunakan logik pembalikan trend dengan isyarat perdagangan yang berbeza
  4. Visualisasi yang sangat baik: Membezakan trend menaik dan menurun melalui pengekodan warna
  5. Parameter fleksibel: Parameter utama boleh dioptimumkan untuk ciri pasaran yang berbeza

Risiko Strategi

  1. Risiko pasaran berbelit-belit: cenderung kepada isyarat palsu di pasaran yang berbeza
  2. Kesan slippage: Dagangan dua arah pada setiap isyarat meningkatkan pendedahan slippage
  3. Risiko Pengurusan Wang: Ukuran kedudukan tetap boleh membawa kepada kerugian yang ketara di pasaran yang tidak menentu
  4. Sensitiviti Parameter: Prestasi strategi sangat bergantung kepada parameter VIDYA dan ATR
  5. Kebergantungan Lingkungan Pasaran: Berprestasi baik di pasaran trend tetapi mungkin berjuang di lain-lain

Arahan pengoptimuman

  1. Tambah Penapis Trend: Melaksanakan penilaian trend jangka panjang untuk menapis isyarat di pasaran pelbagai
  2. Meningkatkan Pengurusan Posisi: Memperkenalkan saiz kedudukan dinamik berdasarkan turun naik pasaran
  3. Enhance Entry Logic: Tambah pengesahan penunjuk teknikal untuk peningkatan kebolehpercayaan isyarat
  4. Memperbaiki Mekanisme Stop-Loss: Pertimbangkan hentian trailing atau hentian dinamik berasaskan turun naik
  5. Sertakan Penapis Masa: Sesuaikan parameter strategi berdasarkan ciri-ciri tempoh masa yang berbeza

Ringkasan

Strategi ini mencapai penjejakan trend dinamik dan kawalan risiko dengan menggabungkan VIDYA dan ATR. Kekuatannya utama terletak pada penyesuaian dengan turun naik pasaran sambil mengekalkan keupayaan mengikuti trend dan menangkap peluang pembalikan. Walaupun ia mungkin menghadapi risiko dalam keadaan pasaran tertentu, strategi ini mengekalkan nilai praktikal melalui pengoptimuman parameter yang betul dan langkah pengurusan risiko. Pelabur harus memberi tumpuan kepada kawalan risiko, tetapan parameter yang sesuai, dan penyesuaian strategi tepat pada masanya berdasarkan keadaan pasaran 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 lanjut