Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasTradingView / Pine ScriptBibliotecasUtilitários

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çãoParâmetrosRetornoDescrição
RoundDown()value: float, decimals: intfloatArredonda 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

ScriptComo combinar
Strategy (utilities)Complementar com conversões tick/preço/%
LevelsManagerArredondar TPs para tick size correto
OrderLibQuantidade de contratos sempre arredondada para baixo

Limitações

LimitaçãoImpacto
Apenas 1 funçãoNão substitui uma biblioteca utilitária completa
Sem RoundUp() nativoImplementar manualmente com math.ceil() se necessário
Sem validação de decimals negativoPode causar comportamento inesperado

Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados não garantem resultados futuros.

On this page