Dados Externos

request.security e outros timeframes

request.security()

Obtendo Dados de Outros Timeframes

A função request.security() permite acessar dados de outros símbolos ou timeframes:

request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)

Parâmetros

ParâmetroDescrição
`symbol`Símbolo a consultar
`timeframe`Timeframe ("D", "W", "60", etc.)
`expression`O que calcular
`gaps`Como tratar gaps
`lookahead`Se permite olhar para frente

Timeframes Comuns

- "1", "5", "15", "60" - Minutos

- "D" - Diário

- "W" - Semanal

- "M" - Mensal

Atenção com Lookahead

**Nunca use lookahead = barmerge.lookahead_on** em estratégias, pois causa look-ahead bias (ver dados futuros).

Multi-Timeframe

SMA de timeframe superior

1//@version=6
2indicator("MTF SMA", overlay=true)
3
4// Inputs
5htfRes = input.timeframe("D", "Timeframe Superior")
6smaLen = input.int(20, "Período SMA")
7
8// SMA do timeframe atual
9smaCurrent = ta.sma(close, smaLen)
10
11// SMA do timeframe superior
12smaHTF = request.security(syminfo.tickerid, htfRes, ta.sma(close, smaLen))
13
14// Tendência baseada no HTF
15uptrend = close > smaHTF
16downtrend = close < smaHTF
17
18// Plots
19plot(smaCurrent, "SMA Current TF", color.blue)
20plot(smaHTF, "SMA HTF", color.purple, 2)
21
22// Background baseado na tendência HTF
23bgcolor(uptrend ? color.new(color.green, 90) : 
24        downtrend ? color.new(color.red, 90) : na)

Outras Funções request

request.security_lower_tf()

Para acessar dados de timeframes menores (intrabar):

request.security_lower_tf(symbol, timeframe, expression)

request.financial()

Dados financeiros fundamentalistas:

request.financial(symbol, financial_id, period, gaps)

IDs Financeiros Comuns

- "EARNINGS_PER_SHARE"

- "PRICE_EARNINGS_TTM"

- "MARKET_CAP"

- "REVENUE_TTM"

request.economic()

Dados econômicos:

request.economic(country_code, field)

request.dividends()

Dados de dividendos:

request.dividends(symbol, field)
Dados Fundamentalistas

P/E Ratio no gráfico

1//@version=6
2indicator("P/E Ratio", overlay=false)
3
4// Obter P/E ratio
5peRatio = request.financial(syminfo.tickerid, "PRICE_EARNINGS_TTM", "FQ")
6
7// Obter EPS
8eps = request.financial(syminfo.tickerid, "EARNINGS_PER_SHARE", "FQ")
9
10// Obter Market Cap
11marketCap = request.financial(syminfo.tickerid, "MARKET_CAP", "FQ")
12
13// Plot P/E
14plot(peRatio, "P/E Ratio", color.blue, 2)
15hline(15, "P/E Normal", color.gray)
16hline(25, "P/E Alto", color.red)
17
18// Colorir baseado no P/E
19bgcolor(peRatio > 25 ? color.new(color.red, 90) :
20        peRatio < 15 ? color.new(color.green, 90) : na)
21
22// Label com informações
23if barstate.islast
24    label.new(bar_index, peRatio, 
25      "P/E: " + str.tostring(peRatio, "#.##") + 
26      "\nEPS: " + str.tostring(eps, "#.##"),
27      style=label.style_label_left)