Strategi perdagangan Supertrend berdasarkan kombinasi ATR dan MA


Tanggal Pembuatan: 2023-12-01 16:40:27 Akhirnya memodifikasi: 2023-12-01 16:40:27
menyalin: 0 Jumlah klik: 1074
1
fokus pada
1619
Pengikut

Strategi perdagangan Supertrend berdasarkan kombinasi ATR dan MA

Ringkasan

Strategi perdagangan supertrend adalah strategi pelacakan tren berdasarkan rentang rata-rata nyata (ATR) dan rata-rata bergerak (MA). Ini menggabungkan keuntungan dari mengikuti tren dan melakukan perdagangan terobosan untuk mengidentifikasi arah tren jangka menengah dan menghasilkan sinyal perdagangan sesuai dengan perubahan tren.

Gagasan utama dari strategi ini adalah bahwa ketika harga menembus saluran supertrend, menunjukkan bahwa tren telah berbalik, dan pada saat itu melakukan pembelian atau penjualan. Pada saat yang sama, ia menetapkan level stop loss dan stop loss untuk mengunci keuntungan dan mengendalikan risiko.

Prinsip Strategi

Proses perhitungan strategi supertrend terdiri dari beberapa langkah:

  1. Hitung ATR. ATR mencerminkan rata-rata fluktuasi dalam jangka waktu tertentu.
  2. Garis tengah saluran berdasarkan harga tertinggi dan terendah. Garis tengah saluran memiliki rumus: ((harga tertinggi + harga terendah) / 2
  3. Perhitungan batas atas dan bawah saluran berdasarkan ATR dan jumlah ATR yang ditetapkan oleh pengguna. Perhitungan batas atas saluran adalah: garis tengah + (((ATR × ATR kali); perhitungan batas bawah saluran adalah: garis tengah - (((ATR × ATR kali)
  4. Bandingkan hubungan antara harga penutupan dengan batas atas dan bawah saluran, untuk menentukan arah tren. Harga penutupan di atas batas atas saluran adalah tren ke atas, dan harga penutupan di bawah batas bawah saluran adalah tren ke bawah.
  5. Ketika harga menembus saluran tren, melakukan perdagangan terbalik. Misalnya, harga dari bawah ke atas menembus batas atas saluran, menghasilkan sinyal beli; harga dari atas ke bawah menembus batas bawah saluran, menghasilkan sinyal jual.

Keuntungan dari strategi ini adalah bahwa ia menggabungkan cara perdagangan yang mengikuti tren dan berbalik pada saat yang sama. Ia dapat mengetahui arah tren besar dan menangkap peluang untuk berbalik pada waktu yang tepat. Selain itu, ia juga menyiapkan mekanisme stop loss untuk mengendalikan risiko.

Analisis Keunggulan

Strategi supertrend memiliki keuntungan sebagai berikut:

1. Melacak tren jangka menengah

Saluran tren super didasarkan pada perhitungan ATR dan dapat secara efektif mencerminkan kisaran fluktuasi harga jangka menengah.

2. Menangkap Pergeseran Tren

Ketika harga menembus saluran, sinyal perdagangan yang cepat dapat menangkap pembalikan tren besar tepat waktu. Hal ini memberikan jaminan untuk menyesuaikan posisi dengan tepat dan mengurangi kepemilikan jangka panjang.

3. Memiliki mekanisme penghentian kerusakan

Strategi ini mengatur posisi stop loss dan stop loss secara bersamaan, yang dapat secara otomatis menghentikan stop loss. Hal ini sangat mengurangi risiko stop loss yang meluas, yang membantu untuk memahami tren.

4. Cara Mudahnya

Strategi ini terutama menggunakan garis rata-rata dan indikator ATR, untuk mencapai yang relatif sederhana dan mudah dikuasai. Hal ini mengurangi kesulitan dalam operasi hard disk.

5. Efisiensi penggunaan dana

Strategi supertrend melacak tren jangka menengah, dan mengendalikan titik slippage tunggal, dengan efisiensi penggunaan dana yang lebih tinggi secara keseluruhan.

Analisis risiko

Strategi supertrend juga memiliki beberapa potensi risiko:

1. Biaya peluang yang lebih tinggi dari tren yang bergoyang

Strategi supertrend berfokus pada trend jangka menengah dan panjang, dengan biaya yang lebih tinggi di pasar yang bergejolak, dan kemungkinan kehilangan beberapa peluang shorting.

2. Parameter yang mempengaruhi efek optimasi

Periode ATR dan pilihan perkalian ATR memiliki pengaruh yang lebih besar terhadap efektivitas strategi perdagangan. Jika parameter tidak diatur dengan benar, efek sinyal perdagangan akan dikurangkan.

3. Keterlambatan

Perhitungan saluran supertrend akan memiliki keterlambatan tertentu, yang dapat menyebabkan sinyal tidak dihasilkan tepat waktu. Ini adalah masalah utama yang perlu ditangani oleh strategi ini.

4. Perlu kontrol kerusakan yang ketat

Jika posisi stop loss ditetapkan terlalu besar atau penghindaran kendali angin tidak sempurna, dalam situasi ekstrem dapat menyebabkan kerugian yang lebih besar. Oleh karena itu, strategi stop loss harus dilaksanakan secara ketat untuk mendapatkan keuntungan yang stabil.

Arah optimasi

Strategi supertrend ini juga memiliki ruang untuk pengoptimalan lebih lanjut, yang meliputi:

1. Menggabungkan beberapa siklus ATR

Beberapa siklus ATR dapat dikombinasikan, misalnya 10 dan 20 hari, untuk membentuk indikator ATR gabungan. Dengan demikian, sensitivitas indikator dapat ditingkatkan dan masalah lag dapat diperbaiki.

2. Tambahkan modul strategi stop loss

Selain itu, dengan menambahkan modul strategi seperti triple stop, stop oscillating, dan stop order, pengendalian stop loss dapat ditingkatkan lebih lanjut, sehingga mengurangi risiko kerugian.

3. Pengaturan Parameter Optimasi

Optimalkan pengaturan parameter seperti siklus ATR, perkalian ATR, mencari kombinasi parameter yang optimal, dapat meningkatkan keuntungan strategi lebih lanjut. Selain itu, parameter juga dapat dioptimalkan secara dinamis, sesuai dengan berbagai varietas dan tahap pasar memilih nilai yang sesuai.

4. Model Pembelajaran Mesin Terintegrasi

Akhirnya, model pembelajaran mesin terintegrasi dapat dicoba untuk mengotomatisasi penilaian tren dan sinyal yang dihasilkan. Hal ini dapat mengurangi gangguan dari faktor subjektif dan berpotensi meningkatkan stabilitas sistem strategi lebih lanjut.

Meringkaskan

Strategi perdagangan supertrend menggunakan indikator rata-rata dan indikator ATR untuk menilai tren menengah, dan menghasilkan sinyal perdagangan pada titik balik tren, untuk mencapai stop loss otomatis. Strategi ini menangkap tren besar, tetapi juga dapat menangkap beberapa peluang pembalikan tepat waktu. Kelebihannya terutama tercermin dalam tiga aspek pelacakan tren menengah, identifikasi pembalikan tren, dan kontrol stop loss.

Namun, ada beberapa kekurangan dalam strategi ini, terutama kurangnya pemahaman dan keterlambatan pada situasi yang bergolak. Ini memerlukan pengoptimalan dari berbagai sisi, seperti siklus ATR gabungan, peningkatan modul stop loss, pengoptimalan parameter, dan pengenalan pembelajaran mesin.

Kode 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)