Sumber dimuat naik... memuat...

Strategi Bollinger Momentum Breakout Multi-Timeframe dengan Purata Bergerak Hull

Penulis:ChaoZhang, Tarikh: 2024-11-29 17:00:00
Tag:VWMAHMABBMTFRSI

img

Ringkasan

Strategi ini adalah sistem dagangan berdasarkan analisis pelbagai jangka masa, menggabungkan Bollinger Bands, Hull Moving Average, dan Weighted Moving Average untuk menjana isyarat dagangan. Strategi ini beroperasi terutamanya pada jangka masa 1 jam sambil mengintegrasikan data pasaran dari tempoh 5 minit, 1 jam, dan 3 jam. Ia menggunakan pelbagai penunjuk teknikal untuk mengesahkan peluang dagangan dan melaksanakan mekanisme berhenti rugi dan mengambil keuntungan yang dinamik, menyesuaikan saiz kedudukan secara automatik berdasarkan ekuiti akaun untuk kawalan risiko yang berkesan.

Prinsip Strategi

Logik terasnya adalah berdasarkan pengesahan silang beberapa penunjuk teknikal. Strategi ini memantau hubungan harga dengan pelbagai purata bergerak dalam beberapa jangka masa, termasuk VWMA 5 minit, VWMA 1 jam, dan HMA 3 jam. Isyarat panjang dihasilkan apabila harga melanggar ambang atas sementara berada di atas semua penunjuk jangka masa; sebaliknya, isyarat pendek berlaku apabila harga melanggar ambang bawah sementara berada di bawah semua penunjuk. Strategi ini menggabungkan pengiraan penyimpangan untuk menetapkan ambang masuk dan keluar dinamik, meningkatkan fleksibiliti perdagangan.

Kelebihan Strategi

  1. Analisis jangka masa berbilang mengurangkan risiko pecah palsu dan meningkatkan kebolehpercayaan isyarat
  2. Tetapan stop-loss dan mengambil keuntungan dinamik disesuaikan dengan keadaan pasaran yang berbeza
  3. Ukuran kedudukan berdasarkan ekuiti akaun memastikan penggunaan modal yang rasional
  4. Mekanisme keluar berbilang menyediakan kebolehsesuaian strategi
  5. Antara muka grafik menawarkan visualisasi isyarat perdagangan yang jelas untuk analisis
  6. Integrasi pelbagai penunjuk teknikal matang meningkatkan ketepatan keputusan dagangan

Risiko Strategi

  1. Beberapa penunjuk boleh menyebabkan isyarat dagangan tertunda
  2. Kemungkinan pecah palsu yang kerap di pasaran yang berbeza
  3. Rasio stop loss dan mengambil keuntungan tetap mungkin tidak sesuai dengan semua keadaan pasaran
  4. Pemprosesan data pelbagai jangka masa boleh meningkatkan kerumitan strategi
  5. Risiko lipatan tinggi di pasaran yang tidak menentu

Arahan pengoptimuman

  1. Memperkenalkan penunjuk turun naik untuk penyesuaian stop-loss dan mengambil keuntungan dinamik
  2. Tambah pengiktirafan keadaan pasaran untuk penyesuaian parameter
  3. Mengoptimumkan penapisan isyarat untuk mengurangkan kerugian pecah palsu
  4. Menggabungkan analisis jumlah untuk meningkatkan kebolehpercayaan isyarat pecah
  5. Membangunkan mekanisme pengoptimuman parameter adaptif untuk meningkatkan kestabilan

Ringkasan

Strategi ini membina sistem perdagangan yang agak lengkap melalui analisis pelbagai jangka masa dan pelbagai penunjuk teknikal. Kekuatannya terletak pada kebolehpercayaan isyarat dan pengurusan risiko yang berkesan, walaupun ia menghadapi cabaran dengan kelewatan isyarat dan pengoptimuman parameter. Melalui peningkatan dan pengoptimuman yang berterusan, strategi menunjukkan potensi untuk mengekalkan prestasi yang stabil di pelbagai keadaan pasaran.


/*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)


Berkaitan

Lebih lanjut