Strategy (utilities)
Biblioteca Pine Script com funções utilitárias para estratégias: conversões entre ticks, preço e percentual, cálculo de Sharpe Ratio e Sortino Ratio.
Tipo: Biblioteca (library)
Categoria: Utilitários
Fonte: TradingView Script
Visão geral
Strategy (utilities) é uma coleção de funções matemáticas auxiliares para construção de estratégias Pine Script. O foco são conversões (entre representações de preço) e métricas de risco (Sharpe, Sortino).
Funções de conversão
Ticks ↔ Preço ↔ Percentual
Tick: menor unidade de variação de preço do instrumento
(ex: ES futures = 0.25, BTC = 0.01)
Conversões:
Ticks → Preço: price = ticks × syminfo.mintick
Preço → Ticks: ticks = price / syminfo.mintick
Preço → %: pct = (target - entry) / entry × 100
% → Preço: price = entry × (1 + pct/100)
Ticks → %: pct = (ticks × syminfo.mintick) / entry × 100API / Funções
| Função | Parâmetros | Retorno | Descrição |
|---|---|---|---|
ticksToPrice() | ticks | float | Converte ticks para unidades de preço |
priceToTicks() | price | float | Converte preço para ticks |
priceToPct() | entry, target | float | Retorno em percentual |
pctToPrice() | entry, pct | float | Preço alvo a partir de percentual |
ticksToPct() | entry, ticks | float | Ticks para percentual |
sharpe() | returns[], riskFree, periods | float | Sharpe Ratio anualizado |
sortino() | returns[], riskFree, periods | float | Sortino Ratio anualizado |
Exemplo de uso
//@version=6
strategy("Strategy Utils — Exemplo", overlay=true)
import author/StrategyUtils/1 as su
atr = ta.atr(14)
// Converter ATR em ticks e percentual
atrTicks = su.priceToTicks(atr)
atrPct = su.priceToPct(close, close + atr)
// TP e SL em percentual, convertidos para preço
tpPct = 2.0 // 2% de lucro
slPct = 1.0 // 1% de risco
tpPrice = su.pctToPrice(close, tpPct)
slPrice = su.pctToPrice(close, -slPct)
longSignal = ta.crossover(ta.ema(close, 10), ta.ema(close, 30))
if longSignal
strategy.entry("Long", strategy.long)
strategy.exit("Saída", "Long",
limit = tpPrice,
stop = slPrice,
comment = "TP: " + str.tostring(tpPct) + "% | SL: " + str.tostring(slPct) + "%")
// Calcular Sharpe ao final
if barstate.islastconfirmedhistory
returns = strategy.equity / strategy.equity[1] - 1 // retornos diários
// Usando array de retornos
sharpeRatio = su.sharpe(na, 0.0, 252) // anualizado para diário
label.new(bar_index, high, "Sharpe: " + str.tostring(sharpeRatio, "##.##"))Fórmulas de Sharpe e Sortino
Sharpe Ratio anualizado
Sharpe = (Média dos retornos − Rf) / Desvio padrão × √N
Onde:
Rf = taxa livre de risco (normalmente 0 para curto prazo)
N = períodos por ano (252 para diário, 12 para mensal, 52 para semanal)Sortino Ratio anualizado
Sortino = (Média dos retornos − Rf) / Desvio downside × √N
Desvio downside = desvio padrão apenas dos retornos < threshold (geralmente 0)
Vantagem: não penaliza ganhos positivos como o Sharpe fazIntegrações
| Script | Como combinar |
|---|---|
| LapseBacktestingTable | Alimentar Sharpe/Sortino calculados aqui na tabela visual |
| BackTestLib | Usar conversões para TP/SL padronizados |
| LevelsManager | Definir TPs em % usando pctToPrice() |
Limitações
| Limitação | Impacto |
|---|---|
| Sharpe/Sortino precisam de array de retornos | Necessário manter histórico de retornos manualmente |
| Anualização assume períodos regulares | Não ajusta para gaps de fim de semana/feriados |
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados não garantem resultados futuros.
Utilitários
Bibliotecas Pine Script utilitárias: conversões matemáticas (ticks/preço/%), métricas Sharpe/Sortino, arredondamento e funções auxiliares gerais.
HiveLibrary
Biblioteca Pine Script minimalista com uma única função: RoundDown() para arredondamento para baixo com precisão decimal configurável.