Saltar a contenido

Breakout cBot

Descripción general de la estrategia

Breakout cBot capitaliza los momentos en que el precio de un símbolo se mueve más allá de un nivel predefinido de soporte o resistencia.

Este cBot monitorea la consolidación de precios comparando la distancia entre las bandas superior e inferior de Bollinger con un umbral definido por el usuario y luego hace lo siguiente:

  • Si el precio del símbolo permanece dentro del rango de consolidación durante un número específico de períodos, el cBot identifica el mercado como en consolidación.
  • Si el precio rompe por encima de la banda superior, abre una posición de compra. Si el precio rompe por debajo de la banda inferior, abre una posición de venta.
  • Al abrir una posición, aplica los valores de stop loss y take profit definidos por el usuario.

El cBot aprovecha los movimientos de ruptura después de una fase de consolidación, lo que lo hace adecuado para mercados o símbolos que exhiben períodos claros de consolidación y movimientos direccionales pronunciados.

Creación de cBot

Aprenda cómo crear cBots, usando C# o Python, en nuestras guías paso a paso.

El código del Breakout cBot está disponible en nuestros repositorios públicos de C# y Python. El mismo código se proporciona como plantilla en el asistente de creación de algoritmos en cTrader Windows o Mac, o simplemente puede copiar y usar el fragmento a continuación:

 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 

Integración de indicadores

El indicador Bollinger Bands es fundamental para la estrategia empleada por Breakout cBot.

El cBot utiliza el ancho de las Bollinger Bands (la distancia entre las bandas superior e inferior) para identificar períodos de consolidación. Cuando las bandas son estrechas (lo que indica baja volatilidad), el cBot considera esto como un período de consolidación.

Si la diferencia entre las bandas superior e inferior es menor o igual a un umbral específico (BandHeightPips), el contador de consolidación (consolidation) aumenta. El cBot necesita un cierto número de períodos consecutivos de consolidación (ConsolidationPeriods) antes de considerar una posible ruptura.

El cBot monitorea e interpreta el precio para una ruptura de esta manera:

  • Ruptura alcista - si el precio de venta supera la banda superior de Bollinger, el cBot interpreta esto como una ruptura alcista y ejecuta una orden de compra.
  • Ruptura bajista - si el precio de compra cae por debajo de la banda inferior de Bollinger, el cBot interpreta esto como una ruptura bajista y ejecuta una orden de venta.

Después de ejecutar una operación, el contador de consolidación se restablece a cero.

Cálculo y lógica

Configuración de Bollinger Bands

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

\(B_{\text{top}}\) – banda superior

\(B_{\text{bottom}}\) – banda inferior

\(MA\) – media móvil

\(D\) – número de desviaciones

\(\sigma\) – desviación estándar

Condición de consolidación

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

De lo contrario,

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

\(H\) – altura de la banda en pips

\(P\) – tamaño en pips

\(C_{\text{Counter}}\) – contador de consolidación

Verificación del período de consolidación

Si el contador de consolidación es mayor que los períodos de consolidación, ejecutar la lógica de ruptura.

Lógica de ruptura

Si el precio de demanda es mayor que la banda superior, colocar una orden de compra. Si el precio de oferta es menor que la banda inferior, colocar una orden de venta.

Parámetros

Parámetro Unidad Definición Consejos
Cantidad Lote Volumen de cada operación. Los operadores con bajo apetito por el riesgo pueden comenzar con cantidades bajas para minimizar posibles pérdidas.

Los usuarios con mayor tolerancia al riesgo pueden establecer cifras más altas para buscar mayores beneficios.
Stop loss Pip Número de pips en el que una operación se cerrará automáticamente para evitar más pérdidas. Los operadores adversos al riesgo pueden establecer valores de stop loss ajustados para limitar posibles pérdidas.

Los usuarios capaces de tolerar fluctuaciones del mercado pueden establecer valores de stop loss más amplios, permitiendo que sus operaciones tengan más margen antes de cerrarse.
Take profit Pip Número de pips en el que una operación se cerrará automáticamente para evitar más pérdidas. Los operadores que prefieren salidas rápidas pueden usar valores de take profit más bajos para capitalizar movimientos a corto plazo.

Los usuarios que buscan tendencias más largas pueden establecer valores de take profit altos para que sus operaciones puedan durar más tiempo.
Altura de banda Pip Ancho máximo de las Bollinger Bands durante una fase de consolidación que permite al cBot identificar períodos de baja volatilidad. Los operadores que se centran en consolidaciones ajustadas pueden usar valores bajos de altura de banda para apuntar a rupturas importantes desde períodos de baja volatilidad.

Los usuarios cómodos con rangos más amplios pueden usar valores de altura de banda aumentados, permitiendo que el cBot considere consolidaciones ligeramente más amplias como configuraciones potenciales.
Desviaciones de las Bollinger Bands Valor de desviación estándar utilizado para calcular el ancho de las Bollinger Bands. Los operadores que se centran en consolidaciones ajustadas pueden usar valores bajos de altura de banda para apuntar a rupturas importantes desde períodos de baja volatilidad.

Los usuarios cómodos con rangos más amplios pueden usar valores de altura de banda aumentados, permitiendo que el cBot considere consolidaciones ligeramente más amplias como configuraciones potenciales.
Períodos de Bollinger Bands Número de períodos utilizados para calcular las Bollinger Bands. Los operadores que se centran en movimientos del mercado a corto plazo pueden usar períodos pequeños, que hacen que las Bollinger Bands sean más sensibles a los cambios recientes en el precio.

Los usuarios interesados en tendencias a largo plazo deberían considerar períodos grandes, que suavizan las Bollinger Bands y reducen su sensibilidad a las fluctuaciones a corto plazo.
Períodos de consolidación Número de barras consecutivas que deben cumplir con los criterios de consolidación antes de que se considere una operación de ruptura. Los operadores que buscan operaciones más frecuentes pueden reducir los períodos de consolidación, permitiendo que el cBot entre en operaciones antes.

Los usuarios que prefieren rupturas confirmadas pueden aumentar los períodos de consolidación para asegurar que el precio permanezca dentro del rango de consolidación durante más tiempo antes de tomar acción.

Aplicación

Mercados con tendencia

El Breakout cBot funciona bien en mercados con tendencia (alcista o bajista). En tales mercados, las rupturas a menudo se alinean con la tendencia general después de un período de consolidación, lo que lleva a movimientos sustanciales del precio.

Caso de uso

Considere un escenario donde EURUSD está en una fuerte tendencia alcista pero temporalmente se consolida en un rango estrecho. Las Bollinger Bands se estrechan, indicando volatilidad reducida. El cBot detecta esta consolidación y espera una ruptura. Cuando la tendencia se reanuda, el precio rompe por encima de la banda superior de Bollinger. El cBot ejecuta una orden de compra, capitalizando la continuación de la tendencia.

Mejores prácticas

  • Use períodos más largos. El cBot es particularmente efectivo en períodos más largos (1 hora, 4 horas, etc.) en mercados con tendencia. Esta configuración ayuda a capturar movimientos significativos de precio que generan mayores rendimientos.
  • Evite períodos cortos de consolidación. En mercados con fuertes tendencias, es recomendable evitar configuraciones que causen períodos cortos de consolidación porque podrían llevar a rupturas falsas.

Rupturas después de patrones

El cBot puede usarse para operar rupturas de patrones gráficos que típicamente conducen a fuertes movimientos de precio, como triángulos, banderas o banderines. Estos patrones a menudo resultan en una fase de consolidación seguida de una ruptura.

Caso de uso

Considere un escenario donde el símbolo EURGBP forma un patrón de triángulo simétrico en el gráfico de 1 hora. A medida que el triángulo se estrecha, las Bollinger Bands también se ajustan, indicando volatilidad reducida. El cBot identifica la consolidación dentro del patrón de triángulo. Una vez que el precio rompe por encima de la banda superior de Bollinger al salir del patrón de triángulo, el cBot ejecuta una orden de compra para capturar la ruptura.

Mejores prácticas

  • Combine el cBot con otros patrones. Identifique patrones gráficos importantes manualmente y luego use el cBot para automatizar las operaciones de ruptura una vez que el patrón se complete.
  • Extienda períodos de consolidación. Para patrones que se forman durante períodos más largos, considere aumentar el período de consolidación para asegurar que el cBot solo se active después de que el patrón esté completamente formado.

Operaciones post-noticias

El cBot puede ser efectivo en días con noticias económicas importantes, eventos o anuncios. Después de ciertas noticias, algunos mercados tardan en consolidarse mientras los operadores digieren la información. Cuando la dirección del mercado se vuelve clara, puede ocurrir una ruptura.

Caso de uso

Considere un escenario después de la publicación de los datos de Nóminas No Agrícolas de EE.UU., el par JPYUSD se consolida mientras los operadores evalúan las implicaciones del informe. Las Bollinger Bands se estrechan, indicando baja volatilidad. El cBot identifica esta consolidación y espera una ruptura. A medida que el mercado se decide por una dirección (por ejemplo, USD más fuerte debido a datos mejores de lo esperado), el precio rompe por debajo de la banda inferior de Bollinger Bands. El cBot ejecuta una orden de venta para capturar el movimiento.

Mejores prácticas

  • Monitorear calendarios económicos. Configure el cBot para que funcione durante las principales publicaciones económicas. Asegúrese de que la configuración del período de consolidación esté ajustada para capturar la fase de consolidación posterior a las noticias antes de la ruptura.
  • Ajustar el stop loss. Debido al aumento de la volatilidad después de los eventos de noticias, considere ampliar el stop loss para adaptarse a posibles oscilaciones del mercado antes de que una ruptura se materialice por completo.

Resumen

Breakout cBot permite a los operadores aprovechar la volatilidad del mercado, el alto volumen de operaciones y el aumento de la actividad. Si bien el cBot es eficiente en la ejecución de estrategias de ruptura, su dependencia de Bollinger Bands puede causar problemas de rendimiento durante ciertas condiciones del mercado.

Adaptar el Breakout cBot a símbolos específicos y sus preferencias de operación puede mejorar significativamente su efectividad. Al incorporar sus propias estrategias en el cBot y modificar su código para permitirle utilizar indicadores adicionales, puede mejorar aún más su precisión y rendimiento.