Neo traderBot

Neo traderBot

Você sabia?

Abordamos o tema de automatização de estratégias em NTSL, MQL5 e NinjaScript!

Programando Estratégias no Profit

Templates de Estratégias (Modelos pré-configurados)

Leitura estimada: 10 minutos 1851 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.

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;
































				
			

5 Comments

  • sbasto

    Novembro 12, 2022

    John, que show essa sua iniciativa. Em 40 anos trabalhando só na área de TI, nunca vi alguém tão empenhado em em desenvolvimento de técnicas para ajudar o próximo. Parabéns, estarei me espelhando em vc para criar meus próximos projetos.

    Reply
    • Johnathas

      Novembro 12, 2022

      Obrigado! Fico feliz de saber que as pessoas estão se beneficiando da Comunidade NeoTraderBot. Estou trabalhando para trazer umas novidades legais em breve!
      Seguimos em frente (SEMPRE)! Grande abs!

      Reply
  • BROTHER

    Novembro 16, 2022

    Muito bom. Curti os modelos. Ótimos para quem está começando em programação.
    Thanks!

    Reply
  • Aldair Torres

    Janeiro 29, 2023

    Sugestão no padrão de Templates Dado a deficiência do Editor da Nelogica sugiro que nos templates da Neotraderbot.com sejam estruturados com o uso do INCLUDE módulo de programação onde cada parte do programa receba um nome próprio do tipo 1. Templade de Inicialização 2. Template de Coloração de Candles 3. Template de Plotagem de Indicadores 4. template de Regras de Negócio 5. template de Gestão de Risco 6. Template de Encerramento.. Sabendo da inexistência da funcionalidade INCLUDE ou IMPORT no NTSL (causando erro de compilação0 mas permitiria que a NEOTRADEBOT economizasse quando da geração de novos snippets onde seriam referenciados os TEMPLATES universais
    e a referencia para um novo TEMPLATE caso a situação exija evitando que no Novo CÓDIGO tudo seja copiado de outro quando deveria ser apenas referenciado para determinado template comum ao padrão existente de templates disponíveis.

    Reply
  • Andre

    Maio 17, 2023

    Bom dia Jhon, estou tentando transcrever sua estrategia SharkFlow ela é coloração estou tentando transcreve-la para deixa – la como indicador, não consigo minha esperiencia com programação é Ctrl-C Ctrl V, me ajuda?

    Reply

Leave a Comment

CONTENTS