Strategi perdagangan Supertrend berdasarkan gabungan ATR dan MA


Tarikh penciptaan: 2023-12-01 16:40:27 Akhirnya diubah suai: 2023-12-01 16:40:27
Salin: 0 Bilangan klik: 1074
1
fokus pada
1619
Pengikut

Strategi perdagangan Supertrend berdasarkan gabungan ATR dan MA

Gambaran keseluruhan

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.

Prinsip Strategi

Proses pengiraan strategi Supertrend terdiri daripada beberapa langkah:

  1. Hitung ATR. ATR mencerminkan purata turun naik dalam tempoh masa.
  2. Garis tengah saluran berdasarkan harga tertinggi dan terendah. Garis tengah saluran mempunyai formula: ((harga tertinggi + harga terendah) / 2
  3. Berdasarkan ATR dan nombor ATR yang ditetapkan oleh pengguna, had atas dan bawah saluran dikira. Formula pengiraan had atas saluran adalah: garis tengah + (((ATR × ATR kali); formula pengiraan had bawah saluran adalah: garis tengah - (((ATR × ATR kali))
  4. Bandingkan hubungan harga penutupan dengan batas atas dan bawah saluran, untuk menentukan arah trend. Harga penutupan yang lebih tinggi daripada batas atas saluran adalah tren ke atas, dan harga penutupan yang lebih rendah daripada batas bawah saluran adalah tren ke bawah.
  5. Apabila harga menembusi saluran trend, melakukan perdagangan terbalik. Contohnya, harga dari bawah ke atas menembusi saluran atas, menghasilkan isyarat beli; harga dari atas ke bawah menembusi saluran bawah, menghasilkan isyarat menjual.

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.

Analisis kelebihan

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.

Analisis risiko

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.

Arah pengoptimuman

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.

ringkaskan

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.

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