Ferramentas do usuário

Ferramentas do site


tradingview:alertas:alertas_em_study

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