Strategi penjejakan arah aliran merentas pasaran berdasarkan EMA bergerak purata henti kerugian dinamik dua arah


Tarikh penciptaan: 2024-01-29 09:57:20 Akhirnya diubah suai: 2024-01-29 09:57:20
Salin: 0 Bilangan klik: 587
1
fokus pada
1617
Pengikut

Strategi penjejakan arah aliran merentas pasaran berdasarkan EMA bergerak purata henti kerugian dinamik dua arah

Gambaran keseluruhan

Strategi ini berdasarkan pada EMA untuk melakukan pengesanan dua hala dan menetapkan garis berhenti dan kehilangan yang dinamik untuk menangkap trend.

Prinsip Strategi

  1. Hitung garis EMA pantas ((5 hari) dan garis EMA perlahan ((20 hari)
  2. Buat lebih banyak apabila garisan pantas melintasi garisan perlahan dari arah bawah; buat ruang apabila garisan pantas melintasi garisan perlahan dari arah atas
  3. Setelah melakukan lebih, setkan garis hentian dinamik sebagai harga permulaan(1-peratusan stop loss untuk kedudukan panjang); selepas penutupan, set garis stop loss dinamik sebagai harga masuk(1 + peratus kerugian jangka pendek)
  4. Apabila harga mencetuskan garis henti yang sesuai, hentikan perdagangan

Analisis kelebihan

  1. EMA mempunyai keupayaan yang kuat untuk mengesan trend, dua arah melintasi pembentukan pemasa, yang dapat mengunci peluang trend dengan berkesan
  2. Dinamika mengira garis hentian, mengikut pasaran selepas keuntungan, dapat mengunci keuntungan trend sebanyak mungkin
  3. Penggunaan VWP sebagai syarat penapisan tambahan untuk mengelakkan kebocoran dan meningkatkan kualiti isyarat

Analisis risiko

  1. Strategi trend murni, mudah terjebak apabila pasaran bergolak
  2. Stop loss yang terlalu longgar boleh menyebabkan kerugian meningkat
  3. EMA berlagu untuk menghasilkan isyarat garis rata-rata yang mungkin terlepas titik terbaik dalam pasaran

Ia boleh dioptimumkan dengan menggunakan ATR untuk mengawal risiko, mengoptimumkan strategi berhenti jangka pendek, atau menggabungkannya dengan perdagangan penapis bunyi indikator lain.

Arah pengoptimuman

  1. Gabungan dengan penunjuk hentian dinamik seperti ATR atau DONCH untuk menetapkan garis hentian yang lebih sesuai dengan pasaran
  2. Menambah isyarat penapisan petunjuk teknikal lain, seperti MACD, KDJ dan lain-lain, untuk mengurangkan kesalahan masuk dan keluar
  3. Parameter pengoptimuman untuk mencari kombinasi panjang garisan rata-rata yang paling baik
  4. Anda boleh mencuba kaedah pembelajaran mesin untuk mencari parameter yang optimum.

ringkaskan

Strategi ini secara keseluruhannya adalah strategi pengesanan trend yang sangat tipikal. Dua EMA membentuk garpu mati, stop loss dinamik, yang dapat mengunci keuntungan trend dengan berkesan. Di samping itu, terdapat risiko ketinggalan dan risiko stop loss yang terlalu luas.

Kod sumber strategi
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy("EMA Crossover Strategy", shorttitle="EMAC", overlay=true,calc_on_every_tick=true)

// Input parameters
shortEmaLength = input(5, title="Short EMA Length")
longEmaLength = input(20, title="Long EMA Length")
priceEmaLength = input(1, title="Price EMA Length")

// Set stop loss level with input options (optional)
longLossPerc = input.float(0.05, title="Long Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

shortLossPerc = input.float(0.05, title="Short Stop Loss (%)",
     minval=0.0, step=0.1) * 0.01

// Calculating indicators
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)
//priceEma = ta.ema(close, priceEmaLength)
vwap = ta.vwap(close)

// Long entry conditions
longCondition = ta.crossover(shortEma, longEma) and close > vwap
// Short entry conditions
shortCondition = ta.crossunder(shortEma, longEma) and close > vwap

// STEP 2:
// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


if (longCondition)
    strategy.entry("Enter Long", strategy.long)
    strategy.exit("Exit Long",from_entry = "Enter Long",stop= longStopPrice)
plotshape(series=longCondition, title="Long Signal", color=color.green, style=shape.triangleup, location=location.belowbar)


if (shortCondition)
    strategy.entry("Enter Short", strategy.short)
    strategy.exit("Exit Short", from_entry = "Enter Short",stop = shortStopPrice)
plotshape(series=shortCondition, title="Short Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Stop loss levels
//longStopLoss = (1 - stopLossPercent) * close
//shortStopLoss = (1 + stopLossPercent) * close

// Exit conditions
//strategy.exit("Long", from_entry="Long", loss=longStopLoss)
//strategy.exit("Short", from_entry="Short", loss=shortStopLoss)

// Plotting indicators on the chart
plot(shortEma, color=color.yellow, title="Short EMA")
plot(longEma, color=color.green, title="Long EMA")
plot(close, color=color.black, title="Close")
plot(vwap, color=color.purple, title="VWAP")

// Plot stop loss values for confirmation
plot(strategy.position_size > 0 ? longStopPrice : na,
     color=color.red, style=plot.style_line,
     linewidth=2, title="Long Stop Loss")

plot(strategy.position_size < 0 ? shortStopPrice : na,
     color=color.blue, style=plot.style_line,
     linewidth=2, title="Short Stop Loss")
// Plotting stop loss lines
//plot(longStopLoss, color=color.red, title="Long Stop Loss", linewidth=2, style=plot.style_line)
//plot(shortStopLoss, color=color.aqua, title="Short Stop Loss", linewidth=2, style=plot.style_line)