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.