Strategi perdagangan jangka panjang berdasarkan SuperTrend


Tanggal Pembuatan: 2023-09-20 17:14:33 Akhirnya memodifikasi: 2023-09-20 17:14:33
menyalin: 0 Jumlah klik: 773
1
fokus pada
1621
Pengikut

Ringkasan

Strategi ini menggunakan indikator SuperTrend untuk mengidentifikasi peluang masuk ke posisi panjang. Strategi ini menggunakan ATR dan perkalian untuk menentukan posisi dukungan dinamis untuk masuk ke posisi panjang. Strategi ini berfokus pada peluang perdagangan posisi panjang.

Prinsip Strategi

  1. Perhitungan naik dan turun berdasarkan siklus dan perkalian ATR.

  2. Perhitungan tren saat ini, 1 menunjukkan kenaikan, -1 menunjukkan penurunan. Ketika harga menerobos tren naik, tren berbalik, memicu sinyal beli. Ketika tren turun, tren berbalik, memicu sinyal jual.

  3. Dengan menggunakan Moving Average sebagai filter tren, harga harus lebih tinggi dari MA untuk membeli saat terobosan, dan harga harus lebih rendah dari MA untuk dijual saat terobosan, untuk menghindari terobosan palsu.

  4. Memperlihatkan secara visual tanda tren, sinyal perdagangan, dan lain-lain.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Indikator SuperTrend dapat digunakan untuk melacak perubahan harga secara dinamis dan mencerminkan perubahan tren secara tepat waktu.

  2. Metode ATR dapat menyesuaikan stop loss sesuai dengan fluktuasi pasar, menguntungkan untuk mengunci keuntungan.

  3. Kombinasi dengan penarikan MA dari false breakout, dapat secara efektif menyaring sinyal perdagangan bising dari pasar yang bergoyang.

  4. Desain visual menunjukkan strategi perdagangan dan situasi pasar secara intuitif, dan mudah dioperasikan.

  5. Hanya berdagang di titik-titik pergeseran tren, sangat cocok untuk memegang posisi panjang.

Analisis risiko

Strategi ini memiliki risiko utama sebagai berikut:

  1. Indikator SuperTrend sangat sensitif terhadap parameter, sering mengalami perubahan garis udara, dan mungkin sering terjadi perdagangan.

  2. Pada saat terjadi gempa bumi, stop loss akan sering dipicu.

  3. Jika Anda tidak mempertimbangkan biaya transaksi, dana kecil akan lebih dipengaruhi oleh biaya transaksi.

  4. Tidak ada stop loss, risiko penarikan lebih besar.

  5. Namun, ada beberapa peluang yang mungkin terlewatkan.

Risiko dapat dikurangi dengan:

  1. Optimalkan parameter ATR untuk mengurangi frekuensi penyesuaian saluran udara.

  2. Menambahkan filter K-line ekuivalen untuk menghindari gangguan dari gelombang kecil frekuensi tinggi.

  3. Tetapkan Stop Loss Stop Loss untuk melindungi keuntungan.

  4. Adaptasi siklus rata-rata bergerak untuk menyeimbangkan efek penyaringan.

  5. Mengoptimalkan pengelolaan dana dan mengurangi dampak biaya transaksi.

Arah optimasi

Strategi ini dapat dioptimalkan dengan:

  1. Uji sumber harga yang berbeda, seperti harga close out, harga tertinggi, dan lain sebagainya.

  2. Cobalah indikator stop loss dinamis lainnya, seperti Chandelier Exit.

  3. Menambahkan modul manajemen posisi, mengoptimalkan efisiensi penggunaan dana.

  4. Tergabung dengan indikator volatilitas, refining entry timing.

  5. Tambahkan Stop Loss, Stop Stop Module, dan Kontrol Resiko.

  6. Parameter penyesuaian untuk pasar yang berbeda.

  7. Menjelajahi algoritma pembelajaran mesin untuk mengoptimalkan parameter

  8. Pertimbangan yang dikombinasikan dengan indikator lain untuk meningkatkan akurasi penyaringan.

Meringkaskan

Strategi ini menggunakan SuperTrend untuk mengintegrasikan stop loss yang dinamis dalam penilaian tren, dan didukung oleh MA untuk melakukan pemfilteran tren untuk mengidentifikasi kapan garis panjang dibeli. Desain visual untuk menyederhanakan operasi. Dengan pengaturan parameter yang dioptimalkan dan perluasan fungsi, dapat menjadi strategi perdagangan garis panjang yang stabil dan andal.

Kode Sumber Strategi
/*backtest
start: 2020-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 3d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SuperTrend Long Strategy", overlay=true, initial_capital=50000, currency=currency.USD, default_qty_type=strategy.cash, default_qty_value=50000)

Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)

atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Moving Average as Trend Filter
periodes_ma = input(title="Moving Average Period", type=input.integer, defval=20)
src_ma = input(title="Moving Average Source", type=input.source, defval=close)
ma = sma(src_ma, periodes_ma)

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1 and close > ma
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0))

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1 and close < ma
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0))

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.new(color.green, 70) : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.new(color.red, 70) : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       

window()  => time >= start and time <= finish ? true : false

longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())

shortCondition = sellSignal
if (shortCondition)
    strategy.close("BUY")
    strategy.entry("SELL", strategy.short, when = window())

buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)