tradingview:alertas:alertas_em_strategy
Tabela de conteúdos
Alertas em Strategy()
Eventos de Alertas
alert
- A função alert() pode ser chamada em estratégias da mesma forma que é chamada em estudos.
- Enquanto eventos de alertas usarão eventos de envio de ordens (order fill events) para disparar um alerta quando o emulador enviar a ordem - a função alert() também pode ser chamada para disparar outros alertas em estratégias.
- Este exemplo chama a função alert() quando o RSI se move contra o trade por 3 barras consecutivas.
//@version=4 strategy("Chamadas Seletivas Alert - Strategy") r = rsi(close, 20) // Detectar cruzamento. xUp = crossover(r, 50) xDn = crossunder(r, 50) // Enviar ordem no cruzamento. if xUp strategy.entry("Compra", strategy.long) else if xDn strategy.entry("Venda", strategy.short) // Disparar alertar quando o trade vai na direção contrária. dirCompra = strategy.position_size > 0 and falling(r, 3) dirVenda = strategy.position_size < 0 and rising(r, 3) if dirCompra alert("AVISO: RSI Caindo", alert.freq_once_per_bar_close) if dirVenda alert("AVISO: RSI Subindo", alert.freq_once_per_bar_close) plotchar(xUp, "Compra", "▲", location.bottom, color.lime, size = size.tiny) plotchar(xDn, "Venda", "▼", location.top, color.red, size = size.tiny) plotchar(dirCompra, "AVISO: RSI Caindo", "•", location.top, color.red, size = size.tiny) plotchar(dirVenda, "AVISO: RSI Subindo", "•", location.bottom, color.lime, size = size.tiny) hline(50) plot(r)
- Se um usuário criar um evento de alerta usando esse script - incluindo ambos eventos de envio de ordens e chamadas de função alert() - alertas serão disparados sempre que uma ordem for executada (no emulador do TradingView) e/ou quando uma chamada da função alert() ocorrer na iteração do script em uma barra de tempo real, ou seja, quando barstate.isrealtime e barstate.isconfirmed forem ambas verdadeiras (true).
- A chamada da função alert() irá disparar o alerta apenas quando a barra de tempo real fechar porque alert.freq_once_per_bar_close é o argumento usado para o parâmetro freq na chamada da função alert.
Eventos de Envio de Ordens (Order fill events)
- Um evento de envio de ordens se refere a qualquer evento causado pelo emulador do TradingView que causa com que uma ordem simulada seja executada.
- Isto é o equivalente a uma ordem sendo preenchida por uma corretora/broker.
- Ordens não são necessariamente executadas quando são enviadas. (*ordens stop)
- Em estratégias - strategy() - a execução da ordem pode ser detectada apenas de forma indireta e depois do fato.
- Para fazer essa confirmação, é necessário fazer uso de variáveis nativas (incorporadas) como:
- strategy.opentrades
- strategy.position_size
- Portanto, em eventos de alerta configurados para eventos de envio de ordens (Order fill events) - o disparo do alerta pode ser feito no momento preciso da execução da ordem - ou seja - antes da lógica do script poder detectá-la.
- Isso acontence porque o emulador é quem faz esse disparo independemente da execução do script.
Customizar mensagem de alerta
- É possível customizar a mensagem de alerta quando há uma execução de ordem.
- Não é um pré-requisito para o evento de envio de ordens (Order fill events).
- Porém, mensagens customizadas podem ser úteis para integrar ordens reais com corretoras/broker através de webhooks com ferramentas de terceiros.
- Isto é feito usando o argumento alert_message em funções como:
- strategy.close()
- strategy.entry()
- strategy.exit()
- strategy.order()
- O argumento usado é uma “series string” - portanto pode ser construída dinamicamente usando variáveis disponíveis ao script - desde que sejam convertidas para string quando necessário.
//@version=4 strategy("Estratégia usando alert_message") r = rsi(close, 20) // Detectar cruzamento xUp = crossover(r, 50) xDn = crossunder(r, 50) // Enviar ordens no cruzamento usando alert_message customizado if xUp strategy.entry("Compra", strategy.long, stop = high, alert_message = "Compra-Stop execuata (stop foi em " + tostring(high) + ")") else if xDn strategy.entry("Venda", strategy.short, stop = low, alert_message = "Venda-Stop executada (stop foi em " + tostring(low) + ")") plotchar(xUp, "Comprar", "▲", location.bottom, color.lime, size = size.tiny) plotchar(xDn, "Vender", "▼", location.top, color.red, size = size.tiny) hline(50) plot(r)
- O parâmetro stop é usado na chamada de strategy.entry() - o que cria ordens de compra stop e ordens de venda stop. Isso significa que:
- Ordens de compra serão executada apenas quando o preço for maior que a máxima da barra onde a ordem foi enviada,
- Ordens de venda serão executadas apenas quando o preço for menor que a mínima da barra onde a ordem foi enviada.
- As setas para cima e para baixo plotadas com plotchar() são desenhadas quando as ordens são enviadas. Pode levar um número de barras até que a ordem seja de fato executada.
- Porque nós usamos o mesmo id para todas as compras - toda nova ordem de compra enviada antes de uma ordem anterior ter sido executada irá substituir esta ordem anterior. O mesmo ocorre para as ordens de venda.
- As variáveis utilizadas no argumento alert_message serão atribuidas apenas no momento em que a ordem for executada, ou seja, quando há o disparto do alerta.
- Quando o argumento alert_message é usado em uma ordem gerada pela chamada de funções strategy.*() - o evento de alerta deve incluir o placeholder {{strategy.order.alert_message}} na caixa de diálogo “Criar Alerta” no campo “Mensagem” - quando criando um evento de alerta com eventos de envio de ordens (Order fill events).
- Quando usando o placeholder {{strategy.order.alert_message}} - o evento de alerta buscará sempre o texto do argumento alert_message como parâmetro para mensagem. Isso significa que se um script possuir várias chamadas de funções strategy.*() para envio de ordem - se o argumento alert_message dessas ou algumas dessas não for especificado a mensagem será vazia, ou em branco.
- Existem outros placeholders que podem ser usados no campo “Mensagem” na caixa de diálogo “Criar Alerta”, porém estes não podem ser utilizados no argumento alert_message.
tradingview/alertas/alertas_em_strategy.txt · Última modificação: 05/04/2023 08:25 por 127.0.0.1