Iremos dar continuidade ao nosso estudo Intrudução ao PineScript. Vamos ver hoje sobre como organizar nosso código dividindo-o em áreas específicas para melhor desenvolvimento de estratégias para backtestes. Iremos ver também todo o código do Setup Dave Landry para que vocês possam estudar. Vamos lá?
ÁREAS DE CÓDIGO
Para uma melhor organização e compreensão, é boa prática de quem está escrevendo uma estratégia de execução ou indicador que separe o código e áreas. Na figura abaixo vemos 4 áreas principais:
- Área de Inputs (quando houver);
- Área de declaração de variáveis;
- Área da lógica de execução;
- Área de plotagem de indicadores (quando houver);
Área de inputs
Inputs são valores atribuídos pelo usuário para que o código execute durante todo o código. Inputs significa que houve um valor externo "entrando" no código (input = entrada).
Por exemplo, se você quiser atribuir valores de caixa inicial para sua estratégia para verificar se o capital aumenta ou esgota durante um determinado tempo você irá adicionar o valor deste caixa como sendo um input, pois poderá modificar no futuro apenas o valor inicial sem a necessidade de modificar todo o código.
Para isso, aqui no editor Pine, você precisará adicionar a palavra "Input" antes do nome "caixa inicial" para o editor reconhecer esse valor como sendo um input.
Área de declaração de variáveis
Variáveis são "espaço" em memória do editor para que o mesmo possa usá-lo durante todo o código, para que não haja necessidade de repetição deste valor. É semelhante aos inputs. Porém, para que o editor entenda que uma declaração é tida como variável o usuário terá que adicionar a palavra "var" antes dessa declaração.
No setup do Dave Landry iremos utilizar as variáveis da imagem abaixo.
Vemos na imagem que atribuímos as palavras "candle", "tamanho", "alvo" e "stop" como sendo variáveis de valor 0.
Nas variáveis existem 3 tipos principais que iremos utilizar no desenvolvimento de outros setups. São eles:
- Tipo inteiro;
- Tipo float;
- Tipo booleano;
O tipo inteiro, como o nome já diz, são valores inteiros atribuídos às variáveis. Por exemplo, quero uma média móvel de 20 períodos. O número 20 é um número inteiro, portanto será uma variável do tipo inteiro.
Tipo float ( ou ponto flutuante) são valores fracionários. No nosso exemplo da imagem acima temos o valor "tamanho", "alvo" e "stop" como sendo do tipo float.
Tipo booleano são variáveis que possuem valores lógico como true ou false (verdadeiro ou falso). Tais valores são usado com as terminações IF, THEN e ELSE (são os três principais).
Bom, vimos as principais áreas do código, o que são inputs e variáveis. Agora precisamos saber o que são Série de dados.
SÉRIE DE DADOS
Série de dados nada mais é do que os valores da mínima, máxima, abertura e fechamento de um determinado período, seja ele no período de 1 horas, 30 minutos, diário, entre outros.
Para cada período, utilizamos o valor entre chaves no código pine. Por exemplo, close[1] refere-se ao fechamento da barra anterior. Close[2], refere-se ao fechamento da barra ante anterior. Assim sucessivamente.
No setup do Dave Landry utilizaremos a função de séries de dados para saber o valor da mínimas e máximas do candle atual, assim como dos dois candles anteriores para fazermos nossa condição de compra e venda.
No código da figura vemos que a condição de compra se dá pela mínima do candle atual sendo menor do que a mínima do candle anterior e menor que a mínima do candle ante anterior e fechamento da barra atual (close) sendo maior do que a média móvel de 20 períodos (low[0]<low[1] and (low[0]<low[2]) and (close>sma(close,20));.
A condição de venda é montada da mesma maneira, porém utilizando a série de dados das máxima dos candles anteriores e fechamento de candle atual menor do que a média móvel de 20 períodos.
Ora meus amigos, isso não é o setup apresentado pelo Dave Landry?
Então, com o conhecimento dada neste estudo e do post anterior, já podemos montar nossa estratégia de execução e testar em vários papeis.
//----------------------------------------------------------// // HORÁRIO DE ENCERRAMENTO PARA DAY TRADE //----------------------------------------------------------//
Basta copiar e colar o código no seu Editor Pine e estuda-lo e fazer o backtest em vários outros papeis. Lembrando que é um código para DayTrade, por isso há funções de encerramento por horário.