Neo traderBot

Neo traderBot

Você sabia?

Confira os nossos eBooks, Snippets e Fóruns produzidos para cada plataforma!

Programando Estratégias no Profit

Criando uma Estratégia de Coloração

Leitura estimada: 5 minutos 304 views
Reproduzir vídeo

As Estratégias de Coloração são o primeiro passo para a automatização de operações. No vídeo acima, explicamos o passo a passo para criar uma regra de coloração que se baseia em dois indicadores de Bandas de Bollinger. Assista ao vídeo para uma explicação dinâmica do processo de escrita do código fonte de uma estratégia de coloração!

Introdução

Se você já assistiu aos vídeos ou leu os documentos sobre como criar seu primeiro robô e como criar seu próprio indicador, então você já tem uma noção básica do processo de criar uma estratégia.

A criação de uma estratégia de coloração visa facilitar uma sinalização ao trader por uma cor no gráfico. Pode ser uma lógica simples ou um pouco mais complicada, englobando comparações de diferentes indicadores frente a valores de referência. Fato é que se espera que a coloração torne a ação do trader mais tempestiva, pois ele não terá que realizar as mesmas contas que a estratégia calculou para pintar o gráfico. Ao ver uma determinada cor no gráfico, o trader já saberá como agir ou se comportar.

Muitas soluções externas para automatização do roteamento de ordens do Profit utilizavam as regras de coloração para ativar envio de ordens. Embora tenha sido lançado o Módulo de Automação de Estratégias, acredito que o envio de ordens a mercado, baseado nas soluções visuais de automatização de ordens ainda representa uma vantagem em relação ao módulo (hoje!). A tendência é que essas soluções externas percam vantagem competitiva a medida que o Módulo de Automação de Estratégias seja aprimorado, tornando estas soluções obsoletas. Uma desvantagem dessas soluções é que os gráficos precisam estar abertos em tela, pois elas trabalham com o mapeamento da tela, limitando assim a quantidade de estratégias que podem rodar simultaneamente, além de não permitirem utilizar subcontas, pois a interface gráfica padrão do Profit não permite (em geral) essa opção fora do Módulo de Automação de Estratégias para clientes padrão.

Implementação de uma estratégia de coloração

A implementação de uma estratégias de coloração envolve três etapas: especificar regra de cor, implementar código e testar o funcionamento.

Acho que o próprio nome das etapas já torna bem intuitivo o que precisamos fazer para obter uma estratégia de coloração. É importante ressaltar, que muita gente gosta de colocar as lógicas de coloração dentro de estratégias de execução (robôs) ou indicadores, screenings. Assim, em um único código, você pode incluir no seu gráfico como indicador, como sinalização de ordens ou coloração.

No exemplo apresentado no vídeo, que não é uma recomendação de uso, realizamos a coloração de candles de acordo com sua posição em relação à 2 indicadores de bandas de Bollinger.

Se o preço estiver sendo negociado fora da primeira banda de bollinger, mas ainda dentro da segunda, entende-se que o preço pode estar em região de sobrevenda ou sobrecompra, mas ainda não engatou uma tendência forte. Se o preço estiver sendo negociado fora da segunda Banda de Bollinger, entende-se que o mercado está demonstrando uma tendência forte seja de alta ou de baixa.

Assim, foram estabelecidas cores para sinalizar essas situações e oferecer suporte para a operação manual do trader. O código fonte da referida estratégia encontra-se abaixo.

Código fonte: Estratégia de coloração baseada emduas Bandas de Bollinger

				
					// #######################################################################
// #######################################################################
// #######################################################################
// ######                            O                             #######
// ######                        ____|____                         #######
// ######                      _|         |_                       #######
// ######                     (_|  O   O  |_)                      #######
// ######                       |_________|                        #######
// ######                                                          #######
// ###### ____        __        ____________           ________    #######
// ###### | | \       | |       | |_________|         /  ____  \   #######
// ###### | |\ \      | |       | |                  /  /    \  \  #######
// ###### | | \ \     | |       | |____             |  |      |  | #######
// ###### | |  \ \    | |       | |____|            |  |      |  | #######
// ###### | |   \ \   | |       | |____|            |  |      |  | #######
// ###### | |    \ \  | |       | |                 |  |      |  | #######
// ###### | |     \ \ | |       | |_________         \  \____/  /  #######
// ###### |_|      \_\|_|       |_|_________|         \________/   #######
// ######                                                          #######
// ###### _______  __          __   ____  __   ___    __  _______  #######
// ######    |    |  \   /\   |  \ |     |  \ |   \  /  \    |     #######
// ######    |    |__/  /__\  |   ||__   |__/ |___/ |    |   |     #######
// ######    |    |\   /    \ |   ||     |\   |   \ |    |   |     #######
// ######    |    | \ /      \|__/ |____ | \  |___/  \__/    |     #######
// ######                                                          #######
// ######  Comunidade aberta de automatização de estratégias para  #######
// ######                    negociação de ativos                  #######
// ######                                                          #######
// ######                    www.NeoTraderBot.com                  #######
// #######################################################################
// #######################################################################
// #######################################################################
//
// -----------------------------------------------------------------------
// ---------------------- DADOS DA ESTRATÉGIA ----------------------------
// -----------------------------------------------------------------------
//
// NOME DA ESTRATÉGIA: _NTB_COL_2BandasBollinger
//   DESENVOLVIDA POR: NeoTraderBot
//    DATA DE CRIAÇÃO: 13/10/2022
//             VERSÃO: 1.0
//      ATUALIZADA EM: 13/10/2-22
// TIPO DE ESTRATÉGIA: (X) Indicador  (X) Coloração ( ) Execução
//                     ( ) Screening  ( ) Texto     ( ) Alarme
//
// DESCRIÇÃO DA ESTRATÉGIA:
//   Realiza a coloração de candles baseada na posição relativa do proço
// em função de dois indicadores de Bandas de Bollinger, um para histórico 
// recente e outro para histórico de médio prazo
//
//
//
//
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
//
// ######################### FIM DO CABEÇALHO ############################
//
//
// -----------------------------------------------------------------------
// -------------------------- Constantes ---------------------------------
// OBS:
// -----------------------------------------------------------------------
//const
//  cXXXXXX = true;
  //
  // ---------------------------------------------------------------------
  // -------------------------- Parâmetros -------------------------------
  // OBS: Segue abaixo a descrição de cada parâmetro
  // 1) pXXXXXX ->
  //
  // 2) pYYYYYY ->
  //
  // 3) pZZZZZZ ->
  // ---------------------------------------------------------------------
input
  pQtdeDesvioBB1(1.5);
  pQtdePeriodoMediaBB1(36);
  pTipoMediaBB1(0);

  pQtdeDesvioBB2(2.0);
  pQtdePeriodoMediaBB2(100);
  pTipoMediaBB2(0);

  // ---------------------------------------------------------------------
  // ---------------------- Variáveis globais ----------------------------
  // OBS:
  // ---------------------------------------------------------------------
var
//Estrutura padrão do modelo
bStarted: boolean;


//Variáveis personalizadas
fBB1Sup, fBB1Inf: float;
fBB2Sup, fBB2Inf: float;


begin
  // ---------------------------------------------------------------------
  // ----------------- Inicialização da estratégia -----------------------
  // OBS: Inicialização de variáveis a serem utilizadas na estratégia de
  // coloração
  // ---------------------------------------------------------------------
  if Not bStarted then
  begin
    bStarted := True;
    //Colocar aqui ações que serão executadas apenas no primeiro processamento
    //da estratégia. Por exemplo, inicialização de variáveis.
  end;


  // ---------------------------------------------------------------------
  // ------------ Atribuição de variáveis por processamento --------------
  // ---------------------------------------------------------------------
  // Atribuições das variáveis da estratégia
  fBB1Sup := BollingerBands(pQtdeDesvioBB1, pQtdePeriodoMediaBB1, pTipoMediaBB1)|0|;
  fBB1Inf := BollingerBands(pQtdeDesvioBB1, pQtdePeriodoMediaBB1, pTipoMediaBB1)|1|;
  fBB2Sup := BollingerBands(pQtdeDesvioBB2, pQtdePeriodoMediaBB2, pTipoMediaBB2)|0|;
  fBB2Inf := BollingerBands(pQtdeDesvioBB2, pQtdePeriodoMediaBB2, pTipoMediaBB2)|1|;

  // ---------------------------------------------------------------------
  // ---------------------- Lógica de coloração  -------------------------
  // OBS: Inserir lógica de cálculo para coloração do gráfico
  // ---------------------------------------------------------------------

  //SITUAÇÃO 1: BB1 DENTRO de BB2
  if (fBB1Sup <= fBB2Sup) And (fBB1Inf >= fBB2Inf) then
  begin
    if (Close >= fBB2Sup) then PaintBar(clGreen)
    else
    if (Close <= fBB2Inf) then PaintBar(clRed)
    else
    if (Close >= fBB1Sup) And (Close < fBB2Sup) then PaintBar(clYellow)
    else
    if (Close <= fBB1Inf) And (Close > fBB2Inf) then PaintBar(clYellow);
  end
  else

  //SITUAÇÃO 2: Banda superior de BB1 ACIMA da banda superior de BB2
  //            Banda inferior de BB1 maior que banda inferior de BB2
  if (fBB1Sup > fBB2Sup) And (fBB1Inf >= fBB2Inf) then
  begin
    if (Close >= fBB2Sup) then PaintBar(clGreen)
    else
    if (Close <= fBB2Inf) then PaintBar(clRed)
    else
    if (Close <= fBB1Inf) And (Close > fBB2Inf) then PaintBar(clYellow);
  end
  else


  //SITUAÇÃO 3: Banda inferior de BB1 ABAIXO da banda inferior de BB2
  //            Banda superior de BB1 menor que banda superior de BB2
  if (fBB1Sup <= fBB2Sup) And (fBB1Inf < fBB2Inf) then
  begin
    if (Close >= fBB2Sup) then PaintBar(clGreen)
    else
    if (Close <= fBB2Inf) then PaintBar(clRed)
    else
    if (Close >= fBB1Sup) And (Close < fBB2Sup) then PaintBar(clYellow);
  end
  else

  //SITUAÇÃO 4: BB2 DENTRO de BB1
  if (fBB1Sup >= fBB2Sup) And (fBB1Inf <= fBB2Inf) then
  begin
    if (Close >= fBB1Sup) then PaintBar(clGreen)
    else
    if (Close <= fBB1Inf) then PaintBar(clRed);
  end;


  PlotN(1,fBB1Sup);
  PlotN(2,fBB1Inf);
  PlotN(3,fBB2Sup);
  PlotN(4,fBB2Inf);

  SetPlotStyle(1,psDash);
  SetPlotStyle(2,psDash);
  SetPlotStyle(3,psSolid);
  SetPlotStyle(4,psSolid);

  SetPlotColor(1,clWhite);
  SetPlotColor(2,clWhite);
  SetPlotColor(3,clYellow);
  SetPlotColor(4,clYellow);

  SetPlotWidth(1,1);
  SetPlotWidth(2,1);
  SetPlotWidth(3,2);
  SetPlotWidth(4,2);

end;
				
			

Leave a Comment

CONTENTS