Les ressources ont été chargées... Je charge...

Indice de volatilité dynamique (VIDYA) avec stratégie d'inversion de tendance ATR

Auteur:ChaoZhang est là., Date: 2024-12-13 10:21:14 Je suis désolé
Les étiquettes:ATROCMSMA- Je vous en prie.

img

Résumé

Cette stratégie est un système de trading basé sur la moyenne dynamique de l'indice variable (VIDYA), combiné avec des bandes ATR pour améliorer les capacités d'identification des tendances et de gestion des risques.

Principes de stratégie

Le principe de base réside dans l'utilisation des caractéristiques dynamiques de VIDYA pour l'identification des tendances.

  1. Utilise l'oscillateur de dynamique de Chande (CMO) pour le calcul de la dynamique des prix
  2. Calcule le facteur d'adaptation alpha en fonction du momentum
  3. Construit des bandes de volatilité dynamiques en utilisant l'ATR
  4. Génère des signaux longs sur la bande supérieure et des signaux courts sur la bande inférieure
  5. Utilise une logique d'inversion de position - les nouveaux signaux ferment les positions existantes et en ouvrent de nouvelles

Les avantages de la stratégie

  1. Forte adaptation dynamique: VIDYA ajuste automatiquement les paramètres en fonction de la volatilité du marché
  2. Contrôle complet du risque: utilise des bandes dynamiques ATR pour l'adaptation au stop-loss
  3. Signaux clairs: utilise une logique d'inversion de tendance avec des signaux de négociation distincts
  4. Excellente visualisation: distingue les tendances à la hausse et à la baisse grâce au codage des couleurs
  5. Paramètres flexibles: les paramètres clés peuvent être optimisés pour différentes caractéristiques du marché

Risques stratégiques

  1. Risque de marché perturbé: sujette à de faux signaux sur des marchés variés
  2. L'exposition au risque de dérapage s'accroît en cas de transactions bidirectionnelles sur chaque signal.
  3. Risque de gestion de trésorerie: le dimensionnement des positions fixes peut entraîner des pertes importantes sur les marchés volatils
  4. Sensibilité des paramètres: le rendement de la stratégie dépend fortement des paramètres VIDYA et ATR
  5. Dépendance de l'environnement du marché: Performe bien sur les marchés tendance mais peut avoir des difficultés sur d'autres marchés

Directions d'optimisation

  1. Ajouter des filtres de tendance: mettre en œuvre une évaluation de la tendance à long terme pour filtrer les signaux sur des marchés variés
  2. Améliorer la gestion des positions: introduire une dimensionnement dynamique des positions basé sur la volatilité du marché
  3. Améliorer la logique d'entrée: ajouter la confirmation des indicateurs techniques pour une meilleure fiabilité du signal
  4. Mecanisme de stop-loss affiné: envisager des stops de trailing ou des stops dynamiques basés sur la volatilité
  5. Inclure des filtres de temps: ajuster les paramètres de stratégie en fonction des différentes caractéristiques de la période de temps

Résumé

Cette stratégie réalise un suivi dynamique des tendances et un contrôle des risques en combinant VIDYA et ATR. Sa force principale réside dans l'adaptation à la volatilité du marché tout en maintenant des capacités de suivi des tendances et en saisissant les opportunités d'inversion. Bien qu'elle puisse faire face à des risques dans certaines conditions de marché, la stratégie conserve une valeur pratique grâce à une optimisation appropriée des paramètres et des mesures de gestion des risques. Les investisseurs devraient se concentrer sur le contrôle des risques, les paramètres appropriés et les ajustements opportuns de la stratégie en fonction des conditions du marché dans le trading en direct.


/*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"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PakunFX

//@version=5
strategy("VIDYA Auto-Trading(Reversal Logic)", overlay=true)

// INPUTS ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
int   vidya_length   = input.int(10, "VIDYA Length")       
int   vidya_momentum = input.int(20, "VIDYA Momentum")    
float band_distance  = input.float(2, "Distance factor for upper/lower bands", step = 0.1)  
float source         = input.source(close, "Source")    
color up_trend_color   = input(#17dfad, "+")  
color down_trend_color = input(#dd326b, "-")  
bool  shadow           = input.bool(true, "Shadow") 

// Define VIDYA (Variable Index Dynamic Average) function
vidya_calc(src, vidya_length, vidya_momentum) =>
    float momentum         = ta.change(src)
    float sum_pos_momentum = math.sum((momentum >= 0) ? momentum : 0.0, vidya_momentum)
    float sum_neg_momentum = math.sum((momentum >= 0) ? 0.0 : -momentum, vidya_momentum)
    float abs_cmo          = math.abs(100 * (sum_pos_momentum - sum_neg_momentum) / (sum_pos_momentum + sum_neg_momentum))
    float alpha            = 2 / (vidya_length + 1)
    var float vidya_value  = 0.0
    vidya_value           := alpha * abs_cmo / 100 * src + (1 - alpha * abs_cmo / 100) * nz(vidya_value[1])

    ta.sma(vidya_value, 15)

// Calculate VIDYA
float vidya_value = vidya_calc(source, vidya_length, vidya_momentum)

// Calculate upper and lower bands
float atr_value = ta.atr(200)
float upper_band = vidya_value + atr_value * band_distance
float lower_band = vidya_value - atr_value * band_distance

// Detect trend direction
bool is_trend_up = na
if ta.crossover(source, upper_band)
    is_trend_up := true
if ta.crossunder(source, lower_band)
    is_trend_up := false

// Smooth the trend line
float smoothed_value = na
if is_trend_up
    smoothed_value := lower_band
if not is_trend_up
    smoothed_value := upper_band

// Detect trend change
bool trend_cross_up = ta.crossover(source, upper_band)
bool trend_cross_down = ta.crossunder(source, lower_band)

// ENTRY & EXIT ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
// Long logic: Enter long when down arrow appears and exit when up arrow appears
if trend_cross_up
    strategy.close("Sell")  // Close short position if any
    strategy.entry("Buy", strategy.long)

if trend_cross_down
    strategy.close("Buy")  // Close long position if any
    strategy.entry("Sell", strategy.short)

Relationnée

Plus de