Kaique Mitsuo Silva Yamamoto
Mercado financeiroAutomação de EstratégiasTradingView / Pine ScriptBibliotecasBacktesting

Position (Electrified)

Biblioteca Pine Script v6 para simulação de trades individuais dentro de indicadores: rastreia entrada, saída, PnL e estado da posição sem usar strategy().

Autor: Electrified Tipo: Biblioteca (library) Versão Pine Script: v6 Categoria: Backtesting Fonte: TradingView Script


Visão geral

Position é a biblioteca do autor Electrified para simular trades individuais dentro de um indicator() Pine Script v6. Enquanto outras bibliotecas de backtesting focam em métricas agregadas, Position foca em rastrear o estado de uma posição aberta barra a barra.

Diferencial: Compatível com Pine Script v6 (a versão mais recente), ao contrário de muitas bibliotecas de backtesting ainda em versões mais antigas.


Como funciona

Ciclo de vida de uma posição

Estado: FLAT

    │ pos.open(price, direction)

Estado: OPEN
    │ pos.update(high, low) [a cada barra]

    ├── TP atingido → pos.close("tp")   → Estado: FLAT
    ├── SL atingido → pos.close("sl")   → Estado: FLAT
    └── Sinal manual → pos.close("exit") → Estado: FLAT

Rastreamento por barra

A biblioteca rastreia em cada barra:

  • PnL não realizado (MTM — Mark-to-Market)
  • MFE (Maximum Favorable Excursion) — maior ganho potencial
  • MAE (Maximum Adverse Excursion) — maior perda potencial

MFE e MAE são úteis para otimizar TP e SL.


API / Funções

FunçãoParâmetrosRetornoDescrição
new()PositionCria um novo objeto de posição
open()price, direction, tp, slAbre posição
update()high, low, closeboolAtualiza estado; retorna true se fechou
close()price, reasonFecha posição manualmente
isFlat()boolVerdadeiro se não há posição aberta
isLong()boolVerdadeiro se posição é long
isShort()boolVerdadeiro se posição é short
unrealizedPnL()pricefloatPnL não realizado ao preço atual
mfe()floatMaximum Favorable Excursion
mae()floatMaximum Adverse Excursion

Exemplo de uso

//@version=6
indicator("Position Library — Exemplo", overlay=true)

import Electrified/Position/6 as pos

// Criar objeto de posição
p = pos.new()

// Parâmetros
atr = ta.atr(14)
tp  = close + atr * 2.0
sl  = close - atr * 1.0

// Sinal de entrada
longSignal = ta.crossover(ta.rsi(close, 14), 50)

// Abrir posição
if longSignal and pos.isFlat(p)
    pos.open(p, close, "long", tp, sl)

// Atualizar a cada barra
if pos.update(p, high, low, close)
    // Posição fechou
    result = pos.lastClose(p)
    // result.reason: "tp" | "sl" | "manual"
    // result.pnl:   P&L realizado

// Exibir PnL não realizado
if not pos.isFlat(p)
    label.new(bar_index, close,
        "PnL: " + str.tostring(pos.unrealizedPnL(p, close), "##.##%"),
        style=label.style_label_left, size=size.small)

MFE e MAE — Análise de qualidade de trades

MFE (Maximum Favorable Excursion):
  Quanto o preço foi a seu favor antes de fechar.
  MFE >> TP → seu TP está muito apertado
  MFE ≈ TP → TP bem calibrado

MAE (Maximum Adverse Excursion):
  Quanto o preço foi contra você antes de fechar.
  MAE >> SL → muitos stops sendo atingidos prematuramente
  MAE ≈ SL → SL bem calibrado

Integrações

ScriptComo combinar
BackTestLibAgregar trades do Position em estatísticas globais
LapseBacktestingTableExibir métricas finais em tabela visual
TradeTrackerv2Visualizar cada trade no gráfico

Limitações

LimitaçãoImpacto
Uma posição por vezSem pyramiding
Sem simulação de comissão nativaImplementar manualmente no PnL
v6 específicoIncompatível com scripts em versões anteriores

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

On this page