Häufig müssen automatisierte Strategien Informationen aus verschiedenen Zeitrahmen berücksichtigen, bevor sie eine Handelsentscheidung treffen. Glücklicherweise bietet cTrader viele Tools, die es Algos ermöglichen, einfach auf Daten aus mehreren Zeitrahmen zuzugreifen. In diesem Video und dem dazugehörigen Artikel erklären wir, wie Sie diese Tools verwenden können, um einen effektiven cBot zu erstellen.
cBot-Parameter deklarieren
Wir beginnen mit der Deklaration der notwendigen Parameter für einen Moving Average. Wir benötigen die Periode, den Zeitrahmen und den Moving-Average-Typ.
12345678
[Parameter("MA 1 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}
Dann können wir den Moving Average definieren.
1
privateMovingAverage_ma1;
Wir können den Moving Average in der Methode OnStart() initialisieren. Wir verwenden die Methode MarketData.GetBars(), um die Balken des ersten Moving Average zu erhalten und sie an den Indikator-Konstruktor zu übergeben. Die Methode GetBars() ist nützlich, um Balkendaten für jeden benötigten Zeitrahmen und jedes Symbol zu erhalten.
Parameter("MA 1 Period",DefaultValue=14,Group="Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}[Parameter("MA 2 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA2Period{get;set;}[Parameter("MA 2 Timeframe", DefaultValue = "Hour2", Group = "Moving Averages")]publicTimeFrameMA2Timeframe{get;set;}[Parameter("MA 2 Type", Group = "Moving Averages")]publicMovingAverageTypeMA2Type{get;set;}[Parameter("MA 3 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA3Period{get;set;}[Parameter("MA 3 Timeframe", DefaultValue = "Hour4", Group = "Moving Averages")]publicTimeFrameMA3Timeframe{get;set;}[Parameter("MA 3 Type", Group = "Moving Averages")]publicMovingAverageTypeMA3Type{get;set;}privateMovingAverage_ma1;privateMovingAverage_ma2;privateMovingAverage_ma3;protectedoverridevoidOnStart(){_ma1=Indicators.MovingAverage(MarketData.GetBars(MA1Timeframe).ClosePrices,MA1Period,MA1Type);_ma2=Indicators.MovingAverage(MarketData.GetBars(MA2Timeframe).ClosePrices,MA2Period,MA2Type);_ma3=Indicators.MovingAverage(MarketData.GetBars(MA3Timeframe).ClosePrices,MA3Period,MA3Type);}
Handelslogik implementieren
An diesem Punkt können wir die Handelslogik implementieren. Unsere Strategie hält eine Kauf-Position, wenn alle Moving Averages steigen, und eine Verkauf-Position, wenn die Moving Averages fallen. Hier ist der Code für die gesamte Kauf-Logik.
Abschließend sollten wir unseren neuen cBot backtesten. Wir können sehen, dass der cBot Positionen eingeht, wenn die Moving Averages in dieselbe Richtung synchronisiert sind, und außerhalb des Marktes bleibt, wenn jeder Indikator in eine andere Richtung zeigt.