Templates de Estratégias (Modelos pré-configurados)
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;
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.