Cette stratégie est une stratégie de trading basée sur SMA pour les contrats à terme BankNifty. L'idée principale de la stratégie est d'utiliser la SMA comme indicateur de tendance, en allant long lorsque le prix dépasse la SMA et en allant court lorsque le prix dépasse la SMA. En même temps, la stratégie définit également des conditions de stop-loss et de take-profit pour contrôler le risque et verrouiller les bénéfices.
Le noyau de cette stratégie est d'utiliser la SMA comme indicateur de tendance. Plus précisément, la stratégie calcule d'abord la SMA d'une période spécifiée (défaut est 200), puis détermine la direction de la tendance en fonction de la position relative du prix et de la SMA. Lorsque le prix traverse au-dessus de la SMA, on considère qu'une tendance à la hausse s'est formée et une position longue est prise; lorsque le prix traverse au-dessous de la SMA, on considère qu'une tendance à la baisse s'est formée et une position courte est prise. En outre, la stratégie fixe également des conditions d'arrêt-perte et de prise de profit pour contrôler le risque et verrouiller les bénéfices. Les conditions d'arrêt-perte comprennent: le prix franchissant la SMA par une certaine plage (défini par le paramètre
Cette stratégie est une stratégie de trading simple basée sur la SMA, adaptée aux contrats à terme BankNifty. Ses avantages résident dans son principe simple, sa forte adaptabilité et ses mesures de contrôle des risques. Cependant, dans l'application pratique, il faut toujours prêter attention aux risques potentiels tels que l'optimisation des paramètres, les marchés oscillants, l'inversion de tendance et la volatilité intraday.
// 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")