Une stratégie de trading quantitative de suivi de tendance combinant une percée historique avec un filtre de moyenne mobile mensuelle

ATH SMA MA
Date de création: 2024-12-13 10:25:18 Dernière modification: 2024-12-13 10:25:18
Copier: 0 Nombre de clics: 336
1
Suivre
1617
Abonnés

Une stratégie de trading quantitative de suivi de tendance combinant une percée historique avec un filtre de moyenne mobile mensuelle

Aperçu

Cette stratégie est une stratégie de suivi de la tendance basée sur les nouvelles hautes historiques et le filtrage de la ligne moyenne de la ligne lunaire. Elle recherche des signaux d’achat en surveillant si les prix ont atteint les plus hauts historiques précédents, tout en utilisant la ligne lunaire 8 cycles moyenne mobile simple ((8 SMA) comme conditions de filtrage de vente, afin de réduire le risque de fausses ruptures. La conception de cette stratégie est conforme à la caractéristique du marché de la “continuité de la tendance” et est particulièrement adaptée pour capturer les conditions de marché à grande échelle dans les tendances à forte hausse.

Principe de stratégie

La logique centrale de la stratégie comprend deux éléments clés:

  1. Signaux d’achat: le système génère un signal d’achat lorsque le dernier cours de clôture a franchi le plus haut historique de la période précédente (à l’exclusion du prix le plus élevé de la ligne K actuelle). Cette condition garantit l’entrée uniquement dans une tendance à la hausse claire.
  2. Signal de vente: lorsque le prix de clôture de la chaîne lunaire tombe au-dessous de la moyenne mobile simple à 8 cycles, le système déclenche un signal de vente. Cette condition aide à arrêter les pertes à temps et à empêcher une inversion de tendance de causer des pertes plus importantes. La stratégie a également conçu un mécanisme de suivi de l’état du signal pour éviter la répétition du signal dans le même état, ce qui améliore la stabilité de la stratégie.

Avantages stratégiques

  1. La capacité à saisir les tendances: la capacité à saisir efficacement les tendances à la hausse grâce à des jugements de rupture de nouveaux sommets historiques.
  2. Le contrôle des risques est perfectionné: la combinaison de la ligne moyenne de la lune comme condition de filtrage permet de filtrer efficacement les fausses percées.
  3. La stabilité du signal est élevée: l’état du signal est suivi par la variable lastSignal, afin d’éviter la production de signaux répétés.
  4. L’effet visuel est bon: la stratégie offre une interface graphique claire, comprenant des lignes historiques de hauts et moyens, ainsi que des marqueurs de signaux d’achat et de vente.
  5. Adaptabilité: la stratégie peut être appliquée à différentes périodes de temps et variétés.

Risque stratégique

  1. Risque de retard: le signal de rupture du nouveau sommet historique est par nature retardé et peut manquer le meilleur moment d’entrée.
  2. Risque de fausse rupture: Bien qu’il y ait un filtre de ligne moyenne, il est toujours possible de faire une fausse rupture dans un marché instable.
  3. Risque de rétractation: la stratégie peut subir une plus grande rétractation à un tournant de tendance.
  4. Risques de gestion des fonds: la stratégie ne contient pas de mécanisme de gestion des positions, ce qui nécessite des règles supplémentaires de gestion des fonds.

Orientation de l’optimisation de la stratégie

  1. Confirmation de la quantité d’introduction: un indicateur de quantité d’introduction peut être ajouté comme condition de confirmation de rupture pour améliorer la fiabilité du signal.
  2. Amélioration des mécanismes d’arrêt des pertes: Des règles d’arrêt plus flexibles peuvent être conçues, comme l’arrêt de suivi ou l’arrêt de taux d’oscillation.
  3. Ajout de gestion de position: Ajustez dynamiquement la taille de la position en fonction de la volatilité du marché et de l’intensité de la tendance.
  4. Filtrage des signaux optimisés: vous pouvez ajouter des indicateurs de force de tendance, tels que l’ADX, pour filtrer davantage les signaux de faiblesse.
  5. Ajout de filtres temporels: vous pouvez ajouter des filtres temporels pour éviter de négocier à des périodes inappropriées.

Résumer

Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logique. L’utilisation combinée de la rupture historique et de la moyenne lunaire garantit une maîtrise efficace de la tendance et une maîtrise raisonnable du risque. Bien qu’il existe un certain retard et un risque de fausse rupture, la performance globale de la stratégie est susceptible d’être encore améliorée grâce à l’orientation optimisée proposée.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true)

// Initialize the previous all-time high
var float prevAllTimeHigh = na

// Update the all-time high, excluding the current bar's high (use previous bar's high)
if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh)
    prevAllTimeHigh := high[1]

// Monthly closing price and 8 SMA on monthly time frame
monthlyClose = request.security(syminfo.tickerid, "M", close)
monthlySMA = ta.sma(monthlyClose, 8)

// Variables to track the last signal type
var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell

// Debugging output to check the all-time high and conditions
plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High")
plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)")

// Buy signal: when the latest close is greater than the previous all-time high
buySignal = close > prevAllTimeHigh and lastSignal != 1

// Sell signal: when the monthly close is below the 8 SMA
sellSignal = monthlyClose < monthlySMA and lastSignal != 2

// Update the last signal type after triggering a signal
if (buySignal)
    lastSignal := 1
if (sellSignal)
    lastSignal := 2

// Execute the strategy orders
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.close("Buy")

// Optional: Plot buy and sell signals on the chart for visual reference
plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)