Strategi Pengesanan Trend Berbilang

Penulis:ChaoZhang, Tarikh: 2023-11-17 17:19:37
Tag:

img

Ringkasan

Strategi penjejakan trend berbilang secara komprehensif menggunakan MACD, RSI, ATR dan DEMA empat penunjuk untuk mengenal pasti trend jangka panjang dan jangka pendek saham dan menjalankan perdagangan penjejakan trend. Strategi ini menggabungkan kelebihan perdagangan pecah dan perdagangan penjejakan trend, yang dapat menangkap trend jangka panjang sambil mencari titik masuk yang lebih baik dalam jangka pendek.

Logika Strategi

Strategi Dagangan MACD

MACD bermaksud Moving Average Convergence Divergence, yang merupakan penunjuk trend. MACD terdiri daripada garis purata bergerak pantas dan garis purata bergerak perlahan, biasanya menggunakan parameter EMA 12 hari untuk garis pantas, EMA 26 hari untuk garis perlahan, dan garis isyarat sebagai EMA 9 hari MACD. Apabila MACD melintasi di atas garis isyarat, ia adalah isyarat beli, dan apabila melintasi di bawah, ia adalah isyarat jual. Strategi ini menggunakan salib emas MACD dan salib mati untuk menentukan arah trend.

RSI Strategi Overbought Oversold

RSI bermaksud Indeks Kekuatan Relatif, yang mencerminkan status overbought dan oversold saham. RSI menentukan sama ada saham overbought atau oversold dengan membandingkan keuntungan purata dan kerugian purata dalam tempoh masa.

Analisis Kelebihan

Strategi ini secara komprehensif menggunakan MACD, RSI, ATR dan DEMA empat penunjuk, dengan mengambil kira kedua-dua trend tracking dan perdagangan breakout, yang boleh mencari titik masuk yang lebih baik dalam trend.

  1. MACD dapat dengan berkesan mengenal pasti arah dan titik perubahan trend harga saham jangka sederhana dan panjang.

  2. RSI boleh menilai sama ada saham terlalu banyak dibeli atau terlalu banyak dijual dalam jangka pendek untuk mengelakkan mengejar paras tertinggi dan menjual paras terendah pada titik pembalikan trend.

  3. ATR secara dinamik menyesuaikan kedudukan stop loss untuk mengawal kerugian tunggal dengan berkesan.

  4. DEMA berfungsi sebagai penunjuk penilaian tambahan untuk menapis beberapa bunyi bising.

  5. Gabungan beberapa penunjuk boleh meningkatkan kebolehpercayaan isyarat perdagangan.

Analisis Risiko

Terdapat juga beberapa risiko dalam strategi ini:

  1. Perbezaan mungkin berlaku dengan gabungan beberapa penunjuk, yang membawa kepada isyarat perdagangan yang salah.

  2. ATR sebagai penunjuk stop loss dinamik cenderung untuk dipecahkan dalam turun naik yang besar yang mengakibatkan kerugian.

  3. DEMA sebagai penapis trend mungkin menapis beberapa peluang perdagangan jangka pendek yang lebih kuat.

  4. Parameter strategi yang tidak betul boleh membawa kepada perdagangan yang kerap, meningkatkan kos transaksi dan kerugian slippage.

Untuk mengawal risiko, parameter penunjuk boleh diselaraskan dengan sewajarnya. Lebih banyak penunjuk penilaian tambahan juga boleh diperkenalkan untuk pengesahan. Mengembangkan strategi perdagangan kuantitatif memerlukan analisis data sejarah yang teliti, pengujian balik yang kukuh, dan pengurusan risiko yang bijak. Saya tidak boleh mengesyorkan tindakan khusus, tetapi boleh mencadangkan memberi tumpuan kepada prinsip pembangunan strategi yang baik.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter yang optimum.

  2. Tambah strategi stop loss seperti stop loss bergerak, stop loss purata dan lain-lain untuk mengawal risiko lebih lanjut.

  3. Memperkenalkan lebih banyak penunjuk penilaian tambahan seperti KDJ, Bollinger Bands dll untuk meningkatkan ketepatan isyarat.

  4. Mengoptimumkan pilihan masa masuk dengan menggabungkan strategi keluar untuk mencari titik masuk yang lebih baik.

  5. Perbezaan parameter untuk pasaran lembu dan lembu.

  6. Membina model berdasarkan ciri stok untuk meningkatkan kebolehsesuaian.

Ringkasan

Strategi pengesanan trend berbilang menggabungkan MACD, RSI, ATR dan DEMA empat penunjuk, mencapai gabungan organik pengesanan trend dan penembusan trend. Berbanding dengan strategi penunjuk tunggal, strategi ini dapat memberikan isyarat perdagangan yang lebih boleh dipercayai dan mengelakkan isyarat palsu tertentu. Melalui pengoptimuman parameter, strategi stop loss, penghakiman tambahan dan lain-lain, prestasi strategi dapat ditingkatkan lagi. Strategi ini sesuai untuk perdagangan kuantitatif yang memerlukan keupayaan beralih trend yang lebih tinggi dan merupakan idea strategi yang menjanjikan yang bernilai pengesanan dan pengoptimuman jangka panjang.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © prim722

// © OTS Music

//@version=4
strategy("Atrend by OTS", overlay=true)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
if (crossover(delta, 0))
	strategy.entry("MACD buy", strategy.long, comment="MACD buy")
if (crossunder(delta, 0))
	strategy.entry("MACD sell", strategy.short, comment="MACD sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
length = input( 18 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
if (not na(vrsi))
	if (co)
		strategy.entry("RSI buy", strategy.long, comment="RSI buy")
	if (cu)
		strategy.entry("RSI sell", strategy.short, comment="RSI sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=false)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.white)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="", text="", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.white, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_line, linewidth=2, color=color.gray)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="", text="", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.white : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.gray : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="ATrend Buy", message="ATrend Buy!")
alertcondition(sellSignal, title="ATrend Sell", message="ATrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="ATrend Direction Change", message="ATrend has changed direction!")

length1 = input(25, minval=1)
srcb = input(close, title="Source")
e1 = ema(srcb, length1)
e2 = ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color.red)

Lebih lanjut