Neo traderBot

Neo traderBot

Você sabia?

Um backtesting adequado deve buscar simular situações práticas do mercado (slippage, custo de operação, etc...)

leaf leftleaf right
Notifications
Clear all

indicador topos e fundos

1 Posts
1 Usuários
0 Reactions
294 Visualizações
(@andrecastilho)
Novo membro
Registrou: 1 ano atrás
Posts: 1
Iniciador do tópico  

boa tarde, estou tentando aproveitar o codigo do indicador topos e fundos para plotar no gráfico de uma forma diferente, somente linhas horizontais no topo e fundo conforme figura em anexo.

também gostaria de criar uma regra de coloração com o mesmo codigo, para quando o candle cruzasse para cima o ultimo topo este ficaria verde e quando cruzasse o ultimo fundo, esse ficaria vermelho.

 

alguém poderia me ajudar?

// #######################################################################
// #######################################################################
// #######################################################################
// ######                            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: _NBT_EXE_3CROSS
//   DESENVOLVIDA POR: Johnathas Araujo de Carvalho
//    DATA DE CRIAÇÃO: 16/09/2022
//             VERSÃO: 3.0
//      ATUALIZADA EM: 12/11/2022
// TIPO DE ESTRATÉGIA: ( ) Indicador  ( ) Coloração (X) Execução
//                     ( ) Screening  ( ) Texto     ( ) Alarme
//
// DESCRIÇÃO DA ESTRATÉGIA:
//      Esta estratégia visa realizar compras mediante o cruzamento triplo
// de médias móveis exponenciais.
//
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
//
// ######################### FIM DO CABEÇALHO ############################
//
//
// -----------------------------------------------------------------------
// -------------------------- Constantes ---------------------------------
// OBS:
// -----------------------------------------------------------------------
const
  cPlotarIndicadores = true;
  cProtecaoGap = 101.5;

  //
  // ---------------------------------------------------------------------
  // -------------------------- Parâmetros -------------------------------
  // OBS: Segue abaixo a descriação de cada parâmetro
  // 1) pLimiteSobreComprado -> Limite no qual considera-se que o cruzamento
  // para baixo gere uma operação de venda
  // 2) pLimiteSobreVendido -> Limite no qual considera-se que o cruzamento
  // para cima gere uma operação de compra
  // 3) pTamanhoPosicao -> Tamanho da exposição ao ativo
  // ---------------------------------------------------------------------
//input
//  pMediaRapida(10);
//  pMediaIntermediaria(50);
//  pMediaLenta(200);
//  pTamanhoPosicao(100);


  // ---------------------------------------------------------------------
  // ---------------------- Variáveis globais ----------------------------
  // OBS:
  // ---------------------------------------------------------------------

 input
  pGatilhoDeteccao(2.0);
  pQtdePeriodosAnaliseVolat(50);

var
  bStarted                                     : boolean;
  bSinalCompra,bSinalVenda,bSinalLiquida       : boolean;
  bComprado,bVendido                           : boolean;
  fMediaRapida,fMediaIntermediaria,fMediaLenta : float;

  //Parametros
   pTamanhoPosicao: integer;
  fTBDetector, fUltimoTopo, fUltimoFundo: float;

  // Variáveis do indicador top e fundo
  iIdentUltimaBarraIdentificada : integer;
  fMaximoAtual,fMinimoAtual : float;
  fVolatilidadeMedia: float;
  fTopoFundoConfirmado, Topo, Fundo : float;

begin

  //******************************************************************
  // COMEÇA AQUI INDICADOR TOPO E FUNDO
  //****************************************************************** 


  // ---------------------------------------------------------------------
  // ------------ 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;
//************************************************************************
//TERMINA AQUI INDICADOR TOPO E FUNDO
//************************************************************************

 







  // ---------------------------------------------------------------------
  // ----------------- Inicialização da estratégia -----------------------
  // OBS: Inicialização de variáveis a serem utilizadas na estratégia de
  // execuçaõ
  // ---------------------------------------------------------------------
  if Not bStarted then
    begin
      bStarted := True;
    end;

  //if (GraphicInterval <> itMinute) or (GraphicOffset <> 15) then
  //  if LastBarOnChart then plotText("Mudar para 15 min!", clWhite, -1, 12)
  //else
  //begin
    // ---------------------------------------------------------------------
    // ------------------ Inicialização de variáveis -----------------------
    // OBS: Inicialização de variáveis p/ cada tick/barra
    // Nem todas as variáveis são inicializadas aqui porque se não houver
    // dados suficientes não faz sentido inicializar algumas variáveis
    // ---------------------------------------------------------------------
   
    fTBDetector := fTopoFundoConfirmado;

    se (fTBDetector <> 0) e (fTBDetector = maxima) entao topo := fTBDetector senao topo := topo[1];
    se (fTBDetector <> 0) e (fTBDetector = minima) entao fundo := fTBDetector senao fundo := fundo[1];


   
    plot(topo);
    plot2(fundo);
   






end;

   
Citar