Zum Inhalt

Wie man Indikatoren in cBots verwendet

In diesem Artikel und dem dazugehörigen Video zeigen wir Ihnen, wie Sie benutzerdefinierte Indikatoren in Ihren cBots referenzieren und verwenden können. Dazu entwickeln wir einen Handelsalgorithmus, der die Ausgabe eines benutzerdefinierten Beispielindikators verwendet, um Handelsoperationen durchzuführen.

Einen neuen cBot erstellen

Um alle benutzerdefinierten Indikatoren anzuzeigen, die derzeit auf Ihrem Computer installiert sind, wechseln Sie zur Algo-App und gehen Sie zur Registerkarte Indikatoren.

Wenn Sie hier einen oder mehrere benutzerdefinierte Indikatoren sehen, bedeutet dies, dass Sie diese frei in allen Ihren anderen Algos verwenden können. Für dieses Tutorial verwenden wir den Sample SMA-Indikator und entwickeln einen cBot, der auf der Grundlage der Richtung des einfachen gleitenden Durchschnitts handelt.

Zuerst werden wir einen neuen cBot erstellen und ihn in etwas Aussagekräftiges umbenennen, z. B. „SMA Robot". Unser cBot wird eine Kauftransaktion eingehen, wenn der SMA bullisch wird, und eine Verkaufstransaktion eingehen, wenn der SMA bärisch wird. Unser cBot wird seine Positionen nicht absichern, was bedeutet, dass entgegengesetzte Positionen bei jedem neuen Signal geschlossen werden.

Einen Indikator initialisieren

Bei benutzerdefinierten Indikatoren besteht unser erster Schritt darin, einen Verweis auf den benutzerdefinierten Indikator hinzuzufügen. Um einen benutzerdefinierten Indikator zu referenzieren, müssen wir die folgenden Schritte ausführen:

  1. Klicken Sie auf die Schaltfläche Verweise verwalten.
  2. Suchen Sie den Indikator, den wir referenzieren möchten, im neu geöffneten Fenster.
  3. Aktivieren Sie das Kontrollkästchen neben dem Indikator, den wir referenzieren möchten.
  4. Klicken Sie auf Anwenden.

Nachdem der Indikator referenziert wurde, können wir eine Instanzvariable seines Typs erstellen.

1
SampleSMA _sma;

Hinweis

Der Indikatortyp sollte mit dem Indikatorklassennamen übereinstimmen. Dieser kann sich vom Dateinamen des Indikators unterscheiden.

Der nächste Schritt besteht darin, den Indikator in unserer Methode OnStart() zu initialisieren. Bevor wir das tun, fügen wir jedoch einen Parameter zum cBot hinzu, der es uns ermöglicht, die vom benutzerdefinierten SMA-Indikator verwendeten Zeiträume zu konfigurieren.

1
2
[Parameter(DefaultValue = 14)]
public int Periods { get; set; }

Wir können die Methode Indicators.GetIndicator<>() verwenden, um alle benutzerdefinierten Indikatoren zu initialisieren, die wir referenzieren. Wir müssen den Indikatortyp definieren und die Parameter des Indikators durch Kommas getrennt übergeben.

Hinweis

Die Parameter müssen in der Reihenfolge übergeben werden, in der sie in der Indikatorklasse deklariert sind.

In unserem Fall ist der Typ SampleSMA und wir übergeben die Quellwerte dieses Indikators, die in diesem Fall die Schlusskurse der Balken und der Parameter Period sind.

1
_sma = Indicators.GetIndicator<SampleSMA>(Bars.ClosePrices, Periods);

Handelslogik implementieren

Mit unserem initialisierten Indikator können wir unsere Handelslogik implementieren. Unser benutzerdefinierter SMA-Indikator speichert die Werte des gleitenden Durchschnitts in der Sammlung Results. Die Sammlung Results verfügt über zwei nützliche Methoden, IsRising() und IsFalling(). Diese Methoden ermöglichen es uns herauszufinden, ob die Indikatorergebnisse steigen oder fallen.

Wir werden diese Methoden verwenden, um unsere Handelsbedingungen zu implementieren.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {        

    }
    else if(_sma.Result.IsFalling())
    {

    }
}

Wir werden nun unsere if-Anweisungen ausfüllen. Wenn der gleitende Durchschnitt steigt, schließen wir alle Verkaufspositionen und öffnen eine Kaufposition. Wenn der gleitende Durchschnitt hingegen fällt, schließen wir alle Kaufpositionen und öffnen eine Verkaufsposition.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
protected override void OnBarClosed()
{
    if(_sma.Result.IsRising())
    {
        Close(TradeType.Sell);
        Open(TradeType.Buy);
    }
    else if(_sma.Result.IsFalling())
    {
        Close(TradeType.Buy);
        Open(TradeType.Sell);            
    }
}

In unserem Code haben wir zwei neue Methoden verwendet, die die API nicht standardmäßig bereitstellt. Die Methode Open() öffnet neue Positionen basierend auf der definierten Richtung und Menge. Die Methode Close() schließt alle Positionen der definierten Richtung.

So ist die Methode Open() definiert.

1
2
3
4
5
private void Open(TradeType tradeType)
{
    if(Positions.Count == 0)
        ExecuteMarketOrder(tradeType, SymbolName, Volume, InstanceId);
}

Um eine Order innerhalb der Methode Open() auszuführen, müssen wir auch den Parameter Volume hinzufügen.

1
2
[Parameter(DefaultValue = 10000)]
public int Volume { get; set; }

Alles, was noch übrig bleibt, ist die Definition der Methode Close().

1
2
3
4
5
private void Close(TradeType tradeType)
{
    foreach (var position in Positions.Where(p => p.TradeType == tradeType))
        position.Close();
}

Backtesting durchführen

Wie immer werden wir den cBot gründlich backtesten, bevor wir ihn in unserem Namen handeln lassen. Um dasselbe zu tun, fügen Sie eine Instanz hinzu und wechseln Sie dann zur Registerkarte Backtesting.

Um unseren cBot noch weiter zu testen, fügen wir den benutzerdefinierten Indikator, den wir referenziert haben, zum Chart hinzu, an dem eine Instanz angehängt ist, und überprüfen, ob die Positionseinstiegspunkte mit den Indikatorausgaben übereinstimmen.

Um mehr über die Verwendung und Entwicklung von cBots zu erfahren, können Sie gerne andere Abschnitte der Dokumentation durchsuchen und unseren YouTube-Kanal abonnieren, um benachrichtigt zu werden, wenn wir ein neues Video veröffentlichen.

In diesem Artikel und dem dazugehörigen Video zeigen wir Ihnen, wie Sie benutzerdefinierte Indikatoren in Ihren cBots referenzieren und verwenden können. Dazu entwickeln wir einen Handelsalgorithmus, der die Ausgabe eines vorgefertigten benutzerdefinierten Indikators verwendet, um Handelsoperationen durchzuführen.

Einen neuen cBot erstellen

Um alle benutzerdefinierten Indikatoren anzuzeigen, die derzeit auf Ihrem Computer installiert sind, wechseln Sie zur Algo-Anwendung und gehen Sie zur Registerkarte „Indikatoren"