Neo traderBot

Neo traderBot

Você sabia?

A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias

leaf leftleaf right
Notifications
Clear all

[Fixado] DESAFIO NeoTraderBot: DETECTOR DE TOPOS E FUNDOS [Rumo a V2!]

6 Posts
5 Usuários
0 Reactions
2,870 Visualizações
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
Iniciador do tópico  

Objetivo do código: Detectar topos e fundos em uma série de dados. Indicador é compatível com o Módulo de Automação de Estratégias.

Motivação: Indicador para compor um conjunto de ferramentas base para que traders possam elaborar estratégias e robôs

DESAFIO: O Indicador está disponível GRATUITAMENTE COM CÓDIGO FONTE ABERTO neste post. O objetivo do Desafio NeoTraderBot é reimplementar o mesmo conceito em uma estratégia que não necessite de armazenar estados entre barras, visando "contornar" problema existente no Profit Chart até a atual versão (5.5.2.198).

 

Link Youtube com explicação do indicador e Lançamento do DESAFIO NEOTRADERBOT 

 

// #######################################################################
// #######################################################################
// #######################################################################
// ######                            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: NeoTraderBot_TopBottomDetector
//   DESENVOLVIDA POR: Johnathas Carvalho
//    DATA DE CRIAÇÃO: 29/11/2022
//             VERSÃO: 1.0
//      ATUALIZADA EM: 15/12/2022
// TIPO DE ESTRATÉGIA: (X) Indicador  (X) Coloração ( ) Execução
//                     ( ) Screening  (X) Texto     ( ) Alarme
//
// DESCRIÇÃO DA ESTRATÉGIA:
//    Este é um indicador base para elaboração de estratégias de execução 
// (robôs) e outros tipos de estratégia. A estratégia possui 3 saídas. 
// Linha 1 apresenta valor diferente de zero quando há uma confirmação de
// topo/fundo. Linha 2 é o valor de topo atual e linha 3 é o valor de fundo
// atual.
//    Infelizmente, devido à instabilidades nas versões beta do Profit, 
// onde a publicação de uma versão gera problemas em coisas que estavam
// funcionando na versão anterior, é possível que você experimente alguma
// dificuldade momentânea de chamar este indicador dentro de outra estratégia. 
//    Esperamos que a Nelogica estabilize as correções dos bugs associados 
// em breve. Qualquer novidade iremos informar pelos canais de comunicação 
// da comunidade NeoTraderBot: www.youtube.com/@NeoTraderBot e 
// www.NeoTraderBot.com.
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
//
// ######################### FIM DO CABEÇALHO ############################
//


  //
  // ---------------------------------------------------------------------
  // -------------------------- Parâmetros -------------------------------
  // OBS: Segue abaixo a descriação de cada parâmetro
  // 1) pQtdePeriodosAnaliseVolat -> Refere-se a quantidade de periodos históricos
  // sobre os quais a estratégia vai calcular a volatilidade média
  // 2) pGatilhoDeteccao -> Refere-se a quantidade de unidades de volatilidade média
  // que quando ocorre retração do movimento de preço confirmam a formação de um topo
  // ou fundo
  // ---------------------------------------------------------------------
input
  pGatilhoDeteccao(2.0);
  pQtdePeriodosAnaliseVolat(100);
  // ---------------------------------------------------------------------
  // ---------------------- Variáveis globais ----------------------------
  // ---------------------------------------------------------------------
var
  iIdentUltimaBarraIdentificada : integer;
  fMaximoAtual,fMinimoAtual : float;
  fVolatilidadeMedia: float;
  fTopoFundoConfirmado: float;

begin
  // ---------------------------------------------------------------------
  // ------------ Atribuição de variáveis por processamento --------------
  // ---------------------------------------------------------------------
  // Manutenção de valor da variável entre processamentos da estratégia
  // O comportamento de retenção de valor das variáveis tem sofrido alterações não previsiveis
  // nas últimas atualizações do Profit
  iIdentUltimaBarraIdentificada := iIdentUltimaBarraIdentificada[1];
  fVolatilidadeMedia := (Summation(High,pQtdePeriodosAnaliseVolat)-Summation(Low,pQtdePeriodosAnaliseVolat))
                                      /pQtdePeriodosAnaliseVolat;  

  // ---------------------------------------------------------------------
  // --------------------- Cálculo do indicador  -------------------------
  // OBS: Inserir lógica de cálculo do indicador e caso ele possa ser plo_
  // tado, atribuir em algum momento True para variável bPlotIndicador
  // ---------------------------------------------------------------------

  // Inicialização do algoritmo quando tem dados suficientes
  if CurrentBar = pQtdePeriodosAnaliseVolat then
    begin
      fMaximoAtual := High[1];
      fMinimoAtual := Low[1];
      iIdentUltimaBarraIdentificada := -1*(CurrentBar-1);
    end;

  // Algoritmo inicia execução
  if CurrentBar > pQtdePeriodosAnaliseVolat then
  begin
    // Última confirmação do indicador foi um topo
    if (iIdentUltimaBarraIdentificada > 0) then
      begin
        // Verifica se houve retração de preço em relação ao valor mínimo atual maior do que o gatilho do parâmetro de entrada
        if (High >= (fMinimoAtual + pGatilhoDeteccao*fVolatilidadeMedia)) then
        begin
          // Plota o fundo identificado, atualiza o índice da barra de fundo com valor negativo (economia de memória)
          // e estabelece um valor inicial para o máximo atual
          fTopoFundoConfirmado := Lowest(Low,CurrentBar - Round(Abs(iIdentUltimaBarraIdentificada)) + 1);
          plot(fTopoFundoConfirmado);
          iIdentUltimaBarraIdentificada := -1*CurrentBar;
          fMaximoAtual := High;
          //PaintBar(clGreen);
          PlotText(fTopoFundoConfirmado,clGreen,-1,9);
        end;
        // Atualiza o valor mínimo atual
        if Low < fMinimoAtual then fMinimoAtual := Low;  
      end

    // Última confirmação do indicador foi um fundo
    else 
      begin
         // Verifica se houve retração de preço em relação ao valor máximo atual maior do que o gatilho do parâmetro de entrada
        if (Low <= (fMaximoAtual - pGatilhoDeteccao*fVolatilidadeMedia)) then
        begin                                                          
          // Plota o topo identificado, atualiza o índice da barra de topo com valor positivo (economia de memória)
          // e estabelece um valor inicial para o mínimo atual
          fTopoFundoConfirmado := Highest(High,CurrentBar - Round(Abs(iIdentUltimaBarraIdentificada)) + 1);
          plot(fTopoFundoConfirmado);
          iIdentUltimaBarraIdentificada := CurrentBar;
          fMinimoAtual := Low;
          //PaintBar(clRed);
          PlotText(fTopoFundoConfirmado,clRed,-1,9);
        end;
        // Atualiza o valor máximo atual
        if High > fMaximoAtual then fMaximoAtual := High;
      end;
  end;


  //
  // ---------------------------------------------------------------------
  // ------------------ Plota valores do indicador -----------------------
  // OBS: A série de confirmação de topo/fundo (1) é plotada na lógica do indicador.
  // Abaixo são plotadas as séries de valor máximo e mínimo atual, séries 2 e 3, respectivamente.
  // ---------------------------------------------------------------------
  // Configura plot do valor de confirmação de topo/fundo  
  SetPlotWidth(1,2);
   
  // Indicador também calcula as séries de valor máximo e mínimo atual
  plot2(fMaximoAtual);
  SetPlotColor(2,clRed);
  SetPlotWidth(2,2);
  SetPlotStyle(2,psDash);
  plot3(fMinimoAtual);
  SetPlotColor(3,clGreen);
  SetPlotWidth(3,2);
  SetPlotStyle(3,psDash);

end;

   
Citar
(@rubens-camerlengo)
Novo membro
Registrou: 2 anos atrás
Posts: 4
 

Desafio lançado, vamos em frente....

 

Abraço


   
ReplyCitar
(@joaodanielba)
Novo membro
Registrou: 2 anos atrás
Posts: 1
 

Bom dia Johnathas! Parabéns pelo empenho!

Atualiza a pagina do indicador também e coloca um link para vir para este tópico.

https://neotraderbot.com/neotraderbot-indicador-de-topos-e-fundos-novo/

Sucesso!

Ajudarei no que tiver a meu alcance!


   
ReplyCitar
(@admin)
Membro Admin
Registrou: 2 anos atrás
Posts: 216
Iniciador do tópico  

Muito bem lembrado, @joaodanielba! Página atualizada!


   
ReplyCitar
(@carlos1286)
Novo membro
Registrou: 2 anos atrás
Posts: 1
 

o meu Topoe fundo não roda no WDO 5 minutos


   
ReplyCitar
(@brunooliver)
Novo membro
Registrou: 1 ano atrás
Posts: 1
 

ola aonde adquiro o indicador do link https://www.youtube.com/watch?v=JsK3t9G49U0 desse video para rodar na automação de estrategia pois o mesmo precisa ser executal 


   
ReplyCitar