Prévisions de tendance dynamiques sur plusieurs périodes combinées à une stratégie de filtrage par moyenne mobile

EMA SMA ML AI PREDICTION Trend FILTER BACKTEST
Date de création: 2025-02-20 14:03:44 Dernière modification: 2025-02-27 17:38:36
Copier: 1 Nombre de clics: 345
2
Suivre
319
Abonnés

Prévisions de tendance dynamiques sur plusieurs périodes combinées à une stratégie de filtrage par moyenne mobile Prévisions de tendance dynamiques sur plusieurs périodes combinées à une stratégie de filtrage par moyenne mobile

Aperçu

La stratégie est un système de suivi des tendances qui combine l’analyse technique traditionnelle et les méthodes modernes d’intelligence artificielle. Elle utilise principalement les moyennes mobiles indicielles (EMA) et les moyennes mobiles simples (SMA) comme filtres de tendance, tout en introduisant des modèles de prévision pour optimiser le timing d’entrée.

Principe de stratégie

La logique centrale de la stratégie comprend trois composantes principales:

  1. Système de jugement de tendance - utilise les EMA et SMA de 200 cycles comme filtres de tendance principaux pour juger de la direction de la tendance actuelle par la relation de la position du prix à la moyenne
  2. Module de prévision - utilise des composants de prévision extensibles, actuellement utilisés pour la prévision analogique, qui peuvent être remplacés par des modèles d’apprentissage automatique
  3. Gestion de position - définition d’une période de maintien de position fixe sur 4 lignes K pour contrôler le temps de maintien et les risques

La génération d’un signal de transaction nécessite à la fois la direction de la tendance et la cohérence du signal de prévision, à savoir:

  • Signaux à plusieurs têtes: le prix est au-dessus de l’EMA et du SMA et la prévision est positive
  • Signaux de tête vide: prix en dessous des EMA et SMA, avec une prévision négative

Avantages stratégiques

  1. Structure claire - logique stratégique simple et intuitive, facile à comprendre et à maintenir
  2. Risque maîtrisé - contrôle efficace du risque grâce à des cycles de position fixes et à un double filtrage de la moyenne
  3. Évolutivité - la modulation de prévision est conçue de manière flexible, permettant d’accéder à différents modèles de prévision selon les besoins
  4. Adaptabilité - les paramètres peuvent être ajustés pour s’adapter à différents environnements de marché
  5. Fréquence d’opération modérée - les opérations au niveau de la ligne solaire réduisent les coûts de transaction et le stress psychologique

Risque stratégique

  1. Risque de renversement de tendance - une série de pertes peut survenir à un tournant
  2. Sensitivité des paramètres - le choix de la période de la ligne moyenne et de la période de tenue de position a un impact significatif sur la performance de la stratégie
  3. Dépendance des modèles - l’exactitude des modules de prévision a un impact direct sur l’efficacité de la stratégie
  4. Effets des points de glissement - les opérations au niveau de la ligne solaire peuvent avoir des points de glissement plus importants
  5. Dépendance aux conditions du marché - une mauvaise performance dans un marché en crise

Orientation de l’optimisation de la stratégie

  1. Mise à niveau des modèles prédictifs - introduction de modèles d’apprentissage automatique pour remplacer les prédictions aléatoires existantes
  2. Cycle de détention dynamique - temps de détention ajusté dynamiquement en fonction des fluctuations du marché
  3. Optimisation de l’arrêt des pertes - augmentation des mécanismes d’arrêt des pertes dynamiques pour améliorer la capacité de contrôle des risques
  4. Gestion des positions - mise en place d’un système de gestion des positions basé sur la volatilité
  5. Filtrage multidimensionnel - indicateurs auxiliaires tels que l’augmentation du volume de transactions et de la volatilité

Résumer

La stratégie a été construite en combinant l’analyse technique traditionnelle et les méthodes de prévision modernes pour construire un système robuste de suivi des tendances. Ses principaux avantages sont la clarté de la logique, la maîtrise des risques et une forte extensibilité. L’optimisation de la stratégie, en particulier les améliorations apportées aux modèles de prévision et au contrôle des risques, devrait améliorer encore la stabilité et la rentabilité de la stratégie.

Code source de la stratégie
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("My Strategy", overlay=true)

// Parameters (adjust as needed)
neighborsCount = 8
maxBarsBack = 2000
featureCount = 5
useDynamicExits = true
useEmaFilter = true
emaPeriod = 200
useSmaFilter = true
smaPeriod = 200

// Moving Average Calculations
ema = ta.ema(close, emaPeriod)
sma = ta.sma(close, smaPeriod)

// Trend Conditions
isEmaUptrend = close > ema
isEmaDowntrend = close < ema
isSmaUptrend = close > sma
isSmaDowntrend = close < sma

// Model Prediction (Replace with your real model)
// Here a simulation is used, replace it with real predictions
prediction = math.random() * 2 - 1 // Random value between -1 and 1

// Entry Signals
isNewBuySignal = prediction > 0 and isEmaUptrend and isSmaUptrend
isNewSellSignal = prediction < 0 and isEmaDowntrend and isSmaDowntrend

// Exit Signals
var int barsHeld = 0
var bool in_position = false
var int entry_bar = 0

if isNewBuySignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if isNewSellSignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if in_position
    barsHeld := barsHeld + 1
    if barsHeld == 4
        in_position := false

endLongTradeStrict = barsHeld == 4 and isNewBuySignal[1]
endShortTradeStrict = barsHeld == 4 and isNewSellSignal[1]

// Backtest Logic
var float totalProfit = 0
var float entryPrice = na
var int tradeDirection = 0

if isNewBuySignal and tradeDirection <= 0
    entryPrice := close
    tradeDirection := 1
    strategy.entry("Long", strategy.long)

if isNewSellSignal and tradeDirection >= 0
    entryPrice := close
    tradeDirection := -1
    strategy.entry("Short", strategy.short)

if (endLongTradeStrict and tradeDirection == 1) or (endShortTradeStrict and tradeDirection == -1)
    exitPrice = close
    profit = (exitPrice - entryPrice) / entryPrice
    if tradeDirection == -1
        profit := (entryPrice - exitPrice) / entryPrice

    totalProfit := totalProfit + profit
    tradeDirection := 0
    strategy.close_all()

plot(close, color=color.blue)
plot(ema, color=color.orange)
plot(sma, color=color.purple)