Stratégie de croisement de momentum basée sur la moyenne mobile de l'indice pondérée par la liquidité

LWMA EMA VOL stdev CROSS
Date de création: 2025-01-17 15:45:55 Dernière modification: 2025-01-17 15:45:55
Copier: 0 Nombre de clics: 365
1
Suivre
1617
Abonnés

Stratégie de croisement de momentum basée sur la moyenne mobile de l’indice pondérée par la liquidité

Aperçu

Cette stratégie est un système de trading basé sur des moyennes mobiles pondérées par la liquidité. Elle mesure la liquidité du marché en surveillant la relation entre les fluctuations de prix et le volume des transactions, et construit des moyennes mobiles rapides et lentes sur cette base. Un signal d’achat est généré lorsque la ligne rapide croise la ligne lente, et un signal de vente est généré lorsqu’elle la croise en dessous. La stratégie accorde une attention particulière aux événements de liquidité anormaux et enregistre les points de prix clés via des tableaux, offrant ainsi des opportunités de trading plus précises.

Principe de stratégie

Le cœur de la stratégie consiste à mesurer la liquidité du marché à travers le ratio entre le volume des transactions et la variation des prix. Les étapes spécifiques de mise en œuvre sont les suivantes :

  1. Calculer l’indicateur de liquidité : Utiliser le volume divisé par la valeur absolue de la différence entre le cours de clôture et le cours d’ouverture
  2. Définition des limites de liquidité : identification de la liquidité anormale avec l’EMA et l’écart type
  3. Maintenir la gamme de prix : enregistrer le prix lors du franchissement de la limite de liquidité
  4. Construction de moyennes mobiles : calcul des moyennes mobiles moyennes rapides et lentes en fonction des événements de liquidité
  5. Générer des signaux de trading : déterminer les points d’achat et de vente grâce aux croisements de moyennes mobiles

Avantages stratégiques

  1. Perception de la liquidité : en combinant le volume des transactions avec les variations de prix, il est possible de capturer plus précisément l’activité du marché.
  2. Suivi des événements anormaux : enregistrez les points de prix clés via des tableaux pour éviter de manquer des opportunités de marché importantes
  3. Adaptation dynamique : la fonction de réduction de poids de l’EMA permet à la stratégie de mieux s’adapter aux changements du marché
  4. Contrôle des risques : Fournir des signaux d’entrée et de sortie clairs grâce au croisement de moyennes mobiles
  5. Personnalisation : Plusieurs paramètres peuvent être ajustés pour s’adapter à différents environnements de marché

Risque stratégique

  1. Sensibilité des paramètres : l’effet de la stratégie dépend fortement des paramètres définis et doit être optimisé en permanence
  2. Décalage : les systèmes basés sur des moyennes mobiles présentent un décalage inhérent
  3. Dépendance du marché : performance volatile sur certaines périodes et sur certains marchés
  4. Fausses cassures : peuvent générer de faux signaux pendant les périodes de forte volatilité
  5. Coûts de transaction : les transactions fréquentes peuvent entraîner des coûts plus élevés

Orientation de l’optimisation de la stratégie

  1. Présentez le filtre :
  • Ajoutez des indicateurs de confirmation de tendance tels que ADX
  • Utiliser des indicateurs de volatilité pour filtrer les faux signaux
  1. Amélioration du timing d’entrée :
  • Combinaison des niveaux de support et de résistance
  • Considérez la confirmation de la cassure du volume
  1. Sélection des paramètres d’optimisation :
  • Implémentation de paramètres adaptatifs
  • Ajustement dynamique en fonction des conditions du marché
  1. Gestion des risques améliorée :
  • Ajoutez un mécanisme de stop loss et de take profit
  • Mise en place d’un système de gestion d’entrepôt

Résumer

Il s’agit d’une stratégie innovante qui combine l’analyse de liquidité avec des indicateurs techniques, optimisant le système traditionnel de croisement de moyennes mobiles en surveillant les anomalies de liquidité du marché. Bien qu’il fonctionne bien dans des environnements de marché spécifiques, il nécessite encore une optimisation supplémentaire pour améliorer la stabilité et l’applicabilité. Il est recommandé aux traders d’effectuer des tests suffisants avant une utilisation en temps réel et de les combiner avec d’autres indicateurs pour créer un système de trading plus complet.

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

//Liquidity ignoring price location

//@version=6
strategy("Liquidity Weighted Moving Averages [AlgoAlpha]", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Inputs
outlierThreshold = input.int(10, "Outlier Threshold Length")
fastMovingAverageLength = input.int(50, "Fast MA Length")
slowMovingAverageLength = input.int(100, "Slow MA Length")
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")

// Define liquidity based on volume and price movement
priceMovementLiquidity = volume / math.abs(close - open)

// Calculate the boundary for liquidity to identify outliers
liquidityBoundary = ta.ema(priceMovementLiquidity, outlierThreshold) + ta.stdev(priceMovementLiquidity, outlierThreshold)

// Initialize an array to store liquidity values when they cross the boundary
var liquidityValues = array.new_float(5)

// Check if the liquidity crosses above the boundary and update the array
if ta.crossover(priceMovementLiquidity, liquidityBoundary)
    array.insert(liquidityValues, 0, close)
    if array.size(liquidityValues) > 5
        array.pop(liquidityValues)

// Calculate the Exponential Moving Averages for the close price at the last liquidity crossover
fastEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, fastMovingAverageLength)
slowEMA = ta.ema(array.size(liquidityValues) > 0 ? array.get(liquidityValues, 0) : na, slowMovingAverageLength)

// Trading Logic
in_date_range = true
buy_signal = ta.crossover(fastEMA, slowEMA) and in_date_range
sell_signal = ta.crossunder(fastEMA, slowEMA) and in_date_range

// Strategy Entry and Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

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

// Plotting
fastPlot = plot(fastEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Fast EMA")
slowPlot = plot(slowEMA, color=fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50), title="Slow EMA")

// Create a fill between the fast and slow EMA plots with appropriate color based on crossover
fill(fastPlot, slowPlot, fastEMA > slowEMA ? color.new(#00ffbb, 50) : color.new(#ff1100, 50))