Programando Estratégias no Profit Templates de Estratégias (Modelos pré-configurados) Estimated reading: 10 minutes 6319 views Introdução Os Templates de Estratégias da NeoTraderBot servem para padronizar e organizar a estrutura inicial dos códigos fontes das estratégias que iremos implementar.Ao invés de abrir o Editor de Estratégias vazio e começar tudo de novo….podemos otimizar nosso tempo com as experiências acumuladas na Comunidade e reutilizar padrões que já contemplam algumas das melhores práticas de desenvolvimento de estratégias e robôs.Todos os modelos estão salvos no repositório GitHub da NeoTraderBot e, para facilitar ainda mais a nossa vida, eles também estão copiados abaixo em suas últimas versões. Assim, ao invés de você ter que importar os modelos em arquivo .psf, você pode simplesmente copiar o modelo desejado e colar no seu Editor!Comente as partes que não for utilizar em um primeiro momento pois elas podem vir a ser usadas a medida que o seu código-fonte evolui.Utilize o menu direito dessa página para ir direto ao Template desejado. Se liga na DICA para otimizar ainda mais o seu tempo! Salve o modelo sem alteração com um nome padrão (por exemplo: "TEMPLATE_ROBO"), ou como desejar... Em seguida salve o mesmo arquivo utilizando "Salvar como" e atribua o nome da estratégia que está implementando. Edite esse novo arquivo criado. A vantagem de fazer dessa forma é que sempre que precisar criar uma nova estratégia, o Template da NeoTraderBot já estará no seu editor! Modelo de Estratégia de Execução (Robôs) // ####################################################################### // ####################################################################### // ####################################################################### // ###### 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: // DESENVOLVIDA POR: // DATA DE CRIAÇÃO: // VERSÃO: // ATUALIZADA EM: // TIPO DE ESTRATÉGIA: ( ) Indicador ( ) Coloração (X) Execução // ( ) Screening ( ) Texto ( ) Alarme // // DESCRIÇÃO DA ESTRATÉGIA: // // // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // // ######################### FIM DO CABEÇALHO ############################ // // // ----------------------------------------------------------------------- // -------------------------- Constantes --------------------------------- // OBS: // ----------------------------------------------------------------------- const cPlotarIndicadores = true; // // --------------------------------------------------------------------- // -------------------------- Parâmetros ------------------------------- // OBS: Segue abaixo a descrição de cada parâmetro // 1) pXXXXXX -> // // 2) pYYYYYY -> // // 3) pZZZZZZ -> // --------------------------------------------------------------------- input pXXXXX(5); pYYYYY(True); pZZZZZ(2.3); // --------------------------------------------------------------------- // ---------------------- Variáveis globais ---------------------------- // OBS: // --------------------------------------------------------------------- var //Estrutura padrão do modelo bStarted: boolean; bSinalCompra, bSinalVenda, bSinalLiquida, bSinalReversao : boolean; bComprado, bVendido : boolean; //Variáveis personalizadas iXXXXX, iZZZZZZ: integer; fXXXXX, fZZZZZZ: float; begin // --------------------------------------------------------------------- // ----------------- Inicialização da estratégia ----------------------- // OBS: Inicialização de variáveis a serem utilizadas na estratégia de // execução // --------------------------------------------------------------------- if Not bStarted then begin bStarted := True; //Colocar aqui ações que serão executadas apenas no primeiro processamento //da estratégia. Por exemplo, inicialização de variáveis. end; // --------------------------------------------------------------------- // ------------ Atribuição de variáveis por processamento -------------- // --------------------------------------------------------------------- //Estrutura padrão do modelo bSinalCompra := False; bSinalVenda := False; bSinalLiquida := False; bSinalReversao := False; bComprado := isBought(); bVendido := isSold(); // Atribuições das variáveis da estratégia // --------------------------------------------------------------------- // ----------------------- Cálculo dos sinais ------------------------- // OBS: Inserir lógica de cálculo dos sinais de compra/venda/liquidação // e reversão, se for o caso. // --------------------------------------------------------------------- if (...) then bSinalCompra := True; if (...) then bSinalVenda := True; if bComprado then if (...) then bSinalLiquida := True; if bVendido then if (...) then bSinalLiquida := True; if bComprado or bVendido then bSinalReversao := True; // --------------------------------------------------------------------- // -------------- Administração das posições abertas ------------------- // OBS: Baseando-se na posição aberta, pode-se implementar lógicas para // atualização de alvo ou stoploss // --------------------------------------------------------------------- if bComprado then begin end; if bVendido then begin end; // --------------------------------------------------------------------- // ------------------- Envia ordens de compra/venda -------------------- // OBS: Baseando-se nos sinais e na atual posição, cria as ordens de // compra e venda de acordo com o setup desejado // --------------------------------------------------------------------- // --------------------------------------------------------------------- // ------------------------ Plot de Indicadores ------------------------ // OBS: É sempre interessante incluir indicadores usados pelo robô para // poder visualizar no gráfico do Módulo de Automação de Estratégias // --------------------------------------------------------------------- if cPlotarIndicadores then begin Plot(...); Plot2(...); Plot3(...); end; end; Modelo de Estratégia de Coloração // ####################################################################### // ####################################################################### // ####################################################################### // ###### 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: // DESENVOLVIDA POR: // DATA DE CRIAÇÃO: // VERSÃO: // ATUALIZADA EM: // TIPO DE ESTRATÉGIA: ( ) Indicador (X) Coloração ( ) Execução // ( ) Screening ( ) Texto ( ) Alarme // // DESCRIÇÃO DA ESTRATÉGIA: // // // // // // // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // // ######################### FIM DO CABEÇALHO ############################ // // // ----------------------------------------------------------------------- // -------------------------- Constantes --------------------------------- // OBS: // ----------------------------------------------------------------------- const cXXXXXX = true; // // --------------------------------------------------------------------- // -------------------------- Parâmetros ------------------------------- // OBS: Segue abaixo a descrição de cada parâmetro // 1) pXXXXXX -> // // 2) pYYYYYY -> // // 3) pZZZZZZ -> // --------------------------------------------------------------------- input pXXXXX(5); pYYYYY(True); pZZZZZ(2.3); // --------------------------------------------------------------------- // ---------------------- Variáveis globais ---------------------------- // OBS: // --------------------------------------------------------------------- var //Estrutura padrão do modelo bStarted: boolean; //Variáveis personalizadas iXXXXX, iZZZZZZ: integer; fXXXXX, fZZZZZZ: float; begin // --------------------------------------------------------------------- // ----------------- Inicialização da estratégia ----------------------- // OBS: Inicialização de variáveis a serem utilizadas na estratégia de // coloração // --------------------------------------------------------------------- if Not bStarted then begin bStarted := True; //Colocar aqui ações que serão executadas apenas no primeiro processamento //da estratégia. Por exemplo, inicialização de variáveis. end; // --------------------------------------------------------------------- // ------------ Atribuição de variáveis por processamento -------------- // --------------------------------------------------------------------- // Atribuições das variáveis da estratégia // --------------------------------------------------------------------- // ---------------------- Lógica de coloração ------------------------- // OBS: Inserir lógica de cálculo para coloração do gráfico // --------------------------------------------------------------------- if (...) then begin PaintBar() end else if (...) then begin PaintBar() end; end; Modelo de Estratégia de Indicador // ####################################################################### // ####################################################################### // ####################################################################### // ###### 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: // DESENVOLVIDA POR: // DATA DE CRIAÇÃO: // VERSÃO: // ATUALIZADA EM: // TIPO DE ESTRATÉGIA: (X) Indicador ( ) Coloração ( ) Execução // ( ) Screening ( ) Texto ( ) Alarme // // DESCRIÇÃO DA ESTRATÉGIA: // // // // // // // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // // ######################### FIM DO CABEÇALHO ############################ // // // ----------------------------------------------------------------------- // -------------------------- Constantes --------------------------------- // OBS: // ----------------------------------------------------------------------- const cCONSTANTE = 1; // // --------------------------------------------------------------------- // -------------------------- Parâmetros ------------------------------- // OBS: Segue abaixo a descriação de cada parâmetro // 1) parametro1 -> // 2) parametro2 -> // --------------------------------------------------------------------- input pParametro(1); // --------------------------------------------------------------------- // ---------------------- Variáveis globais ---------------------------- // OBS: // --------------------------------------------------------------------- var bStarted, bPlotIndicador: boolean; begin // --------------------------------------------------------------------- // ----------------- Inicialização da estratégia ----------------------- // OBS: Inicialização de variáveis a serem utilizadas na estratégia de // execução // --------------------------------------------------------------------- if Not bStarted then begin bStarted := True; //Colocar aqui ações que serão executadas apenas no primeiro processamento //da estratégia. Por exemplo, inicialização de variáveis. end; // --------------------------------------------------------------------- // ------------ Atribuição de variáveis por processamento -------------- // --------------------------------------------------------------------- // --------------------------------------------------------------------- // --------------------- 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 := false; // // --------------------------------------------------------------------- // ------------------ 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 Plot(cCONSTANTE); end; end; Modelo de Estratégia de Screening // ####################################################################### // ####################################################################### // ####################################################################### // ###### 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: // DESENVOLVIDA POR: // DATA DE CRIAÇÃO: // VERSÃO: // ATUALIZADA EM: // TIPO DE ESTRATÉGIA: ( ) Indicador ( ) Coloração ( ) Execução // (X) Screening ( ) Texto ( ) Alarme // // DESCRIÇÃO DA ESTRATÉGIA: // // // // // // // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // // ######################### FIM DO CABEÇALHO ############################ // // // ----------------------------------------------------------------------- // -------------------------- Constantes --------------------------------- // OBS: // ----------------------------------------------------------------------- const cXXXXXX = true; // // --------------------------------------------------------------------- // -------------------------- Parâmetros ------------------------------- // OBS: Segue abaixo a descrição de cada parâmetro // 1) pXXXXXX -> // // 2) pYYYYYY -> // // 3) pZZZZZZ -> // --------------------------------------------------------------------- input pXXXXX(5); pYYYYY(True); pZZZZZ(2.3); // --------------------------------------------------------------------- // ---------------------- Variáveis globais ---------------------------- // OBS: // --------------------------------------------------------------------- var //Estrutura padrão do modelo bStarted: boolean; //Variáveis personalizadas iXXXXX, iZZZZZZ: integer; fXXXXX, fZZZZZZ: float; begin // --------------------------------------------------------------------- // ----------------- Inicialização da estratégia ----------------------- // OBS: Inicialização de variáveis a serem utilizadas na estratégia de // coloração // --------------------------------------------------------------------- if Not bStarted then begin bStarted := True; //Colocar aqui ações que serão executadas apenas no primeiro processamento //da estratégia. Por exemplo, inicialização de variáveis. end; // --------------------------------------------------------------------- // ------------ Atribuição de variáveis por processamento -------------- // --------------------------------------------------------------------- // Atribuições das variáveis da estratégia // --------------------------------------------------------------------- // ---------------------- Lógica de coloração ------------------------- // OBS: Inserir lógica de cálculo para coloração do gráfico // --------------------------------------------------------------------- if (...) then begin Select() end else if (...) then begin Select(); end; end;