HiveLibrary
Biblioteca Pine Script minimalista com uma única função: RoundDown() para arredondamento para baixo com precisão decimal configurável.
Tipo: Biblioteca (library)
Categoria: Utilitários
Escopo: Utilitário mínimo — apenas 1 função
Fonte: TradingView Script
Visão geral
HiveLibrary é uma biblioteca minimalista com uma única função: RoundDown() — arredondamento para baixo (floor) com precisão decimal configurável.
Por que existe? O Pine Script nativo oferece math.floor() que arredonda para o inteiro mais próximo abaixo. HiveLibrary adiciona arredondamento para baixo com casas decimais — necessário ao calcular quantidades de contratos, preços com tick size específico, etc.
RoundDown vs math.floor
math.floor(1.789) = 1 (inteiro abaixo)
math.floor(1.789 * 100) / 100 = 1.78 (manual, propenso a erro)
HiveLibrary.RoundDown(1.789, 2) = 1.78 (forma limpa com 2 casas)
HiveLibrary.RoundDown(1.789, 1) = 1.7 (1 casa decimal)
HiveLibrary.RoundDown(1.789, 0) = 1.0 (sem decimais = igual ao math.floor)API / Funções
| Função | Parâmetros | Retorno | Descrição |
|---|---|---|---|
RoundDown() | value: float, decimals: int | float | Arredonda para baixo com N casas decimais |
Exemplo de uso
//@version=6
indicator("HiveLibrary — RoundDown", overlay=false)
import author/HiveLibrary/1 as hl
// Calcular quantidade de contratos
accountSize = 10000.0
riskPct = 0.01 // 1%
stopLossTicks = 20.0
tickValue = 12.5 // ES futures: 1 tick = $12.50
riskAmount = accountSize * riskPct // $100
contractQty_raw = riskAmount / (stopLossTicks * tickValue) // 0.4
// Arredondar para baixo — nunca operar mais do que o permitido pelo risco
contractQty = hl.RoundDown(contractQty_raw, 1) // 0.4 → 0.4 (sem mudança)
// Se fosse 0.47 → 0.4 (não 0.5)
// Preço arredondado para o tick
rawPrice = 4512.375
tickSize = 0.25
tickedPrice = hl.RoundDown(rawPrice / tickSize, 0) * tickSize // 4512.25
plot(contractQty, title="Qty Contratos")Caso de uso: gestão de posição com tick size
// Qualquer exchange tem um tick size mínimo
// Preço de ordem deve ser múltiplo do tick size
rawTP = close + ta.atr(14) * 2.0 // 4513.7625 (preço bruto)
// Com RoundDown — sempre arredonda para baixo (conservador para TP)
tpPrice = hl.RoundDown(rawTP / syminfo.mintick, 0) * syminfo.mintick
// Resultado: 4513.75 (múltiplo do tick de 0.25)Integrações
| Script | Como combinar |
|---|---|
| Strategy (utilities) | Complementar com conversões tick/preço/% |
| LevelsManager | Arredondar TPs para tick size correto |
| OrderLib | Quantidade de contratos sempre arredondada para baixo |
Limitações
| Limitação | Impacto |
|---|---|
| Apenas 1 função | Não substitui uma biblioteca utilitária completa |
Sem RoundUp() nativo | Implementar manualmente com math.ceil() se necessário |
Sem validação de decimals negativo | Pode causar comportamento inesperado |
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados não garantem resultados futuros.
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.
Libre
Biblioteca Pine Script com funções auxiliares gerais. AVISO: funções deliberadamente obfuscadas com nomes ilegíveis (MMMM, OOOO, XXXX). Tratar com cautela.