Aller au contenu

Comment dessiner des retracements de Fibonacci

Les retracements de Fibonacci sont un outil d'analyse technique populaire utilisé pour identifier les niveaux potentiels de support et de résistance dans le prix d'un actif. En identifiant les niveaux de support et de résistance, les traders obtiennent un avantage stratégique dans le timing de leurs trades, la gestion du risque, l'alignement avec les tendances du marché et, en fin de compte, l'amélioration de leurs chances de rentabilité.

Dans cet article et sa vidéo correspondante, vous apprendrez comment créer un cBot qui dessine des retracements de Fibonacci sur un graphique et ouvre des positions en fonction des retracements.

Dessiner un retracement de Fibonacci sur un graphique

Les retracements de Fibonacci mettent en œuvre la séquence de Fibonacci, une série de nombres où chaque nombre est la somme des deux précédents.

Exemple

Voici un exemple de séquence de Fibonacci : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Les niveaux de retracement de Fibonacci sont des ratios de nombres successifs dérivés de la séquence de Fibonacci. Voici les ratios populaires utilisés dans l'analyse technique et le trading : 0,236, 0,382, 0,5, 0,618 et parfois 0,786.

Nous allons créer un cBot qui dessine des retracements de Fibonacci sur un graphique. Quatre paramètres représentant le prix de départ, l'heure de départ, le prix de fin et l'heure de fin seront fournis dans le code du cBot.

Dans cTrader Algo, cliquez sur le bouton Nouveau pour créer un cBot et saisissez un nom tel que "Fibonaci Retracement Strategy".

Déclarez les quatre variables importantes.

1
2
3
4
5
private double _max;
private double _min;

private int _highIndex;
private int _lowIndex;

Codez le cBot pour détecter les prix minimums et maximums pour les 50 dernières barres.

1
2
_max = Bars.HighPrices.Maximum(50);
_min = Bars.LowPrices.Minimum(50);

cTrader Algo permet aux utilisateurs de définir l'emplacement temporel par le biais du temps absolu ou de l'indice de barre relatif. Nous utiliserons l'indice de barre relatif pour dessiner le retracement de Fibonacci et écrirons le code pour détecter l'indice des prix élevés et bas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
for (int i = 0; i <= 50; i++)
{
     if (Bars.HighPrices.Last(i) == _max)
          _highIndex = Bars.Count - i - 1;
}

for (int i = 0; i <= 50; i++)
{
     if (Bars.LowPrices.Last(i) == _min)
          _lowIndex = Bars.Count - i - 1;
}

Enfin, le code qui dessine les retracements de Fibonacci sur le graphique peut être écrit. L'ordre des prix élevés et bas détermine la direction du retracement de Fibonacci.

1
2
3
4
if (_highIndex > _lowIndex)
     Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
else
     Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);

Vous pouvez copier le code complet ci-dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class FibonacciRetracementStrategy : Robot
    {
        private double _max;
        private double _min;

        private int _highIndex;
        private int _lowIndex;

        protected override void OnStart()
        {
            _max = Bars.HighPrices.Maximum(50);
            _min = Bars.LowPrices.Minimum(50);

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.HighPrices.Last(i) == _max)
                    _highIndex = Bars.Count - i - 1;
            }

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.LowPrices.Last(i) == _min)
                    _lowIndex = Bars.Count - i - 1;
            }

            if (_highIndex > _lowIndex)
                Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
            else
                Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);
        }

        protected override void OnTick()
        {
            // Handle price updates here
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

Pour créer le cBot, utilisez le raccourci clavier Ctrl+B ou cliquez sur Créer.

Ajoutez une instance locale du cBot : cliquez sur Ajouter une instance, sélectionnez l'option Localement, puis cliquez sur Ajouter une instance.

Cliquez sur l'instance et accédez à l'onglet Backtesting. Choisissez une période pour le backtesting, puis cliquez sur l'icône de lecture.

Vous devriez voir les retracements de Fibonacci dessinés sur le graphique.

Trader le retracement de Fibonacci

Retournez à l'éditeur de code pour mettre en œuvre une stratégie simple basée sur les retracements de Fibonacci. La stratégie consiste à entrer une position d'achat chaque fois que le prix franchit le niveau de Fibonacci de 0,618 et qu'un rebond est attendu.

Écrivez le code qui exécute la stratégie dans la méthode OnTick().

1
2
3
4
5
protected override void OnTick()
{
     if (Positions.Count == 0 && Bid < _min + ((_max - _min) * 0.618))
          ExecuteMarketOrder(TradeType.Buy, SymbolName, 1000);
}

Vous pouvez copier le code complet ci-dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class FibonacciRetracementStrategy : Robot
    {
        private double _max;
        private double _min;

        private int _highIndex;
        private int _lowIndex;

        protected override void OnStart()
        {
            _max = Bars.HighPrices.Maximum(50);
            _min = Bars.LowPrices.Minimum(50);

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.HighPrices.Last(i) == _max)
                    _highIndex = Bars.Count - i - 1;
            }

            for (int i = 0; i <= 50; i++)
            {
                if (Bars.LowPrices.Last(i) == _min)
                    _lowIndex = Bars.Count - i - 1;
            }

            if (_highIndex > _lowIndex)
                Chart.DrawFibonacciRetracement("fibo", _lowIndex, _min, _highIndex, _max, Color.Yellow);
            else
                Chart.DrawFibonacciRetracement("fibo", _highIndex, _max, _lowIndex, _min, Color.Yellow);
        }

        protected override void OnTick()
        {
            if (Positions.Count == 0 && Bid < _min + ((_max - _min) * 0.618))
                ExecuteMarketOrder(TradeType.Buy, SymbolName, 1000);
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

Créez à nouveau le cBot, puis effectuez un backtesting.

Vous devriez voir des positions être ouvertes chaque fois que le niveau de retracement est franchi.

Résumé

Cet article a expliqué comment dessiner des retracements de Fibonacci sur un graphique de symbole et mettre en œuvre une stratégie de trading qui repose sur les retracements.