Estruturas de Controle

if/else, switch, loops

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 falsas

switch

Para múltiplas condições:

switch
    condição1 => resultado1
    condição2 => resultado2
    => resultadoPadrão

Importante: 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 += 1

for...in Loop

Para iterar sobre arrays:

for value in myArray
    // processa cada valor
    
for [index, value] in myArray
    // processa com índice
Loops 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)