Strategi mengikut arah aliran berdasarkan purata bergerak dan aliran super


Tarikh penciptaan: 2023-11-14 16:23:42 Akhirnya diubah suai: 2023-11-14 16:23:42
Salin: 0 Bilangan klik: 733
1
fokus pada
1617
Pengikut

Strategi mengikut arah aliran berdasarkan purata bergerak dan aliran super

Gambaran keseluruhan

Strategi ini menggabungkan penunjuk garis rata dan penunjuk super trend, untuk melakukan operasi mengikut trend. Lakukan lebih banyak apabila trend naik, dan kosong apabila trend turun.

Prinsip Strategi

  1. Hitung purata bergerak bertimbangan MA. Menggunakan jumlah transaksi sebagai berat, kira harga purata bertimbangan dalam tempoh tertentu.

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

  3. Pengiraan penunjuk hypertrend. Penunjuk hypertrend digabungkan dengan ATR untuk melihat perubahan trend harga. Pengiraan atas dan bawah landasan.

  4. Apabila harga penutupan melebihi paras atas, buat lebih; apabila harga penutupan jatuh ke bawah, buat kosong.

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

  6. Memutuskan pembelian dan penjualan berdasarkan penanda aras.

Analisis kelebihan

  1. Strategi ini menggabungkan penunjuk garis rata dan penunjuk super trend untuk menangkap perubahan trend dengan lebih tepat.

  2. Hull Average Line lebih sensitif terhadap perubahan harga, yang membantu untuk melihat perubahan trend pada masa yang tepat.

  3. Penunjuk Super Trend boleh menyesuaikan diri secara dinamik untuk naik dan turun, menyesuaikan diri dengan turun naik pasaran.

  4. Penunjuk bantuan secara langsung menunjukkan perubahan harga, dan membuat keputusan dengan isyarat penunjuk.

  5. Optimasi parameter strategi mempunyai ruang yang luas, dan parameter seperti kitaran purata, perkalian supertrend dan sebagainya boleh disesuaikan.

Analisis risiko

  1. Dalam situasi yang sama, ia mungkin menghasilkan isyarat palsu yang menyebabkan perdagangan yang tidak perlu.

  2. Ia memerlukan pemantauan pelbagai indikator pada masa yang sama, dan strategi untuk melaksanakan ia agak rumit.

  3. Parameter perlu diselaraskan dengan baik agar parameter penunjuk sesuai dengan ciri-ciri pelbagai jenis.

  4. Ia perlu dikawal dengan ketat untuk mengelakkan kerugian tunggal yang terlalu besar.

  5. Jumlah transaksi mungkin lebih banyak, dan kesan bayaran perlu dikawal.

Arah pengoptimuman

  1. Anda boleh menguji parameter dari pelbagai garis rata-rata, dan memilih indikator garis rata-rata yang lebih sensitif kepada pasaran.

  2. Anda boleh menguji pelbagai perkalian supertrend, dan pilih nilai yang dapat menangkap perubahan trend tepat pada masanya.

  3. Ia boleh digabungkan dengan indikator kadar turun naik untuk menurunkan kedudukan apabila turun naik meningkat.

  4. Anda boleh menambah syarat untuk menembusi untuk mengelakkan isyarat palsu dalam penyusunan.

  5. Anda boleh mengoptimumkan strategi penutupan kerugian untuk menyesuaikan diri dengan ciri-ciri pasaran.

ringkaskan

Strategi ini digabungkan dengan penunjuk garis rata dan penunjuk trend super untuk menentukan arah trend, untuk mengikuti trend. Kelebihannya ialah antara penunjuk boleh saling disahkan, lebih tepat menentukan trend. Tetapi perlu berhati-hati dengan gangguan isyarat palsu. Dengan pengoptimuman parameter dan kawalan risiko, anda dapat meningkatkan lagi kesan strategi.

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