
La estrategia utiliza las medias móviles de 5 días (EMA) y las bandas de Brin (BB) para identificar oportunidades potenciales de negociación en el mercado. La estrategia genera una señal de compra o venta cuando el precio rompe las bandas de Brin y se pone en marcha o se desvía, y cumple con ciertas condiciones. La estrategia tiene como objetivo capturar las fluctuaciones significativas de los precios en el mercado, mientras que se utilizan los precios de parada y objetivo para administrar el riesgo y maximizar los beneficios.
El núcleo de la estrategia es utilizar la EMA del día 5 y el Brin para determinar la tendencia y la volatilidad del mercado. Cuando el precio rompe la banda de Brin y se pone en marcha y la línea K anterior está por encima de la EMA del día 5, la estrategia genera una señal de venta. Por el contrario, cuando el precio rompe la banda de Brin y se pone en marcha y la línea K anterior está por debajo de la EMA del día 5, la estrategia genera una señal de compra.
Una vez que se entra en una operación, la estrategia establece un stop loss y un precio objetivo. El stop loss se ubica en la dirección opuesta al precio de entrada, para limitar las pérdidas potenciales. El precio objetivo se calcula en función de un número fijo de puntos (por ejemplo, 1000 puntos) para bloquear los ingresos esperados.
La EMA utiliza dos indicadores técnicos de uso común, junto con la estrategia de ruptura de la correa de Brin, para capturar las fluctuaciones significativas de los precios en el mercado. La estrategia tiene condiciones de entrada claras, medidas de gestión de riesgos y objetivos de ganancias que son fáciles de entender y implementar. Sin embargo, el rendimiento de la estrategia puede verse afectado por la volatilidad del mercado y la incertidumbre de las tendencias.
/*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")