A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
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;
Desafio lançado, vamos em frente....
Abraço
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!
Muito bem lembrado, @joaodanielba! Página atualizada!
o meu Topoe fundo não roda no WDO 5 minutos
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