Zum Inhalt

So zeichnen Sie Fibonacci-Retracements

Fibonacci-Retracements sind ein beliebtes Werkzeug der technischen Analyse, das verwendet wird, um potenzielle Unterstützungs- und Widerstandsniveaus im Preis eines Vermögenswerts zu identifizieren. Durch die Identifizierung von Unterstützungs- und Widerstandsniveaus erhalten Händler einen strategischen Vorteil beim Timing ihrer Transaktionen, beim Risikomanagement, bei der Ausrichtung auf Markttrends und letztendlich bei der Verbesserung ihrer Rentabilitätschancen.

In diesem Artikel und dem dazugehörigen Video erfahren Sie, wie Sie einen cBot erstellen, der Fibonacci-Retracements auf einem Chart zeichnet und Positionen basierend auf Retracements eröffnet.

Fibonacci-Retracement auf einem Chart zeichnen

Fibonacci-Retracements implementieren die Fibonacci-Folge, eine Zahlenreihe, bei der jede Zahl die Summe der beiden vorhergehenden ist.

Beispiel

Dies ist ein Beispiel für eine Fibonacci-Folge: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Fibonacci-Retracement-Niveaus sind Verhältnisse aufeinanderfolgender Zahlen, die aus der Fibonacci-Folge abgeleitet werden. Dies sind die beliebten Verhältnisse, die in der technischen Analyse und im Handel verwendet werden: 0,236, 0,382, 0,5, 0,618 und manchmal 0,786.

Wir werden einen cBot erstellen, der Fibonacci-Retracements auf einem Chart zeichnet. Vier Parameter, die den Startpreis, die Startzeit, den Endpreis und die Endzeit darstellen, werden im cBot-Code bereitgestellt.

Klicken Sie in cTrader Algo auf die Schaltfläche Neu, um einen cBot zu erstellen, und geben Sie einen Namen wie „Fibonacci Retracement Strategy" ein.

Deklarieren Sie die vier wichtigen Variablen.

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

private int _highIndex;
private int _lowIndex;

Codieren Sie den cBot so, dass er die Mindest- und Höchstpreise für die letzten 50 Balken erkennt.

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

cTrader Algo ermöglicht es Benutzern, die Zeitposition durch die absolute Zeit oder den relativen Balkenindex zu definieren. Wir werden den relativen Balkenindex verwenden, um das Fibonacci-Retracement zu zeichnen, und den Code schreiben, um den Index der Höchst- und Tiefstpreise zu erkennen.

 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;
}

Schließlich kann der Code geschrieben werden, der die Fibonacci-Retracements auf dem Chart zeichnet. Die Reihenfolge der Höchst- und Tiefstpreise bestimmt die Richtung des Fibonacci-Retracements.

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

Sie können den vollständigen Code unten kopieren:

 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
        }
    }
}

Um den cBot zu erstellen, verwenden Sie die Tastenkombination Ctrl+B oder klicken Sie auf Erstellen.

Fügen Sie eine lokale Instanz des cBots hinzu: Klicken Sie auf Instanz hinzufügen, wählen Sie die Option Lokal und klicken Sie dann auf Instanz hinzufügen.

Klicken Sie auf die Instanz und navigieren Sie zur Registerkarte Backtesting. Wählen Sie einen Zeitraum für das Backtesting und klicken Sie dann auf das Play-Symbol.

Sie sollten die Fibonacci-Retracements auf dem Chart sehen.

Fibonacci-Retracement handeln

Kehren Sie zum Code-Editor zurück, um eine einfache Strategie basierend auf den Fibonacci-Retracements zu implementieren. Die Strategie dreht sich darum, eine Kaufposition einzugehen, wenn der Preis das 0,618-Fibonacci-Niveau kreuzt und ein Rückprall erwartet wird.

Schreiben Sie den Code, der die Strategie in der Methode OnTick() ausführt.

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

Sie können den vollständigen Code unten kopieren:

 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
        }
    }
}

Erstellen Sie den cBot erneut und führen Sie dann einen Backtest durch.

Sie sollten sehen, dass Positionen eingegangen werden, wenn das Retracement-Niveau überschritten wird.

Zusammenfassung

Dieser Artikel hat erklärt, wie man Fibonacci-Retracements auf einem Symbol-Chart zeichnet und eine Handelsstrategie implementiert, die auf den Retracements basiert.