Cette stratégie utilise principalement les prix élevés, bas et fermés des jours de négociation précédents comme les niveaux de support et de résistance pour la journée en cours.
Le code définit d'abord une fonction calculerSupportResistance pour calculer les niveaux de support et de résistance, qui extrait les prix hauts, bas et de clôture de la journée de négociation précédente en tant que niveaux de support et de résistance de la journée en cours.
Ensuite, dans la logique principale, cette fonction est appelée pour obtenir ces trois niveaux de prix et les tracer.
Dans la logique du backtesting, si le prix de clôture est inférieur au plus bas de la journée précédente tandis que le prix actuel est supérieur à ce bas formant une rupture, il va long.
Grâce à ce modèle de rupture, le jugement de la tendance et la génération de signaux de trading sont mis en œuvre.
Utilisez les données des journées de négociation précédentes pour construire les niveaux de support et de résistance de la journée en cours, en évitant le problème de l'optimisation des paramètres
Les niveaux de support et de résistance proviennent de données réelles sur les échanges sur le marché, avec une certaine valeur de référence
Modèle de backtesting simple et direct, facile à comprendre et à mettre en œuvre
L'affichage visuel des niveaux de support et de résistance forme la perception des prix
Surveillance en temps réel des ruptures, saisie en temps opportun des opportunités de négociation
Les niveaux de soutien et de résistance changent avec le temps, difficile à déterminer la validité
Incapacité de prévoir la direction de la tendance, risque de manquer des renversements
Facilement affecté par de fausses fuites, risque d'entrée prématurée
Impossible de déterminer la persistance des ruptures, arrêt précoce des pertes probable
L'échec des supports et des résistances individuels est plus probable en cas de fortes fluctuations du marché
Les contre-mesures:
Combinez plusieurs facteurs pour juger de la validité des écarts
Élargir de manière appropriée la plage d'arrêt des pertes pour détecter les tendances
Opérations en lots, réduire l'impact des fluctuations individuelles
Ajouter plus de données historiques comme des lignes de 5 jours, 10 jours pour déterminer les niveaux
Incorporer d'autres indicateurs tels que le volume pour juger de la validité de la rupture
Résultats de l'évaluation de la volatilité
Optimiser la gestion du capital, contrôler les pertes uniques
Dans l'ensemble, il s'agit d'une stratégie de rupture typique, simple et intuitive. En construisant le support et la résistance du jour actuel avec les données du jour précédent et en testant les ruptures de ces niveaux pour long/short. Les avantages sont faciles à comprendre et à visualiser directement les niveaux; les inconvénients sont les faux risques de rupture et l'incertitude de la persistance. Les prochaines étapes sont l'amélioration de la validité de la rupture, le contrôle des risques, l'optimisation de la gestion du capital, etc.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Support and Resistance with Backtesting", overlay=true) // Function to calculate support and resistance levels calculateSupportResistance() => highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on) lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on) closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) [highPrevDay, lowPrevDay, closePrevDay] // Call the function to get support and resistance levels [supResHigh, supResLow, supResClose] = calculateSupportResistance() // Plotting support and resistance levels plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High") plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low") plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close") // Backtesting logic backtestCondition = close[1] < supResLow and close > supResLow strategy.entry("Long", strategy.long, when=backtestCondition) // Plotting buy/sell arrows for backtesting plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)