
La estrategia es una estrategia de negociación de futuros de BankNifty basada en un promedio móvil simple (SMA). La idea principal de la estrategia es utilizar el SMA como indicador de tendencia, hacer más cuando el precio atraviesa el SMA y hacer menos cuando el precio atraviesa el SMA. Al mismo tiempo, la estrategia también establece condiciones de stop loss y stop loss para controlar el riesgo y bloquear las ganancias.
El núcleo de la estrategia es el uso de la SMA como indicador de tendencia. En concreto, la estrategia calcula primero la SMA de un período determinado (default 200) y luego juzga la dirección de la tendencia en función de la posición relativa del precio con respecto a la SMA. Cuando el precio cruza la SMA, se considera que se ha formado una tendencia alcista y hace más; cuando el precio cruza la SMA, se considera que se ha formado una tendencia descendente y hace vacío.
La estrategia es una estrategia de negociación simple basada en SMA para los futuros de BankNifty. Su ventaja es que el principio es simple, adaptable y cuenta con medidas de control de riesgo. Pero en la aplicación práctica, también se debe tener en cuenta los riesgos potenciales como la optimización de los parámetros, el mercado de las sacudidas, las inversiones de tendencia y la fluctuación en el mercado. En el futuro, se puede considerar la optimización y mejora de la estrategia en términos de optimización de parámetros, en combinación con otros indicadores, paros dinámicos y límites de tiempo de negociación.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bhasker_S
//@version=5
strategy("Strategy BankNifty SMA", overlay=true, margin_long=100, margin_short=100)
src = input(close, title="Source")
timeFrame = input.timeframe(defval='5', title = "Select Chart Timeframe")
typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
len = input.int(200, minval=1, title="Length", step = 10)
alertPrecision = input.float(0, "Alert Precision", minval = 0, maxval = 50, step=1)
slTimeFrame = input.timeframe(defval='1', title = "Select Stoploss Candle Timeframe")
slBuffer = input.float(0, "Stop Loss Buffer", minval = 0, maxval = 50, step = 1)
targetSlab = input.float(150, "Target Price", minval = 1, maxval = 2000, step = 10)
Stoploss = input.float(20, "Stop Loss", minval = 1, maxval = 2000, step = 5)
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
//out = ta.sma(src, len)
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
tfSource = request.security(syminfo.tickerid, timeFrame, src, barmerge.gaps_on, barmerge.lookahead_off)
mySMA = ma(tfSource, len, typeMA)
plot(mySMA, color=color.rgb(243, 33, 89), title="MA", offset=offset, linewidth = 2)
slClose = request.security(syminfo.tickerid, slTimeFrame, src, barmerge.gaps_on, barmerge.lookahead_off)
highTravel = low > mySMA
lowTravel = high < mySMA
touchabove = (((high[1] + alertPrecision) > mySMA[1]) and (low[1] < mySMA[1])) //and (high[2] < mySMA[2])
touchbelow = (((low[1] - alertPrecision) < mySMA[1]) and (high[1] > mySMA[1])) //and (low[2] > mySMA[2])
crossabove = math.min(open, close) > mySMA
crossbelow = math.max(open, close) < mySMA
upalert = (touchabove or touchbelow) and crossabove
downalert = (touchabove or touchbelow) and crossbelow
h=hour(time('1'),"Asia/Kolkata")
m=minute(time('1'),"Asia/Kolkata")
startTime=h*100+m
if upalert and strategy.position_size == 0
strategy.entry("buy", strategy.long, 15)
if downalert and strategy.position_size == 0
strategy.entry("sell", strategy.short, 15)
longexit = (slClose < (mySMA - slBuffer)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - Stoploss)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + targetSlab)) or (hour(time) == 15)
shortexit = (slClose > (mySMA + slBuffer)) or (slClose > (strategy.opentrades.entry_price(strategy.opentrades - 1) + Stoploss)) or (slClose < (strategy.opentrades.entry_price(strategy.opentrades - 1) - targetSlab)) or (hour(time) == 15)
if longexit
strategy.close("buy")
if shortexit
strategy.close("sell")