Implémenter des algorithmes d’analyse technique avancée, Excel VBA
Voici une explication détaillée et un code VBA Excel pour implémenter des algorithmes d’analyse technique avancée. Nous allons couvrir un exemple de base en utilisant deux indicateurs d’analyse technique populaires : Moyenne Mobile et Indice de Force Relative (RSI).
1. Moyennes Mobiles (SMA & EMA)
Moyenne Mobile Simple (SMA)
La Moyenne Mobile Simple (SMA) est la moyenne des prix d’un titre sur une période donnée. C’est l’un des indicateurs les plus couramment utilisés pour déterminer les tendances du marché.
Moyenne Mobile Exponentielle (EMA)
La Moyenne Mobile Exponentielle (EMA) accorde plus de poids aux prix récents, ce qui la rend plus réactive aux variations de prix par rapport à la Moyenne Mobile Simple (SMA).
2. Indice de Force Relative (RSI)
Le RSI est un oscillateur de momentum qui mesure la vitesse et le changement des mouvements de prix. Il varie de 0 à 100 et est souvent utilisé pour identifier les conditions de surachat ou de survente.
Explication étape par étape du code VBA
Le code suivant va calculer :
1. SMA : Moyenne Mobile Simple.
2. EMA : Moyenne Mobile Exponentielle.
3. RSI : Indice de Force Relative.
Nous supposerons que vous avez des données de prix historiques dans une feuille Excel comme suit :
- Colonne A : Date
- Colonne B : Prix de Clôture (prix de l’actif)
Disposition de la feuille Excel :
Date | Prix de Clôture |
01/01/2025 | 100 |
01/02/2025 | 105 |
01/03/2025 | 103 |
01/04/2025 | 110 |
… | … |
Code VBA Excel :
Sub CalculerIndicateursTechniques() ' Définir la feuille de calcul et la plage Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Définir les variables Dim lastRow As Long Dim i As Long Dim period As Integer Dim sma As Double, ema As Double, rs As Double Dim gains As Double, losses As Double Dim avgGain As Double, avgLoss As Double Dim rsi As Double ' Trouver la dernière ligne de données lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Définir la période pour SMA, EMA, et RSI period = 14 ' Période de 14 jours pour SMA, EMA et RSI ' Ajouter les entêtes pour les colonnes SMA, EMA et RSI ws.Cells(1, 3).Value = "SMA" ws.Cells(1, 4).Value = "EMA" ws.Cells(1, 5).Value = "RSI" ' Calculer la SMA (Moyenne Mobile Simple) For i = period To lastRow sma = Application.WorksheetFunction.Average(ws.Range("B" & i - period + 1 & ":B" & i)) ws.Cells(i, 3).Value = sma Next i ' Calculer la EMA (Moyenne Mobile Exponentielle) ema = ws.Cells(period, 3).Value ' Initialiser l'EMA avec la première valeur SMA Dim multiplier As Double multiplier = 2 / (period + 1) For i = period + 1 To lastRow ema = (ws.Cells(i, 2).Value - ema) * multiplier + ema ws.Cells(i, 4).Value = ema Next i ' Calculer le RSI (Indice de Force Relative) For i = period + 1 To lastRow gains = 0 losses = 0 ' Calculer les gains et pertes moyens For j = i - period + 1 To i If ws.Cells(j + 1, 2).Value > ws.Cells(j, 2).Value Then gains = gains + (ws.Cells(j + 1, 2).Value - ws.Cells(j, 2).Value) Else losses = losses + (ws.Cells(j, 2).Value - ws.Cells(j + 1, 2).Value) End If Next j ' Gain moyen et perte moyenne avgGain = gains / period avgLoss = losses / period If avgLoss = 0 Then rsi = 100 ' Si aucune perte, RSI est de 100 Else ' Calculer RS (Force Relative) et RSI rs = avgGain / avgLoss rsi = 100 - (100 / (1 + rs)) End If ' Afficher RSI dans la feuille de calcul ws.Cells(i, 5).Value = rsi Next i MsgBox "Indicateurs techniques calculés avec succès!", vbInformation End Sub
Explication du Code
1. Configuration Initiale
- La variable ws représente la feuille de calcul contenant les données de prix (ajustez le nom de la feuille selon votre cas).
- Nous définissons des variables comme lastRow pour obtenir la dernière ligne de données, period pour la période de calcul de la moyenne mobile et du RSI (14 périodes par défaut), ainsi que d’autres variables pour stocker les résultats intermédiaires.
2. Calcul de la SMA
- Pour chaque ligne, à partir de la ligne period jusqu’à la ligne lastRow, nous calculons la Moyenne Mobile Simple en faisant la moyenne des prix de clôture sur les period derniers jours. Cela se fait avec la fonction Application.WorksheetFunction.Average.
3. Calcul de l’EMA
- La Moyenne Mobile Exponentielle (EMA) commence avec la première valeur de la SMA, puis elle utilise le multiplicateur (2 / (period + 1)) pour calculer les EMA suivantes, en donnant plus de poids aux prix récents.
4. Calcul du RSI
- Pour le RSI, nous calculons les gains et pertes pour les period dernières périodes de prix. Si aucune perte n’est enregistrée, le RSI est égal à 100. Sinon, la Force Relative (RS) est calculée comme le ratio des gains moyens sur les pertes moyennes, et le RSI est calculé avec la formule suivante : RSI = 100 – (100 / (1 + RS)).
Comment utiliser le Code
1. Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
2. Dans l’éditeur VBA, cliquez sur Insertion > Module pour créer un nouveau module.
3. Collez le code dans le module.
4. Revenez à la feuille Excel et appuyez sur Alt + F8, sélectionnez CalculerIndicateursTechniques, puis cliquez sur Exécuter.
Cela va calculer et afficher les colonnes suivantes :
- SMA dans la colonne C
- EMA dans la colonne D
- RSI dans la colonne E
Conclusion
Ce code VBA vous permet de calculer certains des indicateurs techniques les plus couramment utilisés dans Excel. Vous pouvez modifier ce code pour ajouter d’autres indicateurs ou ajuster les périodes en fonction de votre stratégie de trading.