Strategi SuperTrend untuk Perdagangan Ethereum

Penulis:ChaoZhang, Tanggal: 2024-01-08 14:35:37
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator SuperTrend dan menggunakan ATR untuk secara dinamis mengatur garis stop loss untuk mendapatkan keuntungan dari tren kuat di Ethereum.

Logika Strategi

Strategi ini menggunakan indikator trend-mengikuti klasik - indikator SuperTrend untuk menentukan arah tren. indikator SuperTrend terdiri dari dua garis:

  1. Uptrend stop loss line untuk memegang posisi panjang dalam uptrends;
  2. Jalur stop loss untuk posisi short dalam tren penurunan.

Ketika harga berubah dari uptrend ke downtrend, buka posisi short.

Selain itu, strategi ini menggunakan indikator ATR untuk menyesuaikan garis stop loss secara dinamis. Secara khusus, posisi garis stop loss uptrend adalah rata-rata tertinggi tertinggi dan terendah terendah dikurangi ATR dikalikan dengan koefisien; posisi garis stop loss downtrend adalah rata-rata tertinggi tertinggi dan terendah terendah ditambah ATR dikalikan dengan koefisien. Hal ini memungkinkan penyesuaian stop loss berdasarkan volatilitas pasar.

Setelah sinyal masuk dipicu, jika harga kembali di atas garis stop loss, stop out dengan kerugian.

Keuntungan

Ini adalah tren yang relatif matang mengikuti strategi dengan keuntungan berikut:

  1. Menggunakan indikator SuperTrend untuk menentukan arah tren secara dapat diandalkan;
  2. Menerapkan stop loss ATR adaptif untuk mengontrol risiko secara efektif;
  3. Logika strategi yang sederhana dan jelas, mudah dimengerti dan dimodifikasi;
  4. Menguntungkan di pasar cryptocurrency volatilitas tinggi.

Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Probabilitas indikator SuperTrend menilai salah ada, dapat menyebabkan kerugian yang tidak perlu;
  2. ATR stop loss mungkin terlalu agresif, dihentikan oleh pembalikan harga;
  3. Volatilitas tinggi di pasar kripto meningkatkan kemungkinan stop loss dipukul;
  4. Biaya transaksi yang lebih tinggi di beberapa bursa berdampak pada profitabilitas akhir.

Untuk mengurangi risiko di atas, koefisien ATR dapat disesuaikan, atau menambahkan filter dengan indikator lain.

Arah Peningkatan

Ada ruang untuk perbaikan lebih lanjut:

  1. Memperkenalkan lebih banyak indikator untuk meningkatkan akurasi sinyal;
  2. Penelitian nilai optimal untuk panjang dan koefisien ATR;
  3. Mengimplementasikan ukuran posisi dinamis berdasarkan rasio risiko-manfaat;
  4. Uji efektivitas strategi di lebih banyak pasangan perdagangan kripto.

Kesimpulan

Secara keseluruhan ini adalah strategi trend berikut yang matang dan dapat diandalkan. Ini menggunakan indikator SuperTrend untuk menentukan arah tren dan menyesuaikan stop loss dengan ATR untuk mengontrol risiko sambil mendapatkan keuntungan. Strategi ini bekerja dengan baik untuk cryptocurrency volatilitas tinggi seperti Ethereum. Optimasi lebih lanjut dapat memperluas aplikasinya di lebih banyak pasar untuk kinerja yang lebih stabil.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4 
strategy("SuperTrend Strategy", 
     overlay=true, 
     initial_capital=2e3, 
     process_orders_on_close=true, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1 
     ) 
  
length = input(title="ATR Period", type=input.integer, defval=21) 
mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) 
wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) 
  
useDate = input(title="Start from Specific Date ?", defval=false) 
yearStart = input(title="Start Year", defval=2019) 
monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) 
dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) 
  
startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) 
startFrom = useDate ? time(timeframe.period) >= startTime : true 
  
atr = mult * ta.atr(length) 
  
longStop = hl2 - atr 
longStopPrev = nz(longStop[1], longStop) 
longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop 
  
shortStop = hl2 + atr 
shortStopPrev = nz(shortStop[1], shortStop) 
shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop 
  
dir = 1 
dir := nz(dir[1], dir) 
dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir 
  
longColor = color.green 
shortColor = color.red 
  
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) 
plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) 
  
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) 
plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) 
  
longCondition = dir[1] == -1 and dir == 1 
if longCondition and startFrom 
    strategy.entry("Long", strategy.long, stop=longStop) 
else 
    strategy.cancel("Long") 
  
shortCondition = dir[1] == 1 and dir == -1 
if shortCondition and startFrom 
    strategy.entry("Short", strategy.short, stop=shortStop) 
else 
    strategy.cancel("Short")
    

Lebih banyak