Strategi Perdagangan Kuantitatif Supertrend Rata-rata Bergerak Ganda

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

img

Gambaran umum

Strategi ini menggabungkan indikator rata-rata bergerak ganda dan Supertrend untuk membangun sinyal perdagangan dan menilai arah tren melalui kombinasi siklus yang berbeda untuk mencapai profitabilitas yang tinggi.

Prinsip

Strategi ini menggunakan indikator MACD dan Supertrend untuk menentukan waktu masuk pasar.

Ketika garis cepat menembus garis lambat ke atas, itu adalah sinyal beli. Pada saat ini, jika Supertrend jangka menengah hingga panjang juga merupakan tren kenaikan, sinyal beli akhir dihasilkan untuk pergi panjang. Sebaliknya, ketika garis cepat menembus garis lambat ke bawah, itu adalah sinyal jual. Pada saat ini, jika Supertrend jangka menengah hingga panjang juga merupakan tren penurunan, sinyal jual akhir dihasilkan untuk pergi pendek.

Stop loss dan take profit ditetapkan pada nilai tetap.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah bahwa ia menggunakan kedua rata-rata bergerak ganda dan Supertrend untuk menentukan arah pasar, menggabungkan analisis jangka menengah pendek dan jangka menengah panjang untuk secara signifikan meningkatkan efisiensi keputusan dan menghindari pecah palsu.

Analisis Risiko

Risiko utama dari strategi ini adalah bahwa pengaturan stop loss tetap dan take profit dapat melewatkan peluang keuntungan yang lebih besar. Selain itu, jika ada perbedaan antara penilaian jangka menengah pendek dan jangka menengah panjang, strategi tidak akan bekerja dengan baik.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Meningkatkan mekanisme penyesuaian dinamis untuk stop loss dan take profit, dan mengatur stop loss dan take profit sesuai dengan volatilitas dan tren pasar.

  2. Mengoptimalkan parameter MACD untuk menemukan parameter rata-rata bergerak yang lebih cocok untuk varietas target.

  3. Mengoptimalkan parameter Supertrend untuk menyesuaikan sensitivitasnya terhadap pasar.

  4. Meningkatkan indikator lain untuk penilaian untuk memberikan sinyal yang lebih dimensi dan meningkatkan kinerja strategi.

Ringkasan

Strategi ini berhasil menggabungkan keuntungan dari rata-rata bergerak ganda dan indikator Supertrend. Dengan menggabungkan penilaian siklus yang berbeda, ia menyaring sinyal yang salah dan memperoleh pengembalian yang lebih baik di pasar tren. Kita dapat lebih meningkatkan stabilitas dan profitabilitas strategi ini melalui optimasi 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 banyak