profitchart:basico_programacao:logica_programacao
Tabela de conteúdos
Lógica de Programação
Introdução
- Linguagem: NTSL (Nelogica Trading System Language)
- Baseado em EasyLanguage criado pela TradeStation.
- Por que precisamos entender a Lógica de Programação?
- Isso nos ajudará a programar códigos eficazes.
- Eficaz: Fazer certo a coisa certa.
- Eficiente: Fazer certo a coisa errada.
- Exemplo, Uma regra de coloração invertida, colori de verde o candle de baixa, e colori de vermelho o candle de alta.
- Nos ajudará também a identificar e corrigir problemas com códigos.
Palavras Reservadas
- Definição: Uma palavra que não pode ser utilizada como um identificador - por ser reservada para uso da gramática da linguagem.
- Exemplos,
Início
Fim
- Ficam marcadas em azul com efeito negrito.
- No ProfitChart pode ser inglês / Português. (Algumas, não todas)
Identificadores reservados
- Exemplos,
Abertura
,Fechamento
,Máxima
,Mínima
.
Funções
- Uma função é um bloco de código pré-definido para executar uma tarefa específica que pode ser chamado e executado inúmeras veze no decorrer do seu código.
- Por exemplo um cálculo específico.
- O identificador usado para chamar uma função é reservado.
- Em uma função nativa esse identificador é determinado pelo desenvolvedor da linguagem.
- Em uma função criada pelo usuário, o identificador é escolhido pelo usuário e passa a ser reservado uma vez que seja definido.
Execução do Código
- Qual a rotina de execução do código em relação ao contexto de aplicação (Nesse caso, o ProfitChart).
- O código é executado a cada atualização de valor de preço ou volume (a cada variação de tick).
- Exemplo, Uma Regra de Coloração para pintar o candle de vermelho quando o preço atual está abaixo do preço de abertura, ou pintar de verde, quando o preço atual está acima do preço de abertura, para a coloração acontecer em tempo real é necessário que o código seja reexecutado a cada variação de tick para confirmar qual das duas condições são verdadeiras.
Depuração
- Inglês: Debug
- Definição: Processo de localizar e resolver defeitos ou problemas com um programa de computador, que o previne de operar de forma correta. É importante dominar formas de depurar nossos códigos.
3 Formas Principais
- Verificar Sintaxe
- Definição de Sintaxe: Conjunto de regras que determinam as diferentes possibilidades de associação das palavras de uma língua.
- Funciona da mesma forma que para um idioma, pois, até mesmo linguagens de programação seguem uma determinada 'gramática'.
- É o que determina se uma frase ou sentença faz sentido.
- Step Over (F3)
- Executa o código linha a linha, porém sem investigar as funções usadas pelo código, por isso 'step over' ou 'pular', 'passar por cima'
- Trace Into (F7)
- Assim como em Step Over, também executa um código linha a linha, porém também investiga as funções usadas linha a linha. 'Trace Into', 'traçar dentro'.
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.
- 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?
- Para economizar processamento - ao reutilizar um valor ou resultado de um cálculo.
- Facilita a vida do programador ao associar nomes a valores. Exemplo, área de um triângulo.
Tipos de Dados
PT | EN | Definição | Exemplos |
---|---|---|---|
Real | Float | Representa números ponto flutuantes (real) | 3.14 |
Inteiro | Integer | Representa números inteiros | 1, 2, 3 |
Booleano | Boolean | Representa uma relação binária (1 e 0) | Verdadeiro (True) / Falso (False) |
- Como Declarar
- Entre palavra reservada var e o início do nosso código com a palavra reservada Início (Begin).
// 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) vR3 := vR1 + vR2; // vR3 = 80000 + 2000 = 82000 Plot(vR3); // Fim do código Fim;
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?
- 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 de Dados
Utiliza os mesmos tipos definidos nas variáveis. (Real, Inteiro, Booleano)
- Como Declarar
- Entre a palavra reservada Parametro ou Input e a palavra reservada var.
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) vR3 := vR1 + vR2 + Sinal; // vR3 = 80000 + 2000 + Sinal = ? Plot(vR3); // Fim do código Fim;
Séries de Dados
- Definição: são os valores decorrentes de cada candle (barra ou box) do gráfico.
- Abertura (Open)
- Retorna o valor de abertura da barra atual.
- Fechamento (Close)
- Retorna o valor de fechamento da barra atual.
- Minima (Low)
- Retorna o valor mínimo da barra atual.
- Maxima (High)
- Retorna o valor máximo da barra atual.
- Quantidade (Quantity)
- Retorna o valor da quantidade da barra atual.
- Importante
- Referência a valores do passado é feito através de contadores: [x] onde x é o número do contador.
- Exemplo: Abertura[1]; Fechamento[3]
- Este processo também é conhecido como indexação - onde o valor x é um índice ou index de referência a um valor do passado.
Operadores
Operadores Matemáticos
Operador | Descrição | Exemplo | Resultado |
---|---|---|---|
+ | Adição | 5+4 | 9 |
- | Subtração | 5-4 | 1 |
* | Multiplicação | 5*4 | 20 |
/ | Divisão | 5/4 | 1.25 |
- Ordem de Operações
- Divisão > Multiplicação > (Soma & Subtraçã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.
Expressão | Resultado |
---|---|
10*10/5+2 | 22 |
1*2+2 | 102 |
50+100*10/2-1 | 549 |
x = 10 * 10/5 + 2 x = 10 * 2 + 2 x = 20 + 2 x = 22 // Programaticamente x = (10 * (10/5)) + 2 = 22
- Alterando a ordem das operações
// Programaticamente x = (10 * 10) / (5 + 2) = 14.2857
Operadores de Comparação
Operador | Descrição | Exemplo (de condição verdadeira) |
---|---|---|
> | Maior que | 5 > 4 ; |
< | Menor que | 4 < 5 ; |
>= | Maior ou igual | 5 >= 5 ; 6 >= 5 |
⇐ | Menor ou igual | 5 ⇐5 ; 4 ⇐ 5 |
= | Igual | 4 = 4 ; 5 = 5 |
<> | Diferente | 5 <> 4 ; 4 <> 5 |
Controle de Fluxo
Se Então Senão (Teste Condicional)
- Definição: Se uma condição ou um grupo de condições for verdadeira, execute uma sequência de Comandos (A), senão, execute uma outra sequência de Comandos (B).
- Inglês:
If
,Then
,Else
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;
Para Até (Loop Controlado)
- Definição: O comando PARA é utilizado para definir um loop controlado, ou seja, Comando (A) é executado repetidamente até que a (variável de contagem) saia do (valor inicial) e atinja (valor final). A cada iteração a (variável de contagem) é incrementada em 1.
- Inglês:
For
,To
Parametro Preco(Fechamento); Periodo(9); var rResultado : Real; iIndex : Inteiro; Inicio // Inicialização de variável rResultado := 0; // Período - 1 : Porque indexação conta-se apartir da posição 0 Para iIndex := 0 ate Periodo -1 faca inicio rResultado := rResultado + Preco[iIndex]; fim; Plot(rResultado / Periodo); // Alternativa // Para iIndex := 0 ate Periodo -1 faca rResultado := rResultado + Preco[iIndex]; // rResultado := rResultado / Periodo; // Plot(rResultado); Fim;
Enquanto Faça (Loop Controlado)
- 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.
- Inglês:
While
,Do
Parametro Preco(Fechamento); Periodo(2); var rResultado : Real; iIndex : Inteiro; Inicio // Inicialização de variável rResultado := 0; iIndex := 0; Enquanto (iIndex <= Periodo -1) faca inicio rResultado := rResultado + Preco[iIndex]; iIndex := iIndex +1; fim; Plot(rResultado / Periodo); // Alternativa // Cuidado com último comando - está fora do loop 'Enquanto'. // Enquanto (iIndex <= Periodo -1) faca rResultado := rResultado + Preco[iIndex]; iIndex := iIndex +1; // rResultado := rResultado / Periodo; // Plot(rResultado); Fim;
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
- [1] = Verdadeiro
- [0] = Falso
Operador E
- Saída 'verdadeira' (1) quando todas as entradas forem verdadeiras (1).
- Tabela da Verdade
A | B | X = A e B | Booleano |
---|---|---|---|
1 | 1 | 1 | Verdadeiro |
1 | 0 | 0 | Falso |
0 | 1 | 0 | Falso |
0 | 0 | 0 | Falso |
Operador OU
- Saída 'verdadeira' (1) quando ao menos 1 das entradas for verdadeira (1).
- Tabela da Verdade
A | B | X = A ou B | Booleano |
---|---|---|---|
1 | 1 | 1 | Verdadeiro |
1 | 0 | 1 | Verdadeiro |
0 | 1 | 1 | Verdadeiro |
0 | 0 | 0 | Falso |
Combinação de Operadores Lógicos
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.
função Nome_da_Função( param 1: TIPO; param 2 : TIPO ) : Retorno;
Criar Função dentro do código
// Inicio - Parametros e Variáveis do Código Parametro Periodo(9); var rMM : Real; // Fim - Parâmetros e Variáveis do Código // 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); Se (Fechamento > rMM) entao PaintBar(clVerde) Senao PaintBar(clVermelho); // Se (Fechamento > rMM) entao // inicio // PaintBar(clVerde); // fim // Senao // inicio // PaintBar(clVermelho); // fim; Fim; // Fim - Código
Criar Função Externa
Parametro index(0); var Result : Real; Inicio Result := Abs(Abertura[index] - Fechamento[index]); Plot(Result); Fim;
profitchart/basico_programacao/logica_programacao.txt · Última modificação: 30/01/2022 01:02 por schillerapp