Zum Inhalt

Breakout cBot

Strategieübersicht

Der Breakout cBot nutzt Momente, in denen sich der Kurs eines Symbols über ein vordefiniertes Unterstützungs- oder Widerstandsniveau hinaus bewegt.

Dieser cBot überwacht die Kurskonsolidierung, indem er den Abstand zwischen den oberen und unteren Bollinger Bands mit einem benutzerdefinierten Schwellenwert vergleicht, und führt dann Folgendes aus:

  • Wenn der Symbolkurs für eine bestimmte Anzahl von Perioden innerhalb der Konsolidierungsspanne bleibt, identifiziert der cBot den Markt als konsolidierend.
  • Wenn der Kurs über das obere Band ausbricht, eröffnet er eine Kaufposition. Wenn der Kurs unter das untere Band fällt, eröffnet er eine Verkaufsposition.
  • Beim Eröffnen einer Position wendet er die benutzerdefinierten Stop-Loss- und Take-Profit-Werte an.

Der cBot nutzt Ausbruchsbewegungen nach einer Konsolidierungsphase und eignet sich daher für Märkte oder Symbole, die klare Konsolidierungsphasen und scharfe Richtungsbewegungen aufweisen.

cBot-Erstellung

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

Der Code des Breakout cBot 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

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

        [Parameter("Stop Loss (pips)", Group = "Protection", DefaultValue = 20, MinValue = 1)]
        public int StopLossInPips { get; set; }

        [Parameter("Take Profit (pips)", Group = "Protection", DefaultValue = 40, MinValue = 1)]
        public int TakeProfitInPips { get; set; }

        [Parameter("Source", Group = "Bollinger Bands")]
        public DataSeries Source { get; set; }

        [Parameter("Band Height (pips)", Group = "Bollinger Bands", DefaultValue = 40.0, MinValue = 0)]
        public double BandHeightPips { get; set; }

        [Parameter("Bollinger Bands Deviations", Group = "Bollinger Bands", DefaultValue = 2)]
        public double Deviations { get; set; }

        [Parameter("Bollinger Bands Periods", Group = "Bollinger Bands", DefaultValue = 20)]
        public int Periods { get; set; }

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

        [Parameter("Consolidation Periods", Group = "Bollinger Bands", DefaultValue = 2)]
        public int ConsolidationPeriods { get; set; }

        BollingerBands bollingerBands;
        string label = "Sample Breakout cBot";
        int consolidation;

        protected override void OnStart()
        {
            bollingerBands = Indicators.BollingerBands(Source, Periods, Deviations, MAType);
        }

        protected override void OnBar()
        {
            var top = bollingerBands.Top.Last(1);
            var bottom = bollingerBands.Bottom.Last(1);

            if (top - bottom <= BandHeightPips * Symbol.PipSize)
            {
                consolidation = consolidation + 1;
            }
            else
            {
                consolidation = 0;
            }

            if (consolidation >= ConsolidationPeriods)
            {
                var volumeInUnits = Symbol.QuantityToVolumeInUnits(Quantity);
                if (Ask > top)
                {
                    ExecuteMarketOrder(TradeType.Buy, SymbolName, volumeInUnits, label, StopLossInPips, TakeProfitInPips);
                    consolidation = 0;
                }
                else if (Bid < bottom)
                {
                    ExecuteMarketOrder(TradeType.Sell, SymbolName, volumeInUnits, label, StopLossInPips, TakeProfitInPips);
                    consolidation = 0;
                }
            }
        }
    }
}
 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
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class SampleBreakoutcBot():
    Label = "Sample Breakout cBot"
    def on_start(self):
        self.bollingerBands = api.Indicators.BollingerBands(api.Source, api.Periods, api.Deviations, api.MAType)

    def on_bar(self):
        top = self.bollingerBands.Top.Last(1)
        bottom = self.bollingerBands.Bottom.Last(1)

        if top - bottom <= api.BandHeightPips * api.Symbol.PipSize:
            self.consolidation += 1
        else:
            self.consolidation = 0

        if self.consolidation >= api.ConsolidationPeriods:
            volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.Quantity)
            if api.Ask > top:
                api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                self.consolidation = 0 
            elif api.Bid < bottom:
                api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, volumeInUnits, self.Label, api.StopLossInPips, api.TakeProfitInPips)
                self.consolidation = 0 

Indikatorintegration

Der Bollinger-Bands-Indikator ist zentral für die vom Breakout cBot verwendete Strategie.

Der cBot verwendet die Breite der Bollinger Bands (den Abstand zwischen den oberen und unteren Bändern), um Konsolidierungsphasen zu identifizieren. Wenn die Bänder schmal sind (was auf eine geringe Volatilität hinweist), betrachtet der cBot dies als Konsolidierungsphase.

Wenn die Differenz zwischen den oberen und unteren Bändern kleiner oder gleich einem festgelegten Schwellenwert (BandHeightPips) ist, wird der Konsolidierungszähler (consolidation) erhöht. Der cBot benötigt eine bestimmte Anzahl aufeinanderfolgender Konsolidierungsphasen (ConsolidationPeriods), bevor er einen potenziellen Ausbruch in Betracht zieht.

Der cBot überwacht und interpretiert den Kurs auf einen Ausbruch auf folgende Weise:

  • Bullischer Ausbruch – wenn der Briefkurs das obere Bollinger Band überschreitet, interpretiert der cBot dies als bullischen Ausbruch und führt eine Kauforder aus.
  • Bärischer Ausbruch - wenn der Geldkurs unter das untere Bollinger Band fällt, interpretiert der cBot dies als bärischen Ausbruch und führt eine Verkaufsorder aus.

Nach der Ausführung eines Trades wird der Konsolidierungszähler auf null zurückgesetzt.

Berechnung und Logik

Bollinger Bands-Einrichtung

\[ B_{\text{top}} = MA + (D \times \sigma), \quad B_{\text{bottom}} = MA - (D \times \sigma) \]

\(B_{\text{top}}\) – oberes Band

\(B_{\text{bottom}}\) – unteres Band

\(MA\) – Moving Average

\(D\) – Anzahl der Abweichungen

\(\sigma\) – Standardabweichung

Konsolidierungsbedingung

\[ \text{If } (B_{\text{top}} - B_{\text{bottom}}) \leq (H \times P), \text{ then } C_{\text{counter}} = C_{\text{counter}} + 1 \]

Andernfalls,

\[ C_{\text{counter}} = 0 \]

\(H\) – Bandhöhe in Pips

\(P\) – Pips-Größe

\(C_{\text{Counter}}\) – Konsolidierungszähler

Überprüfung der Konsolidierungsperiode

Wenn der Konsolidierungszähler größer als die Konsolidierungsperioden ist, führe die Ausbruchslogik aus.

Ausbruchslogik

Wenn der Briefkurs größer als das obere Band ist, platziere eine Kauforder. Wenn der Geldkurs kleiner als das untere Band ist, platziere eine Verkaufsorder.

Parameter

Parameter Einheit Definition Tipps
Menge Lot Volumen jeder Transaktion. Trader mit geringer Risikobereitschaft können mit niedrigen Beträgen beginnen, um potenzielle Verluste zu minimieren.

Nutzer mit höherer Risikotoleranz können höhere Werte festlegen, um größere Gewinne anzustreben.
Stop-Loss Pip Anzahl der Pips, bei denen eine Transaktion automatisch geschlossen wird, um weitere Verluste zu verhindern. Risikoaverse Händler können enge Stop-Loss-Werte festlegen, um potenzielle Verluste zu begrenzen.

Benutzer, die Marktschwankungen tolerieren können, können breitere Stop-Loss-Werte festlegen, sodass ihre Transaktionen mehr Spielraum haben, bevor sie geschlossen werden.
Take-Profit Pip Anzahl der Pips, bei denen eine Transaktion automatisch geschlossen wird, um weitere Verluste zu verhindern. Händler, die schnelle Ausstiege bevorzugen, können niedrigere Take-Profit-Werte verwenden, um von kurzfristigen Bewegungen zu profitieren.

Benutzer, die auf längere Trends abzielen, können hohe Take-Profit-Werte festlegen, damit ihre Transaktionen länger laufen können.
Bandhöhe Pip Maximale Breite der Bollinger Bands während einer Konsolidierungsphase, die es dem cBot ermöglicht, Phasen niedriger Volatilität zu identifizieren. Händler, die sich auf enge Konsolidierungen konzentrieren, können niedrige Bandhöhenwerte verwenden, um größere Ausbrüche aus Phasen niedriger Volatilität anzuvisieren.

Benutzer, die mit breiteren Spannen zurechtkommen, können erhöhte Bandhöhenwerte verwenden, sodass der cBot etwas breitere Konsolidierungen als potenzielle Setups betrachten kann.
Bollinger Bands-Abweichungen — Standardabweichungswert, der zur Berechnung der Breite der Bollinger Bands verwendet wird. Händler, die sich auf enge Konsolidierungen konzentrieren, können niedrige Bandhöhenwerte verwenden, um größere Ausbrüche aus Phasen niedriger Volatilität anzuvisieren.

Benutzer, die mit breiteren Spannen zurechtkommen, können erhöhte Bandhöhenwerte verwenden, sodass der cBot etwas breitere Konsolidierungen als potenzielle Setups betrachten kann.
Bollinger Bands-Perioden — Anzahl der Perioden, die zur Berechnung der Bollinger Bands verwendet werden. Händler, die sich auf kurzfristige Marktbewegungen konzentrieren, können kleine Perioden verwenden, wodurch die Bollinger Bands empfindlicher auf aktuelle Preisänderungen reagieren.

Benutzer, die an längerfristigen Trends interessiert sind, sollten große Perioden in Betracht ziehen, die die Bollinger Bands glätten und ihre Empfindlichkeit gegenüber kurzfristigen Schwankungen verringern.
Konsolidierungsperioden — Anzahl aufeinanderfolgender Balken, die die Konsolidierungskriterien erfüllen müssen, bevor eine Ausbruch-Transaktion in Betracht gezogen wird. Händler, die häufigere Transaktionen suchen, können die Konsolidierungsperioden reduzieren, sodass der cBot früher in Transaktionen einsteigt.

Benutzer, die bestätigte Ausbrüche bevorzugen, können die Konsolidierungsperioden erhöhen, um sicherzustellen, dass der Preis länger innerhalb der Konsolidierungsspanne bleibt, bevor Maßnahmen ergriffen werden.

Anwendung

Trendmärkte

Der Breakout cBot funktioniert gut in Trendmärkten (aufwärts oder abwärts). In solchen Märkten stimmen Ausbrüche nach einer Konsolidierungsphase oft mit dem Gesamttrend überein, was zu erheblichen Preisbewegungen führt.

Anwendungsfall

Betrachten Sie ein Szenario, in dem sich EURUSD in einem starken Aufwärtstrend befindet, aber vorübergehend in einer engen Spanne konsolidiert. Die Bollinger Bands verengen sich, was auf eine verringerte Volatilität hinweist. Der cBot erkennt diese Konsolidierung und wartet auf einen Ausbruch. Wenn sich der Trend fortsetzt, durchbricht der Preis das obere Bollinger Band. Der cBot führt eine Kauforder aus und profitiert von der Fortsetzung des Trends.

Bewährte Praktiken

  • Verwenden Sie größere Perioden. Der cBot ist besonders effektiv bei größeren Perioden (1 Stunde, 4 Stunden usw.) in Trendmärkten. Dieses Setup hilft dabei, signifikante Preisbewegungen zu erfassen, die höhere Renditen erzielen.
  • Vermeiden Sie kurze Konsolidierungsperioden. In stark trendierenden Märkten sollten Sie Einstellungen vermeiden, die kurze Konsolidierungsperioden verursachen, da sie zu falschen Ausbrüchen führen können.

Ausbrüche nach Mustern

Der cBot kann verwendet werden, um Ausbrüche aus Chartmustern zu handeln, die typischerweise zu starken Preisbewegungen führen, wie z. B. Dreiecke, Flaggen oder Wimpel. Diese Muster führen oft zu einer Konsolidierungsphase, gefolgt von einem Ausbruch.

Anwendungsfall

Betrachten Sie ein Szenario, in dem das Symbol EURGBP ein symmetrisches Dreiecksmuster auf dem 1-Stunden-Chart bildet. Wenn sich das Dreieck verengt, ziehen sich auch die Bollinger Bands zusammen, was auf eine verringerte Volatilität hinweist. Der cBot identifiziert die Konsolidierung innerhalb des Dreiecksmusters. Sobald der Preis beim Verlassen des Dreiecksmusters über das obere Bollinger Band ausbricht, führt der cBot eine Kauforder aus, um den Ausbruch zu erfassen.

Bewährte Praktiken

  • Kombinieren Sie den cBot mit anderen Mustern. Identifizieren Sie wichtige Chartmuster manuell und verwenden Sie dann den cBot, um die Ausbruch-Transaktionen zu automatisieren, sobald das Muster vollständig ist.
  • Verlängern Sie die Konsolidierungsperioden. Für Muster, die sich über längere Zeiträume bilden, sollten Sie die Konsolidierungsperiode erhöhen, um sicherzustellen, dass der cBot erst ausgelöst wird, nachdem das Muster vollständig gebildet wurde.

Handel nach Nachrichten

Der cBot kann an Tagen mit wichtigen Wirtschaftsnachrichten, Ereignissen oder Ankündigungen effektiv sein. Nach bestimmten Nachrichten benötigen einige Märkte Zeit zur Konsolidierung, während Händler die Informationen verarbeiten. Wenn die Marktrichtung klar wird, kann ein Ausbruch erfolgen.

Anwendungsfall

Betrachten Sie ein Szenario nach der Veröffentlichung der US-Arbeitsmarktdaten (Non-Farm Payrolls): Das Währungspaar JPYUSD konsolidiert, während Händler die Auswirkungen des Berichts bewerten. Die Bollinger Bands verengen sich, was auf eine niedrige Volatilität hinweist. Der cBot identifiziert diese Konsolidierung und wartet auf einen Ausbruch. Wenn sich der Markt auf eine Richtung festlegt (z. B. stärkerer USD aufgrund besserer Daten als erwartet), bricht der Preis unter das untere Bollinger Band aus. Der cBot führt eine Verkaufsorder aus, um die Bewegung zu erfassen.

Bewährte Praktiken

  • Überwachen Sie Wirtschaftskalender. Konfigurieren Sie den cBot so, dass er rund um wichtige Wirtschaftsveröffentlichungen läuft. Stellen Sie sicher, dass die Einstellungen für die Konsolidierungsperiode angepasst werden, um die Konsolidierungsphase nach den Nachrichten vor dem Ausbruch zu erfassen.
  • Passen Sie den Stop-Loss an. Aufgrund der erhöhten Volatilität nach Nachrichtenereignissen sollten Sie in Betracht ziehen, den Stop-Loss zu erweitern, um potenzielle Marktschwankungen zu berücksichtigen, bevor sich ein Ausbruch vollständig materialisiert.

Zusammenfassung

Der Breakout cBot ermöglicht es Händlern, Marktvolatilität, hohes Handelsvolumen und erhöhte Aktivität zu nutzen. Obwohl der cBot effizient bei der Ausführung von Ausbruchstrategien ist, kann seine Abhängigkeit von Bollinger Bands während bestimmter Marktbedingungen zu Leistungsproblemen führen.

Die Anpassung des Breakout cBot an bestimmte Symbole und Ihre Handelspräferenzen kann seine Effektivität erheblich verbessern. Indem Sie Ihre eigenen Strategien in den cBot integrieren und seinen Code ändern, um ihm die Nutzung zusätzlicher Indikatoren zu ermöglichen, können Sie seine Genauigkeit und Leistung weiter verbessern.