Strategi Tren Super


Tanggal Pembuatan: 2023-10-13 17:03:55 Akhirnya memodifikasi: 2023-10-13 17:03:55
menyalin: 0 Jumlah klik: 718
1
fokus pada
1617
Pengikut

Ringkasan

Strategi supertrend adalah strategi pelacakan tren yang didasarkan pada penghitungan rata-rata amplitudo riil. Ini menggunakan amplitudo riil rata-rata untuk mengatur garis stop loss dan menentukan arah tren dengan menilai apakah harga telah menembus garis stop loss untuk menghasilkan sinyal perdagangan.

Prinsip Strategi

Strategi ini pertama-tama menghitung rata-rata real amplitude ATR dalam periode tertentu. Kemudian menghitung garis stop loss garis panjang dan garis stop loss garis pendek berdasarkan nilai ATR yang dikalikan dengan faktor skala. Metode perhitungan spesifik adalah sebagai berikut:

atr = mult * atr(length) 

longStop = hl2 - atr

shortStop = hl2 + atr

dimana length adalah panjang siklus ATR yang dihitung, dan mult adalah faktor skala ATR.

Setelah menghitung garis stop loss, strategi terus menilai apakah harga akan menembus garis stop loss dari garis K sebelumnya untuk menentukan arah tren:

dir := dir == -1 and close > shortStopPrev ? 1 : 
         dir == 1 and close < longStopPrev ? -1 : dir

Ketika melewati garis berhenti panjang, dianggap bahwa tren berbalik. Ketika melewati garis berhenti pendek, dianggap bahwa tren berbalik.

Ini adalah salah satu cara yang paling efektif untuk memprediksi harga saham di pasar Forex.

buySignal = dir == 1 and dir[1] == -1 

sellSignal = dir == -1 and dir[1] == 1

Akhirnya, ketika sinyal beli dan jual muncul, lakukan operasi perdagangan yang sesuai.

Keunggulan Strategis

  1. Dengan menggunakan amplitudo rata-rata nyata untuk menghitung stop loss, dapat secara efektif memfilter kebisingan pasar dan menangkap sinyal tren yang lebih andal.

  2. Parameter strategi yang lebih sedikit, mudah dipahami dan dioperasikan. Periode ATR dan faktor perkalian dapat disesuaikan untuk menyesuaikan dengan lingkungan pasar yang berbeda.

  3. Menggunakan Break Stop Line untuk menilai perubahan arah tren, dapat mengontrol risiko secara efektif, dan menghentikan kerugian tepat waktu.

  4. Dapat dikonfigurasi untuk melakukan perdagangan multi atau dua arah, untuk memenuhi gaya perdagangan yang berbeda.

  5. Dapat digunakan dalam periode waktu apa pun, dan berlaku untuk berbagai jenis perdagangan.

Risiko Strategis

  1. Dalam situasi getaran, nilai ATR dapat ditarik lebih tinggi, menyebabkan stop loss line terlalu lebar dan menghasilkan lebih banyak sinyal palsu.

  2. Tidak dapat menentukan kombinasi parameter yang optimal, siklus ATR dan kelipatan perlu dioptimalkan sesuai dengan kondisi pasar.

  3. Periode perdagangan yang optimal untuk varietas yang diperdagangkan tidak dapat ditentukan, sehingga perlu dilakukan pengujian untuk setiap varietas yang diperdagangkan.

  4. Tidak dapat menentukan waktu terbaik untuk masuk, ada beberapa keterlambatan.

  5. Ada beberapa risiko posisi kosong, yang mungkin berada dalam posisi kosong ketika tren lemah.

  6. Jika ada risiko terobosan stop loss, batas stop loss harus dilenggarkan secara tepat.

Arah optimasi strategi

  1. Filter dapat dipertimbangkan dalam kombinasi dengan indikator lain untuk menghindari sinyal yang salah dalam situasi yang bergoyang. Misalnya MACD, RSI, dll.

  2. Pembelajaran mesin atau algoritma genetik dapat digunakan untuk mencari kombinasi parameter yang optimal.

  3. Parameter dapat dioptimalkan untuk varietas yang berbeda untuk menentukan siklus ATR dan faktor perkalian optimal.

  4. Anda dapat mengkombinasikan indikator kuantitatif untuk menentukan waktu masuk, seperti volume transaksi, untuk menghindari masuk prematur.

  5. Anda dapat mempertimbangkan untuk menggunakan strategi lock-out, yang memungkinkan Anda untuk tetap memegang posisi ketika posisi kosong.

  6. Anda dapat melebarkan jangkauan stop loss dengan tepat dan mengoptimalkan posisi stop loss dengan kombinasi indikator kekuatan tren.

Meringkaskan

Strategi supertrend adalah strategi pelacakan tren yang lebih dapat diandalkan dan dapat dikontrol risiko dengan menghitung stop loss dinamis dengan rata-rata gelombang riil, menilai harga untuk menemukan perubahan tren. Strategi ini sederhana dan mudah digunakan, cocok untuk berbagai jenis perdagangan, tetapi perlu dioptimalkan untuk parameter dan aturan strategi untuk mendapatkan efek yang lebih baik di berbagai pasar.

Kode Sumber Strategi
/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy("SuperTrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=1000)

LongOnly = input(title="Long Only ?", type=input.bool, defval=true)
length = input(title="ATR Period", type=input.integer, defval=22)
mult = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
showLabels = input(title="Show Buy/Sell Labels ?", type=input.bool, defval=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE

// From Date Inputs
fromDay = input(defval=1, title="From Day", minval=1, maxval=31)
fromMonth = input(defval=1, title="From Month", minval=1, maxval=12)
fromYear = input(defval=2019, title="From Year", minval=1970)

// To Date Inputs
toDay = input(defval=1, title="To Day", minval=1, maxval=31)
toMonth = input(defval=1, title="To Month", minval=1, maxval=12)
toYear = input(defval=2020, title="To Year", minval=1970)

// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

////////////////////////////////////////////////////////////////////////////////


atr = mult * atr(length)

longStop = hl2 - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop

shortStop = hl2 + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop

dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and close > shortStopPrev ? 1 : 
   dir == 1 and 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)
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title="Long Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0)
plotshape(buySignal and showLabels ? longStop : na, title="Buy Label", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=longColor, textcolor=color.white, transp=0)

plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor)
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title="Short Stop Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0)
plotshape(sellSignal and showLabels ? shortStop : na, title="Sell Label", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=shortColor, textcolor=color.white, transp=0)

if LongOnly
    if buySignal and time_cond
        strategy.entry("Long", strategy.long, comment="Long")
    
    if(sellSignal and time_cond)
        strategy.close("Long")
else
    if buySignal and time_cond
        strategy.entry("Long", strategy.long, comment="Long")
    else
        strategy.cancel("Long")
    
    
    if sellSignal and time_cond
        strategy.entry("Short", strategy.short, comment="Short")
    else
        strategy.cancel("Short")

if not time_cond
    strategy.close_all()