Strategi Perdagangan Kuantitatif SuperTrend Purata Bergerak Berganda


Tarikh penciptaan: 2024-02-05 12:05:10 Akhirnya diubah suai: 2024-02-05 12:05:10
Salin: 0 Bilangan klik: 608
1
fokus pada
1617
Pengikut

Strategi Perdagangan Kuantitatif SuperTrend Purata Bergerak Berganda

Gambaran keseluruhan

Strategi ini menggabungkan penggunaan dua garis rata-rata dan dua petunjuk SuperTrend untuk membina isyarat perdagangan, sambil menggabungkan arah trend penilaian yang berbeza untuk mencapai keuntungan yang cekap.

Prinsip Strategi

Strategi ini menggunakan MACD dan SuperTrend untuk menentukan masa masuk ke pasaran. Di antaranya, MACD menentukan arah trend jangka pendek, dan Supertrend menentukan arah trend jangka panjang.

Apabila garis cepat dari bawah ke atas menembusi garis perlahan untuk membeli isyarat, pada masa ini jika jangka panjang Supertrend sama dengan trend naik, maka menghasilkan isyarat membeli akhir, melakukan lebih banyak; sebaliknya, apabila garis cepat dari atas ke bawah menembusi garis perlahan untuk menjual isyarat, pada masa ini jika jangka panjang Supertrend sama dengan trend menurun, maka menghasilkan isyarat jual akhir, melakukan kosong.

Stop loss dan stop stop ditetapkan sebagai nilai tetap.

Analisis kelebihan

Kelebihan terbesar strategi ini adalah dengan menggunakan garis dua rata-rata dan SuperTrend untuk menentukan arah pasaran, gabungan jangka pendek dan jangka panjang, meningkatkan kecekapan membuat keputusan dengan ketara, mengelakkan pecah palsu. Selain itu, Supertrend dapat menyesuaikan parameter berdasarkan turun naik pasaran dan menyesuaikan diri dengan persekitaran pasaran yang lebih luas.

Analisis risiko

Risiko utama strategi ini ialah tetapan stop loss tetap mungkin kehilangan ruang keuntungan yang lebih besar. Di samping itu, jika penilaian jangka pendek dan jangka panjang berbeza, strategi tidak dapat berfungsi dengan baik. Kita boleh mengurangkan risiko ini dengan tetapan stop loss floating.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Menambah mekanisme penyesuaian dinamik untuk menghentikan kerugian dan menetapkan hentian kerugian mengikut turun naik dan trend pasaran.

  2. Optimumkan parameter MACD untuk mencari parameter rata-rata yang lebih sesuai untuk varieti sasaran.

  3. Mengoptimumkan parameter Supertrend, menyesuaikan kepekaan mereka terhadap pasaran.

  4. Menambah penghakiman lain, memberi isyarat dimensi yang lebih, meningkatkan kesan strategi.

ringkaskan

Strategi ini berjaya menggabungkan kelebihan kedua-dua indikator Garis Persamaan Dua dan SuperTrend, menilai kombinasi dari pelbagai kitaran, menyaring isyarat yang salah, dan dengan itu memperoleh keuntungan yang lebih baik di pasaran yang sedang tren. Kita dapat meningkatkan lagi kestabilan dan keuntungan strategi ini dengan pengoptimuman parameter dan penyesuaian mekanisme.

Kod sumber strategi
/*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)