//@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).
//@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)
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.