Ir para o conteúdo

Breakout cBot

Visão geral da estratégia

O Breakout cBot capitaliza em momentos em que o preço de um símbolo se move além de um nível predefinido de suporte ou resistência.

Este cBot monitoriza a consolidação de preços comparando a distância entre as Bollinger Bands superior e inferior com um limite definido pelo utilizador e, em seguida, faz o seguinte:

  • Se o preço do símbolo permanecer dentro do intervalo de consolidação durante um número específico de períodos, o cBot identifica o mercado como em consolidação.
  • Se o preço romper acima da banda superior, abre uma posição de compra. Se o preço romper abaixo da banda inferior, abre uma posição de venda.
  • Ao abrir uma posição, aplica os valores de stop loss e take profit definidos pelo utilizador.

O cBot explora movimentos de quebra após uma fase de consolidação, tornando-o adequado para mercados ou símbolos que apresentem períodos claros de consolidação e movimentos direcionais acentuados.

Criação de cBot

Saiba como criar cBots, usando C# ou Python, nos nossos guias passo a passo.

O código do Breakout cBot está disponível nos nossos repositórios públicos de C# e Python. O mesmo código é fornecido como um modelo no assistente de criação de algoritmos no cTrader Windows ou Mac, ou pode simplesmente copiar e usar o snippet abaixo:

 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 

Integração de indicadores

O indicador Bollinger Bands é central para a estratégia utilizada pelo Breakout cBot.

O cBot utiliza a largura das Bollinger Bands (a distância entre as bandas superior e inferior) para identificar períodos de consolidação. Quando as bandas são estreitas (indicando baixa volatilidade), o cBot considera isto um período de consolidação.

Se a diferença entre as bandas superior e inferior for menor ou igual a um limite especificado (BandHeightPips), o contador de consolidação (consolidation) é aumentado. O cBot necessita de um determinado número de períodos consecutivos de consolidação (ConsolidationPeriods) antes de considerar uma potencial quebra.

O cBot monitoriza e interpreta o preço para uma quebra desta forma:

  • Quebra de alta - se o preço de venda exceder a Bollinger Band superior, o cBot interpreta isto como uma quebra de alta e executa uma ordem de compra.
  • Quebra de baixa - se o preço de compra cair abaixo da Bollinger Band inferior, o cBot interpreta isto como uma quebra de baixa e executa uma ordem de venda.

Após executar uma negociação, o contador de consolidação é reposto a zero.

Cálculo e lógica

Configuração das 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\) – média móvel

\(D\) – número de desvios

\(\sigma\) – desvio padrão

Condição de consolidação

\[ \text{Se } (B_{\text{top}} - B_{\text{bottom}}) \leq (H \times P), \text{ então } C_{\text{counter}} = C_{\text{counter}} + 1 \]

Caso contrário,

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

\(H\) – altura da banda em pips

\(P\) – tamanho dos pips

\(C_{\text{Counter}}\) – contador de consolidação

Verificação do período de consolidação

Se o contador de consolidação for superior aos períodos de consolidação, executar a lógica de breakout.

Lógica de breakout

Se o preço de compra for superior à banda superior, colocar uma ordem de compra. Se o preço de venda for inferior à banda inferior, colocar uma ordem de venda.

Parâmetros

Parâmetro Unidade Definição Dicas
Quantidade Lote Volume de cada negociação. Os traders com baixa apetência ao risco podem começar com valores baixos para minimizar potenciais perdas.

Os utilizadores com maior tolerância ao risco podem definir valores mais altos para atingir lucros maiores.
Stop loss Pip Número de pips no qual uma negociação será automaticamente fechada para evitar mais perdas. Os traders avessos ao risco podem definir valores de stop-loss apertados para limitar potenciais perdas.

Os utilizadores capazes de tolerar flutuações do mercado podem definir valores de stop-loss mais amplos, dando mais espaço às suas negociações antes de fechar.
Take profit Pip Número de pips no qual uma negociação será automaticamente fechada para evitar mais perdas. Os traders que preferem saídas rápidas podem usar valores de take-profit mais baixos para capitalizar movimentos de curto prazo.

Os utilizadores que visam tendências mais longas podem definir valores de take-profit altos para que as suas negociações possam durar mais tempo.
Altura da banda Pip Largura máxima das Bollinger Bands durante uma fase de consolidação que permite ao cBot identificar períodos de baixa volatilidade. Os traders que se concentram em consolidações apertadas podem usar valores baixos de altura da banda para visar quebras importantes de períodos de baixa volatilidade.

Os utilizadores confortáveis com intervalos mais amplos podem usar valores aumentados de altura da banda, permitindo ao cBot considerar consolidações ligeiramente mais amplas como potenciais configurações.
Desvios das Bollinger Bands Valor do Standard Deviation usado para calcular a largura das Bollinger Bands. Os traders que se concentram em consolidações apertadas podem usar valores baixos de altura da banda para visar quebras importantes de períodos de baixa volatilidade.

Os utilizadores confortáveis com intervalos mais amplos podem usar valores aumentados de altura da banda, permitindo ao cBot considerar consolidações ligeiramente mais amplas como potenciais configurações.
Períodos das Bollinger Bands Número de períodos usados para calcular as Bollinger Bands. Os traders que se concentram em movimentos de mercado de curto prazo podem usar períodos pequenos, que tornam as Bollinger Bands mais sensíveis a mudanças recentes de preço.

Os utilizadores interessados em tendências de longo prazo devem considerar períodos grandes, que suavizam as Bollinger Bands e reduzem a sua sensibilidade a flutuações de curto prazo.
Períodos de consolidação Número de barras consecutivas que devem cumprir os critérios de consolidação antes de uma operação de quebra ser considerada. Os traders que procuram operações mais frequentes podem reduzir os períodos de consolidação, permitindo ao cBot entrar em operações mais cedo.

Os utilizadores que preferem quebras confirmadas podem aumentar os períodos de consolidação para garantir que o preço permanece dentro do intervalo de consolidação por mais tempo antes de ser tomada uma ação.

Aplicação

Mercados com tendência

O Breakout cBot tem um bom desempenho em mercados com tendência (ascendente ou descendente). Nestes mercados, as quebras frequentemente alinham-se com a tendência geral após um período de consolidação, levando a movimentos substanciais de preço.

Caso de uso

Considere um cenário onde o EURUSD está numa forte tendência ascendente mas temporariamente consolida num intervalo estreito. As Bollinger Bands estreitam, indicando volatilidade reduzida. O cBot deteta esta consolidação e aguarda por uma quebra. À medida que a tendência é retomada, o preço quebra acima da banda superior das Bollinger Bands. O cBot executa uma ordem de compra, capitalizando na continuação da tendência.

Melhores práticas

  • Use períodos maiores. O cBot é particularmente eficaz em períodos maiores (1 hora, 4 horas, etc.) em mercados com tendência. Esta configuração ajuda a capturar movimentos significativos de preço que proporcionam retornos mais elevados.
  • Evite períodos curtos de consolidação. Em mercados com forte tendência, pode querer evitar configurações que causem períodos curtos de consolidação porque podem levar a falsas quebras.

Quebras após padrões

O cBot pode ser usado para negociar quebras de padrões gráficos que tipicamente levam a fortes movimentos de preço, como triângulos, flags ou pennants. Estes padrões frequentemente resultam numa fase de consolidação seguida de uma quebra.

Caso de uso

Considere um cenário onde o símbolo EURGBP forma um padrão de triângulo simétrico no gráfico de 1 hora. À medida que o triângulo estreita, as Bollinger Bands também apertam, indicando volatilidade reduzida. O cBot identifica a consolidação dentro do padrão de triângulo. Quando o preço quebra acima da banda superior das Bollinger Bands ao sair do padrão de triângulo, o cBot executa uma ordem de compra para capturar a quebra.

Melhores práticas

  • Combine o cBot com outros padrões. Identifique padrões gráficos importantes manualmente e depois use o cBot para automatizar as negociações de quebra assim que o padrão se complete.
  • Prolongue períodos de consolidação. Para padrões que se formam durante períodos mais longos, considere aumentar o período de consolidação para garantir que o cBot só é acionado após o padrão estar totalmente formado.

Negociação pós-notícias

O cBot pode ser eficaz em dias com grandes notícias económicas, eventos ou anúncios. Após certas notícias, alguns mercados demoram tempo a consolidar enquanto os traders digerem a informação. Quando a direção do mercado se torna clara, pode ocorrer uma quebra.

Caso de uso

Considere um cenário após a divulgação dos dados do Non-Farm Payrolls dos EUA, o par JPYUSD consolida enquanto os traders avaliam as implicações do relatório. As Bollinger Bands estreitam, indicando baixa volatilidade. O cBot identifica esta consolidação e aguarda por uma quebra. À medida que o mercado estabelece uma direção (por exemplo, USD mais forte devido a dados melhores que o esperado), o preço quebra abaixo da Bollinger Band inferior. O cBot executa uma ordem de venda para capturar o movimento.

Melhores práticas

  • Monitorize calendários económicos. Configure o cBot para funcionar durante grandes divulgações económicas. Certifique-se de que as definições do período de consolidação estão ajustadas para capturar a fase de consolidação pós-notícia antes da quebra.
  • Ajuste o stop loss. Devido ao aumento da volatilidade após eventos noticiosos, considere alargar o stop loss para acomodar possíveis oscilações do mercado antes que uma quebra se materialize completamente.

Summary

O Breakout cBot permite aos traders tirar partido da volatilidade do mercado, do elevado volume de negociação e do aumento da atividade. Embora o cBot seja eficiente na execução de estratégias de quebra, a sua dependência das Bollinger Bands pode causar problemas de desempenho durante certas condições de mercado.

Adaptar o Breakout cBot a símbolos específicos e às suas preferências de negociação pode melhorar significativamente a sua eficácia. Ao incorporar as suas próprias estratégias no cBot e modificar o seu código para permitir a utilização de indicadores adicionais, pode melhorar ainda mais a sua precisão e desempenho.