Strategi Perdagangan Kuantitatif Supertrend Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2024-02-05 12:05:10
Tag:

img

Ringkasan

Strategi ini menggabungkan dua purata bergerak dan penunjuk Supertrend untuk membina isyarat perdagangan dan menilai arah trend melalui kombinasi kitaran yang berbeza untuk mencapai keuntungan yang tinggi.

Prinsip

Strategi ini menggunakan penunjuk MACD dan Supertrend untuk menentukan masa kemasukan pasaran. purata bergerak ganda MACD menentukan arah trend jangka pendek, sementara Supertrend menentukan arah trend jangka sederhana hingga panjang.

Apabila garisan pantas menembusi garisan perlahan ke atas, ia adalah isyarat beli. Pada masa ini, jika Supertrend jangka menengah hingga panjang juga merupakan trend menaik, isyarat beli akhir dihasilkan untuk pergi panjang. Sebaliknya, apabila garisan pantas menembusi garisan perlahan ke bawah, ia adalah isyarat jual. Pada masa ini, jika Supertrend jangka menengah hingga panjang juga adalah trend menurun, isyarat jual akhir dihasilkan untuk pergi pendek.

Stop loss dan mengambil keuntungan ditetapkan pada nilai tetap.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah bahawa ia menggunakan kedua-dua purata bergerak dan Supertrend untuk menentukan arah pasaran, menggabungkan analisis jangka pendek dan jangka panjang untuk meningkatkan kecekapan keputusan dan mengelakkan pecah palsu.

Analisis Risiko

Risiko utama strategi ini adalah bahawa tetapan stop loss tetap dan mengambil keuntungan mungkin kehilangan peluang keuntungan yang lebih besar. Di samping itu, jika terdapat perbezaan antara penilaian jangka pendek dan jangka panjang, strategi tidak akan berfungsi dengan baik. Kita boleh mengurangkan risiko ini melalui tetapan stop loss terapung dan mengambil keuntungan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Meningkatkan mekanisme pelarasan dinamik untuk menghentikan kerugian dan mengambil keuntungan, dan menetapkan berhenti kerugian dan mengambil keuntungan mengikut turun naik pasaran dan trend.

  2. Mengoptimumkan parameter MACD untuk mencari parameter purata bergerak yang lebih sesuai untuk pelbagai sasaran.

  3. Mengoptimumkan parameter Supertrend untuk menyesuaikan sensitiviti ke pasaran.

  4. Meningkatkan penunjuk lain untuk penilaian untuk memberikan isyarat yang lebih berdimensi dan meningkatkan prestasi strategi.

Ringkasan

Strategi ini berjaya menggabungkan kelebihan purata bergerak berganda dan penunjuk Supertrend. Dengan menggabungkan penilaian kitaran yang berbeza, ia menapis isyarat yang salah dan memperoleh pulangan yang lebih baik di pasaran trend. Kami dapat meningkatkan kestabilan dan keuntungan strategi ini melalui pengoptimuman parameter dan penyesuaian mekanisme.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)


Lebih lanjut