Zum Inhalt

Wie man in 5 Minuten einen cBot für cTrader erstellt

In diesem Artikel und dem dazugehörigen Video werden wir eine schnelle Möglichkeit beschreiben, einen cBot in cTrader Algo zu erstellen. Der cBot, den wir erstellen werden, implementiert eine einfache Handelsstrategie namens Drei weiße Soldaten und drei schwarze Krähen. Sie können mehr über diese Strategie in unserer Wissensdatenbank erfahren.

Bevor Sie unseren Anweisungen folgen, stellen Sie sicher, dass Sie die cTrader Windows- oder Mac-Anwendung von der offiziellen Website heruntergeladen und installiert haben. Starten Sie sie und navigieren Sie zum Abschnitt cTrader Algo. Sie finden es im linken Bereich. Klicken Sie auf die Registerkarte Algo, und der Abschnitt cTrader Algo sollte erscheinen.

Einen neuen cBot hinzufügen

Klicken Sie auf die Schaltfläche Neu in cTrader Algo, um mit dem Erstellen eines neuen cBots zu beginnen. Geben Sie einen Namen ein, wählen Sie eine Programmiersprache zwischen C# und Python und fahren Sie fort, bis sich der Code-Editor öffnet.

Die cBot-Einstellungen hinzufügen

Bevor wir mit der Implementierung einer Handelsstrategie beginnen, werfen wir einen Blick auf die grundlegenden cBot-Parameter und -Methoden. Sie können auch unsere Dokumentation konsultieren, um sich mit den verschiedenen Parametern und Methoden vertraut zu machen.

  • cBot-Parameter – ermöglichen es Ihnen, konfigurierbare Attribute wie das gehandelte Volumen oder Stop-Loss-/Take-Profit-Abstände zu definieren.

  • cBot-Methoden – definieren, wie sich Ihr cBot verhält, wenn bestimmte Ereignisse eintreten. Es gibt vier Hauptereignisse, die Sie bei der Entwicklung eines cTrader cBots handhaben müssen, und jedes wird von einer entsprechenden Methode verwaltet, die von cTrader bereitgestellt wird. Diese Methoden sind C#'s OnStart(), OnTick(), OnBar(), OnStop() und Python's on_start(), on_tick(), on_bar_closed(), on_stop(). Beachten Sie, dass die C#-Methode OnBar() und die Python-Methode on_bar_closed() nicht in der Standard-Code-Vorlage enthalten sind.

Die folgende Tabelle definiert diese vier Methoden im Detail.

C# Python Zweck
OnStart() on_start() Wird ausgelöst, wenn eine cBot-Instanz den Betrieb aufnimmt. Sie wird verwendet, um alle Variablen zu initialisieren, die Sie in Ihrem cBot verwenden möchten, wie z. B. Indikatoren, Zähler, Event-Handler oder Timer.
OnTick() on_tick() Wird bei jedem Tick (Kursaktualisierung) auf dem Handelschart ausgelöst, auf dem eine cBot-Instanz läuft. Wird häufig für schnelle Ein- oder Ausstiegslogik basierend auf Echtzeitdaten verwendet. Innerhalb dieser Methode können Sie benutzerdefinierte Ein- und Ausstiegsbedingungen sowie alle anderen Hilfsfunktionen programmieren, die bei Eintreffen eines neuen Ticks ausgeführt werden müssen.
OnBar() on_bar_closed() Wird beim Schließen jedes Balkens ausgelöst. Innerhalb dieser Methode können Sie benutzerdefinierte Ein- und Ausstiegsbedingungen oder andere Funktionen programmieren, die bei der Bildung jedes neuen Balkens ausgeführt werden müssen.
OnStop() on_stop() Wird aufgerufen, wenn der cBot stoppt. Wird verwendet, um abschließende Operationen wie das Schließen von Positionen, das Speichern des Zustands und mehr durchzuführen

Die Handelslogik hinzufügen

Wir werden nun den Code für unsere Handelsstrategie hinzufügen. Unser cBot soll eine Kaufposition eröffnen, wenn drei grüne Balken auf dem Chart gebildet werden, und eine Verkaufsposition, wenn es drei aufeinanderfolgende rote Balken gibt.

Zunächst müssen wir die Parameter unseres cBots definieren. Diese Parameter werden über die cTrader-Benutzeroberfläche vollständig anpassbar sein. Wir werden drei Parameter in unserem cBot definieren.

  1. Das Volumen jeder Transaktion.
  2. Der Stop-Loss in Pips.
  3. Der Take-Profit in Pips.

Fügen Sie den folgenden Code in Ihren Code-Editor direkt unterhalb der geschweiften Klammern nach der Klassendeklaration ein (public class NewcBot : Robot)

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Hinweis

Python-cBots verwenden anpassbare Parameter, die in ihren .cs-Dateien deklariert sind.

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

Wir müssen nun die Logik hinter unserer Handelsstrategie implementieren. Fügen Sie den folgenden Code in Ihre OnBar()- oder on_bar_closed()-Methode ein. Denken Sie daran, dass diese Methode jedes Mal aufgerufen wird, wenn ein neuer Balken gebildet wird.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//Three White Soldiers
if(Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) > Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume, "", StopLoss, TakeProfit);
}
            
//Three Black Crows
if(Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) < Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, "", StopLoss, TakeProfit);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Three White Soldiers
if (close.Last(1) > open_.Last(1) and
    close.Last(2) > open_.Last(2) and
    close.Last(3) > open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

# Three Black Crows
elif (close.Last(1) < open_.Last(1) and
      close.Last(2) < open_.Last(2) and
      close.Last(3) < open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

Nun werden wir den Code genauer untersuchen. cTrader bietet Zugriff auf die historischen Balken des Charts, sodass wir überprüfen können, ob die letzten drei Balken alle grün oder alle rot sind. In der C#-Methode OnBar() und der Python-Methode on_bar_closed() oben prüfen wir zunächst, ob die letzten drei Balken alle grün waren. Dann bewerten wir, ob diese Balken alle rot waren.

Wenn eine der beiden Bedingungen zutrifft, platzieren wir eine Market-Order mit der Methode ExecuteMarketOrder(). Sie nimmt mehrere Eingaben (Argumente) entgegen, wobei die wichtigsten die Handelsrichtung, das Symbol, das gehandelte Volumen, der Stop-Loss und der Take-Profit sind.

In unserem Fall wird die Orderrichtung (TradeType.Buy, TradeType.Sell) durch die Bedingungen der Handelsstrategie bestimmt. Der Symbolname wird direkt vom Chart übernommen, auf dem unser cBot läuft SymbolName. Das Handelsvolumen, der Stop-Loss und der Take-Profit (C#'s Volume, StopLoss, TakeProfit und Python's VolumeInLots, StopLossInPips, TakeProfitInPips) werden alle aus den von uns definierten cBot-Parametern abgerufen.

Den cBot erstellen und ausführen

Wir müssen nun überprüfen, ob unser cBot erfolgreich erstellt wird. Standardmäßig befindet sich das Build-Ergebnisfenster direkt unterhalb des Code-Editors. Wenn Sie es nicht sehen, klicken Sie auf die Schaltfläche Layout in der obersten Leiste der cTrader-Benutzeroberfläche und wählen Sie Build Result. Die Tastenkombination für diese Aktion ist Ctrl + W

Klicken Sie anschließend auf die Schaltfläche Build in der obersten Leiste der cTrader-Benutzeroberfläche. Alternativ können Sie mit der rechten Maustaste auf Ihren cBot klicken und im neu erschienenen Menü auf Build klicken oder einfach Ctrl + B drücken.

Image title

Wenn der Build erfolgreich ist, sehen Sie eine grüne Meldung im Bereich Build Result am unteren Rand des Code-Editors.

Image title

Wenn es Probleme mit Ihrem Code gibt, sehen Sie alternativ eine rote Meldung und eine detaillierte Zusammenfassung aller Build-Fehler.

Image title

Nachdem Ihr cBot erfolgreich erstellt wurde, können Sie ihn verwenden. Alles, was Sie tun müssen, ist eine Instanz hinzuzufügen auf einem Handelschart. Klicken Sie dazu einfach auf das Symbol + rechts neben dem Namen Ihres cBots. Sie sehen eine Liste aller Symbole, auf denen Sie Ihren cBot ausführen können.

Image title

Wir werden EURUSD auswählen. Nachdem Sie ein Symbol ausgewählt haben, wird eine neue cBot-Instanz hinzugefügt. Sie sehen einen neuen Eintrag in der Liste der cBots mit dem Symbolnamen und dem Zeitrahmen, den Sie handeln möchten.

Sie sollten auch die Parameter sehen, die Sie in der Registerkarte Parameters direkt unterhalb des Handelscharts codiert haben.

Image title

Sie können diese Parameter nach Belieben ändern oder sie einfach bei ihren Standardwerten belassen.

Zusätzlich sehen Sie eine Schaltfläche Play oben im EURUSD-Chart.

Image title

Um Ihre Instanz zu starten, drücken Sie diese Schaltfläche. Alternativ befindet sich eine Kopie dieser Schaltfläche auch rechts neben Ihrer Instanz in der Liste der cBots auf der linken Seite. Jede dieser Schaltflächen startet den cBot.

Nachdem Sie auf eine der Schaltflächen geklickt haben, sollten Sie sehen, dass sie orange wird, was bedeutet, dass eine Instanz unseres cBots jetzt aktiv ist und läuft. In der Registerkarte Log sollten Sie auch eine neue Zeile sehen, die besagt, dass der cBot jetzt gestartet wurde.

cBot backtesten

Unser cBot kann lange brauchen, um eine Position auf einem echten Handelschart zu eröffnen. Wir werden einen schnellen Backtest durchführen, um ihn in Aktion auf historischen Daten zu sehen. Öffnen Sie dazu die Registerkarte Backtest.

Image title

Verwenden Sie den Kalender-Schieberegler weiter oben auf dem Bildschirm, um den Datumsbereich auszuwählen, den Sie für das Backtesting verwenden möchten. Aktivieren Sie das Flag Visual mode, um die Ergebnisse des Backtestings zu verfolgen, während sie auftreten.

Wir werden den Schieberegler um einen Monat zurückbewegen. Klicken Sie auf die Schaltfläche Play, um den cBot auf den ausgewählten historischen Daten zu starten.

Danach können Sie sehen, wie neue Positionen in der Registerkarte unmittelbar unterhalb des Handelscharts und rechts neben dem Abschnitt Parameters eröffnet und/oder geschlossen werden. Insbesondere nach der Erkennung eines der beiden von uns programmierten Muster wird der cBot eine Kauf- oder Verkaufsorder erteilen.

Die Durchführung eines Backtests ist eine nützliche Möglichkeit, um zu analysieren, ob Ihr cBot korrekt funktioniert.

Zusammenfassung

Wir hoffen, dass dieser Artikel hilfreich war, um zu demonstrieren, wie Sie einen automatisierten Handelsroboter mit cTrader erstellen können.

Image title