LevelsManager
Biblioteca Pine Script para gerenciamento de até 6 take-profits escalonados e 1 stop-loss dinâmico por condição, com ajuste automático de tamanho de posição por TP.
Tipo: Biblioteca (library)
Categoria: Gestão de Ordens
Fonte: TradingView Script
Visão geral
LevelsManager é uma biblioteca de gestão de saídas que suporta até 6 take-profits escalonados e 1 stop-loss dinâmico, com distribuição automática do tamanho de posição entre os diferentes níveis de saída.
Caso de uso: Estratégias profissionais que escalonam saídas em múltiplos alvos — por exemplo, fechar 33% em TP1, 33% em TP2 e 34% em TP3, com SL movido para breakeven após TP1.
Como funciona
Estrutura de saídas
Posição Long — 100 contratos, entrada em 100:
TP1: 102 → fechar 33 contratos
TP2: 104 → fechar 33 contratos + mover SL para 102 (breakeven)
TP3: 108 → fechar 34 contratos restantes
TP4–6: (opcional) — deixar em branco se não usar
SL: 98 → sair com todos os contratos restantes
Resultado esperado se TP1, TP2 e SL atingidos (nessa ordem):
TP1: +2.0% em 33%
TP2: +4.0% em 33%
SL em breakeven: 0% em 34%
Net: ≈ +1.98%SL dinâmico por condição
O SL pode ser movido automaticamente baseado em condições:
- Mover para breakeven quando TP1 for atingido
- Mover para TP1 quando TP2 for atingido ("lock de lucro")
- SL trailing baseado em ATR
API / Funções
| Função | Parâmetros | Retorno | Descrição |
|---|---|---|---|
init() | entry, sl, direction | LevelsId | Inicializa o gerenciador |
addTP() | id, price, pct, moveSL | — | Adiciona TP com % da posição e ação no SL |
update() | id, high, low | ExitEvent | Atualiza e retorna evento de saída |
getSLPrice() | id | float | Preço atual do SL (pode ter sido movido) |
remainingQty() | id | float | Quantidade restante na posição |
isOpen() | id | bool | Verdadeiro se posição ainda está aberta |
Exemplo de uso
//@version=6
indicator("LevelsManager — 3 TPs com SL Dinâmico", overlay=true)
import author/LevelsManager/1 as lm
atr = ta.atr(14)
longSignal = ta.crossover(ta.ema(close, 10), ta.ema(close, 30))
var int lvlId = na
if longSignal
sl = close - atr * 1.0
lvlId := lm.init(close, sl, "long")
// TP1: 50% da posição, mover SL para breakeven ao atingir
lm.addTP(lvlId, close + atr * 1.5, 0.50, "breakeven")
// TP2: 30% da posição, mover SL para TP1
lm.addTP(lvlId, close + atr * 3.0, 0.30, "tp1")
// TP3: 20% da posição, sem mover SL (já está travado)
lm.addTP(lvlId, close + atr * 5.0, 0.20, "none")
// Atualizar estado
if not na(lvlId) and lm.isOpen(lvlId)
event = lm.update(lvlId, high, low)
// event.type: "tp1", "tp2", "tp3", "sl"
// event.qty: quantidade fechada
// event.price: preço de saída
// Exibir SL atual
plot(lm.getSLPrice(lvlId), title="SL Dinâmico", color=color.red)Integrações
| Script | Como combinar |
|---|---|
| OrderLib | OrderLib para execução visual + LevelsManager para lógica de saída |
| WCWebLib | Enviar webhook para cada TP atingido |
| LiveTracker | Monitorar posição em tempo real enquanto LevelsManager gerencia saídas |
Limitações
| Limitação | Impacto |
|---|---|
| Máximo de 6 TPs | Suficiente para a maioria dos sistemas |
| Apenas 1 posição por vez | Sem suporte a múltiplas posições simultâneas |
| SL dinâmico requer reconfiguração manual em alguns casos | Trailing ATR pós-TP exige lógica adicional |
Aviso Legal: Conteúdo educativo. Não constitui recomendação de investimento. Resultados passados não garantem resultados futuros.
OrderLib
Biblioteca Pine Script para gestão de ordens com elementos visuais, suporte a múltiplos take-profits e cálculo de taxas da Binance (maker/taker).
LiveTracker by N&M
Biblioteca Pine Script para rastreamento de posição ao vivo com MTM PnL em tempo real, execução de take-profits parciais e monitoramento de posição aberta barra a barra.