Strategi mengikuti tren VWMA berbasis sudut dengan trailing stop dinamis

VWMA EMA MA PVSRA Angle BIAS
Tanggal Pembuatan: 2025-02-18 13:42:01 Akhirnya memodifikasi: 2025-02-18 13:42:01
menyalin: 2 Jumlah klik: 356
1
fokus pada
1617
Pengikut

Strategi mengikuti tren VWMA berbasis sudut dengan trailing stop dinamis

Ringkasan

Ini adalah strategi pelacakan tren berdasarkan volume-weighted moving average (VWMA) dan indeks moving average (EMA), yang menggabungkan analisis sudut harga dan mekanisme stop loss pelacakan dinamis. Strategi ini terutama digunakan untuk menentukan waktu masuk dengan memantau persilangan VWMA dengan rata-rata bergerak cepat, yang dikombinasikan dengan kondisi sudut pergerakan harga, dan menggunakan stop loss pelacakan persentase untuk mengelola risiko.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:

  1. Menggunakan VWMA 25 siklus sebagai indikator tren utama
  2. VWMA 8 siklus sebagai jalur sinyal cepat
  3. Menggunakan 50 siklus EMA untuk menentukan tren jangka panjang
  4. Menghitung sudut 50 siklus EMA (setel ke 45 derajat threshold)
  5. EMA 200 periode yang dapat dipilih sebagai filter bias pasar Sinyal masuk akan dipicu ketika laju bergerak cepat dan VWMA utama bersilang, dan sudut harga memenuhi persyaratan. Strategi melindungi keuntungan dengan stop loss pelacakan dinamis 1%.

Keunggulan Strategis

  1. Validasi Multiple Time Frame - Strategi berkinerja baik di atas H1 dan M1 time frame
  2. Filter sudut - mengurangi false breakout dengan memasukkan kondisi sudut pergerakan harga
  3. Pengelolaan risiko yang baik - menggunakan persentase untuk melacak stop loss, dan melindungi keuntungan secara dinamis
  4. Adaptif - dapat disesuaikan dengan berbagai kondisi pasar melalui parameter
  5. Penegasan tren cukup - Penegasan tren silang menggunakan multiple moving averages

Risiko Strategis

  1. Pasar bergoyang tidak berkinerja baik - sinyal palsu mungkin sering muncul di pasar horizontal
  2. Keterlambatan waktu masuk - kemungkinan kehilangan beberapa peluang di awal tren karena penggunaan multiple confirmation
  3. Kerangka waktu M15 tidak bekerja dengan baik - perlu dihindari
  4. Sensitivitas parameter - pilihan dari sudut threshold dan periode moving average memiliki pengaruh yang lebih besar terhadap kinerja strategi
  5. Tracking stop-loss mungkin muncul terlalu dini - dapat menyebabkan stop-loss prematur di pasar yang lebih bergejolak

Arah optimasi strategi

  1. Memperkenalkan mekanisme adaptasi volatilitas - persentase stop loss yang dilacak berdasarkan perubahan dinamika volatilitas pasar
  2. Meningkatkan Filter Volume Transaksi - Meningkatkan kualitas sinyal melalui konfirmasi volume transaksi
  3. Metode penghitungan sudut optimasi - pertimbangkan untuk menggunakan ambang batas sudut adaptif
  4. Menambahkan identifikasi status pasar - mengembangkan mekanisme identifikasi tren / pasar yang bergolak
  5. Perbaikan mekanisme exit - optimalisasi waktu exit yang digabungkan dengan bentuk harga dan indikator dinamis

Meringkaskan

Ini adalah strategi pelacakan tren yang terstruktur dengan baik, dengan analisis sudut dan kombinasi beberapa rata-rata bergerak, dapat memperoleh kinerja yang lebih baik dalam tren utama. Meskipun ada beberapa masalah keterbelakangan dan sensitivitas parameter, strategi ini masih memiliki ruang untuk ditingkatkan dengan arah optimasi yang disarankan.

Kode Sumber Strategi
/*backtest
start: 2024-02-18 00:00:00
end: 2024-10-16 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("PVSRA Trailing Strategy with Angle Condition (40-50 degrees)", overlay=true)

// === INPUTS ===
priceData = input.source(close, title="Price Data")
maLength  = input.int(25, title="Moving Average Length", minval=2)
useBias   = input.bool(false, title="Long/Short just above/below 200 EMA")
useTrailing = input.bool(true, title="Use Trailing Stop")
trailPerc  = input.float(1.0, title="Trailing Stop Percentage", minval=0.1)
anglePeriod = input.int(14, title="Period for Angle Calculation", minval=1)

// === CÁLCULOS ===
maValue = ta.vwma(priceData, maLength)
maLong  = ta.ema(high, 50)
maShort = ta.ema(low, 50)
maFast  = ta.vwma(close, 8)
bias    = ta.ema(close, 200)
longBias  = useBias ? close > bias : true
shortBias = useBias ? close < bias : true

// === CÁLCULO DO ÂNGULO DA MÉDIA MÓVEL DE 50 ===
ma50 = ta.ema(close, 50)
angle = math.atan((ma50 - ma50[anglePeriod]) / anglePeriod) * (180 / math.pi)  // Converte radianos para graus

// === CONDIÇÃO DE ÂNGULO ===
validAngleL = angle >= 45
validAngleS = angle <= 45

// === PLOTS ===
plot(maValue, color=color.orange, title="Moving Average")
plot(maFast, color=color.green, title="Fast MA")
plot(ma50, color=color.blue, title="50 EMA")

plotshape(series=(strategy.position_size > 0) ? maValue : na,
     color=color.red, style=shape.circle, location=location.absolute,
     title="Long Stop")

plotshape(series=(strategy.position_size < 0) ? maValue : na,
     color=color.red, style=shape.cross, location=location.absolute,
     title="Short Stop")

// === CONDIÇÕES DE ENTRADA ===
enterLong  = close > maValue and ta.crossover(maFast, maValue) and close > maLong and longBias and validAngleL
enterShort = close < maValue and ta.crossunder(maFast, maValue) and close < maShort and shortBias and validAngleS

// === CONDIÇÕES DE SAÍDA ===
exitLong  = ta.crossunder(maFast, maValue) and strategy.position_size > 0
exitShort = ta.crossover(maFast, maValue) and strategy.position_size < 0

// === EXECUÇÃO DA ESTRATÉGIA ===
if (enterLong)
    strategy.entry("EL", strategy.long)

if (enterShort)
    strategy.entry("ES", strategy.short)

if (exitLong or exitShort)
    strategy.close_all()

// === TRAILING STOP ===
if (useTrailing and strategy.position_size > 0)
    trailPrice = close * (1 - trailPerc / 100)
    strategy.exit("Trailing Long", from_entry="EL", stop=trailPrice)

if (useTrailing and strategy.position_size < 0)
    trailPrice = close * (1 + trailPerc / 100)
    strategy.exit("Trailing Short", from_entry="ES", stop=trailPrice)