Estruturas de Controle
if/else, switch, loops
Neste capítulo
Estruturas Condicionais
if/else
A estrutura condicional mais comum:
if condição
// código se verdadeiro
else if outraCondição
// código alternativo
else
// código se todas falsasswitch
Para múltiplas condições:
switch
condição1 => resultado1
condição2 => resultado2
=> resultadoPadrãoImportante: Funções em Blocos Condicionais
Atenção: A partir do Pine Script v4+, funções que dependem de histórico devem ser pré-calculadas antes de blocos condicionais para garantir execução em todas as barras.
Estrutura if/else
Identificando tendência com if/else
1//@version=6
2indicator("Identificador de Tendência")
3
4smaRapida = ta.sma(close, 10)
5smaLenta = ta.sma(close, 50)
6
7// Usando if/else para determinar tendência
8var string tendencia = "Lateral"
9if smaRapida > smaLenta
10 tendencia := "Alta"
11else if smaRapida < smaLenta
12 tendencia := "Baixa"
13else
14 tendencia := "Lateral"
15
16// Usando switch (mais elegante)
17corTendencia = switch
18 tendencia == "Alta" => color.green
19 tendencia == "Baixa" => color.red
20 => color.gray
21
22bgcolor(color.new(corTendencia, 90))
23
24// Exibir tendência atual
25var label lbl = na
26label.delete(lbl)
27lbl := label.new(bar_index, high, tendencia, style=label.style_label_down)Loops
for Loop
Para iterar um número fixo de vezes:
for i = 0 to 9
// executa 10 vezes (0 a 9)
for i = 0 to 9 by 2
// executa 5 vezes (0, 2, 4, 6, 8)while Loop
Para iterar enquanto uma condição for verdadeira:
int i = 0
while i < 10
// código
i += 1for...in Loop
Para iterar sobre arrays:
for value in myArray
// processa cada valor
for [index, value] in myArray
// processa com índiceLoops na Prática
Calculando média móvel com loop
1//@version=6
2indicator("Média Móvel Manual")
3
4length = input.int(20, "Período")
5
6// Calculando SMA manualmente com loop
7soma = 0.0
8for i = 0 to length - 1
9 soma += close[i]
10
11smaManual = soma / length
12
13// Comparando com a função built-in
14smaBuiltin = ta.sma(close, length)
15
16plot(smaManual, "SMA Manual", color.blue, 2)
17plot(smaBuiltin, "SMA Built-in", color.orange, 1)