Quant Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-01-04 15:25:42
Tag:

img

Gambaran umum

Strategi Mengikuti Tren Kuantitas adalah strategi pelacakan tren berdasarkan garis EMA dan ATR stop loss.

Prinsip-prinsip

Strategi ini terdiri dari bagian-bagian utama berikut:

  1. Garis EMA untuk menentukan tren utama

    Gunakan garis 13 hari, 50 hari dan 100 hari untuk membentuk bias bullish / bearish dan menilai arah tren utama.

  2. Hilangnya stop dinamis ATR

    Menggunakan indikator ATR untuk menghitung kisaran pergerakan harga periode saat ini dan mengatur harga stop loss untuk mengunci keuntungan.

  3. Penghalusan sinyal

    Harga penutupan yang lancar selama periode tertentu dengan SMA untuk menghindari sinyal palsu.

  4. Sinyal bullish/bearish

    Pergi panjang ketika harga melintasi garis EMA, pergi pendek ketika melintasi di bawah.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Kontrol penarikan yang sangat baik, penarikan maksimum dalam 160%.
  2. Stop loss dinamis lebih cerdas dari yang tetap, dapat mengunci lebih banyak keuntungan tren.
  3. Menggunakan EMA untuk menentukan tren utama menghindari perdagangan pembalikan.
  4. Bar halus menyaring sinyal palsu dan meningkatkan tingkat kemenangan.

Analisis Risiko

Ada juga beberapa risiko:

  1. Parameter statis mungkin tidak cocok dengan produk yang berbeda, perlu optimasi.
  2. Stop loss mungkin ada celah di berbagai pasar.
  3. Membutuhkan stabilitas server untuk menghindari sinyal yang hilang.

Risiko ini dapat dikurangi melalui optimasi parameter, pengujian kemampuan beradaptasi, dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimasi parameter otomatis dengan algoritma pembelajaran mesin.
  2. Tambahkan stop loss adaptif berdasarkan kondisi pasar.
  3. Meningkatkan filter senyawa untuk meningkatkan stabilitas.
  4. Pertimbangkan pengujian produk silang untuk meningkatkan kemampuan beradaptasi.

Kesimpulan

Singkatnya, ini adalah strategi kuantum yang dirancang berdasarkan konsep trend following. Ini menentukan arah tren dengan EMA dan menggunakan stop loss ATR dinamis. Ini dapat secara efektif mengendalikan penurunan sambil menangkap keuntungan tren. Optimasi dan iterasi berkelanjutan dapat menghasilkan hasil yang lebih baik.


/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Combined Strategy", overlay=true)

// Input variables for EMA Crossover
ema13_length = input(13, title="EMA 13 Length")
ema50_length = input(50, title="EMA 50 Length")
ema100_length = input(100, title="EMA 100 Length")
ema200_length = input(200, title="EMA 200 Length")

// Calculate EMAs for EMA Crossover
ema13 = ema(close, ema13_length)
ema50 = ema(close, ema50_length)
ema100 = ema(close, ema100_length)
ema200 = ema(close, ema200_length)

// Plot EMAs for EMA Crossover
plot(ema13, color=color.blue, title="EMA 13")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
plot(ema200, color=color.red, title="EMA 200")

// Input variables for LinReg Candles
signal_length = input(title="Signal Smoothing", type=input.integer, minval=1, maxval=200, defval=11)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=true)

lin_reg = input(title="Lin Reg", type=input.bool, defval=true)
linreg_length = input(title="Linear Regression Length", type=input.integer, minval=1, maxval=200, defval=11)

// Calculate LinReg Candles
bopen = lin_reg ? linreg(open, linreg_length, 0) : open
bhigh = lin_reg ? linreg(high, linreg_length, 0) : high
blow = lin_reg ? linreg(low, linreg_length, 0) : low
bclose = lin_reg ? linreg(close, linreg_length, 0) : close

r = bopen < bclose

signal = sma_signal ? sma(bclose, signal_length) : ema(bclose, signal_length)

plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true)
plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true)

plot(signal, color=color.white)

// Input variables for UT Bot Alerts
a = input(1, title="Key Value. 'This changes the sensitivity'")
c = input(10, title="ATR Period")
h = input(false, title="Signals from Heikin Ashi Candles")

// Calculate UT Bot Alerts
xATR = atr(c)
nLoss = a * xATR

src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close

xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
   iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss), 
   iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))

pos = 0   
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
   iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 

ema = ema(src,1)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)

buy = src > xATRTrailingStop and above 
sell = src < xATRTrailingStop and below

barbuy = src > xATRTrailingStop 
barsell = src < xATRTrailingStop 

strategy.entry("Buy", strategy.long, when=buy)
strategy.close("Buy", when=sell)
strategy.entry("Sell", strategy.short, when=sell)
strategy.close("Sell", when=buy)

plotshape(buy, title="Buy", text='Buy', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny)
plotshape(sell, title="Sell", text='Sell', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

alertcondition(buy, "UT Long", "UT Long")
alertcondition(sell, "UT Short", "UT Short")


Lebih banyak