A NeoTraderBot é a primeira comunidade aberta no Brasil com foco em compartilhar informações sobre automatização de estratégias
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;