Bollinger Bands dan EMA Trend Following Strategy menggabungkan dua penunjuk teknikal, Bollinger Bands dan Exponential Moving Average (EMA), untuk mengenal pasti pergerakan harga jangka pendek yang berpotensi di pasaran. Bollinger Bands digunakan untuk mengukur turun naik harga, sementara EMA digunakan untuk menilai arah trend. Apabila harga penutupan melintasi di atas EMA dan melebihi band atas, ia menunjukkan kemungkinan kesinambungan trend menaik, mencetuskan kedudukan panjang. Sebaliknya, apabila harga penutupan melintasi di bawah EMA dan jatuh di bawah band bawah, ia menunjukkan kemungkinan kesinambungan trend menurun, menjadikan kedudukan pendek. Strategi ini juga menggabungkan teknik pengurusan risiko seperti kehilangan dan kawalan tahap keuntungan untuk menghentikan risiko turun dan mengunci keuntungan. Secara keseluruhan, strategi ini menyediakan peniaga dengan pendekatan sistematik untuk keluar dari perdagangan berdasarkan keadaan kemasukan yang ditetapkan dengan baik dan kemungkinan perdagangan yang berjaya.
Inti strategi ini terletak pada gabungan Bollinger Bands dan EMA untuk mengenal pasti peluang perdagangan yang berpotensi. Bollinger Bands terdiri daripada tiga garis: band tengah (biasanya purata bergerak mudah), band atas (band tengah ditambah sebilangan tertentu penyimpangan standard), dan band bawah (band tengah dikurangkan sebilangan tertentu penyimpangan standard).
Logik perdagangan strategi ini adalah seperti berikut:
Bollinger Bands dan EMA Trend Following Strategy menawarkan peniaga pendekatan yang sistematik untuk menangkap pergerakan harga jangka pendek di pasaran dengan menggabungkan penunjuk turun naik dan penunjuk trend. Kekuatan strategi terletak pada keupayaannya untuk mengenal pasti dan mengikuti trend pasaran dengan berkesan sambil menggabungkan pengurusan risiko dan teknik ukuran kedudukan. Walau bagaimanapun, strategi ini juga menghadapi risiko seperti sensitiviti parameter, bunyi pasaran, pembalikan trend, dan perlu ditingkatkan dan dioptimumkan melalui pengoptimuman parameter, pengesahan trend, stop loss dinamik dan mengambil keuntungan, pengoptimuman kedudukan dimensi, dan analisis pelbagai jangka masa. Secara keseluruhan, Bollinger Bands dan EMA Trend Following Strategy menyediakan peniaga dengan kerangka perdagangan yang berdaya maju, tetapi memerlukan penyesuaian dan pengoptimuman yang sesuai berdasarkan keadaan pasaran tertentu dan objektif perdagangan dalam aplikasi praktikal.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Bollinger Bands and EMA Strategy", overlay=true) // Bollinger Bands Inputs bb_length = input.int(20, minval=1, title="Bollinger Bands Length") bb_mult = input.float(2.0, minval=0.001, maxval=50, title="Bollinger Bands StdDev") bb_src = input(close, title="Bollinger Bands Source") bb_offset = input.int(0, title="Bollinger Bands Offset", minval=-500, maxval=500) // EMA Inputs ema_period = input.int(9, minval=1, title="EMA Period") ema_src = input(close, title="EMA Source") ema_offset = input.int(0, title="EMA Offset", minval=-500, maxval=500) // Calculate Bollinger Bands bb_basis = ta.sma(bb_src, bb_length) bb_dev = bb_mult * ta.stdev(bb_src, bb_length) bb_upper = bb_basis + bb_dev bb_lower = bb_basis - bb_dev // Plot Bollinger Bands plot(bb_basis, "BB Basis", color=color.blue, offset=bb_offset) p1 = plot(bb_upper, "BB Upper", color=color.red, offset=bb_offset) p2 = plot(bb_lower, "BB Lower", color=color.green, offset=bb_offset) fill(p1, p2, title="BB Background", color=color.rgb(33, 150, 243, 95)) // Calculate EMA ema_value = ta.ema(ema_src, ema_period) // Plot EMA plot(ema_value, title="EMA", color=color.orange, offset=ema_offset) // Strategy Conditions long_condition = ta.crossover(close, ema_value) and close > bb_upper short_condition = ta.crossunder(close, ema_value) and close < bb_lower // Define Stop Loss and Take Profit Levels stop_loss_pct = input.float(0.5, title="Stop Loss (%)") take_profit_pct = input.float(1.0, title="Take Profit (%)") stop_loss_level_long = close * (1 - stop_loss_pct / 100) take_profit_level_long = close * (1 + take_profit_pct / 100) stop_loss_level_short = close * (1 + stop_loss_pct / 100) take_profit_level_short = close * (1 - take_profit_pct / 100) // Calculate Position Size Based on Risk Per Trade risk_per_trade = input.float(1.0, title="Risk Per Trade (%)") capital_at_risk = strategy.equity * risk_per_trade / 100 risk_per_unit_long = math.abs(close - stop_loss_level_long) risk_per_unit_short = math.abs(close - stop_loss_level_short) position_size_long = capital_at_risk / risk_per_unit_long position_size_short = capital_at_risk / risk_per_unit_short // Enter Long and Short Trades if long_condition strategy.entry("Long", strategy.long, qty=position_size_long) strategy.exit("Take Profit", "Long", limit=take_profit_level_long) strategy.exit("Stop Loss", "Long", stop=stop_loss_level_long) if short_condition strategy.entry("Short", strategy.short, qty=position_size_short) strategy.exit("Take Profit", "Short", limit=take_profit_level_short) strategy.exit("Stop Loss", "Short", stop=stop_loss_level_short)