Zum Inhalt

Trend cBot

Strategieübersicht

Trend cBot implementiert eine Strategie, bei der zwei gleitende Durchschnitte (MAs) verwendet werden, um Trends zu erkennen und Handelsentscheidungen zu treffen. Der Algorithmus berechnet einen schnellen MA und einen langsamen MA, vergleicht ihre Werte im Laufe der Zeit und identifiziert Kreuzungspunkte, um Kauf- oder Verkaufssignale zu generieren.

Da Trend cBot auf MA-Kreuzungen angewiesen ist, um Momentumverschiebungen zu erkennen, ist er am effektivsten in Märkten mit klaren und anhaltenden Trends. Mit anderen Worten, der Algorithmus funktioniert gut mit Symbolen, die starke Richtungsbewegungen aufweisen, entweder nach oben oder nach unten.

cBot-Erstellung

Erfahren Sie in unseren Schritt-für-Schritt-Anleitungen, wie Sie cBots erstellen, entweder mit C# oder Python.

Der Trend cBot-Code ist in unseren öffentlichen C#- und Python-Repositories verfügbar. Derselbe Code wird als Vorlage im Erstellungsassistenten für Algorithmen in cTrader Windows oder Mac bereitgestellt, oder Sie können einfach den folgenden Codeausschnitt kopieren und verwenden:

 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None, AddIndicators = true)]
    public class SampleTrendcBot : Robot
    {
        [Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
        public double Quantity { get; set; }

        [Parameter("MA Type", Group = "Moving Average")]
        public MovingAverageType MAType { get; set; }

        [Parameter("Source", Group = "Moving Average")]
        public DataSeries SourceSeries { get; set; }

        [Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 10)]
        public int SlowPeriods { get; set; }

        [Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
        public int FastPeriods { get; set; }


        private MovingAverage slowMa;
        private MovingAverage fastMa;
        private const string label = "Sample Trend cBot";

        protected override void OnStart()
        {
            fastMa = Indicators.MovingAverage(SourceSeries, FastPeriods, MAType);
            slowMa = Indicators.MovingAverage(SourceSeries, SlowPeriods, MAType);
        }

        protected override void OnTick()
        {
            var longPosition = Positions.Find(label, SymbolName, TradeType.Buy);
            var shortPosition = Positions.Find(label, SymbolName, TradeType.Sell);

            var currentSlowMa = slowMa.Result.Last(0);
            var currentFastMa = fastMa.Result.Last(0);
            var previousSlowMa = slowMa.Result.Last(1);
            var previousFastMa = fastMa.Result.Last(1);

            if (previousSlowMa > previousFastMa && currentSlowMa <= currentFastMa && longPosition == null)
            {
                if (shortPosition != null)
                    ClosePosition(shortPosition);

                ExecuteMarketOrder(TradeType.Buy, SymbolName, VolumeInUnits, label);
            }
            else if (previousSlowMa < previousFastMa && currentSlowMa >= currentFastMa && shortPosition == null)
            {
                if (longPosition != null)
                    ClosePosition(longPosition);

                ExecuteMarketOrder(TradeType.Sell, SymbolName, VolumeInUnits, label);
            }
        }

        private double VolumeInUnits
        {
            get { return Symbol.QuantityToVolumeInUnits(Quantity); }
        }
    }
}
 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
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleTrendcBot():
    Label = "Sample Trend cBot"

    def on_start(self):
        self.volume_in_units = api.Symbol.QuantityToVolumeInUnits(api.Quantity)
        self.fastMa = api.Indicators.MovingAverage(api.SourceSeries, api.FastPeriods, api.MAType)
        self.slowMa = api.Indicators.MovingAverage(api.SourceSeries, api.SlowPeriods, api.MAType)

    def on_tick(self):
        longPosition = api.Positions.Find(self.Label, api.SymbolName, TradeType.Buy)
        shortPosition = api.Positions.Find(self.Label, api.SymbolName, TradeType.Sell)

        currentSlowMa = self.slowMa.Result.Last(0)
        currentFastMa = self.fastMa.Result.Last(0)
        previousSlowMa = self.slowMa.Result.Last(1)
        previousFastMa = self.fastMa.Result.Last(1)

        if previousSlowMa > previousFastMa and currentSlowMa <= currentFastMa and longPosition is None:
            if shortPosition is not None:
                api.ClosePosition(shortPosition)
            api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, self.volume_in_units, self.Label)
        elif previousSlowMa < previousFastMa and currentSlowMa >= currentFastMa and shortPosition is None:
            if longPosition is not None:
                api.ClosePosition(longPosition)
            api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, self.volume_in_units, self.Label)

Indikatorintegration

Ein gleitender Durchschnitt ist ein beliebter technischer Indikator, der Preisdaten glättet, um Trends über einen bestimmten Zeitraum zu identifizieren. Zu den Indikatoren für gleitende Durchschnitte gehören der Simple Moving Average (SMA), Exponential Moving Average (EMA), Time Series, Triangular, Weighted, Welles Wilder Smoothing, Hull usw.

Trend cBot verwendet zwei MAs, um Trends im Markt zu überwachen:

  • Schneller MA – reagiert schneller auf Preisänderungen und repräsentiert typischerweise kurzfristige Trends.
  • Langsamer MA – reagiert langsamer auf Preisänderungen und repräsentiert langfristige Trends.

Der cBot achtet auf Kreuzungsereignisse zwischen dem schnellen MA und dem langsamen MA und verwendet sie, um Signale zu generieren:

  • Kaufsignal – wenn der langsame MA den schnellen MA von oben nach unten kreuzt, wird dies als Aufwärtsmomentum interpretiert und ein Kaufsignal wird generiert.
  • Verkaufssignal – wenn der schnelle MA den langsamen MA von oben nach unten kreuzt, wird dies als Abwärtsmomentum interpretiert und ein Verkaufssignal wird generiert.

Wenn ein neues Signal generiert wird, während die entgegengesetzte Handelsposition offen ist, wie z. B. ein Kaufsignal, wenn eine Verkaufsposition offen ist, schließt der cBot die bestehende Position und öffnet eine neue. Diese Einrichtung stellt sicher, dass jeweils nur eine Position offen ist.

Berechnung und Logik

Ersteinrichtung

Der cBot initialisiert die beiden MAs in der Methode OnStart(), die aufgerufen wird, wenn der cBot startet.

Die MAs werden unter Verwendung verschiedener Perioden über eine Datenreihe berechnet. fastMA wird mit FastPeriods berechnet, während slowMA mit SlowPeriods berechnet wird.

Echtzeit-MA-Berechnungen

Die Hauptlogik für Handelsentscheidungen wird in der Methode OnTick() ausgeführt, die jedes Mal aufgerufen wird, wenn ein neuer Tick (Preisdaten) empfangen wird. Die beiden MAs werden kontinuierlich unter Verwendung der in cTrader integrierten Formeln für den ausgewählten MAType berechnet und bei jedem Tick aktualisiert.

Der cBot ruft die aktuellen und vorherigen Werte der MAs ab und fährt dann mit der Kreuzungsbedingung fort. Der cBot vergleicht die aktuellen und vorherigen Werte der MAs, um festzustellen, ob es eine Kreuzung gegeben hat:

  • Aufwärtstrenddetektion – wenn slowMA fastMA von oben nach unten kreuzt, wird dies als Aufwärtsmomentum interpretiert und führt zu einem Kaufsignal.
  • Abwärtstrenddetektion – wenn fastMA slowMA von oben nach unten kreuzt, wird dies als Abwärtsmomentum interpretiert und führt zu einem Verkaufssignal.

Transaktionsausführung

Nach der Erkennung einer Kreuzung führt der cBot einen Handel basierend auf dem generierten Signal aus:

  • Handelsausführung für ein Kaufsignal – der cBot prüft auf offene Short-(Verkaufs-)Positionen und schließt diese. Anschließend öffnet er eine neue Kaufposition.
  • Handelsausführung für ein Verkaufssignal – der cBot prüft auf offene Long-(Kauf-)Positionen und schließt diese. Anschließend öffnet er eine neue Verkaufsposition.

Parameter

Parameter Einheit Definition Tipps
Menge Lot Volumen jeder Transaktion. Scalping-Händler, die sich auf kleine Preisbewegungen konzentrieren, können sich für kleine Lot-Größen entscheiden, um das Risiko zu minimieren und gleichzeitig viele Transaktionen in kurzer Zeit durchzuführen.

Swing-Händler, die Positionen länger halten, können große Lot-Größen verwenden, da sie große Bewegungen am Markt erwarten und ihre potenziellen Gewinne maximieren möchten.
MA-Typ — Art des gleitenden Durchschnitts. In weniger volatilen Märkten bevorzugen Händler möglicherweise den SMA, da er Preisdaten effektiver glättet und die Wahrscheinlichkeit verringert, dass der cBot durch kurzfristige Schwankungen in die Irre geführt wird.

In volatilen Märkten bevorzugen Benutzer möglicherweise den EMA aufgrund seiner Fähigkeit, schnell auf Preisänderungen zu reagieren und frühe Trendumkehrungen zu erfassen.
Quelle — Preisdaten, die zur Berechnung des gleitenden Durchschnitts verwendet werden. Zu den verfügbaren Optionen gehören der Schlusskurs, der Eröffnungskurs, der Höchstkurs und der Tiefstkurs. Konservative Händler verwenden möglicherweise den Schlusskurs als Quelle, da er den endgültigen Preis einer Kerze darstellt und tendenziell zuverlässiger ist.

Aggressivere Händler bevorzugen möglicherweise den Höchstkurs oder Tiefstkurs, wenn sie Trendumkehrungen oder Ausbruchsmöglichkeiten an extremen Punkten der Preisspanne erfassen möchten.
Langsame Perioden — Anzahl der Perioden, die zur Berechnung des langsamen gleitenden Durchschnitts verwendet werden. Daytrader können niedrige Werte festlegen, um sich auf kurzfristige Trends zu konzentrieren und häufige Gelegenheiten während des Tages zu nutzen.

Händler, die auf langfristige Trends abzielen, können hohe Werte festlegen, um sicherzustellen, dass der cBot nur dann Transaktionen eingeht, wenn ein starker, bestätigter Trend vorliegt.
Schnelle Perioden — Anzahl der Perioden, die zur Berechnung des schnellen gleitenden Durchschnitts verwendet werden. Händler, die schnelle Ein- und Ausstiege suchen, können niedrige Werte festlegen, um sicherzustellen, dass der cBot schnell auf kurzfristige Preisbewegungen reagiert.

Händler, die breiteren Markttrends folgen, können hohe Werte festlegen, um die Anzahl falscher Signale zu reduzieren und sich auf wesentliche Preisbewegungen zu konzentrieren.

Anwendung

Trendmärkte

Trend cBot funktioniert gut in Trendmärkten, in denen Preisbewegungen konsistent und anhaltend sind. In solchen Märkten erfassen gleitende Durchschnitte oft den Trend, wodurch Crossovers effektive Indikatoren für Kauf- und Verkaufssignale werden.

Anwendungsfall

Betrachten Sie ein Szenario, in dem sich EURUSD in einem starken Aufwärtstrend befindet, was zu täglichen Hochs und höheren Tiefs in seinem Chart führt. Der gleitende Durchschnitts-Crossover erkennt den Trend, und der cBot initiiert Kaufsignale bei jedem Aufwärts-Crossover des schnellen MA über den langsamen MA.

Bewährte Praktiken

  • Verwenden Sie hohe Periodenwerte für die MAs beim Handel über längere Zeiträume, um Rauschen zu vermeiden und anhaltende Trends zu erfassen.
  • Verwenden Sie in Trendmärkten für Rohstoffe (z. B. Gold) mit relativ geringer Volatilität einen einfachen gleitenden Durchschnitt, um sicherzustellen, dass geringfügige Preisschwankungen herausgefiltert werden.

Hochvolatile Vermögenswerte

Vermögenswerte, die starke, signifikante Preisbewegungen erfahren, profitieren tendenziell von der Fähigkeit des cBots, auf sich schnell bewegende Trends zu reagieren, wenn ein geeigneter gleitender Durchschnitt ausgewählt wird.

Anwendungsfall

Betrachten Sie ein Szenario, in dem sich Bitcoin mitten in einem Krypto-Bullenmarkt oder einer Krypto-Saison befindet. BTC erfährt schnelle Preisschwankungen und tendiert manchmal innerhalb weniger Tage um Tausende von Dollar nach oben. Der cBot nutzt den starken Aufwärtstrend, indem er Long-Positionen eingeht, wenn der schnelle MA den langsamen MA nach oben kreuzt.

Bewährte Praktiken

  • Verwenden Sie einen exponentiellen gleitenden Durchschnitt, damit der cBot schneller auf aktuelle Preisänderungen reagiert.
  • Erwägen Sie, kurze schnelle und langsame Perioden festzulegen, um frühe Dynamik zu erfassen.

Swing-Trading

Swing-Händler, die Positionen mehrere Tage oder Wochen halten, profitieren von der Fähigkeit des cBots, mittelfristige Trends zu erkennen, wenn geeignete Einstellungen verwendet werden. Der gleitende Durchschnitts-Crossover bietet klare Ein- und Ausstiegspunkte für Transaktionen in Märkten mit periodischen Preisschwankungen.

Anwendungsfall

Betrachten Sie ein Szenario, in dem ein Swing-Händler periodische Trends in GBPUSD identifiziert und den cBot auf dem 4-Stunden-Chart verwendet, um Trends zu erfassen, die mehrere Tage andauern. Wenn der schnelle MA den langsamen MA nach oben kreuzt, geht der cBot eine Kaufposition ein und hält sie, bis sich der Trend umkehrt.

Bewährte Praktik

Verwenden Sie mittellange Perioden für die schnellen und langsamen MAs, um sicherzustellen, dass der cBot geringfügige Schwankungen ignoriert, während er signifikante Marktbewegungen erfasst.

Ausbruchsstrategien

Trend cBot ist nützlich bei Ausbruchsereignissen, bei denen Preise aus einer Konsolidierungsspanne ausbrechen und in einen neuen Trend eintreten. Gleitende Durchschnitts-Crossovers können den Beginn einer starken Bewegung signalisieren, wenn ein Ausbruch auftritt.

Anwendungsfall

Betrachten Sie ein Szenario, in dem eine wichtige Aktie mehrere Tage oder Wochen in einer engen Spanne gehandelt wird und ein Ausbruch erwartet wird. Der cBot kann eingesetzt werden, um den Ausbruch zu erfassen. Wenn der Aktienkurs über den Widerstand ausbricht, kreuzt der schnelle MA den langsamen MA, was ein Kaufsignal auslöst.

Bewährte Praktik

Verwenden Sie niedrige Werte für die schnelle MA-Periode, damit der cBot den Trend früh erfasst, was zu günstigen Einstiegspunkten für Transaktionen führt.

Zusammenfassung

Trend cBot folgt einem unkomplizierten mathematischen Prozess, der auf gleitenden Durchschnitts-Crossovers basiert, um Trendänderungen zu erkennen und Transaktionen auszuführen. Durch den Vergleich der aktuellen und vorherigen Werte der schnellen und langsamen MAs bestimmt der cBot, ob er kaufen oder verkaufen soll, und stellt sicher, dass Positionen immer mit dem erkannten Trend übereinstimmen.

Der cBot kann eine verbesserte Leistung liefern, wenn er mit anderen Indikatoren kombiniert wird. Der Relative Strength Index (RSI) oder die Moving Average Convergence Divergence (MACD) können falsche Signale herausfiltern und die Trendstärke bestätigen. Beispielsweise kann RSI verwendet werden, um vor dem Handeln auf MA-Crossovers auf überkaufte oder überverkaufte Bedingungen zu prüfen.

Mithilfe der anpassbaren Parameter des cBots können Sie den Algorithmus an Ihre Handelsbedürfnisse und Risikobereitschaft anpassen. Darüber hinaus können Sie den cBot mit verschiedenen Werten, Einstellungen und Daten testen, um eine optimale oder profitable Parameterkombination für ein bestimmtes Symbol und eine bestimmte Periode zu finden.