Strategi pemecahan momentum Bollinger berbilang tempoh digabungkan dengan strategi purata bergerak Hull

VWMA HMA BB MTF RSI
Tarikh penciptaan: 2024-11-29 17:00:00 Akhirnya diubah suai: 2024-11-29 17:00:00
Salin: 0 Bilangan klik: 507
1
fokus pada
1617
Pengikut

Strategi pemecahan momentum Bollinger berbilang tempoh digabungkan dengan strategi purata bergerak Hull

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan berdasarkan analisis pelbagai kerangka masa yang menggabungkan Bollinger Bands, Hull Moving Averages dan weighted Moving Averages untuk menghasilkan isyarat perdagangan. Strategi ini beroperasi pada kerangka masa 1 jam, sambil mengintegrasikan data pasaran dalam tiga tempoh masa 5 minit, 1 jam dan 3 jam, untuk mengesahkan peluang perdagangan melalui kombinasi pelbagai petunjuk teknikal.

Prinsip Strategi

Logik teras strategi ini adalah berdasarkan pengesahan silang pelbagai petunjuk teknikal. Ia memantau hubungan harga dengan pelbagai jenis garis rata pada masa yang sama dalam pelbagai tempoh masa, termasuk purata bergerak bertimbangan dalam kitaran 5 minit (VWMA), purata bergerak bertimbangan dalam kitaran 1 jam, dan purata bergerak Hull dalam kitaran 3 jam (HMA). Apabila harga berada di atas semua petunjuk tempoh masa, sistem akan menghasilkan banyak isyarat apabila harga meletup; sebaliknya, apabila harga berada di bawah semua petunjuk, sistem akan menghasilkan isyarat kosong apabila harga meletup.

Kelebihan Strategik

  1. Analisis kitaran masa berganda mengurangkan risiko penembusan palsu dan meningkatkan kebolehpercayaan isyarat perdagangan
  2. Tetapan Stop Loss yang dinamik dapat menyesuaikan diri dengan keadaan pasaran yang berbeza
  3. Pengurusan kedudukan berdasarkan hak dan kepentingan akaun memastikan penggunaan dana yang munasabah
  4. Pilihan pelbagai mekanisme penyingkiran meningkatkan fleksibiliti strategi
  5. Antara muka grafik yang memberikan isyarat perdagangan yang jelas untuk analisis dan penghakiman
  6. Mengintegrasikan pelbagai penunjuk teknikal yang matang untuk meningkatkan ketepatan keputusan perdagangan

Risiko Strategik

  1. Penggunaan pelbagai petunjuk boleh menyebabkan isyarat perdagangan terlewat
  2. Isyarat pelarian palsu yang kerap mungkin berlaku dalam pasaran yang tidak menentu
  3. Nisbah Stop Loss Tetap mungkin tidak sesuai untuk semua keadaan pasaran
  4. Pemprosesan data dalam tempoh masa yang berbilang boleh meningkatkan kerumitan operasi strategi
  5. Risiko tergelincir yang mungkin lebih besar dalam pasaran yang sangat tidak menentu

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk turun naik untuk melaraskan tahap ambil untung dan henti kerugian secara dinamik
  2. Tambah ciri pengenalan keadaan pasaran, menggunakan tetapan parameter yang berbeza dalam keadaan pasaran yang berbeza
  3. Mekanisme penapisan isyarat yang dioptimumkan untuk mengurangkan kerosakan akibat penembusan palsu
  4. Menambah kebolehpercayaan isyarat penembusan dengan analisis jumlah transaksi
  5. Membangunkan mekanisme pengoptimuman parameter yang bersesuaian untuk meningkatkan kestabilan strategi

ringkaskan

Strategi ini membina sistem perdagangan yang agak lengkap dengan menggabungkan analisis kitaran masa dan pelbagai petunjuk teknikal. Kelebihan strategi adalah kebolehpercayaan isyarat dan keberkesanan pengurusan risiko, tetapi ada juga masalah seperti kelewatan isyarat dan pengoptimuman parameter. Dengan pengoptimuman dan penambahbaikan yang berterusan, strategi ini dijangka mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("1H- 280, 2.7", overlay=true)


// Fetch the indicator values from different timeframes
vwma5 = request.security(syminfo.tickerid, "5", ta.wma(close, 233), lookahead = barmerge.lookahead_off)
vwma_hourly = request.security(syminfo.tickerid, "60", ta.wma(close, 89), lookahead = barmerge.lookahead_off)
hullma155_3h = request.security(syminfo.tickerid, "180", ta.hma(close, 155), lookahead = barmerge.lookahead_off)


// Calculate the deviation value
deviation = close * 0.032


// Initialize the signal variables
var float signalLine = na
var color lineColor = na


// Long Entry Conditions
longCondition_5min = close > vwma5
longCondition_hourly = close > vwma_hourly
longCondition_3h = close > hullma155_3h


// Short Entry Conditions
shortCondition_5min = close < vwma5
shortCondition_hourly = close < vwma_hourly
shortCondition_3h = close < hullma155_3h


// Long Entry
if longCondition_5min and longCondition_hourly and longCondition_3h
    signalLine := close + deviation
    lineColor := color.rgb(0, 255, 0, 1)


// Short Entry
if shortCondition_5min and shortCondition_hourly and shortCondition_3h
    signalLine := close - deviation
    lineColor := color.rgb(255, 0, 0, 1)


// Plotting the connecting line
plot(signalLine, title="Signal Line", color=lineColor, linewidth=1, style=plot.style_line)


// Colorize the signal line
bgcolor(signalLine > close ? color.rgb(0, 255, 0, 99) : color.rgb(255, 0, 0, 99), transp=90)



// Strategy settings
useTPSL = input(true, "Use TP/SL for closing long positions?")
useDownbreakOutbreak = input(false, "Use Downbreak and Outbreak for closing positions?")
useM7FClosing = input(false, "Use M7F Signal for closing positions?")


length1 = input.int(280, minval=1)
src = input(close, title="Source")
mult = input.float(2.7, minval=0.001, maxval=50, title="StdDev")


basis = ta.vwma(src, length1)
dev = mult * ta.stdev(src, length1)
upper = basis + dev
lower = basis - dev


offset = input.int(0, "Offset", minval = -500, maxval = 500)


length2 = input.int(55, minval=1)
src2 = input(close, title="Source")
hullma = ta.wma(2 * ta.wma(src2, length2 / 2) - ta.wma(src2, length2), math.floor(math.sqrt(length2)))


hullmacrosslower = ta.crossover(hullma, lower)
hullmacrossupper = ta.crossunder(hullma, upper)


breakout = ta.crossover(ohlc4, upper)
breakdown = ta.crossunder(ohlc4, upper)
outbreak = ta.crossover(ohlc4, lower)
downbreak = ta.crossunder(ohlc4, lower)


// Calculate position size and leverage
margin_pct = 1
leverage = 1
position_size = strategy.equity * margin_pct
qty = position_size / close / leverage


// Define take profit and stop loss levels
take_profit = 0.14
stop_loss = 0.06


// Opening a long position
if breakout
    strategy.entry("Long", strategy.long, qty, limit=close*(1+take_profit), stop=close*(1-stop_loss))


// Opening a short position
if downbreak
    strategy.entry("Short", strategy.short, qty, limit=close*(1-take_profit), stop=close*(1+stop_loss))


// Closing positions based on chosen method
if useTPSL
    // Using TP/SL for closing long positions
    if strategy.position_size > 0 and breakdown
        strategy.close("Long", comment="Breakdown")
else if useDownbreakOutbreak
    // Using Downbreak and Outbreak for closing positions
    if strategy.position_size > 0 and (breakdown or downbreak)
        strategy.close("Long", comment="Breakdown")
    if strategy.position_size < 0 and (outbreak or downbreak)
        strategy.close("Short", comment="Outbreak")
else if useM7FClosing
    // Using M7F Signal for closing positions
    if strategy.position_size > 0 and (signalLine < close)
        strategy.close("Long", comment="M7F Signal")
    if strategy.position_size < 0 and (signalLine > close)
        strategy.close("Short", comment="M7F Signal")


// Plotting entry signals
plotshape(hullmacrosslower, title="High Bear Volatility", style=shape.arrowup, text="^^^^^", color=color.rgb(75, 202, 79), location=location.belowbar)
plotshape(hullmacrossupper, title="High Bull Volatility", style=shape.arrowdown, text="-----", color=color.rgb(215, 72, 72), location=location.abovebar)
plotshape(breakout ? 1 : na, title="Breakout", style=shape.arrowup, text="", color=color.rgb(75, 202, 79), location=location.belowbar, size=size.tiny)
plotshape(breakdown ? 1 : na, title="Breakdown", style=shape.arrowdown, text="", color=color.rgb(201, 71, 71), location=location.abovebar, size=size.tiny)
plotshape(outbreak ? 1 : na, title="Outbreak", style=shape.arrowup, text="", color=color.rgb(0, 110, 255), location=location.belowbar, size=size.tiny)
plotshape(downbreak ? 1 : na, title="Downbreak", style=shape.arrowdown, text="", color=color.rgb(255, 111, 0), location=location.abovebar, size=size.tiny)