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 de VOLUME RELEVANTE

1 Posts
1 Usuários
1 Reactions
378 Visualizações
(@admin)
Membro Admin
Registrou: 3 anos atrás
Posts: 216
Iniciador do tópico  

Objetivo do código: Indicar momentos de negociação no qual o volume de papéis negociados atinge patamares relevantes em relação à média histórica recente.

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

Observações importantes: O Indicador está disponível GRATUITAMENTE COM CÓDIGO FONTE ABERTO no Profit Char. Este ambiente destina-se a coletar sugestões e aperfeiçoarmos o indicador de maneira colaborativa.

Link Youtube com explicação do indicador

 

Versão 1.0

// #######################################################################
// #######################################################################
// #######################################################################
// ######                            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: Volume relevante
//   DESENVOLVIDA POR: NeoTraderBOt
//    DATA DE CRIAÇÃO: 19/12/2022
//             VERSÃO: 1.0
//      ATUALIZADA EM: 19/12/2022
// TIPO DE ESTRATÉGIA: (X) Indicador  ( ) Coloração ( ) Execução
//                     ( ) Screening  ( ) Texto     ( ) Alarme
//
// DESCRIÇÃO DA ESTRATÉGIA:
//    Ferramenta que visa indicador momentos em que o volume de negociação 
// alcança patamares relevantes
//
//
//
//
//
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
//
// ######################### FIM DO CABEÇALHO ############################
//
//
// -----------------------------------------------------------------------
// -------------------------- Constantes ---------------------------------
// OBS:
// -----------------------------------------------------------------------
//const
  //cCONSTANTE = 1;
  //
  // ---------------------------------------------------------------------
  // -------------------------- Parâmetros -------------------------------
  // OBS: Segue abaixo a descriação de cada parâmetro
  // 1) pQtdePeriodosMedia -> Define a quantidade de periodos para calcular
  // a média aritmética do volume negociado. Recomenda-se pensar em termos
  // temporais. Exemplo, se sua estratégia opera em gráfico de 5 min, e você
  // deseja utilizar 2 dias de média de volume, a conta seria
  // 2 dias * 9 horas/dia * 12 candles/hora = 216 candles
  // 2) pQtdeDesvioVolume -> Qtde de desvio padrão em relação ao volume que
  // caracterizam o volume negociado como relevante 
  // ---------------------------------------------------------------------
input
  pQtdePeriodosMedia(200);
  pQtdeDesvioVolume(2.0);
  // ---------------------------------------------------------------------
  // ---------------------- Variáveis globais ----------------------------
  // OBS:
  // ---------------------------------------------------------------------
var
	bPlotIndicador: boolean;
fMedia, fStdDev: float;
fRelevanciaVolume: float;

begin
  // ---------------------------------------------------------------------
  // ------------ Atribuição de variáveis por processamento --------------
  // ---------------------------------------------------------------------
  fMedia := Media(pQtdePeriodosMedia, Volume);
  fStdDev := StdDevs(Volume, pQtdePeriodosMedia);
  if (fMedia + pQtdeDesvioVolume*fStdDev) <> 0  then
    fRelevanciaVolume := Volume/(fMedia + pQtdeDesvioVolume*fStdDev);

  // ---------------------------------------------------------------------
  // --------------------- 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
  // ---------------------------------------------------------------------
  bPlotIndicador := true;

  // ---------------------------------------------------------------------
  // ------------------ Plota valores do indicador -----------------------
  // OBS: Atribuir na sessão anterior o valor para variavel bPlotIndicador
  // quando for possível plotar um valor para o indicador no instante atual
  // ---------------------------------------------------------------------
  if bPlotIndicador then
    begin
      PlotN(1,fRelevanciaVolume);
      PlotN(2, Volume);
      PlotN(3, fMedia);
      PlotN(4, fMedia + pQtdeDesvioVolume*fStdDev);

      setPlotColor(2, clGray);
      setPlotColor(3, clRed);
      setPlotColor(4, clWhite);
      SetPlotWidth(3,2);
      SetPlotWidth(4,2);
      SetPlotStyle(4,psDash);

      SetPlotType(2,igHistogram);
      SetPlotType(3,igLine);
      SetPlotType(4,igLine);

      // Cria coloração para o indicador
      if (Volume >= fMedia + pQtdeDesvioVolume*fStdDev) 
      then SetPlotColor(2,clYellow)
      else if (Volume < fMedia + pQtdeDesvioVolume*fStdDev) 
              and (Volume >= fMedia) 
           then SetPlotColor(2,clWhite)
           else SetPlotColor(2,clGray);

    end;

end;

   
Arildo Braga reacted
Citar