Indicateur de volatilité dynamique (VIDYA) combiné à une stratégie de suivi de tendance ATR

ATR CMO SMA MA
Date de création: 2024-12-13 10:21:14 Dernière modification: 2024-12-13 10:21:14
Copier: 0 Nombre de clics: 474
1
Suivre
1617
Abonnés

Indicateur de volatilité dynamique (VIDYA) combiné à une stratégie de suivi de tendance ATR

Aperçu

La stratégie est un système de trading de suivi de tendance basé sur l’indicateur de volatilité dynamique (VIDYA), combiné à l’ATR pour améliorer la capacité d’identification des tendances et de gestion des risques. La stratégie est capable de capturer en temps opportun les signaux de retournement du marché en ajustant dynamiquement la vitesse de réponse aux fluctuations du marché, tout en conservant la capacité de suivre les tendances.

Principe de stratégie

Le cœur de la stratégie est d’utiliser les caractéristiques dynamiques de l’indicateur VIDA pour identifier les tendances. VIDA ajuste dynamiquement le poids des moyennes mobiles en calculant les variations de la dynamique, afin d’avoir une sensibilité différente dans différents environnements de marché.

  1. Utilisez l’oscillateur de dynamique de Cande (CMO) pour calculer la dynamique des prix
  2. Facteur d’adaptation alpha calculé sur la dynamique
  3. Construction d’une bande dynamique avec l’ATR
  4. La rupture de la trajectoire ascendante génère un signal de multiplication, la rupture de la trajectoire descendante génère un signal de rupture
  5. Logique d’inversion de position, c’est-à-dire que le nouveau signal évacue l’ancien et ouvre un nouveau positionnement

Avantages stratégiques

  1. Adaptabilité dynamique: l’indicateur VIDYA peut ajuster automatiquement les paramètres en fonction des fluctuations du marché, évitant ainsi le problème du retard des moyennes mobiles traditionnelles
  2. Contrôle des risques: arrêt de perte par fluctuation dynamique de l’ATR, adapté aux différents environnements de marché
  3. Signal clarté: utilisation de la logique de renversement de tendance, des signaux de négociation clairs et faciles à exécuter
  4. L’effet de visualisation est bon: les tendances à la hausse et à la baisse sont indiquées par des couleurs pour montrer l’état du marché
  5. Ajustabilité des paramètres: les paramètres clés peuvent être optimisés en fonction de différentes caractéristiques du marché

Risque stratégique

  1. Risque de choc des marchés: Faux signaux peuvent être générés lors de chocs horizontaux, entraînant des transactions fréquentes
  2. Effets des points de glissement: Chaque signal implique une transaction bidirectionnelle et est vulnérable aux effets des points de glissement en raison de la stratégie de retournement
  3. Risques de gestion de fonds: la gestion de positions à taux fixe peut entraîner des pertes plus importantes en cas de forte volatilité
  4. Sensitivité des paramètres: les paramètres de VIDYA et ATR ont une influence importante sur les performances de la stratégie
  5. Dépendance sur les conditions du marché: une meilleure performance dans les marchés où la tendance est évidente, mais une mauvaise performance dans d’autres environnements

Orientation de l’optimisation de la stratégie

  1. Ajout d’un filtre de tendance: vous pouvez ajouter des jugements de tendance à long terme pour filtrer les signaux de choc du marché
  2. Optimisation de la gestion des positions: envisager l’introduction d’une gestion dynamique des positions, en ajustant le pourcentage de détention en fonction des fluctuations du marché
  3. Modification de la logique d’entrée en champ: la confirmation d’autres indicateurs techniques peut être ajoutée pour améliorer la fiabilité du signal
  4. Amélioration des mécanismes de stop loss: envisagez d’ajouter un stop loss mobile ou un stop loss dynamique basé sur la volatilité
  5. Augmentation du filtrage temporel: les paramètres de la stratégie peuvent être ajustés en fonction des caractéristiques du marché pour différentes périodes de temps

Résumer

La stratégie, combinée à VIDYA et ATR, permet le suivi dynamique et le contrôle des risques liés aux tendances du marché. Son avantage central réside dans sa capacité à s’adapter aux fluctuations du marché, tout en conservant la capacité de suivre les tendances.

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

// 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)