Strategi SuperTrend untuk Perdagangan Ethereum

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

img

Ringkasan

Strategi ini berdasarkan penunjuk SuperTrend dan menggunakan ATR untuk menetapkan garis stop loss secara dinamik untuk mendapat keuntungan daripada trend kuat di Ethereum.

Logika Strategi

Strategi ini menggunakan penunjuk trend klasik - penunjuk SuperTrend untuk menentukan arah trend.

  1. Baris Stop Loss Uptrend untuk memegang kedudukan panjang dalam trend naik;
  2. Baris Stop Loss untuk memegang kedudukan pendek dalam trend menurun.

Apabila harga berubah dari trend menaik ke trend menurun, buka kedudukan pendek. Apabila harga berubah dari trend menurun ke trend naik, buka kedudukan panjang.

Di samping itu, strategi ini menggunakan penunjuk ATR untuk menyesuaikan garis stop loss secara dinamik. Khususnya, kedudukan garis stop loss uptrend adalah purata tertinggi tertinggi dan terendah rendah dikurangkan ATR dikalikan dengan pekali; kedudukan garis stop loss downtrend adalah purata tertinggi tertinggi dan terendah rendah ditambah ATR dikalikan dengan pekali. Ini membolehkan menyesuaikan stop loss berdasarkan turun naik pasaran.

Selepas isyarat masuk dicetuskan, jika harga kembali di atas garis stop loss, berhenti dengan kerugian.

Kelebihan

Ini adalah trend yang agak matang mengikut strategi dengan kelebihan berikut:

  1. Menggunakan penunjuk SuperTrend untuk menentukan arah trend dengan boleh dipercayai;
  2. Menggunakan ATR stop loss adaptif untuk mengawal risiko dengan berkesan;
  3. Logik strategi yang mudah dan jelas, mudah difahami dan diubah suai;
  4. Mendapat keuntungan dalam pasaran mata wang kripto yang sangat berubah.

Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Kemungkinan penilaian penunjuk SuperTrend yang salah wujud, boleh menyebabkan kerugian yang tidak perlu;
  2. ATR stop loss mungkin terlalu agresif, dihentikan oleh pembalikan harga;
  3. Volatiliti tinggi di pasaran kripto meningkatkan kebarangkalian stop loss yang dipukul;
  4. Bayaran transaksi yang lebih tinggi di beberapa bursa memberi kesan kepada keuntungan akhir.

Untuk mengurangkan risiko di atas, pekali ATR boleh diselaraskan, atau menambah penapis dengan penunjuk lain.

Arahan Penambahbaikan

Terdapat ruang untuk penambahbaikan lanjut:

  1. Memperkenalkan lebih banyak penunjuk untuk meningkatkan ketepatan isyarat;
  2. Penyelidikan nilai optimum untuk panjang dan pekali ATR;
  3. Melaksanakan saiz kedudukan dinamik berdasarkan nisbah risiko-balasan;
  4. Uji keberkesanan strategi di lebih banyak pasangan perdagangan kripto.

Kesimpulan

Secara keseluruhan, ini adalah strategi trend yang matang dan boleh dipercayai. Ia menggunakan penunjuk SuperTrend untuk menentukan arah trend dan menyesuaikan stop loss dengan ATR untuk mengawal risiko sambil memperoleh keuntungan. Strategi ini berfungsi dengan baik untuk cryptocurrency turun naik tinggi seperti Ethereum. Pengoptimuman lanjut dapat memperluaskan aplikasinya di lebih banyak pasaran untuk prestasi yang lebih mantap.


/*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 lanjut