Implémenter des algorithmes d’analyse technique avancée, Excel VBA

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.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x