Strategi Pengesanan Trend Berdasarkan Model Multi-faktor dengan Stoploss Trailing Adaptif

Penulis:ChaoZhang, Tarikh: 2023-12-19 11:04:27
Tag:

img

Ringkasan

Strategi ini adalah strategi pengesanan trend yang didorong oleh model pelbagai faktor dengan stoploss yang boleh disesuaikan. Ia menggabungkan beberapa penunjuk seperti RSI, MACD, Stochastics untuk membina model pelbagai faktor untuk menentukan arah trend. Sementara itu, ia mempunyai mekanisme stoploss yang boleh disesuaikan yang secara dinamik menyesuaikan harga stoploss berdasarkan ATR untuk merealisasikan kawalan risiko.

Prinsip-prinsip

Strategi ini memanfaatkan pelbagai penunjuk untuk membina model untuk menilai trend. Pertama, ia menggabungkan RSI dan MACD untuk menentukan arah trend; kemudian ia menggunakan Stochastics untuk menapis isyarat terlalu banyak beli atau oversold. Selepas memasukkan pesanan, ia menggunakan ATR untuk mengira parameter risiko dan melaksanakan stop loss adaptif.

Secara khusus, ia menjana isyarat beli apabila RSI melebihi 52 dan MACD golden cross berlaku; ia menjana isyarat jual apabila RSI di bawah 48 dan MACD dead cross berlaku. Untuk menapis isyarat palsu, ia juga mengesan sama ada Stochastics terlalu banyak atau terlalu banyak dijual. Untuk stoploss, ia mengira parameter berdasarkan ATR untuk merealisasikan stoploss adaptif, yang dapat mengawal risiko stop loss tunggal dengan berkesan.

Kelebihan

Kelebihan terbesar strategi ini terletak pada keupayaan kawalan risiko yang kuat. Dengan menilai arah trend dengan model pelbagai faktor, ia dapat menapis beberapa bunyi bising dan meningkatkan kualiti isyarat. Sementara itu, mekanisme stop loss adaptif dapat menyesuaikan julat stop loss berdasarkan turun naik pasaran untuk mengawal kerugian tunggal dengan berkesan.

Di samping itu, parameter strategi ini ditetapkan dengan munasabah dengan hasil backtesting yang baik. Aset kitaran yang berbeza boleh mencapai pengoptimuman melalui penyesuaian parameter. Ia boleh sesuai dengan lebih banyak persekitaran pasaran melalui pengoptimuman parameter.

Risiko

Risiko utama strategi ini adalah kualiti pembinaan model pelbagai faktor. Jika model itu gagal menentukan trend dengan berkesan, ia akan menghasilkan isyarat palsu yang besar. Juga, strategi stoploss secara semula jadi membawa risiko diburu.

Untuk mengurangkan risiko ini, penambahbaikan boleh dibuat dari aspek seperti menyesuaikan berat model, mengoptimumkan tetapan parameter, menggabungkan dengan strategi stoploss lain. campur tangan manual juga diperlukan apabila pasaran yang tidak normal berlaku.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Sesuaikan berat penunjuk dalam model pelbagai faktor untuk mencari kombinasi yang optimum

  2. Uji lebih banyak penunjuk seperti CCI, turun naik dan lain-lain untuk memperkaya model pelbagai faktor

  3. Mengoptimumkan tetapan parameter untuk menyesuaikan lebih banyak produk dan kitaran

  4. Cuba strategi stoploss yang berbeza untuk mencari kombinasi yang optimum

  5. Tambah modul latihan model dan penilaian strategi untuk membolehkan pemacu pembelajaran mesin

Ringkasan

Strategi ini mengintegrasikan model pelbagai faktor dan mekanisme stoploss adaptif untuk mencapai gabungan organik penilaian trend dan kawalan risiko. Ia mempunyai hasil backtesting yang baik dan skalabiliti. Dengan pengoptimuman berterusan, ia boleh menjadi strategi kuantitatif yang berbaloi untuk memegang jangka panjang.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="TradersAI_UTBot", overlay = true)
// CREDITS to @HPotter for the orginal code. 
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code - 
// I just added some simple code to turn it into a strategy so that you all can backtest it to see the results for yourself! 
// Use this strategy on your favorite instrumnet and timeframe, with your favorite settings
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above, 
// I am  happy to share here this working on a 15-minute chart on e-mini S&P 500 Index (using the KeyValue setting at 10)
// I am sure different people would discover different settings that work best for their preferred instrumnet/timeframe etc. 
// Play with it and enjoy! And, don't forget to share any positive results you might get! Good luck with your trading!

SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'") 
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close) 
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
     iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
     iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? red: pos == 1 ? green : blue 
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above 
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
alertcondition(buy, title='Buy', message='Buy')
alertcondition(sell, title='Sell', message='Sell')

if(buy)
    strategy.entry("UTBotBuy",strategy.long)
if(sell)
    strategy.entry("UTBotSell",strategy.short)

Lebih lanjut