tradingview:alertas:alertas_em_study
Tabela de conteúdos
Alertas em Study()
Eventos de Alertas
alert
- A função alert() tem apenas dois argumentos:
- message
- Uma “series string” representando a mensagem de texto enviada quando o alerta dispara. Por este argumento permitir a forma “series”, este pode ser gerado durante a execução e difere de barra para barra - tornando-o dinâmico.
- freq
- Um parâmetro string especificando a frequência do alerta, os argumentos válidos são:
- alert.freq_once_per_bar: (valor padrão) Apenas a primeira chamada de cada barra de tempo real dispara o alerta.
- alert.freq_once_per_bar_close: O alerta é disparado apenas quando a barra de tempo real se fecha e uma chamada da função alert() ocorreu durante aquela iteração do script. (ou seja, pode-se dizer que irá confirmar a condição).
- alert.freq_all: Todas as chamadas da função alert disparam o alerta. (A cada iteração do script).
- Importante:
- Por padrão - estratégias são recalculadas uma vez apenas no fechamento da barra, portanto, se a função alert() estiver com o argumento freq configurado em alert.freq_all ou alert.freq_once_per_bar em um script strategy(), o alerta será chamado não mais que apenas uma vez no fechamento da barra.
- Para habilitar o disparo do alerta no decorrer da execução da construção da barra você precisará habilitar calc_on_every_tick.
Chamada alert() Exemplo RSI
//@version=4 study("Todas as chamadas Alert") r = rsi(close, 20) // Detectar cruzamento xUp = crossover(r, 50) xDn = crossunder(r, 50) // Disparar alerta no cruzamento if xUp alert("Comprar (RSI é " + tostring(r, "#.00)")) else if xDn alert("Vender (RSI é " + tostring(r, "#.00)")) plotchar(xUp, "Compra", "▲", location.bottom, color.lime, size = size.tiny) plotchar(xDn, "Venda", "▼", location.top, color.red, size = size.tiny) hline(50) plot(r)
- Se um evento de alerta for criado a partir deste código:
- Quando o RSI cruzar a linha central para cima
- O script irá disparar um alerta com a mensagem “Compra…”
- Quando o RSI cruzar a linha central para baixo
- O script irá disparar um alerta com a mensagem “Venda…”
- Por que não há configuração específica para o argumento freq - o valor padrão será usado alert.freq_once_per_bar - por tanto o alerta será disparado apenas na primeira vez que a chamada for feita durante a execução da barra de tempo real.
- A mensagem enviada para o alerta é composta por 2 partes:
- A string constante: “Comprar (RSI é …” ou “Vender (RSI é …”
- O resultado da chamada da função tostring() que contém o valor numérico do RSI no momento que o evento ocorre. exemplo : “Comprar (RSI é 53.41)”
- Por o evento de alerta sempre disparar quando há uma chamada da função alert() - desde que a configuração freq permita - este exemplo específico não permitirá restringir o alerta apenas para compra ou apenas para venda, por exemplo.
- Notas:
- Ao contrário da função alertcondition() que é usada apenas no escopo global do script (coluna 0) - a função alert() normalmente é usada dentro do escopo de um teste condicional if para que seja chamada apenas quando a condição necessária for satisfeita.
- Se a função alert() é usada no escopo global - esta será chamada em todas as barras - o que provavelmente não é o comportomento desejado.
- Este exemplo não poderia ser replicado exatamente igual usando a função alertcondition() pois esta aceita apenas strings constantes e não aceita o segundo componente de nossa string usando tostring().
- Porque a função alert() permite construir mensagens dinamicante durante a execução, nós poderiamos substituir nosso código com:
// Disparar alerta no cruzamento if xUp or xDn firstPart = (xUp ? "Comprar" : "Vender") + " (RSI é " alert(firstPart + tostring(r, "#.00)"))
Chamada alert() seletiva
- Para permitir que o usuário selecione diferentes condições para o disparo de alertas através do script - é necessário disponibilizar parâmetros de entrada e codificar de forma adequada a fim de permitir com que o usuário crie multiplos eventos de alertas diferentes usando um único script.
- Expandindo o exemplo anterior para permitir escolher entre eventos de alertas de compra, venda ou ambos.
//@version=4 study("Chamadas Seletivas Alert") // Parâmetros detecCompra = input(true, "Alertar Compra") detecVenda = input(true, "Alertar Venda") r = rsi(close, 20) // Detectar cruzamento. xUp = crossover(r, 50) xDn = crossunder(r, 50) // Apenas gerar alertas para as direções configuradas. alC = detecCompra and xUp alV = detecVenda and xDn // Disparar o alerta apenas quando o grupo de condições são satisfeitas. if alC alert("Compra (RSI é " + tostring(r, "#.00)")) else if alV alert("Vender (RSI é " + tostring(r, "#.00)")) plotchar(alC, "Compra", "▲", location.bottom, color.lime, size = size.tiny) plotchar(alV, "Venda", "▼", location.top, color.red, size = size.tiny) hline(50) plot(r)
- Nós criamos um grupo de condições que serão satisfeitas apenas se o usuário também selecioná-las, compra no cruzamento para cima da linha central, venda no cruzamento para baixo da linha central.
- Nós permitimos ao usuário indicar preferências de repintura.
- Caso negativo - o script espera o fechamento da barra para confirmar a condição - assim o alerta aparece apenas no fechamento da barra de tempo real.
- Porque? Pois condições opostas podem ocorrer dentro do mesmo período da barra, compra e venda.
- Com este exemplo é possível criar alertas independentes - (utilizando a interface gráfica)
- Apenas para compra e/ou apenas para venda.
tradingview/alertas/alertas_em_study.txt · Última modificação: 05/04/2023 08:25 por 127.0.0.1