Strategi ini menggabungkan Bollinger Band, moving average dan MACD, membentuk sistem perdagangan yang relatif lengkap.
Strategi ini disebut
Logika dasar perdagangan adalah:
Bandingkan Bollinger Mid Band, EMA dan garis nol MACD untuk menentukan apakah pasar berada dalam fase uptrend atau downtrend.
Setelah tren diidentifikasi, strategi memeriksa apakah EMA melintasi BB Mid Band dan apakah histogram MACD melintasi garis sinyal untuk menentukan entri.
Tentukan target keuntungan dan stop loss. Setelah dimasukkan, target tetap dan stop loss tingkat yang ditetapkan sebelumnya.
Keuntungan terbesar dari strategi ini adalah penggunaan bersamaan dari tren, rata-rata bergerak dan alat MACD untuk memandu keputusan.
Pertama, BB Mid Band dengan jelas mencerminkan arah tren utama saat ini.
Kedua, BB sendiri memiliki karakteristik amplop yang kuat. Daerah di sekitar pita tengah juga menunjukkan tingkat dukungan / resistensi tertentu. Oleh karena itu silang EMA memiliki nilai sinyal.
Selain itu, MACD mengukur kenaikan dan penurunan momentum bullish / bearish. Ukuran mutlaknya mewakili emosi orang banyak yang tinggi atau rendah, juga mengisyaratkan potensi pembalikan.
Akhirnya, target keuntungan yang ditetapkan sebelumnya dan stop loss mengendalikan risiko/pembayaran dari perdagangan individu, memastikan stabilitas keseluruhan.
Meskipun penggunaan berbagai alat analisis, risiko utama adalah:
Parameter BB yang tidak tepat tidak mencerminkan tren utama.
Sistem EMA sinyal panjang tapi MACD tidak jelas berubah positif, kekuatan bearish dapat berkembang.
Jangkauan target keuntungan/stop loss terlalu luas, kerugian perdagangan tunggal meluas.
Solusi utama adalah:
Sesuaikan parameter BB untuk memastikan band tengah secara efektif mencerminkan tren utama.
Memperkenalkan lebih banyak indikator teknis untuk menilai momentum bull/bear.
Mengevaluasi perdagangan historis dan mengoptimalkan target keuntungan / stop loss.
Strategi ini dapat ditingkatkan lagi dalam hal berikut:
Memperkenalkan lebih banyak indikator seperti KDJ, ATR dll untuk membantu penilaian tren dan meningkatkan akurasi.
Mengimplementasikan lebih canggih berhenti seperti trailing stop, breakout stop dll
Mengevaluasi kinerja di berbagai produk. fine tune parameter untuk memenuhi berbagai kondisi pasar.
Uji dan tweak strategi berdasarkan hasil backtest selama jangka waktu dan pasar yang berbeda.
Mengintegrasikan pembelajaran mesin untuk optimasi parameter otomatis dan pembaruan strategi dinamis.
Strategi ini memanfaatkan BB, MA dan MACD bersama-sama. Ini memiliki penilaian tren yang jelas, karakteristik amplop tertentu dan juga menangkap beberapa pembalikan. Dengan lebih banyak alat bantu untuk menilai entri / keluar, ini dapat mencapai kinerja yang lebih dapat diandalkan. Evaluasi lebih lanjut dan peningkatan strategi ini dijamin dan diharapkan menghasilkan alat kuantitatif yang kuat.
/*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)