Arah aliran VWMA berasaskan sudut mengikut strategi dengan hentian mengekor dinamik

VWMA EMA MA PVSRA Angle BIAS
Tarikh penciptaan: 2025-02-18 13:42:01 Akhirnya diubah suai: 2025-02-18 13:42:01
Salin: 2 Bilangan klik: 356
1
fokus pada
1617
Pengikut

Arah aliran VWMA berasaskan sudut mengikut strategi dengan hentian mengekor dinamik

Gambaran keseluruhan

Ini adalah strategi trend-following berdasarkan purata bergerak berwajaran volum ((VWMA) dan purata bergerak indeks ((EMA), yang menggabungkan analisis sudut harga dan mekanisme berhenti-menjejaki yang dinamik. Strategi ini terutamanya untuk menentukan masa masuk dengan memantau persilangan VWMA dengan purata bergerak cepat, digabungkan dengan keadaan sudut pergerakan harga, dan menggunakan peratusan berhenti-menjejaki untuk menguruskan risiko.

Prinsip Strategi

Logik teras strategi adalah berdasarkan komponen utama berikut:

  1. Menggunakan VWMA 25 kitaran sebagai penunjuk trend utama
  2. Melalui 8 kitaran VWMA sebagai jalur isyarat pantas
  3. Menggunakan EMA 50 kitaran untuk menentukan trend jangka panjang
  4. Mengira sudut 50 kitaran EMA ((set pada 45 darjah)
  5. EMA 200 kitaran pilihan sebagai penapis bias pasaran Isyarat masuk akan dipicu apabila laju bergerak laju bercampur dengan VWMA utama dan sudut harga memenuhi syarat. Strategi ini melindungi keuntungan dengan 1% stop loss.

Kelebihan Strategik

  1. Pengesahan pelbagai bingkai masa - strategi berfungsi dengan baik di atas H1 dan bingkai masa M1
  2. Penapisan sudut - mengurangkan penembusan palsu dengan memperkenalkan keadaan sudut pergerakan harga
  3. Pengurusan risiko yang sempurna - Peratusan untuk menjejaki hentian kerugian, perlindungan keuntungan yang dinamik
  4. Adaptif - boleh disesuaikan dengan parameter untuk menyesuaikan diri dengan keadaan pasaran yang berbeza
  5. Pengesahan trend yang mencukupi - Pengesahan trend yang bercampur dengan purata bergerak berganda

Risiko Strategik

  1. Pasaran bergolak kurang baik - mungkin akan menimbulkan isyarat palsu yang kerap di pasaran setapak
  2. Keterlambatan masa kemasukan - mungkin terlepas beberapa peluang awal trend kerana penggunaan pengesahan berganda
  3. Jadual masa M15 tidak sesuai - perlu dielakkan
  4. Sensitiviti parameter - pilihan had sudut dan kitaran purata bergerak mempunyai kesan yang lebih besar terhadap prestasi strategi
  5. Tracking stop boleh keluar terlalu awal - boleh menyebabkan stop loss terlalu awal dalam pasaran yang lebih bergolak

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penyesuaian kadar turun naik - peratus stop loss yang dikesan mengikut perubahan kadar turun naik pasaran
  2. Meningkatkan penapis jumlah transaksi - meningkatkan kualiti isyarat dengan pengesahan jumlah transaksi
  3. Kaedah pengiraan sudut yang dioptimumkan - pertimbangkan untuk menggunakan sudut penyesuaian
  4. Menyertai pengenalan keadaan pasaran - membangunkan mekanisme pengenalan pasaran trend / goyah
  5. Memperbaiki mekanisme keluar - Optimumkan masa keluar yang digabungkan dengan bentuk harga dan indikator dinamik

ringkaskan

Ini adalah strategi pengesanan trend yang tersusun dengan baik, dengan analisis sudut dan gabungan pelbagai purata bergerak, dapat memperoleh prestasi yang lebih baik dalam trend utama. Walaupun terdapat beberapa masalah keterbelakangan dan kepekaan parameter, strategi ini masih mempunyai ruang untuk ditingkatkan dengan arah pengoptimuman yang disyorkan.

Kod 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)