Momentum Breakout Retour à l'essai Stratégie de soutien Résistance

Auteur:ChaoZhang est là., Date: le 22 février 2024 16:07:14
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Les avantages

  1. 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

  2. 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

  3. Modèle de backtesting simple et direct, facile à comprendre et à mettre en œuvre

  4. L'affichage visuel des niveaux de support et de résistance forme la perception des prix

  5. Surveillance en temps réel des ruptures, saisie en temps opportun des opportunités de négociation

Les risques

  1. Les niveaux de soutien et de résistance changent avec le temps, difficile à déterminer la validité

  2. Incapacité de prévoir la direction de la tendance, risque de manquer des renversements

  3. Facilement affecté par de fausses fuites, risque d'entrée prématurée

  4. Impossible de déterminer la persistance des ruptures, arrêt précoce des pertes probable

  5. L'échec des supports et des résistances individuels est plus probable en cas de fortes fluctuations du marché

Les contre-mesures:

  1. Combinez plusieurs facteurs pour juger de la validité des écarts

  2. Élargir de manière appropriée la plage d'arrêt des pertes pour détecter les tendances

  3. Opérations en lots, réduire l'impact des fluctuations individuelles

Optimisations

  1. Ajouter plus de données historiques comme des lignes de 5 jours, 10 jours pour déterminer les niveaux

  2. Incorporer d'autres indicateurs tels que le volume pour juger de la validité de la rupture

  3. Résultats de l'évaluation de la volatilité

  4. Optimiser la gestion du capital, contrôler les pertes uniques

Résumé

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)


Plus de