Strategi dagangan jangka panjang berdasarkan SuperTrend


Tarikh penciptaan: 2023-09-20 17:14:33 Akhirnya diubah suai: 2023-09-20 17:14:33
Salin: 0 Bilangan klik: 770
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini mengenal pasti peluang masuk panjang melalui petunjuk SuperTrend. Ia menggunakan ATR dan perkalian julat sebenar purata untuk menentukan kedudukan sokongan dinamik untuk masuk posisi panjang. Strategi ini memberi tumpuan kepada peluang perdagangan posisi panjang.

Prinsip Strategi

  1. Mengikut kitaran ATR dan penggandaan, harga naik dan turun. Harga naik apabila harga menembus tren naik dan turun apabila harga menembus tren turun.

  2. Hitung trend semasa, 1 menunjukkan kenaikan harga, -1 menunjukkan penurunan harga. Apabila harga menembusi tren naik, tren bertukar dengan turun, mencetuskan isyarat beli; apabila ia menembusi tren turun, tren bertukar dengan turun, mencetuskan isyarat jual.

  3. Menggabungkan purata bergerak sebagai penapis trend, harga yang diperlukan lebih tinggi daripada MA untuk membeli apabila pecah, harga yang diperlukan lebih rendah daripada MA untuk menjual apabila pecah, untuk mengelakkan pecah palsu.

  4. Memaparkan visual kepada pembantu untuk menandakan trend, isyarat dagangan dan lain-lain untuk membantu penilaian.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Penggunaan petunjuk SuperTrend dapat mengesan perubahan harga secara dinamik dan mencerminkan perubahan trend tepat pada masanya.

  2. ATR Stop boleh disesuaikan dengan turun naik pasaran, yang membantu mengunci keuntungan.

  3. Bersama-sama dengan penyingkiran MA untuk penembusan palsu, ia dapat menyaring dengan berkesan isyarat perdagangan bising dari pasaran yang bergolak.

  4. Reka bentuk visual menunjukkan strategi perdagangan dan keadaan pasaran secara intuitif, mudah dikendalikan.

  5. Hanya berdagang pada titik perubahan trend, sangat sesuai untuk memegang kedudukan panjang.

Analisis risiko

Strategi ini mempunyai risiko utama:

  1. Indeks SuperTrend sensitif kepada parameter, sering disesuaikan dengan pelbagai garis udara, dan mungkin sering diperdagangkan.

  2. Dalam keadaan gegaran, barisan kemusnahan akan sering dihidupkan.

  3. Tanpa mengambil kira kos urus niaga, modal kecil akan terjejas oleh kos urus niaga.

  4. Tidak ada penangguhan kerugian, risiko pulangan lebih tinggi.

  5. Mungkin ada beberapa peluang yang terlepas oleh gelombang tren.

Anda boleh mengurangkan risiko dengan:

  1. Mengoptimumkan parameter ATR untuk mengurangkan frekuensi penyesuaian pelbagai saluran udara.

  2. Menambah penapis K yang setara untuk mengelakkan gangguan oleh gelombang frekuensi tinggi.

  3. Tetapkan stop loss untuk melindungi keuntungan.

  4. Menyesuaikan purata bergerak untuk menyeimbangkan kesan penapisan.

  5. Mengoptimumkan pengurusan dana dan mengurangkan kos transaksi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Uji sumber harga yang berbeza, seperti harga penutupan, harga tertinggi dan sebagainya.

  2. Cubalah penunjuk stop loss dinamik lain, seperti Chandelier Exit.

  3. Menambah modul pengurusan kedudukan dan mengoptimumkan penggunaan dana.

  4. Perbandingan Indeks Volatiliti dengan Waktu Masuk Refine

  5. Tambah modul Stop Loss, Stop Stop dan mengawal risiko.

  6. Parameter penyesuaian untuk pasaran yang berbeza.

  7. Meneroka algoritma pembelajaran mesin untuk mencapai optimasi parameter.

  8. Menggabungkan penilaian dengan petunjuk lain untuk meningkatkan ketepatan penapisan.

ringkaskan

Strategi ini menggunakan SuperTrend untuk mengintegrasikan stop loss dinamik untuk menilai trend, dan dibantu dengan MA untuk menyaring trend untuk mengenal pasti masa untuk membeli garis panjang. Reka bentuk visual memudahkan operasi. Dengan mengoptimumkan parameter dan fungsi, ia boleh menjadi strategi perdagangan garis panjang yang stabil dan boleh dipercayai.

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