Trend Mengikuti Strategi Berdasarkan Purata Bergerak dan Super Trend

Penulis:ChaoZhang, Tarikh: 2023-11-14 16:23:42
Tag:

img

Ringkasan

Strategi ini menggabungkan indikator purata bergerak dan super trend untuk mengikuti trend. Ia pergi panjang apabila trend naik dan pergi pendek apabila trend turun.

Logika Strategi

  1. Menghitung purata bergerak MA yang ditimbang. Gunakan jumlah sebagai berat untuk mengira harga purata ditimbang dalam tempoh.

  2. Mengira purata bergerak Hull berdasarkan MA. Purata bergerak Hull lebih sensitif terhadap perubahan harga.

  3. Mengira penunjuk super trend. Super trend menggabungkan ATR untuk mengenal pasti perubahan trend. Ia mengira jalur atas dan bawah.

  4. Apabila hampir pecah di atas jalur atas, pergi panjang. Apabila dekat pecah di bawah jalur bawah, pergi pendek.

  5. Menggambar penunjuk tambahan seperti terbuka, dekat, tinggi dan rendah untuk memerhatikan pergerakan harga secara visual.

  6. Membuat keputusan dagangan berdasarkan penyambungan penunjuk.

Analisis Kelebihan

  1. Strategi ini menggabungkan kedua-dua purata bergerak dan super trend, yang membolehkan pengesanan trend yang lebih tepat.

  2. Purata bergerak Hull lebih sensitif terhadap perubahan harga, membantu pembalikan trend spot tepat pada masanya.

  3. Super trend secara dinamik menyesuaikan jalur atas dan bawah untuk menyesuaikan diri dengan turun naik pasaran.

  4. Penunjuk tambahan secara visual memaparkan pergerakan harga untuk membantu membuat keputusan dengan isyarat penunjuk.

  5. Strategi ini membolehkan pengoptimuman parameter pada tempoh purata bergerak, pengganda trend super dll.

Analisis Risiko

  1. Whipsaws boleh menghasilkan isyarat palsu semasa pasaran yang terikat julat, menyebabkan perdagangan yang tidak perlu.

  2. Pemantauan pelbagai penunjuk boleh membuat strategi agak rumit untuk dilaksanakan.

  3. Parameter perlu diselaraskan dengan betul untuk memenuhi ciri-ciri produk yang berbeza.

  4. Stop loss yang ketat diperlukan untuk mengehadkan kerugian pada kedudukan tunggal.

  5. Frekuensi perdagangan yang tinggi memerlukan kawalan kesan dari komisen.

Arahan pengoptimuman

  1. Uji purata bergerak yang berbeza untuk mencari yang lebih sensitif kepada pasaran.

  2. Uji pelbagai pengganda super trend untuk menangkap perubahan trend dalam masa.

  3. Menggabungkan indeks turun naik untuk mengurangkan saiz kedudukan apabila turun naik meningkat.

  4. Tambah keadaan penembusan untuk mengelakkan isyarat palsu semasa tempoh jangkauan terhad.

  5. Mengoptimumkan strategi stop loss untuk menjadikannya lebih mudah menyesuaikan diri dengan keadaan pasaran.

Ringkasan

Strategi ini menilai arah trend menggunakan kedua-dua purata bergerak dan super trend untuk mengikuti trend. Kelebihannya adalah pengesahan bersama antara penunjuk untuk pengesanan trend yang lebih tepat. Tetapi isyarat palsu harus diperhatikan. Strategi ini boleh ditingkatkan lagi melalui pengoptimuman parameter dan kawalan risiko.


/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © rajukpatel

//@version=5
strategy('My RK Strategy with Alert', shorttitle='My RK Strategy with Alert', overlay=true )
src5 = input(close)

tf = input(1440)
len5 = timeframe.isintraday and timeframe.multiplier >= 1 ? tf / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7

ma = ta.ema(src5 * volume, len5) / ta.ema(volume, len5)


//script taken from https://www.tradingview.com/script/kChCRRZI-Hull-Moving-Average/

src1 = ma

p(src1, len5) =>
    n = 0.0
    s = 0.0
    for i = 0 to len5 - 1 by 1
        w = (len5 - i) * len5
        n += w
        s += src5[i] * w
        s
    s / n

hm = 2.0 * p(src1, math.floor(len5 / 3)) - p(src1, len5)
vhma = p(hm, math.floor(math.sqrt(len5)))
lineColor = vhma > vhma[1] ? color.lime : color.red
plot(vhma, title='VHMA', color=lineColor, linewidth=3)
hColor = true
vis = true
hu = hColor ? vhma > vhma[2] ? #00ff00 : #ff0000 : #ff9800

vl = vhma[0]
ll = vhma[1]
m1 = plot(vl, color=hu, linewidth=1, transp=60)
m2 = plot(vis ? ll : na, color=hu, linewidth=2, transp=80)

fill(m1, m2, color=hu, transp=70)
//

b = timeframe.isintraday and timeframe.multiplier >= 1 ? 60 / timeframe.multiplier * 7 : timeframe.isintraday and timeframe.multiplier < 60 ? 60 / timeframe.multiplier * 24 * 7 : 7



//
res5 = input.timeframe('D')

o = request.security(syminfo.tickerid, res5, open, barmerge.gaps_off, barmerge.lookahead_on)
c = request.security(syminfo.tickerid, res5, close, barmerge.gaps_off, barmerge.lookahead_on)
hz = request.security(syminfo.tickerid, res5, high, barmerge.gaps_off, barmerge.lookahead_on)
l = request.security(syminfo.tickerid, res5, low, barmerge.gaps_off, barmerge.lookahead_on)



col = c >= o ? color.lime : color.red

ppo = plot(b ? o >= c ? hz : l : o, color=col, title='Open', style=plot.style_stepline, transp=100)
ppc = plot(b ? o <= c ? hz : l : c, color=col, title='Close', style=plot.style_stepline, transp=100)

plot(b and hz > c ? hz : na, color=col, title='High', style=plot.style_circles, linewidth=2, transp=60)
plot(b and l < c ? l : na, color=col, title='Low', style=plot.style_circles, linewidth=2, transp=60)

fill(ppo, ppc, col, transp=90)

//
// INPUTS //
st_mult = input.float(1, title='SuperTrend Multiplier', minval=0, maxval=100, step=0.01)
st_period = input.int(50, title='SuperTrend Period', minval=1)

// CALCULATIONS //
up_lev = l - st_mult * ta.atr(st_period)
dn_lev = hz + st_mult * ta.atr(st_period)

up_trend = 0.0
up_trend := c[1] > up_trend[1] ? math.max(up_lev, up_trend[1]) : up_lev

down_trend = 0.0
down_trend := c[1] < down_trend[1] ? math.min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := c > down_trend[1] ? 1 : c < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend == 1 ? up_trend : down_trend

// Plotting
//plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy = ta.crossover(c, st_line)
sell = ta.crossunder(c, st_line)
signal = input(false)

/////////////// Plotting /////////////// 
plotshape(signal and buy, style=shape.triangleup, size=size.normal, location=location.belowbar, color=color.new(color.lime, 0))
plotshape(signal and sell, style=shape.triangledown, size=size.normal, location=location.abovebar, color=color.new(color.red, 0))


if buy
    strategy.entry('My Long Entry Id', strategy.long)

if sell
    strategy.entry('My Short Entry Id', strategy.short)



Lebih lanjut