Escolar Documentos
Profissional Documentos
Cultura Documentos
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
TABLE OF CONTENTS
Introdução 11
Volume 23
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
6.3 Atenção .................................................................................................................................................................... 25
Xícara 27
Triângulos 29
Gaps 31
C2 - Indicadores 32
Conceitos 32
Ferramenta 41
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.2 Programação no ProfitChart .................................................................................................................................... 41
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Code F. Gráficas Preço ........................................................................................................................................................ 68
Funções Calendário.............................................................................................................................................................. 77
1.4 C_3WhSolds_3BlkCrows.......................................................................................................................................... 89
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.9 C_PierceLine_DkCloud ............................................................................................................................................ 94
MACD 109
Estocástico 112
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CCI 113
OBV 114
RSI 115
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.2 Uso ......................................................................................................................................................................... 126
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.3 Básico ..................................................................................................................................................................... 132
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Funções BackTest .............................................................................................................................................................. 149
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CURSO PROFITCHART
Introdução
• Objetivo
o Permitir que o aluno ao final do curso possa criar suas próprias regras de coloração, indicadores, estratégias
de execução e fazer backtest.
• Público Alvo
o Iniciantes no mercado de ações - sem nenhuma experiência.
o Investidores com experiência intermediária no mercado, porém querem desenvolver conhecimento sobre
programação da plataforma Profit (Nelogica)
• Didática
o Será necessário desenvolver o conhecimento gradativamente tanto sobre mercado, da lógica de
programação em si quanto da própria ferramenta (Profit).
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C1 - ANÁLISE TÉCNICA
INTRODUÇÃO
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.3 CARACTERÍSTICAS IMPORTANTES:
1. Período Gráfico
• Refere-se ao limite de datas no nosso eixo horizontal (x). Podendo variar de décadas para segundos. Os mais
usados:
• Intraday (Períodos dentro do mesmo dia, hora em hora, minuto a minuto etc.)
Hora 60 1H
Minuto 1 1
Segundo 1E 1S
• Outros Períodos
Diário 1D 1D
Semanal 1S 1W
Mensal 1M 1M
2. Escala do gráfico
• Aritmética;
• Logarítmica.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Gráficos construídos na escala aritmética (linear):
o O espaço entre cada ponto de preço, ex. R$10, R$20, R$30, R$40 são separados por um espaçamento de
igual tamanho.
o Isso significa que, o movimento de preço de R$10 para R$20 tem a mesma distância no gráfico de um
movimento de R$40 para R$50.
• A visualização da movimentação de preço na escala é muito mais 'justa' do ponto de vista financeiro.
o A rentabilidade em % na escala aritmética pode esconder a real rentabilidade bruta, dependendo da
referência.
o O que não acontece na escala logarítmica, onde a rentabilidade em % está 'travada' ao valor de referência.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
iii. Série de Dados
• Cada ponto representa, para uma data específica, o preço de:
o Fechamento, (Preço no momento de fechamento de um período, seja 1H ou 1D)
o Abertura, (Preço no momento de abertura de um período, seja 1H ou 1D)
o Máxima, (Preço mais alto atingido num determinado período, seja 1H ou 1D)
o Mínima. (Preço mais baixo atingido num determinado período, seja 1H ou 1D)
• Nota: No gráfico de linha - o preço de fechamento é o padrão.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Gráfico de barras:
o O gráfico de barras adiciona várias outras informações importantes a cada ponto de dados.
o O gráfico é composto de uma série de linhas verticais que representam cada ponto de dados.
o Essa linha vertical representa a alta e a baixa do período de negociação, juntamente com o preço de
fechamento.
o O fechamento e a abertura são representados na linha vertical por um traço horizontal.
• Gráfico de velas (candlesticks)
o O gráfico de velas é semelhante a um gráfico de barras, mas difere na maneira como é construído
visualmente.
o Semelhante ao gráfico de barras, a vela também possui uma fina linha vertical que mostra a faixa de
negociação do período.
o A diferença ocorre na formação de uma barra larga na linha vertical, que ilustra a diferença entre abertura
e fechamento daquele período.
o Um padrão de cores é definido para estabelecer a ordem dos preços de abertura e fechamento.
• Isso porque, um preço pode abrir um período com um determinado valor, e ao final desse período,
fechar tanto abaixo como acima desse valor de abertura.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
POR QUE ANÁLISE TÉCNICA?
USO DE TENDÊNCIAS
3.1 DEFINIÇÃO
• Um dos conceitos mais importantes na análise técnica é o de tendência.
• O significado em finanças não é tão diferente da definição geral do termo:
o Uma tendência nada mais é do que a direção geral em que um título ou mercado está indo.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Tendência de BAIXA Classificada como uma série de (preços) mínimas e máximas mais baixas que as anteriores.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
3.2 TIPOS DE TENDÊNCIAS
• Tendências de alta
• Tendências de baixa
• Tendências laterais / horizontais
3.3 COMPRIMENTOS
• Juntamente com essas três direções de tendência, existem três classificações de tendência.
• Em termos de mercado de ações:
Longo Prazo > de 1 ano.
• Uma tendência de longo prazo é composta por várias tendências intermediárias de médio prazo, que
geralmente se movem contra a direção da tendência principal.
• Se a tendência principal for ascendente e houver uma correção descendente no movimento dos preços seguida
de uma continuação da tendência de alta, a correção será considerada uma tendência intermediária.
• As tendências de curto prazo são componentes das tendências principais e intermediárias.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
3.4 LTA / LTB
• Uma linha de tendência de alta (LTA) é desenhada nos pontos baixos (mínimas dos preços) de uma tendência
ascendente.
o Essa linha representa o suporte que o preço tem toda vez que passa de uma máxima para uma mínima.
o Observe como o preço é sustentado por esse suporte.
o Esse tipo de linha de tendência ajuda os traders a antecipar o ponto em que o preço de uma ação
começará a subir novamente.
• Da mesma forma, uma linha de tendência de baixa (LTB) é traçada nas máximas da tendência descendente.
o Essa linha representa o nível de resistência que uma ação enfrenta toda vez que o preço passa de uma
mínima para uma máxima.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
3.5 CANAIS
• Um canal, ou linhas de canal, é a adição de duas linhas de tendência paralelas que atuam como áreas fortes de
suporte e resistência.
o A linha de tendência superior conecta uma série de máximas.
o Enquanto a linha de tendência inferior conecta uma série de mínimas.
• Um canal pode se inclinar:
o Para cima;
o Para baixo;
o Para os lados;
o Independentemente da direção, a interpretação permanece a mesma.
• Os analistas esperam que uma determinada ação seja negociada entre os dois níveis de suporte e resistência
até que ultrapasse um dos níveis:
o Nesse caso, se esperar um movimento acentuado na direção do rompimento.
• Juntamente com a exibição clara da tendência, os canais são usados principalmente para ilustrar áreas
importantes de suporte e resistência.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SUPORTE E RESISTÊNCIA
4.1 DEFINIÇÃO
• Depois de entender o conceito de uma tendência, o próximo grande conceito é o de suporte e resistência.
• Você já deve ter ouvido analistas técnicos descrevendo movimentos de preços como batalhas entre touros e
ursos, ou a luta entre compradores (demanda) e vendedores (oferta).
Touros Compradores Candles/Barras de ALTA Fechamento > Abertura
• Isso é representado pelos preços de um título ao tentar romper níveis de suporte ou resistência.
• Suporte é o nível de preço pelo qual uma ação ou mercado não conseguir cair abaixo.
• Resistência, por outro lado, é o nível de preço que uma ação ou mercado não consegue ultrapassar.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
4.3 NÚMEROS REDONDOS
• Um tipo de suporte e resistência universal que tende a ser visto em muitas ações são os números redondos.
• Números redondos como 10, 20, 35, 50, 100 e 1.000 tendem a ser importantes nos níveis de suporte e
resistência;
o Geralmente representam os principais pontos de virada psicológica nos quais muitos investidores tomam
decisões de compra ou venda.
o Os compradores geralmente compram grandes quantidades de ações quando o preço começa a cair em
direção a um grande número redondo, como R$ 50, o que por consequência dificulta a queda do preço
desta ação abaixo deste preço, tornando-o um nível de suporte.
o Por outro lado, os vendedores começam a vender uma ação à medida que ela avança em direção a um
pico de número redondo, por tanto, dificultando também a passagem desse nível superior.
o É o aumento da pressão de compra e venda nesses níveis que os torna importantes pontos de apoio e
resistência e, em muitos casos, também importantes pontos psicológicos.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
4.5 IMPORTÂNCIA DE SUPORTES E RESISTÊNCIAS
• Pode ser usada para tomar decisões de negociação e identificar quando uma tendência está revertendo.
o Por exemplo, se um investidor identifica um nível importante de resistência que foi testado várias vezes,
mas nunca quebrado, ele pode decidir obter lucros à medida que a ação avança para esse ponto, porque
é improvável que ele ultrapasse esse nível.
• Os níveis de suporte e resistência:
o Testam e confirmam tendências e precisam ser monitorados.
o Enquanto o preço da ação permanecer entre esses níveis de suporte e resistência, é provável que a
tendência continue.
o Importante, uma ruptura além de um nível de suporte ou resistência nem sempre se traduz em uma
reversão.
• Por exemplo, se os preços subiram acima dos níveis de resistência de um canal de tendência
ascendente, a tendência foi acelerada, não revertida.
• Isso significa que a valorização do preço deve ser mais rápida do que seria dentro do canal.
• Há investidores que evitam comprar/vender nesses pontos importantes, pois a área ao redor deles é
geralmente marcada por muita volatilidade.
• Dica Importante: Evite comprar/vender diretamente no nível de suporte ou resistência.
o Em muitos casos, o preço não chega atingir o número inteiro, mas flerta com ele.
o Prefira então, usar um valor próximo que aumente a probabilidade de um negócio bem sucedido.
VOLUME
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
5.2 IMPORTÂNCIA DO VOLUME
• O volume é um aspecto importante da análise técnica porque é usado para confirmar tendências e padrões de
gráficos.
• Qualquer movimento de preço para cima ou para baixo com volume relativamente alto é visto como um
movimento mais forte e mais relevante do que um movimento semelhante com volume fraco.
• Portanto, se você estiver observando um grande movimento de preços, examine também o volume para ver
se ele conta a mesma história.
o Por exemplo, uma ação salta 5% em um dia de negociação após uma longa tendência de baixa.
o Isso é sinal de reversão de tendência? É aqui que o volume ajuda os investidores.
• Se o volume for alto durante o dia em relação ao volume médio diário, é um sinal de que a reversão
provavelmente é real.
• Por outro lado, se o volume estiver abaixo da média, pode não haver convicção suficiente para
suportar uma verdadeira reversão de tendência.
• Quando o volume conta uma história diferente, é um caso de divergência, que se refere a uma contradição
entre dois indicadores diferentes.
• O exemplo mais simples de divergência é uma clara tendência de alta com um volume em queda.
PADRÕES GRÁFICOS
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
6.2 A HISTÓRIA SE REPETE
• Vimos anteriormente as três suposições da análise técnica, a terceira das quais na análise técnica, a história se
repete.
• A teoria por trás dos padrões do gráfico é baseada nessa suposição.
• A ideia é que certos padrões sejam vistos muitas vezes e que esses padrões sinalizem uma alta probabilidade
de repetição.
• Investidores procuram esses padrões para identificar oportunidades de negociação.
6.3 ATENÇÃO
• Embora existam ideias e componentes gerais para cada padrão gráfico, não existe um padrão gráfico que
indique com 100% de certeza a direção de uma ação.
• Um padrão de reversão sinaliza que uma tendência anterior será revertida após a conclusão do padrão.
• Um padrão de continuação, por outro lado, sinaliza que uma tendência continuará assim que o padrão estiver
completo.
• Esses padrões podem ser encontrados em gráficos de qualquer período.
• Importante:
• Atenção ao usar esse tipo de análise em períodos gráficos rápidos, por exemplo, 30 minutos ou menos.
o Esses períodos gráficos são normalmente relacionados a inserção de 'ruídos' nos padrões gráficos:
o A participação de investidores com grande influência no mercado, (por exemplo, bancos, instituições
financeiras, investidores de grande capital) podem causar movimentações de preços pontuais que se
traduzem em anomalias no gráfico, desfigurando esses padrões gráficos.
• Outro fator que pode desfigurar um gráfico é a pouca volatilidade.
o Ações que tem pouca oferta e demanda se traduzem em gráficos sem movimentação e com pouco
variação.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
OMBRO CABEÇA OMBRO (OCO) - HEAD AND SHOULDERS
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
XÍCARA
• Um gráfico xícara é um padrão de continuação de alta no qual a tendência ascendente teve uma pausa, mas
continuará em uma direção ascendente assim que o padrão for confirmado.
• Esse padrão de preço forma o que parece uma xícara.
• Precedido por uma tendência ascendente.
• A alça segue a formação da xícara e é formada por um movimento geralmente para baixo / lateral.
• Uma vez que o movimento dos preços ultrapasse as linhas de resistência formadas na alça, a tendência de alta
pode continuar.
• Este é normalmente um padrão gráfico encontrado em gráficos de longos períodos, meses ou anos.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
TOPOS E FUNDOS DUPLOS
• Esse padrão de gráfico é outro padrão conhecido que sinaliza uma inversão de tendência
o É considerado um dos mais confiáveis e é comumente usado.
• Esses padrões são formados após uma tendência sustentada e sinalizam aos investidores que a tendência está
prestes a reverter.
• O padrão é criado quando um movimento de preço testa os níveis de suporte ou resistência duas vezes e é
incapaz de romper.
• Esse padrão é frequentemente usado para sinalizar reversões de tendência intermediárias e de longo prazo.
o No caso um topo duplo:
• O movimento do preço tentou duas vezes ultrapassar um determinado nível de preço.
• Após duas tentativas frustradas de aumentar o preço, a tendência reverte e o preço cai.
o No caso de um fundo duplo:
• O movimento dos preços tentou diminuir duas vezes, mas encontrou um suporte em cada
tentativa.
• Após o segundo retorno ao suporte, a ação entra em uma nova tendência e sobe.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
TRIÂNGULOS
• Triângulos são alguns dos padrões gráficos mais conhecidos usados na análise técnica.
• Os três tipos de triângulos, que variam em construção e implicação, são:
• O triângulo simétrico,
o O triângulo simétrico é um padrão no qual duas linhas de tendência convergem uma para a outra.
o Esse padrão é neutro, pois pode romper para cima ou para baixo.
o Esse rompimento serve como uma confirmação de uma tendência nessa direção.
• O triângulo ascendente,
o A linha de tendência superior é plana, enquanto a linha de tendência inferior é inclinada para cima.
o Isso geralmente é considerado um padrão de alta no qual os investidores procuram uma fuga positiva.
• O triângulo descendente,
o A linha de tendência inferior é plana e a linha de tendência superior é descendente.
o Isso geralmente é visto como um padrão de baixa, onde os investidores procuram uma fuga negativa.
• Considera-se que esses padrões de gráfico duram de algumas semanas a vários meses.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
BANDEIRAS, FLÂMULAS, CUNHA
11.2 CUNHA
• O padrão do gráfico de cunha pode ser um padrão de continuação ou reversão.
• É semelhante a um triângulo simétrico, exceto que o padrão de cunha se inclina na direção para cima ou para
baixo, enquanto o triângulo simétrico geralmente mostra um movimento lateral.
• A outra diferença é que as cunhas tendem a se formar por períodos mais longos, geralmente entre três e seis
meses.
• O fato de as cunhas serem classificadas como padrões de continuação e reversão pode tornar confusos os sinais
de leitura.
• No entanto, no nível mais básico:
o Uma cunha em queda é de alta
o Uma cunha em alta é de baixa.
• Exemplo:
o Uma cunha em queda na qual duas linhas de tendência estão convergindo em uma direção descendente.
o Se o preço subisse acima da linha de tendência superior, formaria um padrão de continuação,
o Enquanto um movimento abaixo da linha de tendência inferior sinalizaria um padrão de reversão.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
GAPS
• Uma lacuna em um gráfico é um espaço vazio entre um período de negociação e o período de negociação
seguinte.
• Isso ocorre quando há uma grande diferença de preços entre dois períodos de negociação sequencial.
• Por exemplo,
o Se o intervalo de negociação em um período estiver entre R$ 25 e R$ 30 e o próximo período de
negociação abrir em R$ 40,
o Haverá uma grande lacuna no gráfico entre esses dois períodos.
o Os movimentos de preços de hiatos podem ser encontrados nos gráficos de barras e nos candelabros,
mas não nos gráficos de ponto e figura ou de linhas básicas.
o As lacunas geralmente mostram que algo de significativo aconteceu na segurança, como um anúncio de
ganhos acima do esperado.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C2 - INDICADORES
CONCEITOS
1.1 INTRODUÇÃO
• Discussão conceitual sobre indicadores
• A plataforma ProfitChart é infelizmente limitada na programação de indicadores.
o Portanto, o entendimento do que um indicador está tentando passar para o investidor é muito mais
importante do que programá-lo simplesmente.
• Este não é um curso de análise técnica, por tanto, o ângulo de estudo sobre indicadores aqui é muito mais
matemático e conceitual do que operacional.
o Isso significa aprender formas de interpretar a informação passada por um indicador e então traduzir essas
informações em forma de sinais operacionais.
• Conceito básico
• Indicadores, no nosso contexto de mercado de ações, são:
o Cálculos baseados no preço e no volume de um ativo.
• Usados para medir itens como:
o Fluxo de dinheiro;
o Tendências de movimentação de preço;
o A volatilidade dessa movimentação
o Momento da variação de um ativo em relação a um período histórico.
• A variação de preço por si só já nos deixa um rastro gráfico que nós podemos utilizar para fazer análises
o Por exemplo, para determinarmos uma linha de tendência não precisamos de nenhum indicador.
• Portanto, os indicadores são usados como uma medida secundária dos movimentos de preços e adicionam
informações à análise de um ativo.
• Objetivos Principais
o Confirmar o movimento dos preços e a qualidade dos padrões dos gráficos e;
o Formar sinais de compra e venda.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1. Antecedentes
• Precedem o movimento dos preços - para dar qualidade de previsão.
• Eles tentam prever o preço, usando períodos curtos nos cálculos
• E são utilizados preferencialmente em momentos sem tendência definida (preço lateral).
• Os mais comuns são: os Estocásticos / Índice de Força Relativa.
2. Atrasados
• Seguem o movimento dos preços - servem como instrumento de confirmação.
• Eles dão sinais de confirmação de uma tendência ou de início de reversão.
• São utilizados durante momentos de tendência definida.
• O mais comum são: as Médias Móveis.
• Essa informação é importante pra nos ajudar a interpretar os sinais que um indicador está tentando nos dar.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Nota: Osciladores também são indicadores, é apenas uma classificação pra diferenciar a construção desses
indicadores.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SOBRE COMPRADO Próximo a 100
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Um gráfico e/ou um indicador, independente do contexto sempre terão como função básica,
o Demonstrar de forma visual valores de um cálculo e a relação entre esses valores.
o Cabe a pessoa gerando e analisando o gráfico/indicador, o papel de interpretar o que aquele indicador
visual está tentando dizer.
• O Indicador de Linha
o É construído ligando-se os pontos (coordenadas no plano X e Y), onde:
LINHA HORIZONTAL Eixo X Tempo
• O Indicador Histograma
o É diferente em 2 principais aspectos
• Primeiro, na própria representação visual, ao invés de ligarmos pontos, os valores são representados
por barras verticais.
• Segundo, no formato de dados utilizados.
▪ Agrupando quantidades e representando esse valor em forma de barras que são determinadas
por um limite.
▪ O valor calculado pelo indicador é marco no eixo Y.
▪ E no eixo X, (a linha do tempo) o histograma delimita os valores calculados em grupos de tempo
ao invés de um valor específico.
Por exemplo
o No indicador de linha - Um ponto no eixo X - é uma data específica: 12 de março de 2020.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
o No indicador histograma, Uma barra no eixo X representa um limite - : de 12 de março a 13 de março de
2020.
1.5 SINAIS
2 Formas de utilizar indicadores para sinais de compra e venda
o Cruzamentos
• Por exemplo: Quando o preço cruza uma média móvel ou 2 médias móveis cruzam entre si.
o Divergências
• Por exemplo: Quando a direção do preço e a direção do indicador divergem.
o Esses sinais podem indicar uma possível reversão, ou no mínimo um enfraquecimento de uma tendência.
Exemplos:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.6 TIPOS DE INDICADORES
Os tipos de indicadores mais usados e suas classificações:
Indicadores de Tendência
• Medem a direção e força de uma tendência usando alguma forma de média de preço para estabelecer uma
linha base.
• O analista observa o movimento do preço em relação ao indicador,
• Exemplos
o Média Móvel - Indicador do tipo [Atrasado]
▪ É usado para identificar a tendência atual e tendências de reversão, e demarcar níveis de
suporte e resistência.
o MACD - Indicador do tipo [Atrasado]
▪ É usado para revelar mudanças em força, direção, momento e duração de uma tendência.
o Parabolic Stop and Reverse (Parabolic SAR) - Indicador do tipo [Antecedente]
▪ Usado para encontrar reversões na direção do preço de um ativo.
Indicadores de Momento
• Ajudam a identificar a velocidade do movimento do preço.
• Fazem isso comparando a variação de preços em um determinado período, mas podem também ser utilizados
para analisar volume.
• Exemplos
o Estocástico - Oscilador do tipo [Antecedente]
▪ É usado para prever pontos de reversão de preço ao comparar preços de fechamento com a
variação de preço.
o Commodity Channel Index (CCI) - Oscilador do tipo [Antecedente]
▪ É usado ajudar a identificar reversão de preços, extremidades de preços e força de tendência.
o Índice de Força Relativa (RSI) - Indicador do tipo [Antecedente]
▪ Mede a força da tendência atual, a velocidade de mudança em tendência e a magnitude dessa
mudança.
Indicadores de Volatilidade
• Esses medem a taxa de variação do movimento do preço, independente da direção.
• Geralmente baseados na mudança de máximas e mínimas históricas dos preços.
• Exemplos
o Bandas de Bollinger - Indicador do tipo [Atrasado]
▪ É usado para medir máximas e mínimas do preço, relativo a preços anteriores.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
o Average True Range - Indicador do tipo [Atrasado]
▪ Este indicador não dá uma indicação de tendência de preço, mas sim o grau de volatilidade do
preço.
Indicadores de Volume
▪ Medem a força de uma tendência ou confirmam a direção de uma tendência baseando-se em alguma forma de
cálculo de médias ou suavizando o volume bruto.
▪ Isso porque as tendências mais fortes TENDEM a ocorrer quando o volume histórico aumenta
• Muitas vezes é o aumento de volume de negociação que pode levar a grandes movimentos de preço.
▪ Exemplos
• On Balance Volume (OBV) - Indicador do tipo [Antecedente]
▪ Tenta medir o nível de acúmulo e distribuição ao comparar volume com movimentação de preços.
• Chaikin Oscillator - Indicador do tipo [Antecedente]
▪ Monitora o fluxo de dinheiro (in/out) do mercado
▪ Comparando fluxo de dinheiro com price action ajuda a identificar topos e fundos em ciclos de curto
e médio prazo.
• Volume Rate of Change - Indicador do tipo [Atrasado]
▪ Da ênfase em aumentos de volume, que normalmente ocorrem nos momentos mais significantes de
topos, fundos e breakouts.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C3 - BÁSICO PROGRAMAÇÃO
FERRAMENTA
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.3 AMBIENTE DE TRABALHO
1. Desktops
2. Layouts
3. Barra de Estudos
4. Estratégia de Execução
LÓGICA DE PROGRAMAÇÃO
2.1 INTRODUÇÃO
• Linguagem: NTSL (Nelogica Trading System Language)
• Baseado em EasyLanguage criado pela TradeStation.
• Por que precisamos entender a Lógica de Programação?
o Isso nos ajudará a programar códigos eficazes.
• Eficaz: Fazer certo a coisa certa.
• Eficiente: Fazer certo a coisa errada.
• Exemplo, Regra de Coloração invertida.
o Nos ajudará também a identificar e corrigir problemas com o nosso código.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.4 DEPURAÇÃO
• Inglês: Debug
• Definição: Processo de encontrar a resolver defeitos ou problemas com um programa de computador, que o
previne de operar de forma correta. É importante dominar formas de depurar nosso código.
• 3 Formas
o Verificar Sintaxe
• Definição: Conjunto de regras que determinam as diferentes possibilidades de associação das
palavras de uma língua.
• Funciona da mesma forma que para qualquer língua, pois, até mesmo linguagens de programação
seguem uma determinada 'gramática'.
• É o que determina se uma frase ou sentença faz sentido.
o Step Over (F3)
• Executa um código linha a linha, desconsiderando funções, por isso 'step over' ou 'pular'.
o Trace Into (F7)
• Também executa um código linha a linha, porém também testa funções linha a linha. Trace into,
traçar dentro.
o Break-Point - Função auxiliar
• Seleciona a linha de código para iniciar teste - marcada com um círculo vermelho.
2.5 VARIÁVEIS
• Definição: Um objeto, (uma posição, normalmente alocada na memória do computador) capaz de reter e
representar um valor ou expressão.
o Como uma caixa que armazena algo dentro.
• Identificadores: Um nome para identificá-la e permitir ao programador referenciá-la cada vez que necessário.
• Por que usar variáveis?
o Para economizar processamento - ao reutilizar um valor ou resultado de um cálculo.
o Facilita a vida do programador ao associar nomes a valores. Exemplo, Área de um triângulo.
• Tipos
PT EN Definição Exemplo
Booleano Boolean Representa uma relação binária (1 e 0) Verdadeiro (True) / Falso (False)
• Como Declarar
o Entre palavra reservada var e o início do nosso código com a palavra reservada Início (Begin).
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Exemplo
// Variáveis
// Real (Float) ex: 3.14
// Inteiro (Integer) ex: 1, 2 ,3
// Booleano (Boolean) ex: verdadeiro (true) / falso (false)
var
// identificador : Tipo;
vR1, vR3 : Real;
vI1 : Inteiro;
vB1 : Booleano;
// Inglês
vR2 : Float;
vI2 : Integer;
vB2 : Boolean;
Inicio
// Inicio do código a ser executado
vR1 := 80000;
vR2 := 2000;
// Nota - Para números reais
// Números inteiros também fazem parte do grupo dos números Reais.
// Não utilizar símbolo para agrupador de milhares
// Símbolo decimal é representado por . (ponto)
Plot(vR3);
// Fim do código
Fim;
2.6 PARÂMETROS
• Definição: Uma interface entre o mundo externo (usuário) com o código sendo executado.
• Identificadores: Um nome para identificá-la e permitir ao programador referenciá-la cada vez que necessário e
para que o usuário saiba sua utilidade.
• Por que usar parâmetros?
o Para permitir a interação do usuário com o código, dessa forma o usuário pode influenciar na execução do
código, porém com papel limitado pelo programador.
• Tipos
o Utiliza os mesmos tipos definidos nas variáveis. (Real, Inteiro, Booleano)
• Como Declarar
o Entre a palavra reservada Parametro ou Input e a palavra reservada var.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Exemplo
Parametro // (Input)
// Identificador(Valor Inicial);
Sinal (2000); // Sinal é comumente um termo para um número de referência
// Variáveis
// Real (Float) ex: 3.14
// Inteiro (Integer) ex: 1, 2 ,3
// Booleano (Boolean) ex: verdadeiro (true) / falso (false)
var
// identificador : Tipo;
vR1, vR3 : Real;
vI1 : Inteiro;
vB1 : Booleano;
// Inglês
vR2 : Float;
vI2 : Integer;
vB2 : Boolean;
Inicio
// Inicio do código a ser executado
vR1 := 80000;
vR2 := 2000;
// Nota - Para números reais
// Números inteiros também fazem parte do grupo dos números Reais.
// Não utilizar símbolo para agrupador de milhares
// Símbolo decimal é representado por . (ponto)
Plot(vR3);
// Fim do código
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.7 SÉRIES DE DADOS
• Definição : são os valores decorrentes de cada candle do gráfico.
• Abertura (Open)
o Retorna o valor de abertura da barra atual.
• Fechamento (Close)
o Retorna o valor de fechamento da barra atual.
• Minima (Low)
o Retorna o valor mínimo da barra atual.
• Maxima (High)
o Retorna o valor máximo da barra atual.
• Quantidade (Quantity)
o Retorna o valor da quantidade da barra atual.
• Importante
o Referência a valores do passado é feito através de contadores: [x] onde x é o número do contador
• Exemplo: Abertura[1]; Fechamento[3]
2.8 OPERADORES
• Operadores Matemáticos
+ Adição 5+4 9
- Subtração 5-4 1
* Multiplicação 5*4 20
• Ordem de Operações
o Divisão possui maior força de precedência, seguido por multiplicação, e então soma e subtração.
• Nota: Soma e subtração seguem a ordem por sequência – ou seja – o operador que estiver primeiro é
executado antes.
• Divisão > Multiplicação > (Soma & Subtração)
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Expressão Resultado
10*10/5+2 22
1*2+2 102
50+100*10/2-1 549
Exemplo:
x = 10 * 10/5 + 2
x = 10 * 2 + 2
x = 20 + 2
x = 22
// Programaticamente
x = (10 * (10/5)) + 2 = 22
// Matematicamente
// Programaticamente
// Matematicamente
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Operadores de Comparação
= Igual 4=4;5=5
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.9 CONTROLES DE FLUXO
Inicio
Se (Fechamento > Abertura) entao
inicio
PaintBar(clVerde);
fim
Senao Se (Fechamento < Abertura) entao
inicio
PaintBar(clVermelho);
fim
Senao
inicio
PaintBar(clBranco);
fim;
Fim;
Alternativa
Inicio
Se (Fechamento > Abertura) entao PaintBar(clVerde)
Senao Se (Fechamento < Abertura) entao PaintBar(clVermelho)
Senao PaintBar(clBranco);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Parametro
Preco(Fechamento);
Periodo(9);
var
rResultado : Real;
iIndex : Inteiro;
Inicio
// Inicialização de variável
rResultado := 0;
Plot(rResultado / Periodo);
// Alternativa
// Para iIndex := 0 ate Periodo -1 faca rResultado := rResultado + Preco[iIndex];
// rResultado := rResultado / Periodo;
// Plot(rResultado);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ENQUANTO, FAÇA (LOOP CONTROLADO)
o Definição: A execução da estratégia ao chegar no comando ENQUANTO testa o resultado de (condição).
Caso (condição) seja verdadeiro (true) a listagem (comandos) é executada. Após a execução a (condição)
volta a ser testada, assim, o loop apenas irá se encerrar quando (condição) deixar de ser verdadeira.
Parametro
Preco(Fechamento);
Periodo(2);
var
rResultado : Real;
iIndex : Inteiro;
Inicio
// Inicialização de variável
rResultado := 0;
iIndex := 0;
Plot(rResultado / Periodo);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.10 OPERADORES LÓGICOS
• Definição: Uma porta lógica é um 'dispositivo eletrônico' que implementa uma função booleana, uma operação
lógica executada em uma ou mais entradas binárias que produz uma única saída binária.
• Convenção
o [1] = Verdadeiro
o [0] = Falso
A B X = A 'e' B Booleano
1 1 1 Verdadeiro
1 0 0 Falso
0 1 0 Falso
0 0 0 Falso
A B X = A 'ou' B Booleano
1 1 1 Verdadeiro
1 0 1 Verdadeiro
0 1 1 Verdadeiro
0 0 0 Falso
X ou Y
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.11 FUNÇÕES
• Definição: Uma função é um pedaço de código que executa alguma tarefa específica e pode ser chamado de
qualquer parte do programa quantas vezes desejarmos.
• Uma função pode necessitar de alguns dados para que possa realizar alguma ação baseada neles.
• Esses dados são chamados parâmetros da função.
• A função pode retornar um certo valor, que é chamado valor de retorno.
• Os parâmetros (e seus tipos) devem ser especificados explicitamente, assim como o tipo do valor de
retorno.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Início - Função
// Discutir problema com o código
// As barras antes do período não são contadas
// Precisamos usar a função CurrentBar para corrigir
Funcao calcMM(Periodo : Inteiro) : Real;
var
nIndex : Inteiro;
Inicio
Result := 0;
Para nIndex := 0 ate Periodo -1 faca Result := Result + Fechamento[nIndex];
Result := (Result / Periodo);
Fim;
// Fim - Função
// Início - Código
Inicio
rMM := calcMM(Periodo);
Plot(rMM);
Fim;
// Fim - Código
Parametro
index(0);
var
Result : Real;
Inicio
Result := Abs(Abertura[index] - Fechamento[index]);
Plot(Result);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE - BANDAS DE BOLLINGER
// Banda de Bollinger
// Banda Media = Soma do Fechamento de N Periodos / N Periodos
// Banda Superior = BM + (D * DesvPadrao)
// Banda Inferior = BM - (D * DesvPadrao)
// D = Desvio
// DesvPadrao = Fórmula Matemática = StdDevs(Serie, Periodo)
Parametro
Preco(Fechamento);
Periodo(20);
Desvio(2);
var
vContagem : Inteiro;
vPrecoMedio : Real;
vBandaMedia : Real;
vBandaSuperior : Real;
vBandaInferior : Real;
vDesvioPadrao : Real;
Inicio
vPrecoMedio := 0;
vBandaMedia := 0;
vBandaSuperior := 0;
vBandaInferior := 0;
vDesvioPadrao := 0;
// Banda Media
Para vContagem := 0 ate Periodo - 1 faca
inicio
vPrecoMedio := vPrecoMedio + Preco[vContagem];
fim;
// Desvio Padrão
vDesvioPadrao := StdDevs(Preco, Periodo);
// Banda Superior
vBandaSuperior := vBandaMedia + (Desvio * vDesvioPadrao);
// Banda Inferior
vBandaInferior := vBandaMedia - (Desvio * vDesvioPadrao);
// Plotar
Plot(vBandaSuperior);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Plot2(vBandaInferior);
Plot3(vBandaMedia);
// Regra de Coloração
Se (Fechamento > vBandaSuperior) entao
inicio
PaintBar(clVermelho);
fim
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C4 - FUNÇÕES - GRÁFICAS
FUNÇÕES GRÁFICAS BÁSICAS
Função Descrição
RGB Retorna uma cor baseada nos valores de Vermelho, Verde, Azul (Red, Green, Blue).
1. PaintBar
o Função para regra de coloração,
o Pode atribuir cores a candles/barras e a indicadores.
2. Plot
o Função para plotagem,
o Um indicador nada mais é que uma representação visual de uma tabela de valores em forma de um gráfico
com eixo X e Y,
o Por tanto, plotar um gráfico, seja com linhas ou histogramas, nada mais é que marcar pontos num gráfico, e
é exatamente isso que a função Plot faz.
• Coordenadas
o Todo ponto num gráfico de eixo X e Y, possui 2 coordenadas,
• Uma para eixo X
• Uma para eixo Y
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Isso se traduz em: Plot(x,y)
o O eixo X sendo a linha do tempo,
• O ProfitChart entende que o valor de x será sempre o momento no tempo atual, ou seja,
• Como o código é executado a cada mudança de tick (valor), e a cada mudança de tick ós nos
movemos na linha do tempo,
• Afinal estamos indo sempre para o futuro.
• Portanto a função Plot sempre que for executada, irá sempre assumir a hora, minuto e segundo em
que o código foi executado como o nosso valor X.
o O eixo Y sendo o valor (preço ou pontuação),
• Podendo ser também um valor dentro um limite de variação, lembre-se dos osciladores.
o Por tanto para o ProfitChart, a função plot, simplesmente espera que o programador entre com o valor de
Y.
• Linhas
o O ProfitChart permite plotar até 4 indicadores no mesmo código,
o Plot, Plot2, Plot3, Plot4
• Resultado
o A função plota um ponto no gráfico com um valor Y que o programador determina e usa a hora atual como
valor X.
o No caso do indicador de linha, ligam-se esses pontos,
o No caso do histograma, uma barra é pintada com a altura dessa barra sendo o nosso valor Y.
• NoPlot
o Inverso da função Plot.
o Na prática, a função NoPlot não irá plotar um ponto quando solicitado, efetivamente 'pulando' esse
ponto.
• Parâmetro
o NoPlot(numplot)
• numplot: Um número inteiro de 1 a 4, sendo então o número da linha.
• SetPlotColor
o Irá determinar uma cor para nosso indicador, programaticamente.
• Parâmetros
o SetPlotColor(number, color)
• number: Um número inteiro de 1 a 4, sendo então o número da linha.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• color: A cor a ser usada - podendo ser um número inteiro ou uma palavra reservada.
o Nota: Quando determinamos uma cor de forma programática, ela tem prioridade, portanto não sendo
substituída por cores definidas nas propriedades do gráfico.
• SetPlotWidth
o A função irá determinar a espessura da linha sendo plotada.
• Parâmetros
o SetPlotColor(number, width)
• number: Um número inteiro de 1 a 4, sendo então o número da linha.
• width: A espessura a ser usada - um número inteiro.
o Nota: Quando determinamos a espessura de forma programática, ela tem prioridade, portanto não sendo
substituída por cores definidas nas propriedades do gráfico.
• GetPlotColor
o Inverso da função SetPlotColor.
o Retorna um número inteiro com a cor de uma linha específica.
• Parâmetro
o GetPlotColor(PlotNum)
• PlotNum: Um número inteiro de 1 a 4, sendo então o número da linha.
• GetPlotWidth
o Inverso da função SetPlotWidth.
o Retorna um número inteiro com a espessura de uma linha específica.
• Parâmetro
o GetPlotWidth(PlotNum)
• PlotNum: Um número inteiro de 1 a 4, sendo então o número da linha.
• Propriedades da Estratégia
o Botão propriedades da estratégia
• É possível definir parâmetros iniciais do indicador:
▪ Cor.
▪ Espessura das linhas.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Nota: Valores determinados programaticamente tem prioridade e irão sobre escrever esses
determinados aqui.
o Essas configurações são armazenadas junto com o código do indicador e, portanto, sempre iniciadas
quando um novo indicador é adicionado.
• Propriedades do Indicador
o As propriedades do indicador não são salvas com um código e, portanto, tem que ser especificadas toda
vez que um indicador é adicionado.
• Regras de Coloração
o Gráfico
• Fundo do Gráfico
o Candles/Barra
o Indicadores
o Importante
• Ao usar parâmetros - existe distinção valores entrados nas propriedades da Regra de Coloração e
nas propriedades do indicador.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.3 MATERIAL DE SUPORTE
i. Nomenclatura de cores
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
FUNÇÕES GRÁFICAS DE PREÇO
• De preço, porque essas funções de alguma forma ou outra retornarão valores relacionados ao preço.
Função Descrição
AvgPrice Retorna a média entre Abertura, Máxima, Mínima, Fechamento de determinado candle.
TypicalPrice Retorna o valor médio entre a máxima, mínima e fechamento de determinado candle.
Leader Retorna se ponto médio é maior que a máxima ou menor que a mínima de candle anterior.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
FUNÇÕES GRÁFICAS DE INDEXAÇÃO
• De indexação, porque essas funções de alguma forma ou outra retornarão valores relacionados a posição de
uma barra/candle.
Função Descrição
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. GRÁFICAS INDEX
var
index, iVal: Inteiro;
Inicio
// LastBarOnChart
// iVal := CurrentBar;
// Se (LastBarOnChart) entao PaintBar(clAmarelo);
// MaxBarsForward
// index := CurrentBar;
// iVal := MaxBarsForward;
// PaintBar(clAmarelo);
// MaxBarsBack
// index := CurrentBar;
// iVal := MaxBarsBack;
// PaintBar(clAmarelo);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. GRÁFICAS PREÇO
var
rVal : Real;
Inicio
// AvgPrice
// rVal := (Maxima + Minima + Abertura + Fechamento) / 4;
// Plot(AvgPrice);
// Range
// rVal := (Maxima - Minima);
// Plot(Range);
// MedianPrice
// rVal := (Maxima + Minima) / 2;
// Plot(MedianPrice);
// TypicalPrice
// rVal := (Maxima + Minima + Fechamento) / 3;
// Plot(TypicalPrice);
// WeightedClose
// rVal := (Maxima + Minima + Fechamento + Fechamento) / 4;
// Plot(WeightedClose);
// TrueHigh
// Se (Maxima >= Fechamento[1]) entao rVal:=Maxima senao rVal:=Fechamento[1];
// Plot(TrueHigh);
// TrueLow
// Se (Minima <= Fechamento[1]) entao rVal:=Minima senao rVal:=Fechamento[1];
// Plot(TrueLow);
// TrueRange
// rVal := TrueHigh - TrueLow; // 11.400,00 - 06/04/2020
// rVal := Maxima - Fechamento[1]; // 11.400,00 - 06/04/2020
// Plot(TrueRange);
// Plot2(rVal);
// Leader
// Candle Leader : Midpoint[0] > Maxima[1] ou Midpoint[0] < Minima[1]
// rVal := (Abertura + Fechamento) / 2; // Midpoint
// Plot(rVal);
// Se (Leader = 0) entao paintbar(clpurpura);
// Se (Leader = 1) entao paintbar(clazul);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// RangeLeader
// Candle RangeLeader : (Leader[0] = 1) e (Range[0] > Range[1])
// rVal := (Abertura + Fechamento) / 2; // Midpoint
// Plot(rVal);
// Se (RangeLeader = 0) entao paintbar(clpurpura);
// Se (RangeLeader = 1) entao paintbar(clazul);
// Plot(Range[0]);
// Plot2(Range[1]);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C5 - FUNÇÕES - MATEMÁTICAS
FUNÇÕES MATEMÁTICAS
Função Descrição
Round2Fraction
Gcd
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Cum Acumula o valor de uma série, desde a primeira barra até a atual.
PriceOscillator Calcula a diferença entre a Média Móvel Lenta e a Média Móvel Rápida.
VolumeOsc Calcula a diferença entre a Média Móvel Lenta e a Média Móvel Rápida do volume.
PercentR Retorna uma porcentagem de onde o preço atual está, relacionada com a faixa de
negociação avaliada.
TriAverage Calcula a média triangular de uma série de dados dentro de um certo período.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.2 FUNÇÕES MATEMÁTICAS - GEOMÉTRICAS
Função Descrição
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. MATEMÁTICA
var
rVal : Real;
Inicio
// Funções Matemáticas
// Neg
// Retorna o valor negativo de um número
// rVal := Neg(5.32); // rVal = -5.32
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// rVal := Square(3); // rVal = 9
// Mod
// Retorna o resto da divisão
// rVal := Mod(1,3);
// Combination
// Z = {10, 20, 30, 40}
// Combinar em grupos de 2 :
// {10, 20} e {10, 30} e {10, 40} e {20, 30} e {20, 40} e {30, 40}
// rVal := Combination(4, 2); // rVal = 6
// Factorial
// Fatorial de um número
// Fatorial de 4 : 1 x 2 x 3 x 4 ... x N
// rVal := Factorial(4); // rVal = 24
// Permutation
// Encontra a relação de Permutação - sem repetição e sem ordem necessária
// rVal := Permutation(4, 3);
// Random
// Retorna um valor aleatório entre 0 e n-1, onde n > 1
// n:1 >> 0 e 1-1 : 0
// n:2 >> 0 e 2-1 : 1
// n:99 >> 0 e 99-1 : 98
// rVal := Random(99);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Highest
// Maior valor em um período
// Pode ser Série de Dados ou Indicador
// rVal := Highest(Minima, 2);
// Lowest
// Menor valor em um período
// Pode ser Série de Dados ou Indicador
// rVal := Lowest(Maxima, 2);
// HighestBar
// Índice do maior valor em relação a barra atual
// Número de barras atrás
// Pode ser Série de Dados ou Indicador
// rVal := HighestBar(Maxima,12);
// LowestBar
// Índice do menor valor em relação a barra atual
// Número de barras atrás
// Pode ser Série de Dados ou Indicador
// rVal := LowestBar(Maxima,12);
// PriceOscillator
// Diferença entre MM Rápida (Curta) e MM Lenta (Longa)
// rVal := PriceOscillator(Fechamento, 9, 21);
// Plot(Media(9, Fechamento) - Media(21, Fechamento));
// VolumeOsc
// Diferença entre MM Rápida (Curta) e MM Lenta (Longa) do Volume
// rVal := VolumeOsc(9, 21);
// Plot(PriceOscillator(Volume, 9, 21));
// UlcerIndex
// Estuda o nível de stress do mercado
// rVal := UlcerIndex(Fechamento, 3);
// PercentR
// Retorna a % do preço em relação a um período
// rVal := 100 * ( (Highest(Maxima, 3) - Fechamento) / (Highest(Maxima, 3) -
Lowest(Minima, 3) ) );
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// rVal := PercentR(3);
// NumUnits
// Número de contratos para um determinado investimento
// (x, y) onde x = Quantidade de dinheiro ; y = mínimo n de contratos
// rVal := NumUnits(40, 1);
// HarmonicMean
// Média harmonica - 2 relações inversamente proporcionais
// Exemplo - velocidade de um carro e tempo
// Percurso 100 km : 1/2 a 100km/h e 1/2 a 50km/h = 1.5 horas
// Média Simples : ( 100 + 50 ) / 2 : 75km/h = 1.33 horas
// Média Harmonica : 2 / (1/100 + 1/50) : 66.6km/h = 1.5 horas
// Pode ser Série de Dados ou Indicador
// rVal := 2 / ( (1/79300) + (1/78415);
// Plot(HarmonicMean(Fechamento, 2));
// Plot2(rVal);
// Geométricas
// Arctangent // Retorna o arco-tangente de um número em graus
// Tangent // Retorna a tangente de um número em graus
// Cotangent // Retorna a cotangente de um número em graus
// Cos // Retorna o cosseno de um número (radianos)
// Cosine // Retorna o cosseno de um número em graus
// Sin // Retorna o seno de um número (radianos)
// Sine // Retorna o seno de um número em graus
Plot(rVal);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C6 - FUNÇÕES - CALENDÁRIO
FUNÇÕES CALENDÁRIO
2. Hora (Time)
HH MM
Horas Minutos
Formato 24h.
Função Descrição
DayOfWeek Retorna O dia do mês de uma determinada data. [Consultar tabela abaixo]
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Tuesday Retorna 2 para Terça-Feira.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Tabela Tipo da Barra (BarType)
Valor Descrição
0 TickBar
1 Intraday
2 Diário
3 Semanal
4 Mensal
Valor Descrição
0 Domingo
1 Segunda-Feira
2 Terça-Feira
3 Quarta-Feira
4 Quinta-Feira
5 Sexta-Feira
6 Sábado
Função Descrição
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Função Descrição
Função Descrição
Função Descrição
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.7 FUNÇÕES CALENDÁRIO - SÉRIES DE DADOS - VOLUME
Função Descrição
Função Descrição
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. CALENDÁRIO
var
rVal : Real;
iVal : Inteiro;
Inicio
// Funções Calendário
// Date (Data)
// Retorna a Data da barra em estudo
// em formato EasyLanguage:
// EL : YYYMMDD >> AAAMMDD onde : (A)no / (M)ês / (D)ia
// AAA >> 1-AA >> +2000, exemplo : 100:[2000], 101:[2001] ... 120:[2020]
// AAA >> 0-AA >> +1900, exemplo : 000:[1900], 098:[1998] ... 99:[1999]
// iVal := Date;
// Time
// Retorna o Horário de fechamento* (abertura) da barra em estudo
// em formato EasyLanguage:
// EL : HHMM >> (H)ora / (M)inuto
// Exemplo : 0900 = 900 = 9h da manhã / 1333 = 1h da tarde
// iVal := Time;
// CurrentDate
// Retorna Data atual (sistema - barra inferior) - formato EL
// iVal := CurrentDate;
// CurrentTime
// Retorna Hora atual (sistema - barra inferior) - formato EL
// iVal := CurrentTime;
// DayOfMonth
// Retorna o dia do mês de uma determinada data em formato (DD)
// iVal := CurrentDate; // 120-05-23
// iVal := DayOfMonth(CurrentDate);
// Month
// Retorna o mês de uma determinada data em formato (MM)
// iVal := CurrentDate; // 120-05-23
// iVal := Month(CurrentDate);
// Year
// Retorna o ano de uma determina data em formato (YYYY)
// iVal := CurrentDate; // 120-05-23
// iVal := Year(CurrentDate);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// 2 = Diário
// 3 = Semanal
// 4 = Mensal
// 5 = Point & Figure
// iVal := BarType;
// DayOfWeek
// Retorna O dia do mês de uma determinada data
// 0 = Domingo
// 1 = Segunda-Feira
// 2 = Terça-Feira
// 3 = Quarta-Feira
// 4 = Quinta-Feira
// 5 = Sexta-Feira
// 6 = Sábado
// iVal := CurrentDate; // 120-05-23
// iVal := DayOfWeek(1200512);
// Monday
// Retorna 1 para Segunda-Feira
// iVal := Monday;
// Tuesday
// Retorna 2 para Terça-Feira
// iVal := Tuesday;
// Wednesday
// Retorna 3 para Quarta-Feira
// iVal := Wednesday;
// Thursday
// Retorna 4 para Quinta-Feira
// iVal := Thursday;
// Friday
// Retorna 5 para Sexta-Feira
// iVal := Friday;
// Saturday
// Retorna 6 para Sábado
// iVal := Saturday;
// Sunday
// Retorna 0 para Domingo
// iVal := Sunday;
// LastCalcDate
// Retorna a data de abertura da última barra completa em formato EL
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Útil com mercado aberto
// iVal := LastCalcDate;
// LastCalcTime
// Retorna o horário de abertura da última barra completa em formato EL
// iVal := LastCalcTime;
// LastDayOfMonth
// Retorna o último dia do mês (DD)
// iVal := LastDayOfMonth(Month(CurrentDate));
// TimeToMinutes
// Converte horário (HHMM) em minutos
// iVal := TimeToMinutes(CurrentTime); // Usa hora da barra inferior
// iVal := TimeToMinutes(1532);
// MinutesIntoWeek
// Minutos desde Domingo 12 am (meia-noite) até data determinada
// XDay : [0-6] // XTime : Hora
// iVal := MinutesIntoWeek(1, 0000);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Se (FindBar(ELDate(2020, 03, 05), 1000) = 0) entao PaintBar(clAmarelo);
// RS_BarsPerDay
// Retorna número de barras de acordo com periodicidade
// Não considera mercado aberto ou fechado - contagem é total
// iVal := RS_BarsPerDay;
// Next3rdFriday
// Retorna o número de dias até a próxima terceira sexta-feira do mês
// Series : Meses a frente, onde:
// 0 : Mês atual
// 1 : Próximo Mês ...
// Não conta dias de mercado fechado
// iVal := Next3rdFriday(0);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// 1D : 19.10 = Sqrt(365)
// 1S : 7.21 = Sqrt(52)
// 1M : 3.46 = Sqrt(12)
// rVal := BarAnnualization;
// Plot(iVal);
// Plot(rVal);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C7 - FUNÇÕES - CANDLESTICK
FUNÇÕES DE CANDLE
Função Descrição
1.2 C_DOJI
• Identifica um candle Doji.
• Definição:
Uma barra Doji tem corpo pequeno, onde o fechamento é igual, ou muito próximo, ao valor de abertura.
• Parâmetros:
Nome Padrão Descrição
Percent (Porcentagem) 5 Limite do Doji para (Abertura - Fechamento) como uma porcentagem da
amplitude da barra.
Doji
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.3 C_SHOOTINGSTAR
• Identifica um candle Estrela Cadente.
• Definição:
O corpo do candle é pequeno, porém não é Doji.
O candle é de alta.
O candle está acima do candle anterior.
O candle anterior é de alta e maior que o candle médio.
• Parâmetros:
Estrela Cadente
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.4 C_3WHSOLDS_3BLKCROWS
• Identifica:
o 3 White Soldiers / 3 Black Crows.
o 3 Soldados Brancos / 3 Corvos Negros.
• Parâmetros:
3 Soldados Brancos
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.5 C_BULLENG_BEARENG
• Identifica:
o Bullish Engulfing - Engolfo de Alta (Touro)
o Bearish Engulfing - Engolfo de Baixa (Urso)
• O Engolfo de Alta pode ser considerado um padrão de reversão de ALTA, e a MINIMA pode ser usado como
nível de suporte.
• O Engolfo de Baixa pode ser considerado um padrão de reversão de BAIXA, e a MÁXIMA pode ser usado como
nível de suporte.
• Parâmetros:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.6 C_HAMMER_HANGINGMAN
• Identifica:
o Hammer (Martelo)
o Hanging Man (Homem Enforcado)
• Definição - Martelo:
O corpo do candle está na metade superior do candle e a sombra geralmente tem o dobro do
comprimento do corpo.
A tendência é de baixa.
Pode ser um candle vermelho ou verde, mas não um Doji.
• O Martelo pode ser considerado um padrão Bullish (Touro) de reversão de ALTA que precisa de confirmação.
• O Homem Enforcado pode ser considerado um padrão Bearish (Urso) de reversão de BAIXA que precisa de
confirmação.
• Parâmetros:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.7 C_MORNDOJI_EVEDOJI
• Identifica:
o Morning Doji (Doji da Manhã)
o Evening Doji (Doji da Tarde)
• Parâmetros:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.8 C_MORNSTAR_EVESTAR
• Identifica:
o Morning Star (Estrela da Manhã)
o Evening Star (Estrela da Tarde)
• Parâmetros:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.9 C_PIERCELINE_DKCLOUD
• Identifica:
o Piercing Line (Linha Penetrante)
o Dark Cloud (Nuvem Escura)
• Parâmetros:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.10 C_INSIDEBAR
• Identifica Candle InsideBar.
• Definição :
o Máxima menor que a máxima anterior e mínima maior que a mínima anterior;
• Fórmula: (Maxima < Maxima[1]) e (Minima > Minima[1])
o Retorna 1: Verdadeiro
o Retorna 0: Falso
// Função - InsideBar
// Retorna 1 : Verdadeiro
// Retorna 0 : Falso
var
Result : Inteiro;
Inicio
Se ( (Maxima < Maxima[1]) e (Minima > Minima[1]) ) entao Result := 1 Senao Result :=
0;
Plot(Result);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. CANDLESTICK
var
iVal: Inteiro;
rVal: Real;
Inicio
// Funções CandleStick
// C_Doji
// C_3WhSolds_3BlkCrows
// C_BullEng_BearEng
// C_Hammer_HangingMan
// C_MornDoji_EveDoji
// C_MornStar_EveStar
// C_PierceLine_DkCloud
// #########################################################
// C_Doji
// Definição de Barra Doji:
// O corpo do candle é pequeno,
// O fechamento é igual, ou muito próximo, ao valor da abertura,
// de acordo com uma %.
// iVal := C_Doji(5);
// Se (iVal = 1) entao PaintBar(clAmarelo);
// #########################################################
// C_ShootingStar
// Definição de Barra Shooting Star (Estrela Cadente):
// 1. O corpo do Candle é pequeno, porém não é Doji
// 2. O candle é está em uma alta
// 3. O candle está acima do candle anterior
// 4. O candle anterior é de alta e maior que o candle médio
// iVal := C_ShootingStar(14 ,2);
// Se (iVal = 1) entao PaintBar(clAmarelo);
// #########################################################
// C_3WhSolds_3BlkCrows
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// - 3 White Soldiers / 3 Black Crows
// - 3 Soldados Brancos / 3 Corvos Negros
// #########################################################
// C_BullEng_BearEng
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// #########################################################
// C_Hammer_HangingMan
// Martelo - Condições:
// 1. O corpo da barra está na metade superior da barra e a cauda geralmente tem o
dobro do comprimento do corpo.
// 2. A tendéncia é de baixa.
// 3. Pode ser uma barra vermelha ou verde, mas não um Doji.
// O Martelo pode ser considerado um padrão Bullish de reversão de ALTA que precisa de
confirmação.
// Homem Enforcado pode ser considerado um padrão Bearish de reversão de BAIXA que
precisa de confirmação.
// #########################################################
// C_MornDoji_EveDoji
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Seguida por uma barra Doji que se forma acima,
// A terceira é uma barra vermelha que se fecha no corpo das primeiras barras.
// 2. O corpo da primeira barra precisa ser maior que o corpo médio das barras
anteriores.
// #########################################################
// C_MornStar_EveStar
// #########################################################
// C_PierceLine_DkCloud
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Piercing Line & Dark Cloud
// Linha Penetrante & Nuvem Escura
// #########################################################
// C_InsideBar
// rVal := C_InsideBar;
// Se (rVal = 1) entao PaintBar(clAmarelo);
// Plot(iVal);
// Plot(rVal);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C8 - SETUP - BARRA REJEITADA
O SETUP - BARRA REJEITADA
1.4 ENTRADA
• No terceiro candle, ao romper máxima + (respiro) da Barra Rejeitada.
1.5 STOP
• Mínima - (respiro) da Barra Rejeitada.
1.6 ALVO
• Recomendado 100% de Fibonaci.
1.7 'RESPIRO'
• Refere-se a um valor de compensação para o mercado, normalmente um pequeno valor acima ou abaixo dos
valores de entrada e saída, dependendo da direção.
• Ajuda a evitar movimentos bruscos de mercado que acontecem para atingir metas de investidores pequenos.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
2.2 NA PONTA DA COMPRA
• Barra de Ignição deve ser uma Barra de ALTA = Fechamento > Abertura.
• Pintar a Barra de Verde.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE B.R. REGRA COLORAÇÃO
Parametro
// Parâmetros Barra de Ignição
RazaoCorpoBarraIgnicao(2); // Proporção do corpo da Barra de Ignição em relação
as barras anteriores [1] [2] [3].
RazaoSombraBarraIgnicao(0.35); // Proporção das sombras da Barra de Ignição em
relação ao próprio corpo.
// Parâmetros Barra Rejeida
RazaoCorpoBarraRejeitada(0.5); // Proporção do corpo da Barra Rejeitada em relação
corpo da Barra de Ignição.
RazaoSombraBarraRejeitada(2); // Proporção das sombras da Barra Rejeitada em relação
ao próprio corpo.
var
cp0, cp1, cp2, cp3 : Real;
sab, sbb, sap, sbp : Real;
BarraIgnicaoIndex : Inteiro;
TipoBarraIgnicao : Inteiro;
Inicio
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Senao Se ( (Fechamento < Abertura) e (sap < (cp0 * RazaoSombraBarraIgnicao)) e (sbp <
(cp0 * RazaoSombraBarraIgnicao)) ) entao
inicio
PaintBar(clVermelho); BarraIgnicaoIndex := CurrentBar; TipoBarraIgnicao := 1;
fim
Senao TipoBarraIgnicao := 0;
// 2 = Barra de Ignição de Alta (Branca)
// 1 = Barra de Ignição de Baixa (Preta)
// 0 = Não é uma Barra de Ignição
fim
// Teste Barra Rejeitada
Senao Se (CurrentBar = BarraIgnicaoIndex + 1) entao
inicio
fim;
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE B.R. PLOTAGEM
Parametro
// Parâmetros Barra de Ignição
RazaoCorpoBarraIgnicao(2); // Proporção do corpo da Barra de Ignição em relação
as barras anteriores [1] [2] [3].
RazaoSombraBarraIgnicao(0.35); // Proporção das sombras da Barra de Ignição em
relação ao próprio corpo.
// Parâmetros Barra Rejeida
RazaoCorpoBarraRejeitada(0.5); // Proporção do corpo da Barra Rejeitada em relação
corpo da Barra de Ignição.
RazaoSombraBarraRejeitada(2); // Proporção das sombras da Barra Rejeitada em relação
ao próprio corpo.
var
cp0, cp1, cp2, cp3 : Real;
sab, sbb, sap, sbp : Real;
BarraIgnicaoIndex : Inteiro;
TipoBarraIgnicao : Inteiro;
vEntrada, vStop, vAlvo : Real;
isEntrada : Booleano;
Inicio
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Senao Se ( (Fechamento < Abertura) e (sap < (cp0 * RazaoSombraBarraIgnicao)) e (sbp <
(cp0 * RazaoSombraBarraIgnicao)) ) entao
inicio
PaintBar(clVermelho); BarraIgnicaoIndex := CurrentBar; TipoBarraIgnicao := 1;
fim
Senao TipoBarraIgnicao := 0;
// 2 = Barra de Ignição de Alta (Branca)
// 1 = Barra de Ignição de Baixa (Preta)
// 0 = Não é uma Barra de Ignição
fim
// Teste Barra Rejeitada
Senao Se (CurrentBar = BarraIgnicaoIndex + 1) entao
inicio
fim;
// Barra de Ignição foi encontrada e & Barra Rejeitada também foi encontrada
Se (isEntrada) entao
inicio
// Plotagem
Plot(vEntrada);
Plot2(vStop);
Plot3(vAlvo);
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Se (CurrentBar >= BarraIgnicaoIndex + 2) entao
inicio
// Teste para confirmar se houve entrada
Se (
( (TipoBarraIgnicao = 1) e (Fechamento > vEntrada) ) ou
( (TipoBarraIgnicao = 2) e (Fechamento < vEntrada) )
) entao
inicio
isEntrada := falso; // Caso não houver entrada - resetar a nossa variável
booleana
fim
// Se houver a entrada - testar onde ocorreu a saída
Senao Se (
( (TipoBarraIgnicao = 1) e ((Minima <= vAlvo) ou (Maxima >= vStop)) ) ou
( (TipoBarraIgnicao = 2) e ((Maxima >= vAlvo) ou (Minima <= vStop)) )
) entao
inicio
// Saída detectada - Zerar variável e pintar Candle
isEntrada := falso;
paintBar(clAzul);
fim;
fim;
fim;
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C9 - FUNÇÕES - INDICADORES
MÉDIAS MÓVEIS
• Funções
o Media
o MediaExp
Parametro
MediaLonga(21);
MediaCurta(9);
// Series de Dados - Preco(Fechamento)
Exponencial(Verdadeiro);
var
vValor : Real;
vValor2 : Real;
Inicio
// Médias Móveis
Se (Exponencial) entao
inicio
vValor := MediaExp(MediaLonga, Fechamento); // MM Lenta
vValor2 := MediaExp(MediaCurta, Fechamento); // MM Rápida
fim
Senao
inicio
vValor := Media(21, Fechamento); // MM Lenta
vValor2 := Media(9, Fechamento); // MM Rápida
fim;
Plot(vValor);
Plot2(vValor2);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
MACD
• Funções
o MACD
Parametro
MediaLonga(26);
MediaCurta(12);
Sinal(9);
Coloracao(verdadeiro);
var
vMACD : Real;
vSinal : Real;
vHistograma : Real;
Inicio
Plot(vMACD);
Plot2(vSinal);
Plot3(vHistograma);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ACUMULAÇÃO DISTRIBUIÇÃO
• Funções
o AccuDistr
o AccuDistrW
Inicio
// AccuDistr - Original
// AccuDistrW - Williams
Plot(AccuDistr);
Plot2(AccuDistrW);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ÍNDICE DIRECIONAL MÉDIO
• Funções
o ADX
o DiPDiM
Parametro
Periodo(14);
var
vADX : Real;
vDiP : Real;
vDiN : Real;
Inicio
// ADX
vADX := ADX(Periodo, 9);
Plot(vADX);
Plot2(vDiP);
Plot3(vDiN);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ESTOCÁSTICO
• Funções
o SlowStochastic
o FastStochastic
o FullStochastic
o SlowK
o FastD
o FastK
var
vSSt : Real;
vFSt : Real;
vFullSt : Real;
vSK : Real;
vFD : Real;
vFK : Real;
Inicio
// Estocástico
vFSt := FastStochastic(8);
vSSt := SlowStochastic(8);
vFullSt := FullStochastic(8);
vSK := SlowK(8);
vFD := FastD(8);
vFK := FastK(8);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CCI
• Funções
o CCI
var
vCCI : Real;
Inicio
// CCI
vCCI := CCI(14);
Plot(vCCI);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
OBV
• Funções
o OBV
o OBVAvg
var
vOBV : Real;
vOBVAvg : Real;
Inicio
// OBV
vOBV := OBV;
vOBVAvg := OBVAvg(10, 0); // 0 = Aritmética // 1 = Exponencial // 2 = Welles Wilder //
3 = Ponderada
Plot(vOBV);
Plot2(vOBVAvg);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
RSI
• Funções
o RSI
Var
vRSI : Real;
Inicio
// RSI
Plot(vRSI);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
BANDAS DE BOLLINGER
• Funções
o BollingerBands
o BollingerBandW
o BollingerBPerc
var
vBB : Real;
vBBW : Real;
vBBP : Real;
Inicio
// Bandas de Bollinger
vBB := BollingerBands(2, 20, 0); // |0| = Banda Superior // |1| = Banda Inferior //
Para plotar banda média, usar Desvio em número inteiro ex. (2)
vBBW := BollingerBandW(2.00, 20, 0); // W = Width = Largura
vBBP := BollingerBPerc(2.00, 20, 0); // Perc = Percentual
Plot(vBBP);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
MÉDIAS MÓVEIS
MÉDIAS MÓVEIS
• Definição: Uma média móvel é o preço médio de uma ação em um período de tempo definido.
1.1 OBJETIVO
• Variações no movimento dos preços podem dificultar a análise da tendência geral de um ativo.
• Ao traçar o preço médio de um ativo, o movimento do preço é suavizado.
o Com flutuações do dia-a-dia removidas - melhor visão da verdadeira tendência.
1.2 USO
• Confirmar tendências, ou apontar possíveis reversões de tenências.
• Estabelecer níveis de suporte e resistência.
1.3 TIPO
• Indicador baseado em preço.
1.4 BÁSICO
• Como regra geral, Médias Móveis usam preços passados em seus cálculos.
• Os cálculos diferem apenas no que diz respeito à ponderação é colocada nos dados de preços. Exemplos:
o Ponderação igual de cada ponto de preço;
o Mais peso sendo colocado em dados recentes.
• Períodos, é termo usado para determinar quantos preços no passado a média móvel irá usar em seus cálculos.
Médias Móveis curtas ou rápidas Poucos períodos em seus cálculos
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.5 MÉDIA MÓVEL SIMPLES (ARITMÉTICA)
• Este é o método mais comum usado para calcular a média móvel de preços.
• Simplesmente pega a soma de todos os preços de fechamento anteriores no período e divide o resultado pelo
número de preços usados no cálculo.
o Por exemplo, em uma média móvel de 10 dias, os últimos 10 preços de fechamento são somados e depois
divididos por 10.
• Para tornar a média menos responsiva às mudanças de preços aumenta-se o número de períodos utilizados no
cálculo.
• Aumentar o número de períodos no cálculo auxilia a avaliar a força da tendência de longo prazo e a probabilidade
de que ela reverta.
• Matematicamente
o Onde:
•
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.6 MÉDIA MÓVEL PONDERADA LINEAR
• É o menos comum dos três e é usado para resolver o problema da ponderação igual.
• É calculada pegando a soma de todos os preços de fechamento durante um determinado período e
multiplicando-os pela posição do ponto de dados e depois dividindo pela soma do número de períodos.
o Por exemplo, em uma média ponderada linear de cinco dias, o preço de fechamento de hoje é
multiplicado por cinco, o de ontem por quatro e assim sucessivamente, até que o primeiro dia do período
seja atingido. Esses números são então somados e divididos pela soma dos multiplicadores.
• Matematicamente
o Onde:
•
• Matematicamente
o Onde:
•
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
o Observação:
•
1.6 INTERPRETAÇÃO
• Existem vários tipos diferentes de médias móveis que variam na maneira como são calculados
• A forma como cada média é interpretada permanece a mesma.
• Exemplo
• Observar a ordem de um par de médias móveis.
o Uma média de curto prazo acima de uma média de longo prazo, indica tendência de ALTA.
o Uma média de longo prazo acima de uma média de curto prazo, indica tendência de BAIXA.
• Observar o comportamento do preço em relação a uma média móvel.
1.7 SINAIS
• Atento a cruzamentos entre médias móveis de longo e curto prazo.
• Atento a cruzamento entre o preço e uma ou um par de médias móveis.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
MACD
MOVING AVERAGE CONVERGENCE DIVERGENCE
• Definição: O MACD é um cálculo da diferença entre duas médias móveis exponenciais (MMEs) dos preços de
fechamento. Essa diferença é representada ao longo do tempo, juntamente com uma média móvel da
diferença. A divergência entre os dois é mostrado como um histograma.
1.1 OBJETIVO
• As médias móveis exponenciais destacam mudanças recentes no preço de uma ação.
• Ao comparar MMEs de diferentes períodos, a linha MACD ilustra mudanças na tendência de uma ação.
• Então, comparando essa diferença com uma média, um analista pode traçar mudanças sutis na tendência das
ações.
1.2 USO
• Confirmar tendências, ou apontar possíveis reversões de tenências.
• Como métrica das tendências de preços, o MACD é menos útil para ações que não estão em alta ou estão
negociando de forma irregular.
1.3 TIPO
• Indicador Oscilador atrasado baseado em preço.
1.4 BÁSICO
• Componentes básicos do MACD
o
• Matematicamente
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.5 PERÍODOS
• O período para as médias móveis nas quais um MACD se baseia podem variar,
• Mas os parâmetros mais comumente usados são:
MME lenta 26 Períodos
1.6 INTERPRETAÇÃO
• 3 sinais significativos gerados pelo indicador MACD:
Quando:
o A linha MACD cruza a linha de sinal; ou
o A linha MACD cruza zero; ou
o Existe uma divergência entre a linha MACD e o preço da ação ou entre o histograma e o preço da ação.
• Matematicamente isso corresponde a:
o MACD - Sinal = 0
o MME[rápida,12] - MME[lenta,26] = 0
o Sinal (preço relativo extremo final - preço relativo extremo inicial) ≠ Sinal (preço relativo extremo - MACD
extremo inicial)
1.7 CRUZAMENTOS
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Quando as linhas Não há diferença entre Graficamente isso Uma barra de valor 0 no
cruzam elas significa Histograma.
Movimentação do Histograma
o Definição: O histograma ajuda a visualizar quando as duas linhas (MACD e Sinal) estão se aproximando de
um cruzamento.
• O tamanho da diferença entre as Linhas MACD e Sinal é representado pelo tamanho da barra no
Histograma.
• Portanto, o tamanho da Barra no Histograma pode indicar a aceleração de uma tendência.
Barras no Histograma diminuindo sugere que um cruzamento pode estar se aproximando.
Barras no Histograma crescendo sugere que uma tendência já definida pode ficar ainda mais forte.
1.8 DIVERGÊNCIAS
Divergências entre Linha MACD e Preços
o Definição: Refere-se a uma discrepância entre a linha MACD e o gráfico do preço das ações.
Divergência Positiva entre MACD e o Surge quando o preço atinge um novo nível mais baixo, mas o
Preço MACD não.
Divergência Negativa entre MACD e o Surge quando o preço atinge um novo nível mais alto, mas o
Preço MACD não.
o Interpretação:
Divergência Positiva Isso é interpretado como otimista, sugerindo que uma tendência de baixa pode estar
quase no fim.
Divergência Negativa Isso é interpretado como pessimista, sugerindo que os recentes aumentos de preços
não continuarão.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Níveis baixos de Não confirmados por Novos níveis baixos de Considerado um indicativo de
preços histograma ALTA.
Falso negativo Uma situação em que não houvesse cruzamento de alta, mas o preço acelerara
subitamente.
o Uma estratégia prudente seria aplicar um filtro para sinalizar continuação do movimento.
• Exemplo: Ao ocorrer o cruzamento entre as linhas de MACD e Sinal, aguardar 3 períodos para
confirmar movimentação.
▪ Como em qualquer estratégia de filtragem,
• Reduz tanto a probabilidade de sinais falsos quanto a frequência de perda de lucro.
• Reduz também o lucro com operações acontecendo após confirmação.
1.10 LIMITAÇÕES
• O MACD é normalmente criticado por não responder em condições de mercado de volatilidade muito baixa ou
alternativamente muito alta.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Como o MACD mede a divergência entre as médias, ele pode fornecer feedback significativo apenas à medida
que as tendências mudam.
• Assim, o MACD é menos útil se o mercado não estiver em tendência, ou seja, se estiver lateral ou se estiver
variando de forma irregular, realizando movimentos repentinos, dramáticos ou compensatórios.
• Em um mercado lateral:
o A divergência entre médias não terá uma tendência para apontar.
• Em um mercado irregular:
o As mudanças acontecerão rápido demais para serem detectadas pelas médias móveis ou serão
canceladas uma pela outra, diminuindo a utilidade dos MACDs.
• Uma ressalva parcial a essa crítica é que se um mercado é tendencioso ou volátil, isso será sempre em relação a
um determinado período
o Portanto o MACD pode ser ajustado para períodos mais curtos ou mais longos para compensar por isso.
• Para investidores mais tradicionais, um indicador como o MACD pode ser usado apenas para confirmar uma
decisão previamente determinada ou para selecionar um ponto de entrada ideal.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ACCUDISTR
ACUMULAÇÃO / DISTRIBUIÇÃO (ACCUMULATION / DISTRIBUTION)
1.1 OBJETIVO
• Avaliar oferta e demanda de um ativo.
• Ajudar a antecipar movimento dos preços pós momentos de congestão (preço lateral).
1.2 USO
• Verificar as tendências de preços ou para detectar potenciais mudanças de tendência nos preços.
1.3 TIPO
• Indicador de Momento baseado em volume. Antecipa o movimento dos preços.
1.4 O AD VS WAD
• AD : Indicador tradicional - Utiliza preços do período corrente e uma parcela do volume.
• WAD : Indicador de LW - Utiliza preços de períodos anteriores. (Consenso é de que melhora o desempenho).
1.5 BÁSICO
• O Indicador mensura a pressão compradora e a pressão vendedora.
• Desta forma emite sinais que ajudam a identificar se o mercado está em fase Acumulação ou Distribuição:
Fase de Acumulação
o Movimento lateral que antecede a tendência de alta.
o Ótimo momento para compra. Para isso requer informações de alta qualidade.
Fase de Distribuição
o Movimento lateral que antecede a tendência de baixa.
o Ótimo momento para venda. Para isso requer informações de alta qualidade.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Mas se o preço aumenta e o volume cai ou o contrário é sinal de divergência, indicando que podemos ver uma
mudança iminente no preço do ativo.
• Por exemplo: se o indicador está se movendo para cima e o preço do ativo caindo, provavelmente ocorrerá
uma reversão que pode ser bearish (tendência do urso, de derrubar os preços) ou bullish (tendência do touro,
de elevar os preços).
1.6 INTERPRETAÇÃO
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ADX
ÍNDICE DIRECIONAL MÉDIO (AVERAGE DIRECTIONAL INDEX)
1.1 OBJETIVO
• Medir força e direção de uma tendência.
1.2 USO
• Embasar ou confirmar estratégias.
1.3 TIPO
• Indicador oscilador baseado em preço.
Criado por: Welles Wider
1.5 BÁSICO
Tendência do preço é de subir.
Reversão de tendência.
CONFIGURAÇÃO: Recomendado, P: 14
1.6 INTERPRETAÇÃO
Limite de VARIAÇÃO: 0 a 100
0 - 25 Tendência fraca - movimento pouco significativo
50 - 75 Tendência forte
75+ Raro
1.7 SINAIS
• Atento a cruzamentos entre +DI & -DI & Atento a linha ADX
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
ESTOCÁSTICO
OSCILADOR ESTOCÁSTICO
• Definição: O oscilador estocástico é um indicador de momento que utiliza níveis de suporte e resistência. O
termo estocástico refere-se à localização de um preço atual em relação à sua faixa de preço durante um
período.
1.1 OBJETIVO
• Tenta prever os pontos de virada do preço ao comparar o preço de fechamento de um ativo com sua própria
taxa de variação de preço.
1.2 TIPO
• Indicador oscilador de momento baseado em preço.
Criado por: George Lane
1.3 BÁSICO
• O indicador é definido matematicamente como:
• Rápido:
• Lento:
• Os cálculos acima encontram o intervalo entre a Alta e a Mínima de um ativo durante um determinado período.
• O preço atual do ativo é então expresso como uma porcentagem desse intervalo, onde:
o 0% a parte inferior do intervalo e 100% indicando os limites superiores do intervalo ao longo do período
estudado.
• A ideia por trás desse indicador é que os preços tendem a fechar perto dos extremos da faixa recente antes dos
pontos de virada.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.4 LINHAS ESTOCÁSTICO
%K Fornece um sinal de antecipação
1.5 INTERPRETAÇÃO
• O oscilador estocástico é baseado numa variação limite, o que significa que está sempre entre 0 e 100.
• Isso o torna um indicador de condições de sobre compra e sobre venda.
SOBRE COMPRADO Próximo a 100
1.6 SINAIS
• O Principal sinal para agir utilizando um indicador estocástico é quando houver:
o Uma divergência em uma das áreas extremas.
o Com um cruzamento entre as linhas.
• Cruzamentos simples entre as linhas podem ocorrer com muita frequência, por tanto o ideal é esperar que
esses cruzamentos ocorram em áreas de extremidade.
• Onde áreas extremas, são as áreas do indicador próximo ao valor 0 ou valor 100.
• Os preços tendem a fechar perto dos extremos pouco antes de pontos de virada.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Os preços tendem a elevar-se, fazendo máximas mais altas.
• A linha do estocástico geralmente buscará a extremidade superior (80-100).
• Quando o momento começa a desacelerar, A linha do estocástico começará a recuar da
extremidade superior.
• Fazendo com que o indicador estocástico se incline para baixo, próximo aos últimos preços de alta.
• Criando assim uma divergência, próxima ao momento da virada de preços.
1.7 LIMITAÇÕES
• A principal limitação do oscilador estocástico é que é conhecido por produzir sinais falsos.
o É quando um sinal de negociação é gerado pelo indicador, mas o preço não segue.
o Durante condições voláteis do mercado, isso pode acontecer com bastante regularidade.
• Uma maneira de ajudar com isso é usar a tendência de preço como um filtro.
o Onde os sinais são capturados apenas se estiverem na mesma direção da tendência geral dos preços.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CCI
COMMODITY CHANNEL INDEX
1.1 OBJETIVO
• Ferramenta muito comum para analistas na identificação de tendências cíclicas.
• Identificar o início e o fim dos ciclos nos mercados futuros e é comumente usado para identificar
oportunidades de compra e venda.
1.2 TIPO
• Indicador oscilador atrasado de momento baseado em preço.
1.3 BÁSICO
• O CCI é calculado como a diferença entre o preço típico de um ativo e sua média móvel simples, dividida pelo
desvio médio absoluto do preço típico.
• O índice geralmente é dimensionado por um fator inverso de 0,015 para fornecer números mais legíveis:
o Onde:
•
1.4 DIMENSIONAMENTO
• Lambert define a constante em 0,015 para garantir que aproximadamente 70 a 80% dos valores de CCI caiam
entre -100 e +100.
• O CCI flutua acima e abaixo de zero.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• A porcentagem de valores de CCI que caem entre +100 e -100 dependerá do número de períodos usados.
Período curto CCI mais volátil = Menor porcentagem de resultados entre +100 e -100.
Período longo CCI menos volátil = Maior porcentagem de resultados entre +100 e -100.
1.5 INTERPRETAÇÃO
• Muitos analistas também usam esse indicador para indicar mercados de sobre compra e venda em excesso,
bem como um oscilador.
o Cruzamentos acima da linha de sobre comprado indicam um mercado de sobre compra.
o Cruzamentos abaixo da linha sobre vendida indicam um mercado de sobre venda.
• O CCI geralmente perde a parte inicial de uma nova tendência devido ao tempo gasto na posição neutra (entre
as linhas sobre comprado e sobre vendido).
• Muitos analistas acreditam que o cruzamento da média do CCI acima ou abaixo de zero identifica as condições
de mercado antes que as linhas OverBought e OverSold sejam cruzadas.
1.6 SINAIS
Linha CCI
• O CCI normalmente oscila acima e abaixo de uma linha zero.
• As oscilações normais ocorrerão na faixa de +100 e -100.
Acima de Entrando em uma forte Sinal de A posição deve ser fechada quando o CCI
+100 tendência de ALTA COMPRA voltar abaixo de +100.
Abaixo de - Entrando em uma forte Sinal de VENDA A posição deve ser fechada quando o CCI
100 tendência de BAIXA voltar acima de -100.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
Divergência entre Linha CCI e Preço
• Também podem ser aplicadas divergências para aumentar a robustez dos sinais.
Divergência Abaixo de - Sinal de que o preço está tentando retornar ao Portanto possível perna
Positiva 100 valor acima de -100 de ALTA.
Divergência Acima de Sinal de que o preço está tentando retornar ao Portanto possível perna
Negativa +100 valor abaixo de +100 de BAIXA.
1.7 LIMITAÇÕES
• Embora seja frequentemente usado para detectar condições de sobre compra e sobre venda, o CCI é altamente
subjetivo a esse respeito.
• O indicador é ilimitado e, portanto, os níveis anteriores de sobre compra e sobre venda podem ter pouco
impacto em valores futuro.
• O indicador é do tipo atrasado, o que significa que às vezes fornece sinais ruins.
• Uma subida para +100 ou queda para -100 para sinalizar uma nova tendência pode chegar tarde demais,
o Pois o preço pode já está em alta ou baixa e estar começando a corrigir.
o Tais incidentes são chamados de whipsaws;
• Um sinal é fornecido pelo indicador, mas o preço não segue.
o Se não houver cuidado, esses podem ocorrer com frequência.
o Portanto, o indicador é mais bem usado em conjunto com:
• A análise de preços e outras formas de análise;
• Indicadores técnicos para ajudar a confirmar ou rejeitar os sinais de CCI.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
OBV
ON-BALANCE VOLUME
1.1 OBJETIVO
o Indicador muito utilizado para refletir movimentos do mercado baseado no volume.
o Relacionar Preço e Volume.
1.2 TIPO
o Indicador baseado em volume.
1.3 BÁSICO
o O OBV é calculado considerando o volume total do período de negociação e atribuindo-o um valor positivo ou
negativo.
• Quando o preço aumenta durante o período de negociação, o volume recebe um valor positivo,
• Quando o preço diminui durante o período de negociação, o volume recebe um valor negativo,
o O total positivo ou negativo do volume para o período é então adicionado a um total acumulado desde o início
da medida.
Onde:
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
1.4 INTERPRETAÇÃO
• É importante focar na tendência ao usar OBV.
o Isso é mais importante que o valor real da medida OBV.
o Essa medida expande a medida básica de volume combinando movimento de volume e preço.
• Apesar de ser plotado em um gráfico de preços e medido numericamente, o valor quantitativo individual real
do OBV não é relevante.
o O próprio indicador é cumulativo, enquanto o intervalo de tempo permanece fixo por um ponto de
partida dedicado,
• O que significa que o valor do número real do OBV depende arbitrariamente da data de início.
• Em vez disso, traders e analistas analisam a natureza dos movimentos do OBV ao longo do tempo;
o A inclinação da linha OBV carrega todo o peso da análise.
• Os analistas analisam os números de volume no OBV para rastrear grandes investidores institucionais.
• Eles tratam as divergências entre volume e preço como sinônimo da relação entre "dinheiro inteligente" e as
massas díspares, na esperança de mostrar oportunidades de compra contra tendências prevalecentes
incorretas.
o Por exemplo, o dinheiro institucional pode aumentar o preço de um ativo e depois vendê-lo depois que
outros investidores entrarem na onda.
1.5 LIMITAÇÕES
• Uma limitação do OBV é que ele é um indicador adiantado, o que significa que pode produzir previsões, mas há
pouca evidência sobre o que realmente aconteceu em termos dos sinais que produz.
• Por isso, é propenso a produzir sinais falsos.
o Portanto, pode ser equilibrado usando indicadores atrasados em conjunto.
o Adicione uma linha de média móvel ao OBV para procurar quebras de linha do OBV;
o Você pode confirmar uma quebra no preço se o indicador OBV fizer um cruzamento simultâneo.
• Outra nota de cautela ao usar o OBV é que um grande aumento de volume em um único dia pode acender o
indicador por um bom tempo.
o Por exemplo, um anúncio surpresa de ganhos, sendo adicionado ou removido de um índice, ou
negociações maciças de blocos institucionais podem fazer com que o indicador suba ou desça, mas o
aumento no volume pode não ser indicativo de uma tendência.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
RSI
RELATIVE STRENGTH INDEX
1.1 OBJETIVO
• O RSI ajuda a sinalizar condições de sobre compra e sobre venda em um ativo.
• Identificar se o preço de um ativo foi injustificadamente empurrado para os níveis atuais e se uma reversão
pode estar a caminho.
1.2 TIPO
• Indicador oscilador de momento.
1.3 BÁSICO
• O RSI é classificado como um oscilador de momento, medindo a velocidade e magnitude dos movimentos de
preços direcionais.
o Momentum é a taxa de aumento ou queda de preço.
• O RSI calcula o momento em que a relação entre fechamento mais alto e fechamento mais baixo ocorrem:
o Ações que tiveram mudanças positivas mais fortes têm um RSI mais alto do que ações que tiveram
mudanças negativas mais fortes.
• Medido em uma escala de 0 a 100, com níveis altos e baixos marcados em 70 e 30, respectivamente.
• Os períodos mais curtos ou mais longos são usados para perspectivas alternadamente mais curtas ou mais
longas.
• Níveis mais altos e baixos extremos - 80 e 20, ou 90 e 10 - ocorrem com menos frequência, mas indicam um
momento mais forte.
20 - 30 Momento forte
70 - 80 Momento forte
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Os períodos de ALTA são caracterizados pelo fechamento ser maior que o fechamento anterior:
• Os períodos de BAIXA são caracterizados pelo fechamento ser menor que o fechamento anterior:
o Onde:
•
o Onde:
•
• Se a média dos valores de D for zero, o valor do RSI é definido como 100.
• A Força Relativa é então convertida em um Índice de Força Relativa entre 0 e 100:
o Onde:
•
• As médias móveis exponenciais devem ser adequadamente inicializadas com médias simples, usando os
primeiros n valores da série de preços.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C10 - FUNÇÕES - BACK TEST
BACK TEST FERRAMENTA
FUNÇÕES ALARME
Função Descrição
Parametro
Periodo(3);
Preco(Fechamento);
var
vMM : Real;
Inicio
Plot(vMM);
// Função Alert
Se ((Fechamento >= (vMM-5)) e (Fechamento <= (vMM+5))) entao Alert(clVerde);
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
FUNÇÕES BACK-TESTING
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
3.2 LISTA DE FUNÇÕES
• Lista de funções e descrições como demonstradas na documentação da plataforma ProfitChart:
Função Descrição
BuyToCoverLimit Envia uma ordem de compra limite para fechar uma posição.
SellShortStop Abre uma posição de venda enviando uma ordem do tipo Stop.
SellToCoverAtMarket Realiza uma ordem de venda à mercado caso exista uma posição de compra.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
SellToCoverStop Envia uma ordem stop caso exista uma posição de compra.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
• Exemplo
• Histograma > Nova Janela
• BackTest - Fibonacci é a partir da entrada
• Custo Corretagem
• Exportar
var
vBBP : Real;
valorCorrigido : Real;
i : Inteiro;
vEntrada, vStop, vAlvo : Real;
Posicionado : Booleano;
Inicio
Plot(valorCorrigido);
Se (Posicionado) entao
inicio
Se ((vEntrada > vStop) e ((Fechamento < vStop) ou (Fechamento >= (vEntrada + vAlvo))))
entao inicio Posicionado := falso; ClosePosition; fim;
Se ((vEntrada < vStop) e ((Fechamento > vStop) ou (Fechamento <= (vEntrada - vAlvo))))
entao inicio Posicionado := falso; ClosePosition; fim;
fim
Senao
inicio
Se (CurrentBar = i+1) entao
inicio
Se ((vEntrada > vStop) e (Fechamento >= vEntrada)) entao inicio Posicionado :=
verdadeiro; BuyAtMarket; vAlvo := (Maxima-Minima)*1.61; fim;
Se ((vEntrada < vStop) e (Fechamento <= vEntrada)) entao inicio Posicionado :=
verdadeiro; SellShortAtMarket; vAlvo := (Maxima-Minima)*1.61; fim;
fim
Senao
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
inicio
Se (vBBP > 100) entao
inicio
PaintBar(clAmarelo);
i := CurrentBar;
vEntrada := Maxima;
vStop := Minima;
fim
Senao Se (vBBP < 0) entao
inicio
PaintBar(clPurpura);
i := CurrentBar;
vEntrada := Minima;
vStop := Maxima;
fim
Senao i:=0;
fim;
fim;
Fim;
Inicio
//#####################################################################################
#########
i := CurrentBar;
// PaintBar(clAmarelo);
//#####################################################################################
#########
//#####################################################################################
#########
// Ordens Sell To Cover - São executadas apenas se houver posição aberta
// ------------------------------------------------------------------------------------
---------
//
// SellToCoverAtMarket - Realiza uma ordem de venda à mercado CASO EXISTA uma posição
de compra.
// Se (Abertura > Fechamento) entao
// SellToCoverAtMarket;
//
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// SellToCoverLimit - Enviar uma ordem limite de venda para fechar posição.
// Se (Fechamento > Abertura) entao
// SellToCoverLimit(Maxima);
//
// SellToCoverStop - Envia uma ordem stop caso exista uma posição de compra.
// SellToCoverStop(Minima, Minima);
//
//#####################################################################################
#########
//#####################################################################################
#########
// Ordens Buy - Ordens de compra para abrir posição
// Note que as entradas acontecem no Candle seguinte ao do nosso sinal.
// ------------------------------------------------------------------------------------
---------
//
// BuyAtMarket - Envia uma ordem a mercado.
// Se (Fechamento > Abertura)
// entao BuyAtMarket;
//
// BuyLimit - Envia uma ordem limite de compra.
// Se (Fechamento > Abertura)
// entao BuyLimit(Minima);
//
// BuyStop - Realiza envio de ordem de compra stop.
// Se (Fechamento > Abertura)
// entao BuyStop(Minima, Minima);
// entao BuyStop(Maxima, Minima);
//
//#####################################################################################
#########
//#####################################################################################
#########
//
// IsBought - Retorna verdadeiro caso o cliente esteja posicionado na compra.
EstamosPosicionados := IsBought;
//
// BuyPosition - Retorna o tamanho da posição de compra.
TamanhoPosicao := BuyPosition;
//
// BuyPrice - Retorna o valor da última operação de compra.
UltimoPrecoCompra := BuyPrice;
//
//#####################################################################################
#########
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. BACKTEST VENDA
var
i : Inteiro;
EstamosPosicionados : Booleano;
TamanhoPosicao : Inteiro;
UltimoPrecoVenda : Real;
Inicio
//#####################################################################################
#########
i := CurrentBar;
//#####################################################################################
#########
//#####################################################################################
#########
// Ordens Buy To Cover - São executadas apenas se houver posição aberta
// ------------------------------------------------------------------------------------
---------
//
// BuyToCoverAtMarket - Realiza o fechamento de uma operação de venda.
// Se (Fechamento > Abertura) entao
// BuyToCoverAtMarket;
//
// BuyToCoverLimit - Envia uma ordem de compra limite para fechar uma posição.
// BuyToCoverLimit(Minima);
//
// BuyToCoverStop - Realiza o envio de ordem de compra stop para fechar posição.
// BuyToCoverStop(Maxima, Maxima);
//
//#####################################################################################
#########
//#####################################################################################
#########
// Ordens Sell - Ordens de venda pra para abrir posição
// Note que as entradas acontecem no Candle seguinte ao do nosso sinal.
// ------------------------------------------------------------------------------------
---------
//
// SellShortAtMarket - Envia ordem de venda à mercado para abrir posição.
// Se (Abertura > Fechamento)
// entao SellShortAtMarket;
//
// SellShortLimit - Envia uma ordem limite de venda.
// Se (Abertura > Fechamento)
// entao SellShortLimit(Fechamento);
//
// SellShortStop - Abre uma posição de venda enviando uma ordem do tipo Stop.
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
// Se (Abertura > Fechamento)
// entao SellShortStop(Minima, Minima);
// entao SellShortStop(Minima, Maxima);
//
//#####################################################################################
#########
//#####################################################################################
#########
//
// IsSold - Retorna verdadeiro caso o cliente esteja posicionado na venda.
// EstamosPosicionados := IsSold;
//
// SellPosition - Retorna o tamanho da posição de venda.
// TamanhoPosicao := SellPosition;
//
// SellPrice - Retorna o valor da última operação de venda.
// UltimoPrecoVenda := SellPrice;
//
//#####################################################################################
#########
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
CODE F. BACKTEST OUTRAS
var
i : Inteiro;
TemOrdemPendente : Booleano;
Preco : Real;
Inicio
//#####################################################################################
#########
i := CurrentBar;
// PaintBar(clAmarelo);
//#####################################################################################
#########
//#####################################################################################
#########
//#####################################################################################
#########
//#####################################################################################
#########
//#####################################################################################
#########
Fim;
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
C11 - FUNÇÕES - LIVRO
FUNÇÕES BACKTEST
Função Descrição
CODE F. LIVRO
var
vPrecoAsk, vTamanhoAsk : Real;
vPrecoBid, vTamanhoBid : Real;
vBookSpread : Real;
TesteBMF : Booleano;
vIncremento : Real;
vLote : Inteiro;
Inicio
//#####################################################################################
#########
SchillerApp.com/ProfitChart
SchillerApp – Curso Programação ProfitChart
vTamanhoAsk := AskSize;
// IsBMF - Retorna verdadeiro se o ativo for da BMF, retorna falso caso contrário.
TesteBMF := IsBMF;
//#####################################################################################
#########
Fim;
SchillerApp.com/ProfitChart