-- colocando nome do indicador na corretora
instrument{name = "indicador de tendencia para corretora exnova", icon = ";",
overlay=true}
local rsi_periodo = input(16) -- periodo do RSI
local rsi_valores = rsi(close, rsi_periodo)
local rsi_SobreCompra = input(80)
local rsi_SobreVenda = input(40)
-- função para verificar a contagem minima dos candles consecutivos
local function sequencia_candles(cor, n)
local count = 0
for i = 1, n do
if cor == "green" and close[i] > open[i] then
count = count + 1
elseif cor == "red" and close[i] < open[i] then
count = count + 1
else
break
end
end
return count >= n
end
-- cacular as medias moveis
local sma_curto = sma(close, 9)
local sma_long = sma(open, 21)
-- Determina a tendencia geral
local rsi_alta = rsi_valores[1] > rsi_valores[2]
local rsi_baixa = rsi_valores[1] < rsi_valores[2]
-- verificar a contagem de candles consecutivos
local consecutivos_green = sequencia_candles("green", 1)
local consecutivos_red = sequencia_candles("red", 1)
-- Gerar sinais apenas quando coincidir as tendencia do RSI
local buysinal = consecutivos_green and rsi_alta and sma_curto and rsi_valores[1] <
rsi_SobreCompra
local sellsinal = consecutivos_red and rsi_baixa and sma_long and rsi_valores[1] >
rsi_SobreVenda
-- plot sinais de compra e venda
plot_shape(
buysinal,
"COMPRA!",
shape_style.triangleup,
shape_size.huge,
"lime",
shape_location.belowbar,
0,
"PROX COMPRA",
"white"
)
plot_shape(
sellsinal,
"VENDA!",
shape_style.triangledown,
shape_size.huge,
"red",
shape_location.abovebar,
0,
"PROX venda",
"white"
)
-- plot media moveis
plot(sma_curto, "Media curta", "blue", 2)
plot(sma_long, "Media longa", "orange", 2)
-- plot RSI referencia
hline(rsi_SobreCompra, "red", 1, 1)
hline(rsi_SobreVenda, "green", 1, 1)
plot(rsi_valores, "RSI", "yellow", 2)