Strategi trading Supertrend adalah strategi mengikuti tren berdasarkan Average True Range (ATR) dan Moving Average (MA).
Ide utama di balik strategi ini adalah untuk pergi panjang atau pendek ketika harga menembus saluran Supertrend, yang menunjukkan pembalikan tren.
Perhitungan Supertrend melibatkan beberapa langkah:
Keuntungan dari strategi ini adalah menggabungkan kedua teknik trend following dan trend reversal. Ini mengidentifikasi tren utama sementara juga mampu menangkap peluang reversal secara tepat waktu. Selain itu, mekanisme stop loss/take profit membantu mengendalikan risiko.
Strategi Supertrend memiliki kekuatan berikut:
1. Mengikuti tren menengah
Saluran Supertrend dihitung berdasarkan ATR, yang secara efektif mencerminkan rentang fluktuasi harga menengah.
2. Menangkap pembalikan tepat waktu
Penembusan harga dari saluran dengan cepat menghasilkan sinyal perdagangan sehingga pembalikan tren utama dapat ditangkap tepat waktu.
3. Memiliki stop loss dan mengambil keuntungan
Strategi ini menetapkan stop loss yang telah ditentukan sebelumnya dan mengambil tingkat keuntungan untuk keluar otomatis dengan pengendalian risiko. Hal ini secara signifikan mengurangi risiko stop loss yang berlebihan dan memungkinkan tren yang lebih baik.
4. Mudah diterapkan
Strategi ini terutama menggunakan indikator dasar seperti MA dan ATR. Hal ini membuatnya cukup mudah dipahami dan diterapkan untuk perdagangan langsung.
**5. Efisiensi modal tinggi **
Dengan melacak tren menengah dan mengendalikan slippage individu, strategi Supertrend memberikan efisiensi modal yang tinggi secara keseluruhan.
Strategi Supertrend juga memiliki beberapa kelemahan potensial:
1. Performa yang kurang baik di pasar
Strategi ini berfokus pada perdagangan tren jangka menengah hingga jangka panjang.
2. sensitif terhadap optimasi parameter
Nilai yang dipilih untuk periode ATR dan multiplier memiliki dampak yang relatif besar pada kinerja strategi.
3. Masalah keterlambatan mungkin ada
Mungkin ada beberapa masalah keterlambatan dengan perhitungan saluran Supertrend, menyebabkan generasi sinyal yang tidak tepat waktu.
4. Pengelolaan stop loss yang ketat diperlukan
Dalam kondisi pasar yang ekstrim, izin stop loss yang tidak tepat atau manajemen risiko yang tidak memadai dapat menyebabkan kerugian besar.
Ada ruang tambahan untuk mengoptimalkan strategi Supertrend ini:
1. Gabungkan beberapa periode ATR
Menggabungkan pembacaan ATR selama periode yang berbeda seperti 10 hari dan 20 hari membentuk indikator komposit, yang membantu meningkatkan sensitivitas dan masalah keterlambatan.
2. Tambahkan modul stop loss
Menambahkan mekanisme stop loss yang lebih canggih seperti triple stop loss, volatility stop loss dan sequential stop loss dapat memperkuat pengendalian risiko dan pengurangan penarikan.
3. Optimasi parameter
Mengoptimalkan nilai untuk periode ATR, pengganda dan input lainnya melalui metode kuantitatif akan meningkatkan kinerja strategi lebih lanjut. Parameter juga dapat disesuaikan secara dinamis berdasarkan produk dan rezim pasar yang berbeda.
4. Mengintegrasikan model pembelajaran mesin
Akhirnya, mengintegrasikan model pembelajaran mesin dapat mewujudkan pengenalan tren otomatis dan generasi sinyal, mengurangi ketergantungan pada keputusan subjektif dan meningkatkan stabilitas sistem.
Strategi trading Supertrend mengidentifikasi arah tren menengah menggunakan indikator MA dan ATR, dan menghasilkan sinyal masuk dan keluar perdagangan di sekitar pembalikan tren dengan implementasi stop loss / take profit otomatis.
Namun, beberapa kekurangan juga ada terkait dengan tidak mencukupi penangkapan pasar yang terikat jangkauan dan masalah keterlambatan. Optimasi lebih lanjut dapat dieksplorasi di berbagai dimensi, termasuk menggunakan ATR komposit, memperkuat modul stop loss, parameter tuning, dan mengintegrasikan model pembelajaran mesin. Peningkatan ini kemungkinan akan meningkatkan stabilitas dan efisiensi strategi Supertrend.
/*backtest start: 2022-11-30 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true) Factor=input(3, minval=1,maxval = 100) Pd=input(7, minval=1,maxval = 100) //Calculating ATR atrLength = input(title="ATR Length:", defval=14, minval=1) Stop_Loss_Factor = input(1.5, minval=0,step=0.01) factor_profit = input(1.0, minval=0,step=0.01) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2016, title = "From Year", minval = 2009) ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2039, title = "To Year", minval = 2017) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculate ATR atrValue=atr(atrLength) decimals = abs(log(syminfo.mintick) / log(10)) Atr = atrValue if(decimals == 5) Atr := atrValue * 10000 if(decimals == 4) Atr := atrValue * 1000 if(decimals == 3) Atr := atrValue * 100 if(decimals == 2) Atr := atrValue * 10 //VJ2 Supertrend Up=hl2-(Factor*atr(Pd)) Dn=hl2+(Factor*atr(Pd)) TrendUp = 0.0 TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up TrendDown = 0.0 TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn Trend = 0.0 Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1) Tsl = 0.0 Tsl := Trend==1? TrendUp: TrendDown linecolor = Trend == 1 ? green : red plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "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) //plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend") plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0) plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0) //Strategy Trend_buy = Trend == 1 Trend_buy_prev = Trend[1] == -1 algo_buy_pre = Trend_buy and Trend_buy_prev algo_buy = algo_buy_pre == 1 ? 1 : na Trend_sell= Trend == -1 Trend_sell_prev = Trend[1] == 1 algo_sell_pre = Trend_sell and Trend_sell_prev algo_sell = algo_sell_pre == 1 ? 1:na strategy.entry("Long1", strategy.long, when= window() and algo_buy==1) strategy.entry("Short1", strategy.short, when=window() and algo_sell==1) bought = strategy.position_size > strategy.position_size sold = strategy.position_size < strategy.position_size longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0) shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0) longProfit = factor_profit * longStop shortProfit = factor_profit * shortStop if(decimals == 5) longStop := longStop *100000 longProfit := longProfit *100000 if(decimals == 4) longStop := longStop * 10000 longProfit := longProfit * 10000 if(decimals == 3) longStop := longStop * 1000 longProfit := longProfit * 1000 if(decimals == 2) longStop := longStop * 100 longProfit := longProfit *100 if(decimals == 5) shortStop := shortStop * 100000 shortProfit := shortProfit * 100000 if(decimals == 4) shortStop := shortStop * 10000 shortProfit := shortProfit * 10000 if(decimals == 3) shortStop := shortStop * 1000 shortProfit := shortProfit * 1000 if(decimals == 2) shortStop := shortStop * 100 shortProfit := shortProfit * 100 strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit) strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)