Dados Externos
request.security e outros timeframes
Neste capítulo
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âmetro | Descriçã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)