Stratégie de négociation de BankNifty Supertrend

Auteur:ChaoZhang est là., Date: 2023-12-29 à 17h09:57
Les étiquettes:

img

Résumé

Il s'agit d'une stratégie de trading basée sur la K-line de 5 minutes de BankNifty utilisant l'indicateur Supertrend.

Principe de stratégie

La stratégie définit d'abord des variables d'entrée telles que les sessions de négociation et les plages de dates.

Il calcule ensuite l'indicateur Supertrend et sa direction.

Au début de chaque session de négociation, la stratégie attend que 3 bougies se forment avant d'envisager d'entrer dans un commerce.

Le signal long est lorsque la direction de l'indicateur Supertrend change de bas vers le haut; le signal court est lorsque la direction de la Supertrend change de haut vers le bas.

Après l'entrée, le stop loss sera réglé. Les points de stop loss fixes et le pourcentage de stop loss peuvent être ajustés via des variables d'entrée.

À la fin de la session de négociation, la stratégie fermera toutes les positions ouvertes.

Les avantages de la stratégie

Il s'agit d'une stratégie de trading simple qui utilise des indicateurs pour identifier les tendances.

  1. Utiliser l'indicateur Supertrend pour juger de la direction de la tendance, ce qui permet d'identifier efficacement les tendances
  2. La combinaison des sessions de négociation peut éviter la session d'ouverture et de clôture la plus volatile
  3. Mettre en place un stop-loss pour verrouiller les bénéfices
  4. De nombreux paramètres peuvent être ajustés librement par des variables d'entrée, une grande adaptabilité

Risques liés à la stratégie

La stratégie comporte également certains risques:

  1. L'indicateur Supertrend est en retard, peut manquer le meilleur point d'entrée
  2. Le jugement d'un seul indicateur est susceptible d'être affecté par de fausses ruptures, le taux de gain peut être faible
  3. Ne tient pas compte de l'évolution du marché, peut différer de l'ensemble du marché
  4. L'imposition incorrecte du stop loss peut entraîner des pertes supérieures aux attentes

Ces risques peuvent être réduits en optimisant les paramètres de l'indicateur Supertrend ou en ajoutant d'autres jugements d'indicateur.

Directions d'optimisation

La stratégie peut également être optimisée dans les aspects suivants:

  1. Ajouter d'autres jugements d'indicateurs pour former une stratégie combinée, améliorer la stabilité
  2. Ajouter un jugement général sur l'évolution du marché pour éviter toute divergence par rapport au marché
  3. Optimiser les paramètres de l'indicateur Supertrend, trouver la meilleure longueur et facteur
  4. Ajustez la stratégie de stop-loss, comme le suivi du stop-loss avec la tendance
  5. Testez sur différents produits, trouvez la meilleure correspondance

Conclusion

En résumé, il s'agit d'une stratégie de trading d'indicateur de Supertrend basée sur le graphique de 5 minutes BankNifty. Il utilise l'indicateur de Supertrend pour déterminer la direction de la tendance et combine les sessions de trading et les règles de gestion des risques pour le commerce. Par rapport aux stratégies quantitatives complexes, cette stratégie a des règles simples et claires qui sont faciles à comprendre et à mettre en œuvre.


/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BankNifty 5min Supertrend Based Strategy, 09:15 Entry with Date Range and Risk Management")

// Session and date range input variables
session = input("0915-1510", "Session", group="Indian Session Time")
start_date = input(title="Start Date", defval=timestamp("01 Jan 2022 00:00:00"), group="Backtest Specific Range")
end_date = input(title="End Date", defval=timestamp("01 Dec 2023 23:59:59"))
atrPeriod = input(50, "ATR Length", group="SuperTrend Setting")
factor = input.float(3.0, "Factor", step=0.1)

useDelay = input(true, "Use Delay?", group="Delay at Session Start")
Delay = useDelay ? input(10, title="Delay N numbers of candle", group="Delay at Session Start") : na

useDelay_stopLoss = input(true, "Use Stoploss Points?", group="Risk Management")
stopLoss = useDelay_stopLoss ? input(100, "Stop Loss Points", group="Risk Management"): na

useDelay_stopLossPerc1 = input(true, "Use Stoploss Trail?", group="Risk Management")
stopLossPerc1 =useDelay_stopLossPerc1 ? input.float(0.1, "Stop Loss Trail%", step=0.1,maxval = 1, group="Risk Management"): na
// Check if current time is within the specified session and date range
inSession = true

[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Wait for 3 candles to form at the start of every session
var candlesFormed = 0
if inSession and not inSession[1]
    candlesFormed := 1
else if inSession and candlesFormed > 0
    candlesFormed := candlesFormed + 1
else
    candlesFormed := 0


//

// Only enter trades if 3 candles have formed at the start of the session
entryce = (ta.change(direction) < 0) or (candlesFormed >= Delay and direction < 0)
exitce = ta.change(direction) > 0
entrype = (ta.change(direction) > 0) or (candlesFormed >= Delay and direction > 0)
exitpe = ta.change(direction) < 0
var entryPrice = 0.0
if entryce and inSession
    // Enter long trade
    onePercent = strategy.position_avg_price *stopLossPerc1
    entryPrice := close
    strategy.entry("My Long Entry Id", strategy.long, comment="long" )
    // Set stop loss at x% below entry price
    strategy.exit("My Long Exit Id", "My Long Entry Id", stop=(entryPrice - stopLoss),trail_points=onePercent )
    
if entrype and inSession
    onePercent1 = strategy.position_avg_price *stopLossPerc1
    entryPrice := close
    // Enter short trade
    strategy.entry("My Short Entry Id", strategy.short, comment="short")
    // Set stop loss at x% above entry price
    strategy.exit("My Short Exit Id", "My Short Entry Id", stop=(entryPrice + stopLoss),trail_points=onePercent1)

// Close all trades at end of session
if not inSession and strategy.opentrades > 0
    strategy.close_all()

// Plot Supertrend with changing colors
plot(supertrend, title="Supertrend", color=direction == 1 ? color.red : color.green, linewidth=2)





Plus de