
Strategi ini menggunakan 5-hari indeks moving average (EMA) dan Bollinger Bands (BB) untuk mengidentifikasi peluang perdagangan potensial di pasar. Strategi ini menghasilkan sinyal beli atau jual ketika harga menembus Bollinger Bands dan naik atau turun, dan memenuhi kondisi tertentu. Strategi ini dirancang untuk menangkap fluktuasi harga yang signifikan di pasar sambil menggunakan stop loss dan harga target untuk mengelola risiko dan memaksimalkan keuntungan.
Inti dari strategi ini adalah menggunakan 5 hari EMA dan Bollinger Bands untuk menilai tren dan volatilitas pasar. Strategi ini menghasilkan sinyal jual ketika harga menembus Bollinger Bands ke arah atas dan garis K di atasnya lebih tinggi dari 5 hari EMA. Sebaliknya, strategi ini menghasilkan sinyal beli ketika harga menembus Bollinger Bands ke arah bawah dan garis K di atasnya lebih rendah dari 5 hari EMA.
Setelah perdagangan masuk, strategi akan mengatur stop loss dan harga target. Stop loss terletak di arah yang berlawanan dari harga masuk, untuk membatasi potensi kerugian. Harga target dihitung berdasarkan jumlah poin tetap (misalnya 1000 poin) untuk mengunci keuntungan yang diharapkan.
EMA menggunakan dua indikator teknis yang umum digunakan untuk menangkap pergerakan harga yang signifikan di pasar. Strategi ini memiliki persyaratan masuk yang jelas, langkah-langkah manajemen risiko, dan target keuntungan yang mudah dipahami dan diterapkan. Namun, kinerja strategi dapat dipengaruhi oleh volatilitas pasar dan tren yang tidak jelas.
/*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")