Esta estrategia es una estrategia de negociación basada en SMA para futuros de BankNifty. La idea principal de la estrategia es utilizar SMA como indicador de tendencia, ir largo cuando el precio cruza por encima de la SMA y ir corto cuando el precio cruza por debajo de la SMA. Al mismo tiempo, la estrategia también establece condiciones de stop-loss y take-profit para controlar el riesgo y bloquear las ganancias.
El núcleo de esta estrategia es utilizar el SMA como indicador de tendencia. Específicamente, la estrategia primero calcula el SMA de un período especificado (por defecto es 200), y luego determina la dirección de tendencia basada en la posición relativa del precio y el SMA. Cuando el precio cruza por encima del SMA, se considera que se ha formado una tendencia al alza, y se toma una posición larga; cuando el precio cruza por debajo del SMA, se considera que se ha formado una tendencia a la baja, y se toma una posición corta. Además, la estrategia también establece condiciones de stop-loss y take-profit para controlar el riesgo y bloquear las ganancias.
Esta estrategia es una estrategia de negociación simple basada en SMA, adecuada para futuros BankNifty. Sus ventajas se encuentran en su principio simple, su fuerte adaptabilidad y sus medidas de control de riesgos. Sin embargo, en la aplicación práctica, todavía se debe prestar atención a los riesgos potenciales como la optimización de parámetros, los mercados oscilantes, la inversión de tendencias y la volatilidad intradiaria. En el futuro, la estrategia puede optimizarse y mejorarse desde aspectos como la optimización de parámetros, la combinación con otros indicadores, el stop-loss dinámico y el tiempo de negociación limitado.
// 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")