Strategi pelacakan pasar bull kuantitatif


Tanggal Pembuatan: 2024-01-04 15:25:42 Akhirnya memodifikasi: 2024-01-04 15:25:42
menyalin: 0 Jumlah klik: 572
1
fokus pada
1621
Pengikut

Strategi pelacakan pasar bull kuantitatif

Ringkasan

Strategi bullish tracking kuantitatif adalah strategi trend tracking yang didasarkan pada EMA rata-rata dan ATR stop loss. Ini menggunakan EMA rata-rata untuk menentukan arah tren besar dan menggunakan ATR tracking stop loss dinamis untuk mengunci tren untuk keuntungan dan memaksimalkan keuntungan.

Prinsip Strategi

Strategi ini terdiri dari beberapa bagian utama:

  1. EMA memperkirakan tren utama

Garis 13, 50, dan 100 hari digunakan untuk membentuk sudut pandang multivariate untuk menilai arah tren utama.

  1. ATR Dynamic Stop Loss

Menggunakan indikator ATR untuk menghitung kisaran perubahan harga dalam periode ini, untuk mengatur stop loss, mencapai stop loss.

  1. Sinyal halus

Untuk menghindari sinyal salah, K-line close-out harga dilakukan pada siklus SMA yang halus.

  1. Sinyal multirumah

Ketika harga naik melewati EMA rata-rata, lakukan lebih banyak, dan ketika harga turun melewati EMA rata-rata, lakukan lebih sedikit.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Kontrol penarikan sangat baik, penarikan maksimum dapat dikontrol dalam 160%.
  2. Tracking stop loss lebih cerdas daripada stop loss tetap, dan dapat mengunci lebih banyak keuntungan tren.
  3. Menggunakan EMA untuk menilai arah tren utama, menghindari operasi pembalikan.
  4. Garis K yang halus, dapat menyaring sinyal palsu, meningkatkan tingkat kemenangan.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Pengaturan parameter tetap mungkin tidak sesuai dengan varietas yang berbeda dan perlu dioptimalkan.
  2. Dalam situasi gempa, bisa terjadi skydiving yang rusak.
  3. Perlu dukungan stabilitas server untuk menghindari kehilangan sinyal.

Risiko ini dapat dikurangi dengan cara optimasi parameter, pengujian adaptasi, dan sebagainya.

Arah optimasi

Strategi ini dapat dioptimalkan dari beberapa arah:

  1. Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.
  2. Menambahkan mekanisme penangguhan kerugian yang dapat disesuaikan dengan kondisi pasar.
  3. Meningkatkan kondisi penyaringan komposit, meningkatkan stabilitas strategi.
  4. Pertimbangkan untuk melakukan pengujian lintas-spesies untuk meningkatkan kemampuan adaptasi strategi.

Meringkaskan

Strategi ini secara keseluruhan adalah strategi kuantitatif yang didesain berdasarkan pola pikir pelacakan tren. Strategi ini menggunakan EMA untuk menentukan arah tren, sekaligus menggunakan ATR untuk melakukan stop loss yang cerdas. Strategi ini dapat secara efektif mengontrol penarikan kembali dan mendapatkan keuntungan tren.

Kode Sumber Strategi
/*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")