Strategi ini menggunakan purata bergerak eksponen 5 hari (EMA) dan Bollinger Bands (BB) untuk mengenal pasti peluang dagangan yang berpotensi di pasaran. Apabila harga pecah di atas Bollinger Band atas atau di bawah Bollinger Band bawah, dan syarat-syarat tertentu dipenuhi, strategi menghasilkan isyarat beli atau jual. Strategi ini bertujuan untuk menangkap pergerakan harga yang signifikan di pasaran sambil menggunakan stop loss dan tahap harga sasaran untuk menguruskan risiko dan memaksimumkan pulangan.
Inti strategi ini adalah menggunakan EMA 5 hari dan Bollinger Bands untuk menentukan trend dan turun naik pasaran. Apabila harga memecahkan di atas Bollinger Band atas, dan lilin yang sebelumnya tinggi di atas EMA 5 hari, strategi menghasilkan isyarat jual. Sebaliknya, apabila harga memecahkan di bawah Bollinger Band bawah, dan lilin yang sebelumnya rendah di bawah EMA 5 hari, strategi menghasilkan isyarat beli. Pendekatan ini membantu mengenal pasti potensi pembalikan trend atau titik pecah.
Apabila perdagangan dimasukkan, strategi menetapkan tahap stop loss dan tahap harga sasaran. Stop loss diletakkan dalam arah yang bertentangan dengan harga kemasukan untuk mengehadkan potensi kerugian. Tahap harga sasaran dikira berdasarkan bilangan mata tetap (contohnya, 1000 mata) untuk mengunci keuntungan yang dijangkakan. Jika harga mencapai tahap stop loss atau tahap harga sasaran, strategi menutup perdagangan dan keluar dari kedudukan.
EMA dan Bollinger Bands Breakout Strategy memanfaatkan dua penunjuk teknikal yang biasa digunakan untuk menangkap pergerakan harga yang signifikan di pasaran. Strategi ini mempunyai syarat kemasukan yang jelas, langkah pengurusan risiko, dan sasaran keuntungan, menjadikannya mudah difahami dan dilaksanakan. Walau bagaimanapun, prestasi strategi boleh dipengaruhi oleh turun naik pasaran dan keadaan tanpa trend. Dengan memperkenalkan parameter adaptif, mekanisme penapisan isyarat, dan pengoptimuman parameter, kekuatan dan keuntungan strategi dapat ditingkatkan lagi.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nifty Bank Strategy", overlay=true) // Parameters lengthEMA = 5 lengthBB = 20 multBB = 1.5 targetPoints = 1000 // Calculate 5-day EMA ema5 = ta.ema(close, lengthEMA) // Calculate Bollinger Bands (length 20, multiplier 1.5) basis = ta.sma(close, lengthBB) dev = multBB * ta.stdev(close, lengthBB) upperBB = basis + dev lowerBB = basis - dev // Define strategy variables var float entryPrice = na var float stopLoss = na var float targetPrice = na var bool inTrade = false var bool isLong = false var float triggerHigh = na var float triggerLow = na var float triggerClose = na if not inTrade // Short Entry Trigger Condition if low > ema5 and low > upperBB and high > upperBB triggerLow := low triggerHigh := high triggerClose := close label.new(bar_index, high, "Waiting for short trigger", color=color.yellow) // Long Entry Trigger Condition else if high < ema5 and high < lowerBB and low < lowerBB triggerHigh := high triggerLow := low triggerClose := close label.new(bar_index, low, "Waiting for long trigger", color=color.yellow) // Check for Short Entry if not inTrade and na(triggerClose) == false and close < triggerClose if low < triggerLow entryPrice := close stopLoss := triggerHigh targetPrice := entryPrice - targetPoints strategy.entry("Short", strategy.short) label.new(bar_index, high, "Short", color=color.red, style=label.style_label_down) inTrade := true isLong := false triggerLow := na triggerHigh := na triggerClose := na // Check for Long Entry if not inTrade and na(triggerClose) == false and close > triggerClose if high > triggerHigh entryPrice := close stopLoss := triggerLow targetPrice := entryPrice + targetPoints strategy.entry("Long", strategy.long) label.new(bar_index, low, "Long", color=color.green, style=label.style_label_up) inTrade := true isLong := true triggerLow := na triggerHigh := na triggerClose := na // Manage Short Trade if inTrade and not isLong if high >= stopLoss strategy.close("Short", comment="SL Hit") label.new(bar_index, high, "SL Hit", color=color.red, style=label.style_label_down) inTrade := false else if low <= targetPrice strategy.close("Short", comment="Target Hit") label.new(bar_index, low, "Target Hit", color=color.green, style=label.style_label_up) inTrade := false // Manage Long Trade if inTrade and isLong if low <= stopLoss strategy.close("Long", comment="SL Hit") label.new(bar_index, low, "SL Hit", color=color.red, style=label.style_label_down) inTrade := false else if high >= targetPrice strategy.close("Long", comment="Target Hit") label.new(bar_index, high, "Target Hit", color=color.green, style=label.style_label_up) inTrade := false // Plotting plot(ema5, color=color.orange, title="5-day EMA") plot(upperBB, color=color.red, title="Upper Bollinger Band") plot(lowerBB, color=color.purple, title="Lower Bollinger Band") // Plot trade entry and exit points plotshape(series=inTrade and isLong ? entryPrice : na, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=inTrade and not isLong ? entryPrice : na, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")