Strategi Super Trend


Tarikh penciptaan: 2023-10-13 17:03:55 Akhirnya diubah suai: 2023-10-13 17:03:55
Salin: 0 Bilangan klik: 718
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi supertrend adalah strategi pengesanan trend berdasarkan pengiraan gelombang sebenar purata. Ia menggunakan gelombang sebenar purata untuk menetapkan garis berhenti dan menentukan arah trend dengan menentukan sama ada harga telah menembusi garis berhenti, untuk menghasilkan isyarat perdagangan.

Prinsip Strategi

Strategi ini pertama-tama mengira purata gelombang sebenar ATR dalam tempoh tertentu. Kemudian, garis berhenti panjang dan garis berhenti pendek dikira berdasarkan nilai ATR dengan faktor penskalaan. Kaedah pengiraan khusus adalah seperti berikut:

atr = mult * atr(length) 

longStop = hl2 - atr

shortStop = hl2 + atr

Di mana panjang adalah panjang kitaran ATR yang dikira, dan mult adalah faktor skala ATR.

Selepas mengira garisan hentian, strategi terus menilai sama ada harga telah menembusi garisan hentian K teratas untuk menentukan arah trend:

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

Apabila melanggar garis henti panjang, ia dianggap sebagai perubahan trend. Apabila melanggar garis henti pendek, ia dianggap sebagai perubahan trend.

Ini adalah satu-satunya cara yang boleh anda gunakan untuk membeli sesuatu yang lebih baik daripada yang lain, dan ini adalah satu-satunya cara yang boleh anda gunakan untuk membeli sesuatu yang lebih baik.

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

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

Akhirnya, apabila isyarat beli dan jual muncul, lakukan operasi dagangan yang sesuai.

Kelebihan Strategik

  1. Menggunakan purata panjang gelombang sebenar untuk mengira garis hentian, ia dapat menghapuskan bunyi pasaran dengan berkesan dan menangkap isyarat trend yang lebih dipercayai.

  2. Parameter strategi yang lebih sedikit, mudah difahami dan dikendalikan. Kitaran ATR dan faktor perkalian boleh disesuaikan untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.

  3. Menggunakan garis berhenti pecah untuk menilai perubahan arah trend, risiko dapat dikawal dengan berkesan, dan berhenti tepat pada masanya.

  4. Ia boleh dikonfigurasikan untuk berdagang dalam pelbagai cara atau dua arah, dan boleh memenuhi gaya perdagangan yang berbeza.

  5. Ia boleh digunakan dalam mana-mana tempoh masa dan boleh digunakan untuk pelbagai jenis perdagangan.

Risiko Strategik

  1. Dalam keadaan gegaran, nilai ATR mungkin ditarik ke atas, menyebabkan garis hentian menjadi terlalu lebar dan menghasilkan lebih banyak isyarat palsu.

  2. Tidak dapat menentukan kombinasi parameter yang optimum, kitaran ATR dan kelipatan perlu dioptimumkan mengikut keadaan pasaran.

  3. Tidak dapat menentukan kitaran dagangan terbaik untuk jenis dagangan, ujian perlu dilakukan untuk setiap jenis dagangan.

  4. Tidak dapat menentukan masa kemasukan yang terbaik, terdapat beberapa kelewatan.

  5. Terdapat beberapa risiko kosong, yang mungkin berada dalam keadaan kosong semasa trend lemah.

  6. Jika terdapat risiko penangguhan akan ditembusi, garis penangguhan harus dikurangkan dengan sewajarnya.

Arah pengoptimuman strategi

  1. Anda boleh mempertimbangkan untuk menyaring dengan penunjuk lain untuk mengelakkan isyarat yang salah dalam keadaan goyah. Contohnya, MACD, RSI dan sebagainya.

  2. Pembelajaran mesin atau algoritma genetik boleh digunakan untuk mencari kombinasi parameter terbaik.

  3. Parameter boleh dioptimumkan untuk pelbagai jenis untuk menentukan kitaran ATR dan faktor pengganda yang optimum.

  4. Ia boleh digabungkan dengan petunjuk kuantitatif untuk menentukan masa kemasukan, seperti jumlah transaksi, untuk mengelakkan kemasukan awal.

  5. Anda boleh mempertimbangkan untuk menggunakan strategi lock-out, yang membolehkan anda memegang kedudukan semasa kosong.

  6. Anda boleh meluaskan julat stop loss dengan sewajarnya dan mengoptimumkan kedudukan stop loss dengan menggabungkan indikator kekuatan trend.

ringkaskan

Strategi super trend adalah strategi untuk mengesan trend yang lebih dipercayai dan berisiko yang dapat dikawal. Strategi ini mudah digunakan dan sesuai untuk pelbagai jenis perdagangan, tetapi perlu dioptimumkan untuk parameter dan peraturan strategi untuk mendapatkan kesan yang lebih baik di pasaran yang berbeza. Penggunaan gabungan dengan petunjuk teknikal dan strategi lain dapat memberikan prestasi perdagangan yang lebih baik.

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