Strategi mengikuti tren berdasarkan rata-rata pergerakan dan supertrend


Tanggal Pembuatan: 2023-11-14 16:23:42 Akhirnya memodifikasi: 2023-11-14 16:23:42
menyalin: 0 Jumlah klik: 733
1
fokus pada
1617
Pengikut

Strategi mengikuti tren berdasarkan rata-rata pergerakan dan supertrend

Ringkasan

Strategi ini menggabungkan indikator garis rata dan indikator supertrend, untuk mengoperasikan mengikuti tren. Lakukan lebih banyak ketika tren naik, kosong ketika tren turun.

Prinsip Strategi

  1. Menggunakan volume transaksi sebagai bobot, menghitung harga rata-rata tertimbang dalam periode tertentu.

  2. Hull Moving Average dihitung berdasarkan MA. Hull Moving Average lebih sensitif terhadap perubahan harga.

  3. Perhitungan indikator supertrend. Perhitungan indikator supertrend dikombinasikan dengan ATR untuk melihat perubahan tren harga. Perhitungan uptrend dan downtrend.

  4. Ketika harga close-out melampaui uptrend, lakukan lebih banyak; ketika harga close-out jatuh ke downtrend, lakukan lebih banyak.

  5. Menggambar indikator tambahan, seperti harga bukaan, harga tutup, harga tertinggi, harga terendah, untuk melihat perubahan harga secara lebih intuitif.

  6. Membuat keputusan pembelian dan penjualan berdasarkan cross-indicator.

Analisis Keunggulan

  1. Strategi ini menggabungkan indikator garis rata-rata dan indikator supertrend untuk menangkap perubahan tren dengan lebih akurat.

  2. Hull Average Line lebih sensitif terhadap perubahan harga, yang membantu untuk menemukan perubahan tren tepat waktu.

  3. Indikator supertrend dapat secara dinamis menyesuaikan posisi naik dan turun, sesuai dengan fluktuasi pasar.

  4. Indikator bantu menunjukkan perubahan harga secara intuitif, dengan kombinasi sinyal indikator untuk membuat keputusan.

  5. Optimasi parameter strategi memiliki ruang yang luas, dapat menyesuaikan parameter seperti siklus rata-rata, perkalian supertrend.

Analisis risiko

  1. Pada saat melakukan perhitungan, sinyal palsu dapat dihasilkan, yang menyebabkan transaksi yang tidak perlu.

  2. Ada beberapa indikator yang perlu dipantau secara bersamaan, dan strategi untuk mengimplementasikannya relatif rumit.

  3. Parameter harus disesuaikan dengan karakteristik varietas yang berbeda.

  4. Pengendalian kerugian yang ketat diperlukan untuk menghindari kerugian tunggal yang terlalu besar.

  5. Ada kemungkinan transaksi yang lebih banyak, sehingga perlu dikontrol dampak dari biaya.

Arah optimasi

  1. Anda dapat menguji parameter dari garis rata-rata yang berbeda dan memilih indikator garis rata-rata yang lebih sensitif terhadap pasar.

  2. Anda dapat menguji berbagai super trend multiplier, dan memilih nilai yang dapat menangkap perubahan tren secara tepat waktu.

  3. Anda dapat menggunakan indikator volatilitas untuk menurunkan posisi Anda saat volatilitas meningkat.

  4. Kondisi penembusan dapat ditambahkan untuk menghindari sinyal palsu dalam penyusunan.

  5. Anda dapat mengoptimalkan strategi stop loss agar lebih sesuai dengan karakteristik pasar.

Meringkaskan

Strategi ini menggabungkan indikator garis rata dan indikator supertrend untuk menentukan arah tren, untuk mengikuti tren. Keuntungan dari strategi ini adalah bahwa indikator dapat saling diverifikasi, untuk menentukan tren dengan lebih akurat. Namun, perlu waspada terhadap gangguan sinyal palsu.

Kode Sumber Strategi
/*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)