Strategi ini menggunakan Exponential Moving Average (EMA) 5 hari dan Bollinger Bands (BB) untuk mengidentifikasi peluang perdagangan potensial di pasar. Ketika harga pecah di atas Bollinger Band atas atau di bawah Bollinger Band bawah, dan kondisi tertentu terpenuhi, strategi menghasilkan sinyal beli atau jual. Strategi ini bertujuan untuk menangkap pergerakan harga yang signifikan di pasar sambil menggunakan stop loss dan target tingkat harga untuk mengelola risiko dan memaksimalkan pengembalian.
Inti dari strategi ini adalah menggunakan EMA 5 hari dan Bollinger Bands untuk menentukan tren pasar dan volatilitas. Ketika harga pecah di atas Bollinger Band atas, dan candle
Setelah perdagangan masuk, strategi menetapkan tingkat stop loss dan tingkat harga target. Stop loss ditempatkan di arah yang berlawanan dengan harga masuk untuk membatasi potensi kerugian. Tingkat harga target dihitung berdasarkan jumlah poin tetap (misalnya, 1000 poin) untuk mengunci keuntungan yang diharapkan. Jika harga mencapai tingkat stop loss atau tingkat harga target, strategi menutup perdagangan dan keluar dari posisi.
EMA dan Bollinger Bands Breakout Strategy memanfaatkan dua indikator teknis yang umum digunakan untuk menangkap pergerakan harga yang signifikan di pasar. Strategi ini memiliki kondisi masuk yang jelas, langkah-langkah manajemen risiko, dan target keuntungan, sehingga mudah dipahami dan diimplementasikan. Namun, kinerja strategi dapat dipengaruhi oleh volatilitas pasar dan kondisi tanpa tren. Dengan memperkenalkan parameter adaptif, mekanisme penyaringan sinyal, dan optimasi parameter, kekuatan dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*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")