
Strategi Perdagangan Supertrend (Supertrend Trading Strategy) adalah strategi untuk mengesan trend berdasarkan purata julat sebenar (ATR) dan purata bergerak (MA). Ia menggabungkan kelebihan mengikuti trend dan perdagangan yang pecah, bertujuan untuk mengenal pasti arah trend pertengahan dan menghasilkan isyarat perdagangan berdasarkan perubahan trend.
Idea utama strategi ini ialah apabila harga menembusi saluran supertrend, menunjukkan bahawa trend telah berbalik, yang mana ia membeli atau menjual. Ia menetapkan tahap berhenti dan berhenti pada masa yang sama untuk mengunci keuntungan dan mengawal risiko.
Proses pengiraan strategi Supertrend terdiri daripada beberapa langkah:
Kelebihan strategi ini adalah bahawa ia menggabungkan cara perdagangan yang mengikuti trend dan pembalikan trend. Ia dapat menentukan arah trend besar dan menangkap peluang pembalikan tepat pada masanya. Di samping itu, ia juga menyediakan mekanisme penghalang kerugian untuk mengawal risiko.
Strategi Supertrend mempunyai kelebihan berikut:
1. Mengesan trend jangka pertengahan
Saluran Super Trend adalah berdasarkan pengiraan ATR, yang dapat mencerminkan secara efektif jangkauan turun naik harga pertengahan. Ia lebih baik untuk mengesan trend pertengahan daripada purata bergerak biasa.
2. Menangkap perubahan trend
Apabila harga menembusi saluran, isyarat perdagangan yang cepat boleh menangkap pembalikan trend besar tepat pada masanya. Ini memberikan jaminan untuk menyesuaikan kedudukan dengan betul dan mengurangkan pegangan jangka panjang.
3. Mekanisme penghalang kerosakan
Strategi ini menetapkan titik hentian dan kedudukan berhenti secara serentak, yang dapat menghentikan hentian secara automatik. Ini mengurangkan risiko kerugian yang meluas dan membantu memahami keadaan trend.
4. Mudah dilaksanakan
Strategi ini menggunakan rata-rata garis dan ATR, dan ia lebih mudah dan mudah difahami. Ini mengurangkan kesukaran operasi cakera keras.
5. Keupayaan yang lebih baik
Strategi Super Trend menjejaki trend jangka menengah dan mengawal titik slippage tunggal, dengan penggunaan dana keseluruhan yang lebih cekap.
Terdapat juga beberapa risiko yang berpotensi dalam strategi supertrend:
1. Kos peluang yang lebih tinggi untuk tren gempa
Strategi super trend memberi tumpuan kepada trend jangka panjang dan menengah, dengan kos yang lebih tinggi dalam pasaran yang bergolak, dan mungkin kehilangan beberapa peluang shorting.
2. Kesan pengoptimuman parameter
Pilihan kitaran ATR dan pengganda ATR mempunyai kesan yang besar terhadap keberkesanan strategi perdagangan. Jika parameter tidak ditetapkan dengan betul, ia akan mengurangkan kesan isyarat perdagangan.
3. Kemunduran
Pengiraan saluran supertrend akan mengalami kelewatan yang boleh menyebabkan isyarat tidak dihasilkan tepat pada masanya. Ini adalah masalah utama yang perlu diselesaikan oleh strategi ini.
4. Perlu kawalan yang ketat terhadap kerugian
Jika kedudukan hentian terlalu besar atau penyingkiran kawalan angin tidak sempurna, ia mungkin membawa kerugian yang lebih besar dalam keadaan yang melampau. Oleh itu, strategi hentian harus dilaksanakan dengan ketat untuk mendapatkan keuntungan yang stabil.
Strategi supertrend ini mempunyai ruang untuk pengoptimuman yang lebih lanjut, termasuk:
1. Gabungan beberapa kitaran ATR
Beberapa kitaran ATR boleh digabungkan, misalnya 10 hari, 20 hari, dan sebagainya, untuk membentuk indikator ATR gabungan. Ini dapat meningkatkan kepekaan indikator dan memperbaiki masalah ketinggalan.
2. Tambah Modul Strategi Hentikan Kerosakan
Di samping itu, dengan menambah modul strategi seperti triple stop, stop oscillating, dan stop order, anda dapat meningkatkan lagi kawalan stop loss, yang dapat mengurangkan risiko kerugian.
3. Tetapan parameter optimum
Mengoptimumkan parameter seperti ATR kitaran, penggandaan ATR, mencari kombinasi parameter yang optimum, dapat meningkatkan keuntungan strategi. Selain itu, parameter juga dapat dioptimumkan secara dinamik, memilih nilai yang sesuai mengikut pelbagai jenis dan peringkat pasaran.
4. Model pembelajaran mesin bersepadu
Akhirnya, model pembelajaran mesin bersepadu boleh dicuba untuk mewujudkan penilaian trend dan automasi yang dihasilkan oleh isyarat. Ini dapat mengurangkan gangguan faktor subjektif dan berpotensi meningkatkan kestabilan sistem strategi.
Strategi perdagangan super trend menggunakan indikator garis rata dan indikator ATR untuk menilai trend pertengahan, dan menghasilkan isyarat perdagangan pada titik perubahan trend, untuk mencapai hentian hentian automatik. Strategi ini menangkap trend besar, tetapi juga dapat menangkap beberapa peluang pembalikan tepat pada masanya. Kelebihannya terutama ditunjukkan dalam tiga aspek pemantauan trend pertengahan, pengenalan pembalikan trend dan kawalan hentian hentian.
Tetapi strategi ini juga mempunyai beberapa kelemahan, terutamanya kekurangan dan ketinggalan dalam keadaan gegaran. Ini memerlukan pengoptimuman dari pelbagai aspek, seperti menggabungkan kitaran ATR, meningkatkan modul stop loss, pengoptimuman parameter, dan memperkenalkan pembelajaran mesin. Ini pasti dapat meningkatkan kestabilan dan kadar emas strategi super trend ini.
/*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)