Strategi ini menggabungkan Bollinger Band, purata bergerak dan MACD, membentuk sistem perdagangan yang agak lengkap.
Strategi ini dinamakan
Logik dagangan asas adalah:
Bandingkan Bollinger Mid Band, EMA dan garis sifar MACD untuk menentukan sama ada pasaran berada dalam fasa kenaikan atau penurunan.
Cari peluang masuk. Selepas trend dikenal pasti, strategi memeriksa sama ada EMA melintasi BB Mid Band dan jika histogram MACD melintasi garis isyarat untuk menentukan entri.
Tetapkan sasaran keuntungan dan stop loss. Setelah dimasukkan, sasaran tetap dan tahap stop loss ditetapkan.
Kelebihan terbesar strategi ini adalah penggunaan trend, purata bergerak dan alat MACD secara serentak untuk membimbing keputusan. Ini membolehkan penilaian yang lebih tepat mengenai momentum pasaran dan juga membantu menangkap beberapa pembalikan.
Pertama, BB Mid Band jelas mencerminkan arah trend utama semasa. Peranan EMA adalah untuk mengesan kemajuan trend. Perbandingan dan gabungan mereka membolehkan pengenalan trend yang lebih tepat.
Kedua, BB sendiri mempunyai ciri-ciri sampul yang kuat. Kawasan di sekitar jalur tengah juga menunjukkan tahap sokongan / rintangan tertentu. Oleh itu silang EMA mempunyai nilai isyarat.
Di samping itu, MACD mengukur kenaikan dan penurunan momentum bullish / bearish. Saiz mutlaknya mewakili emosi orang ramai yang tinggi atau rendah, juga menunjukkan potensi pembalikan.
Akhirnya, sasaran keuntungan yang ditetapkan dan stop loss mengawal risiko / ganjaran dagangan individu, memastikan kestabilan keseluruhan.
Walaupun penggunaan pelbagai alat analisis, risiko utama adalah:
Parameter BB yang tidak betul gagal mencerminkan trend utama.
Sistem EMA memberi isyarat panjang tetapi MACD tidak jelas menjadi positif, kekuatan penurunan mungkin berkembang.
Julat sasaran keuntungan / stop loss terlalu luas, kerugian perdagangan tunggal meluas.
Penyelesaian utama ialah:
Sesuaikan parameter BB untuk memastikan jalur pertengahan mencerminkan trend utama.
Memperkenalkan lebih banyak penunjuk teknikal untuk menilai momentum bull/bear.
Menilai perdagangan sejarah dan mengoptimumkan sasaran keuntungan / hentikan kerugian.
Strategi ini boleh ditingkatkan lagi dalam aspek berikut:
Memperkenalkan lebih banyak penunjuk seperti KDJ, ATR dll untuk membantu penilaian trend dan meningkatkan ketepatan.
Melaksanakan hentian yang lebih canggih seperti hentian penghantar, hentian pecah dll.
Mengkaji prestasi di seluruh produk yang berbeza, menyesuaikan parameter yang sesuai dengan pelbagai keadaan pasaran.
Uji dan tweak strategi berdasarkan hasil backtest dalam jangka masa dan pasaran yang berbeza.
Menggabungkan pembelajaran mesin untuk pengoptimuman parameter automatik dan kemas kini strategi dinamik.
Strategi ini menggunakan BB, MA dan MACD bersama-sama. Ia mempunyai penilaian trend yang jelas, ciri sampul tertentu dan juga menangkap beberapa pembalikan. Dengan lebih banyak alat tambahan untuk menilai entri / keluar, ia dapat mencapai prestasi yang lebih boleh dipercayai. Penilaian dan peningkatan strategi ini dibenarkan dan dijangka menghasilkan alat kuantitatif yang kukuh.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Combined Strategy", overlay=true, shorttitle="Comb Strat", default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Precio de beneficio y Stop Loss takeProfitTicks = 87636 stopLossTicks = 53350 // Bollinger Bands + EMA length_bb = input(150, title="BB Length") src_bb = input(close, title="BB Source") mult = input(2.0, title="BB StdDev") basis = ta.sma(src_bb, length_bb) dev = mult * ta.stdev(src_bb, length_bb) upper = basis + dev lower = basis - dev len_ema = input(34, title="EMA Length") src_ema = input(close, title="EMA Source") out_ema = ta.ema(src_ema, len_ema) typeMA = input("SMA", title="Method") smoothingLength = input(5, title="Length") var float smoothingLine = na if (typeMA == "SMA") smoothingLine := ta.sma(out_ema, smoothingLength) else if (typeMA == "EMA") smoothingLine := ta.ema(out_ema, smoothingLength) // MACD fast_length = input(title="Fast Length", defval=9) slow_length = input(title="Slow Length", defval=17) src_macd = input(title="Source", defval=close) signal_length = input.int(title="Signal Smoothing", minval=1, maxval=50, defval=9) sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"]) sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"]) fast_ma = sma_source == "SMA" ? ta.sma(src_macd, fast_length) : ta.ema(src_macd, fast_length) slow_ma = sma_source == "SMA" ? ta.sma(src_macd, slow_length) : ta.ema(src_macd, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length) hist = macd - signal // Condiciones de compra y venta longCondition = (out_ema > basis) and (macd > signal) and (signal > 0) shortCondition = (out_ema < basis) and (macd < signal) and (signal < 0) // Variables de estado var bool longExecuted = na var bool shortExecuted = na // Estrategia if (longCondition and not longExecuted) strategy.entry("Long", strategy.long) longExecuted := true shortExecuted := na if (shortCondition and not shortExecuted) strategy.entry("Short", strategy.short) shortExecuted := true longExecuted := na // Take Profit y Stop Loss para Compras y Ventas Cortas strategy.exit("Take Profit/Close Long", from_entry="Long", profit=takeProfitTicks, loss=stopLossTicks) strategy.exit("Take Profit/Close Short", from_entry="Short", profit=takeProfitTicks, loss=stopLossTicks) // Cierre de posiciones cuando la dirección cambia if ((out_ema < basis) and (macd < signal)) strategy.close("Long") longExecuted := na if ((out_ema > basis) and (macd > signal)) strategy.close("Short") shortExecuted := na // Plots plot(basis, "BB Basis", color=#FF6D00) plot(upper, "BB Upper", color=color.new(#2962FF, 0.5)) plot(lower, "BB Lower", color=color.new(#2962FF, 0.5)) plot(smoothingLine, title="Smoothing Line", color=#f37f20, linewidth=2) hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(hist, title="Histogram", style=plot.style_columns, color=(hist >= 0 ? (hist[1] < hist ? color.green : color.red) : (hist[1] < hist ? color.red : color.green))) plot(macd, title="MACD", color=color.blue) plot(signal, title="Signal", color=color.orange)