Stratégie de négociation basée sur la SMA pour les contrats à terme BankNifty

Auteur:ChaoZhang est là., Date: 2024-03-28 18:15:32 Je vous en prie.
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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 Stop Loss Buffer), le prix franchissant la plage par une certaine condition (défini par le paramètre Stop Loss), et le

Les avantages de la stratégie

  1. Simple et facile à comprendre: Cette stratégie est basée sur l'indicateur technique classique SMA, avec un principe simple, facile à comprendre et à mettre en œuvre.
  2. Haute adaptabilité: la stratégie peut être adaptée à différents environnements de marché et variétés de négociation en ajustant les paramètres.
  3. Contrôle des risques: la stratégie fixe plusieurs conditions de stop-loss, ce qui peut contrôler efficacement les pertes potentielles.
  4. Le suivi des tendances: la SMA est un indicateur à la traîne, mais c'est précisément pour cela qu'elle peut bien confirmer la formation des tendances.

Risques stratégiques

  1. Sensibilité des paramètres: la performance de cette stratégie dépend en grande partie du choix des paramètres, et différents paramètres peuvent donner des résultats très différents.
  2. Marché oscillant: Dans un marché oscillant, les prix se croisent fréquemment au-dessus et au-dessous de la SMA, ce qui peut entraîner une négociation fréquente de la stratégie, augmentant ainsi les coûts et les risques de transaction.
  3. Inversion de tendance: lorsque la tendance du marché s'inverse, la stratégie peut réagir avec un retard, entraînant des pertes potentielles.
  4. Volatilité intraday: la stratégie peut déclencher des signaux de négociation à tout moment pendant la session de négociation et la volatilité intraday des contrats à terme BankNifty peut être relativement élevée, ce qui peut entraîner un glissement plus important et des pertes potentielles.

Directions d'optimisation de la stratégie

  1. Optimisation des paramètres: les paramètres les plus appropriés pour l'environnement actuel du marché peuvent être trouvés en effectuant des tests antérieurs et en optimisant différentes combinaisons de paramètres.
  2. Combinaison avec d'autres indicateurs: envisager de combiner la SMA avec d'autres indicateurs techniques (tels que le RSI, le MACD, etc.) pour améliorer la fiabilité et l'exactitude de la stratégie.
  3. L'exposition au risque de défaillance de l'établissement de crédit doit être calculée sur la base de l'exposition au risque de défaillance de l'entreprise.
  4. Limiter le temps de négociation: envisager de limiter le temps de négociation aux périodes où la volatilité est moindre (comme avant, après et après l'ouverture et la fermeture) afin de réduire l'impact de la volatilité intrajournalière.

Résumé

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")


Plus de