Como o Perspicio lê o mercado e toma decisões — do básico ao avançado.
Em resumo
O Perspicio é um assistente de leitura de mercado para futuros perpétuos (USD-M) da Binance. Ele calcula, de forma automática e transparente, uma série de indicadores técnicos de uma moeda, resume tudo em uma nota de -100 a +100 e pede a uma inteligência artificial que interprete esse conjunto e sugira uma tese de trade (compra, venda ou aguardar), com níveis de entrada, alvo e stop.
A filosofia é simples: perder de colher e ganhar de balde. O sistema só sugere um trade quando o ganho potencial compensa o risco com folga.
Nada aqui é recomendação financeira. O Perspicio organiza informação e leitura técnica; a decisão e o risco são sempre do usuário.
A cadeia de valor é: dados de mercado (Binance USD-M Futures) → motor determinístico de indicadores (funções puras) → score de confluência ponderado → ajuste por regime de mercado → interpretação por IA (Claude ou Gemini) → filtro de risco/retorno → persistência e acompanhamento do desfecho → autoaprendizado (recalibração de pesos).
Todo o cálculo dos indicadores é determinístico: os mesmos candles produzem sempre o mesmo snapshot. A IA nunca inventa números — ela só interpreta o snapshot já calculado.
Há dois motores de análise independentes: o Clássico (score de confluência + interpretação da IA, descrito acima) e o Stormer (setups S1–S9 multi-timeframe, detalhado nas seções próprias). Você alterna entre eles no dashboard e pode rodar cada um em lote nas Oportunidades. Cada motor tem sua própria acurácia acompanhada separadamente.
Além do uso manual, há uma Automação que executa todo esse fluxo de hora em hora sobre os 30 pares de maior volume e as 30 gemas, cruza os dois motores num funil de qualidade e — em modo observação (shadow) ou execução real, à sua escolha — seleciona os trades. Ver a seção Automação.
Em resumo
Há três estilos, que mudam quais timeframes e indicadores pesam mais:
Timeframe base e superior por perfil:
5m, superior 1h.15m, superior 1h.4h, superior 1d.Cada perfil também tem um R:R mínimo (scalping 1.2, daytrade 1.5, swingtrade 2.0) e um conjunto de pesos: scalping reforça médias curtas e osciladores; swingtrade reforça médias longas, ADX e estrutura.
Em resumo
Ao pedir a análise de uma moeda, o Perspicio:
São usados 400 candles por análise (cobre a EMA200 com folga e o aquecimento das médias). O candle ainda em formação é descartado — só candles fechados entram no cálculo, evitando leituras que mudam a cada tick. O snapshot é persistido em snapshots_tecnicos e a análise da IA em analises_ia. Qualquer fonte externa (derivativos, BTC, persistência) que falhe é ignorada sem derrubar a análise — o cálculo determinístico é a parte crítica. O precoAtual do snapshot é ancorado no ticker em tempo real (quando disponível), não no fechamento do último candle, para o R:R refletir o preço de agora.
Em resumo
Cada indicador "vota" em uma direção: alta, baixa ou neutro. O Perspicio usa:
Osciladores (RSI/Estocástico/Bollinger) são de reversão: votam contra o movimento. Médias/MACD/ADX são de tendência. Essa distinção é o que o regime de mercado reconcilia (ver adiante).
Em resumo
O score é a nota que resume todos os votos num único número de -100 a +100. Quanto mais indicadores concordam numa direção (e quanto mais importantes eles são), mais forte o score. Perto de 0 significa sinais mistos — o mercado não está claro.
É a soma ponderada dos votos (+peso para alta, -peso para baixa), normalizada pela soma dos pesos apenas dos indicadores que votaram — unanimidade dá exatamente ±100. Neutros e pesos zero são ignorados. Os pesos vêm do perfil e podem ser recalibrados pelo autoaprendizado.
Em resumo
Além dos indicadores, o Perspicio lê o "desenho" do gráfico:
Estrutura e divergências viram "votos sintéticos" no score (chaves estrutura e divergencia). Divergências consideram os dois pivôs mais recentes contra RSI e MACD. Padrões de candle são detectados e exibidos, mas hoje não entram diretamente no score.
Em resumo
O Perspicio identifica zonas onde o preço costuma reagir: suportes (piso, abaixo do preço) e resistências (teto, acima). Elas servem para ancorar o stop (logo além da zona que invalida a ideia) e o alvo (na próxima zona na direção do lucro), deixando o trade mais realista.
Zonas são agrupadas a partir de pivôs (tolerância 0,5%), classificadas pela posição vs preço atual, descartadas se além de 15% de distância, e ranqueadas por proximidade, nº de toques e recência (máx. 3 por lado). A sugestão de níveis usa buffer de ATR e cai num fallback por múltiplos de ATR quando não há zona adequada.
Em resumo
Um sinal no timeframe curto vale mais quando o timeframe maior concorda. O Perspicio verifica o timeframe superior do perfil: se ele confirma a direção, há mais confiança; se conflita ou está neutro, o sinal é rebaixado para "aguardar".
O viés é derivado do score com um limiar (padrão 25). Base e superior precisam apontar a mesma direção não-neutra para confirmar; qualquer conflito ou lado neutro resulta em viés confirmado neutro.
Em resumo
Nem toda ferramenta serve para todo mercado. Em tendência forte, indicadores de reversão (como RSI sobrecomprado) dariam sinais falsos de topo; em mercado lateral (range), os rompimentos costumam falhar. O Perspicio detecta em que regime o mercado está e ajusta o peso de cada indicador de acordo.
O regime (tendencia, range ou indefinido) é classificado por ADX, largura das Bandas de Bollinger e estrutura. A ponderação adaptativa então amplifica (×1,5) os indicadores de tendência e atenua (×0,5) os de reversão em regime de tendência — e o inverso em range. Em indefinido, os pesos ficam inalterados. Isso resolve o problema de sinais que se anulavam.
Em resumo
Em futuros perpétuos, além do preço existem dados que revelam o comportamento dos traders:
Cada um vira um voto no score (chaves funding, open_interest, long_short, liquidacoes). Funding: |taxa| ≥ 0,05% aciona voto contrário. OI: matriz preço×tendência-de-OI. Long/short: extremos (≥ 2,0 ou ≤ 0,5) viram voto contrário. Liquidações: lado dominante precisa ser ≥ 1,5× o outro. São coletados best-effort; se a Binance não responder, a análise segue sem eles.
Em resumo
A maioria das altcoins segue o Bitcoin. Uma ideia de alta numa altcoin muito correlacionada ao BTC perde força se o BTC está caindo. O Perspicio mede a tendência do BTC e a correlação do par com ele para dar um voto de reforço (quando o BTC confirma) ou de cautela (quando o BTC rema contra).
A tendência do BTC vem das EMAs (50 vs 200) e a correlação é de Pearson sobre os retornos. Só há voto quando a correlação positiva é relevante (≥ 0,6). Para o próprio BTCUSDT, o contexto é neutro.
Em resumo
A IA recebe o snapshot pronto (nunca os candles crus) e o interpreta como faria um analista: correlaciona os sinais, decide o viés (alta/baixa/neutro), dá um nível de confiança, escreve os argumentos, define o que invalidaria a tese e sugere entrada, alvo e stop.
Teses de baixa (short) são tratadas com o mesmo rigor das de alta. Se os sinais são conflitantes, a IA fica em "neutro" em vez de forçar um trade.
Suporta Claude e Gemini (o usuário escolhe e usa a própria chave). O catálogo atual é: Claude Sonnet 5 (padrão) e Opus 4.5; Gemini 3 Flash, 2.5 Flash e 2.5 Pro. A partir do Sonnet 5, a Anthropic exige os valores default de sampling — então o cliente OMITE temperature para esses modelos (enviar causaria erro 400). A saída é forçada por function calling num schema fixo: vies, confianca (0–100), argumentos, invalidacao e alvo_sugerido (entrada, alvo1, alvo2?, stop). O prompt injeta o desempenho histórico real da IA no par/perfil para calibrar a confiança, e regras de geometria (short: alvos abaixo, stop acima).
Em resumo
R:R é quanto você pode ganhar dividido por quanto pode perder. Um R:R de 2:1 significa que o alvo está duas vezes mais longe que o stop. O Perspicio só aceita uma tese quando o R:R atinge o mínimo do perfil; senão, rebaixa a ideia para neutro. É a tradução prática de "perder de colher, ganhar de balde".
R:R = |alvo1 − entrada| / |entrada − stop|. Mínimos: scalping 1.2, daytrade 1.5, swingtrade 2.0 (o usuário pode sobrescrever entre 1 e 10). Reprovada → viés neutro, confiança limitada a 25 e alvo removido, com uma nota explicando o rebaixamento. Isso roda antes de persistir, então acurácia e diário só contam sinais com R:R aceitável.
Em resumo
Quando a IA sugere dois alvos, o Perspicio acompanha o trade como um trader faria para "perder de colher": ao atingir o primeiro alvo, realiza parte do lucro e move o stop para o preço de entrada (break-even), protegendo o restante de virar prejuízo. O que sobra busca o segundo alvo.
Gestão ao vivo (opt-in): "perder pouco, ganhar muito". Além da resolução acima (que mede o desfecho), a automação pode GERENCIAR a posição real em três fases:
Duas alternativas mutuamente exclusivas: break-even simples (só move o stop para a entrada em 1R) ou a gestão avançada (parcial + trailing). A escolha é por usuário na tela de Automação.
Quando há alvo2, a resolução usa a versão com gestão: o toque no alvo1 trava a parcial e move o stop para a entrada; o restante encerra no alvo2 (status alvo) ou no break-even (status alvo_parcial). Sem alvo2, mantém o modelo clássico (alvo1 vs stop). Regra de borda: se um candle toca dois níveis, o pior (stop/BE) tem prioridade — conservador. O statusalvo_parcial conta como acerto na acurácia.
Gestão avançada ao vivo. A decisão é PURA em decidirGestao (lib/journal/gestao-saida.ts): recebe entrada, stop atual, preço, ATR e se a parcial já foi feita, e devolve { realizarParcial, fracaoParcial, moverStop, novoStop }. A casca gerirPosicoesAvancado (lib/journal/gerir-posicoes-io.ts) aplica na Binance: realiza a fração com ordem MARKET reduceOnly, cancela as ordens do par e recria o TP (preservado) + SL (break-even ou trailing) para a quantidade restante. Detecta que a parcial já ocorreu comparando a posição atual com a quantidade original do journal. Roda a cada rodada do cron; o trailing é amostrado por rodada (não é loop de alta frequência) e o stop nunca afrouxa. O break-even simples permanece em gerirPosicoesVivas.
Em resumo
Depois que a IA sugere um trade, o Perspicio acompanha o que o mercado fez: se o preço bateu o alvo (acerto), o stop (erro) ou expirou sem resolver. Com isso ele calcula a taxa de acerto real por moeda, perfil e viés.
A resolução percorre os candles após a análise e vê qual nível o preço tocou primeiro (se um candle toca ambos, o stop tem prioridade — cenário conservador). Os candles são buscados no timeframe operacional da própria análise (o mesmo em que ela foi gerada), então o desfecho é medido no horizonte da tese — não num TF fixo. Horizonte padrão de 7 dias; sem resolução, marca "expirada" (fora do denominador da acurácia). Roda por polling na tela e por cron. Taxa de acerto = acertos / (acertos + stops), onde acertos incluem alvo e alvo_parcial; break_even e expirada ficam fora do denominador.
Acurácia por ambiente (produção/homologação). A acurácia dos dois motores (Clássico e Stormer) e o histórico da automação passam a refletir o ambiente ativo no seu perfil: ao alternar entre produção e homologação (testnet), as taxas de acerto e as listagens mostram só as análises daquele ambiente. Os testes que você fez na homologação não contam na acurácia de produção, e vice-versa.
Em resumo
O Perspicio aprende com o histórico: indicadores que vêm acertando ganham mais peso no score; os que erram perdem. Assim a leitura vai se afinando com o tempo, por perfil.
Para cada previsão resolvida, o "resultado real" do mercado é derivado do desfecho (alvo = direção do viés; stop = inverso). Comparando o voto de cada indicador com esse resultado, apura-se a taxa de acerto por chave. Os pesos são reescalados por 1 + intensidade·(taxa−50)/50 (mín. de amostras 10, peso entre 0 e 5). As chaves de derivativos e contexto BTC entram nessa calibração como quaisquer outras quando há amostras.
A calibração aprende só de produção. Diferente da acurácia (que você vê por ambiente), o autoaprendizado de pesos e de confiança — e o desempenho por setup injetado no prompt do Stormer — usa apenas o histórico de produção. Como os pesos ajustados são aplicados quando você opera de verdade, as validações feitas na homologação (testnet) não entram nesse aprendizado para não distorcê-lo.
Em resumo
O Método Stormer é um segundo modo de análise, independente do clássico, baseado nos setups do trader Alexandre Wolwacz. Em vez de um score de confluência, ele responde a uma pergunta específica: existe um setup armado agora? E se sim, qual é o plano: gatilho de entrada, stop e alvo calculados com base nos indicadores já calculados pelo backend.
No dashboard, o seletor Modo de análise alterna entre Clássico e Stormer. Nas Oportunidades, há um botão separado para análise Stormer em lote.
Arquitetura: o backend calcula todos os indicadores de 3 timeframes — uma pilha alto/médio/operacional (padrão 1d + 4h + 15m; na automação o operacional é configurável, e a pilha de contexto acompanha) —, classifica o regime Stormer de cada TF (ALTA_ESTRUTURAL, ALTA_EM_CORRECAO, LATERAL, BAIXA_EM_REPIQUE, BAIXA_ESTRUTURAL) e detecta os 9 setups com funções puras determinísticas. A IA recebe um payload com booleanos e números já prontos — ela valida a confluência top-down, aplica vetos e escreve o plano operacional. Nunca faz aritmética de indicador.
close > MME8 > MME80 com inclinação positiva da MME80 — base do filtro de tendência.Em resumo
São 9 setups catalogados, cada um com condições precisas de entrada, stop e alvo. O backend detecta todos os 9 em paralelo; a IA escolhe o mais relevante dado o contexto top-down.
Cada setup inclui campos de contexto para a IA: volume_confirmado (S3/S7/S9 — se falso, confiança é rebaixada por V2), regime_favoravel (S4 — se está em alta ou perto de suporte), eden_alinhado (S6 — se close > MME8 > MME80), pavio_anomalo (todos — pavio > 3× corpo médio aciona veto V7). O S5 é detectado no snapshot do 4h (não no 15m), conforme o método original. Em mercados laterais nos 3 TFs, o batch descarta o par sem chamar a IA (pré-filtro de regime).
Piso de stop por ATR. Depois que a IA responde, o plano passa por um filtro que impede stops apertados demais (causa comprovada de baixa acurácia em setups de pullback como o S2): se a distância entrada→stop for menor que 1× ATR do TF operacional (fallback 0,6% quando não há ATR), o stop é afastado até o mínimo e o alvo parcial (1R), o alvo final e o R:R são recalculados — preservando a relação risco/retorno declarada, com piso de 2R.
Em resumo
Assim como a análise clássica, as decisões do Método Stormer são acompanhadas após serem geradas: o sistema verifica se o preço atingiu o alvo (acerto) ou o stop (erro) dentro de 7 dias. A taxa de acerto é exibida na tela de Trades, separada por setup.
O objetivo final do método é esse: após ~50 trades por setup, a expectativa matemática real de cada um fica visível. Setups negativos podem ser desligados. A estatística vale mais que a regra.
A resolução reutiliza a mesma lógica de avaliarDesfechoGeridoComExpiracao do sistema clássico. O mapeamento de campos é: gatilho_entrada → entrada, stop_loss → stop, alvo_final → alvo1, alvo_parcial_1r → alvo2 (para gestão com parcial + break-even). A acurácia é calculada por setup_id (S1–S9), decisão (COMPRA/VENDA) e par. Persiste em analises_stormer com os mesmos status: alvo, alvo_parcial, stop, expirada, sem_plano.
Em resumo
A tela de Oportunidades lista moedas rankeadas por liquidez (Top volume) ou por momentum recente (Gemas). Você seleciona um grupo e pode pedir dois tipos de análise em lote:
Os dois resultados convivem na tela e têm botão "Limpar" independente. Ambos sobrevivem à navegação até /trades e de volta.
O rank é determinístico sobre o ticker de 24h. A análise clássica em lote descarta moedas com |score| < score_minimo (padrão 25) antes de chamar a IA. A análise Stormer em lote pré-filtra por regime: pares com 3 TFs em LATERAL ou BAIXA_ESTRUTURAL em 1D+4H são descartados sem custo de tokens e marcados como descartada_regime. Concorrência de IA: 4 workers no clássico, 9 no Stormer (o prompt caching mantém o custo baixo com o system prompt estável, permitindo mais paralelismo sem estourar o rate limit). Persistência é fire-and-forget no Stormer para não bloquear a resposta.
Em resumo
A tela de Trades é organizada em três abas para não poluir a visão:
A partir de uma sugestão da IA, o botão "Abrir trade com esses níveis" leva você à aba Operar com entrada, alvo e stop já preenchidos. Você revisa o resumo (quantidade, R:R) e confirma. As ordens de proteção (take profit e stop loss) são criadas junto.
Entrada a mercado ou limite. Na entrada limite há a opção Somente maker (post-only), ligada por padrão: ela garante que você entra exatamente no preço escolhido, como maker. Se o preço informado já executaria na hora (compra igual/acima do mercado, ou venda igual/abaixo), a corretora rejeita a ordem em vez de convertê-la em mercado — a tela avisa isso antes de enviar.
Registro automático. Não há mais registro manual de trades. Ao enviar uma ordem, o trade é gravado no diário automaticamente com o preço de entrada real. Quando a posição é encerrada (por alvo, stop ou fechamento manual), a reconciliação grava o preço de saída e o resultado exatos. O botão Sincronizar força essa reconciliação na hora, sem depender de nenhum agendamento.
A abertura usa endpoints assinados da Binance (chave por usuário, criptografada). São enviadas a ordem de entrada (MARKET, ou LIMIT com timeInForce GTC; GTX quando post-only) e as ordens condicionais de TP/SL (Algo Service). Se a criação do TP/SL falhar, há limpeza automática (fecha a posição e cancela órfãs) para não deixar risco descoberto.
Preço de entrada real. Em MARKET a resposta da ordem costuma vir com avgPrice zerado, então o preço é resolvido por uma cascata: avgPrice → preço da ordem → média ponderada dos fills da própria ordem (userTrades por orderId) → preço de referência do dimensionamento. Uma LIMIT que fica pendente registra o próprio preço limite.
Reconciliação (Sincronizar). Compara os trades binance-live ainda abertos com as posições reais da conta. Para os que já não têm posição, deriva o preço de saída EXATO dos fills de fechamento (lado oposto à direção, realizedPnl ≠ 0, posteriores à abertura) e grava pnl_valor com o PnL realizado real; sem fills, cai num fallback por mark price. A reconciliação também repara trades já fechados que ficaram sem entrada (reconstruindo-a pelos fills de abertura) e trades fechados pelo fallback que ficaram sem pnl_valor — assim que os fills aparecem, o PnL realizado real é preenchido e o trade passa a contar nas métricas financeiras. A seção "Registros em aberto no journal" só aparece como rede de segurança quando um trade não pôde ser fechado automaticamente (edição manual de entrada/saída). O painel também mostra uma sugestão de tamanho por risco (ver seção seguinte).
Em resumo
A tela Automação roda, de hora em hora, a mesma análise que você faria à mão nas Oportunidades — os 30 pares de maior volume e as 30 "gemas", nos dois motores (Clássico e Stormer) — e passa cada par por um funil de qualidade. Só o que sobrevive ao funil vira um candidato aprovado. O número de trades é consequência da qualidade encontrada, não uma meta: se nada bom aparece, a decisão certa é não operar.
O funil aplica, nesta ordem: concordância/direção (Clássico e Stormer; conflito de direção descarta), regime não lateral, proteção de regime adverso (não abre contra a tendência de fundo — ver critérios abaixo), fontes exigidas e setup permitido (seus critérios, ver abaixo), geometria coerente dos níveis (em long o alvo fica acima e o stop abaixo da entrada; em short, o inverso), R:R mínimo, guarda de liquidação (rejeita quando o stop ficaria além do ponto de liquidação da alavancagem) e, por fim, correlação e orçamento (no máximo N trades por rodada, priorizando os de maior qualidade). Cada reprovado é registrado com o motivo, para você entender por que não passou.
Critérios de aprovação (configuráveis). Além de margem, alavancagem e máximo de trades, você define:
regime_adverso). Em vez de operar a direção oposta, a automação simplesmente fica de fora quando o contexto é contrário. Pullbacks a favor da tendência (comprar a correção numa alta, vender o repique numa baixa) continuam liberados. Você pode desligar para comparar o comportamento.alinhamento_conflitante). É uma proteção; dá para desligar na tela em Filtros de aprovação.gate_confianca_ativo). Vem desligado: sem histórico a IA reporta confiança baixa e ligar por padrão barraria até longs a favor da tendência que deram alvo. É opt-in — ligue depois que o histórico de acerto amadurecer.regime_direcao_rapida). A média longa que decide o regime sobe de leve quase sempre, então uma inclinação minúscula era lida como "alta" — o que fazia a automação comprar o topo de um range. Esta flag eleva o piso de lateralidade do operacional, reduzindo entradas de continuação no fim de uma perna. É opt-in — serve para mercados laterais.descartar_lateral_operacional). Antes o descarte só acontecia quando os três timeframes (1D/4H/15M) estavam laterais ao mesmo tempo — uma condição que quase nunca ocorria, então o lateral entrava no motor como se fosse tendência. Liga para não gastar análise em pares sem direção clara no ponto de entrada.adverso_usa_confirmacao_operacional). Resolve o caso de um short a favor de uma queda já visível nos timeframes rápidos ser vetado só porque a média longa do fundo ainda apontava "alta" por atraso. Mantém a simetria para long e short.regime_direcao_responsiva). Quando ligada, a direção do regime — para quais lados o mercado está indo — passa a ser decidida por uma média mais rápida (MME21) em vez da média longa (MME80), que é lenta e reage ao mercado só dias depois de uma virada. Vale para 1D/4H/15M e para o próprio BTC: como o regime do BTC deixa de ser lido como "alta" o tempo todo, a regra que veta shorts de altcoin em alta do BTC passa a liberar vendas quando o mercado de fato cai. A estrutura do método (o que distingue alta estrutural de correção) não muda — só a leitura de para onde o preço está indo. É a flag que faz o sistema enxergar baixa e lateral de verdade.Dois modos. Por padrão a automação roda em shadow (observação): os aprovados são só registrados, nada é enviado à corretora — serve para medir a expectativa real antes de arriscar capital. Quando você liga "Abrir trades na Binance" (opt-in explícito, com confirmação), os aprovados passam a ser abertos de verdade na sua conta, com margem isolada e TP/SL — e ficam registrados no diário como qualquer trade.
Proteção contra slippage de entrada. Ao abrir a mercado, o preço realmente executado pode diferir do sugerido (o mercado se move). A automação reancora o stop e o alvo ao preço real de entrada, preservando as distâncias da tese — assim o risco/retorno que aprovou o trade continua valendo. Se, com o preço real, o R:R já não fecha ou o stop passaria do ponto de liquidação, a posição é fechada na hora e o trade não é mantido (melhor sair no zero a zero do que carregar um trade sem risco/retorno). Isso evita o caso de entrar longe demais e ser stopado logo abaixo, perto do alvo.
Dois placares de acerto. A tela separa a taxa teórica (todos os aprovados resolvidos, tenham aberto ou não — a expectativa da estratégia) da taxa realizada (só os que abriram de fato na Binance). Há também um resumo de desempenho por setup e por tipo de sinal (concordância vs unilateral) dentro da automação — o número certo para decidir quais setups permitir, em vez do desempenho global.
Desfecho pelo resultado real. Para os trades que foram de fato executados na Binance, o desfecho (ganhou ou perdeu) vem do resultado real da posição no diário — não de uma simulação sobre os níveis sugeridos. Assim o placar da automação bate com o dinheiro que entrou ou saiu da conta: um trade que fechou no prejuízo conta como stop, mesmo que o preço tenha tocado o alvo sugerido depois. Sinais em modo observação (que não abriram) continuam sendo medidos pela simulação de preço.
Botões: Rodar agora (dispara uma rodada sob demanda), Pausar/Ativar (o disparo horário) e Atualizar. O histórico de rodadas é paginado ("Carregar mais rodadas") em vez de crescer sem limite. Os painéis de parâmetros e de critérios ficam recolhidos em accordions.
Metas de PnL (freio por janela). Você pode definir metas de ganho e de perda por janela de tempo — diária, semanal e mensal. Quando o resultado realizado líquido de uma janela atinge a meta, a automação para de ABRIR novos trades até a janela virar; as posições já abertas continuam normalmente (nada é fechado por meta). Regras simples:
Orquestração. O job /api/cron/shadow (protegido por CRON_SECRET, agendado por hora) processa só os usuários que ativaram a automação. Para cada um, chama as quatro rotas de análise em lote (Clássico e Stormer × top-volume e gemas), cruza os resultados por par e aplica o funil puro (lib/shadow/funil.ts). O botão "Rodar agora" (/api/shadow/run) faz o mesmo sob demanda, para o usuário logado.
Autoria das análises. As chamadas internas às rotas de análise levam o CRON_SECRET e o id do usuário, de forma que as análises geradas pela automação ficam vinculadas a você e entram na sua acurácia (Clássico e Stormer) — não ficam órfãs. Sem o segredo válido, o id é ignorado (um cliente comum não forja autoria de terceiros).
Alavancagem efetiva e guarda de liquidação. A alavancagem usada é min(desejada, teto do par) — o teto vem do leverageBracket da Binance, resolvendo o caso "20x não dá, 10x dá". A guarda rejeita o candidato quando |entrada − stop| / entrada alcança a distância de liquidação da alavancagem (≈ 1/alavancagem), pois a posição seria liquidada antes de a tese ser invalidada.
Critérios no funil. As escolhas de aprovação são campos da config (fontes_exigidas, ordenacao, setups_permitidos) e entram no funil puro. Fontes usam a direção efetiva de cada motor; Só concordância reprova unilaterais; a priorização é uma ordenação lexicográfica (o critério escolhido primeiro, depois os demais como desempate). O setup do Stormer de cada sinal é persistido (setup_stormer), o que habilita o filtro de setup e o painel de desempenho por setup.
Timeframe operacional configurável. Os campos timeframe_classico (padrão 15m) e timeframe_stormer (padrão 1h) da config definem o horizonte de geração E de resolução de cada motor. O batch usa esse TF ao montar a análise e o grava no sinal (shadow_sinais.timeframe) e na análise (analises_ia.timeframe / analises_stormer.timeframe_operacional), de modo que a resolução do desfecho busca candles no MESMO horizonte. No Stormer, a pilha multi-TF de contexto acompanha o operacional (ex.: operacional 1h → contexto 1w/1d), mantendo a leitura top-down do método.
Proteção de regime adverso. O gate protecao_regime_adverso (config, padrão ligado) reprova a tese contra a tendência ESTRUTURAL dominante. A tendência de fundo é lida dos timeframes superiores do Stormer (1D, com apoio do 4H) — não do TF operacional — para que um pullback no curto prazo dentro de uma tendência de fundo NÃO bloqueie a entrada a favor dela. É uma camada de RISCO no funil (não altera a geração dos motores): protege PnL e drawdown mantendo a automação fora de entradas contra-tendência de baixa taxa de acerto, sem forçar a direção oposta.
Execução real. Ligada por usuário (executar_binance), abre cada aprovado a mercado com a chave do próprio usuário (reusa o abrirOrdem da tela de Trades) e registra no diário com origem binance-live — vinculando à análise clássica quando ela existe — daí aparecer no histórico e ser reconciliado no fechamento. Cada tentativa registra o resultado (aberto / pulado / falha, com o motivo) no próprio sinal.
Não empilhar a mesma aposta. Além da trava por par já aberto, o orçamento considera as posições vivas de rodadas anteriores (o teto de trades vale sobre a conta, não só sobre a rodada) e a correlação com o que já está aberto — um candidato no mesmo par+direção de uma posição viva é reprovado como ja_posicionado.
Concorrência e reinício (execução segura). Um lock por usuário impede que o cron horário e o "Rodar agora" rodem em paralelo e dupliquem ordens (o segundo disparo é recusado enquanto o primeiro roda; o lock tem TTL para não travar num crash). Antes de enviar, o candidato é marcado como enviando, e a ordem de entrada usa um id de cliente determinístico por rodada+par: se o processo reiniciar, uma reexecução não abre a posição duas vezes — a própria Binance rejeita o id duplicado (tratado como já processado). A decisão de executar em modo real é relida no momento do envio, então desligar "Abrir trades" durante uma rodada em andamento impede o disparo.
Placar e desfechos. Os agregados (avaliados, aprovados, alvos/stops, taxas) são contados no banco sobre todo o histórico — não sobre a janela exibida — então não oscilam conforme você pagina. A taxa realizada conta só sinais com execução aberta. A resolução dos candidatos reusa a mesma lógica anti-look-ahead das previsões (descarta a vela em formação, só candles após a criação, empate intra-candle conta como stop) e roda ao abrir a tela, no "Atualizar" e no cron. Tudo é opt-in; parâmetros e faixas são validados no servidor (margem > 0, alavancagem 1–125, máx. 1–20 trades; ordenação, fontes e setups restritos aos valores válidos).
Parâmetros de gestão configuráveis (por usuário, na tela de Automação, persistidos em shadow_config):
modo_sizing (valor | risco) e risco_usd — dimensionamento da posição (ver seção Sizing).rr_min — R:R mínimo exigido do candidato (assimetria "perder pouco"; padrão 1,5). Aplicado no funil.gatilho_breakeven_r — break-even simples em N×R (0 = desligado).usar_gestao_avancada — liga a gestão avançada (parcial + trailing), substituindo o break-even simples; com gatilho_parcial_r, fracao_parcial e trailing_atr_mult.Defaults preservam o comportamento anterior: a gestão avançada vem desligada (opt-in, pois muda a posição ao vivo). Recomenda-se validar em modo shadow antes de ligar com capital real.
Em resumo
A regra profissional de sobrevivência é arriscar sempre uma fração pequena e fixa do capital por trade (ex.: 1%). O painel de ordem sugere o tamanho da posição a partir desse risco e da distância até o stop: stops mais largos pedem posições menores, para que a perda máxima seja sempre a mesma fração do capital, em qualquer par.
risco em USDT = capital × risco%/100; quantidade = risco ÷ |entrada − stop|; notional = quantidade × entrada; margem = notional ÷ alavancagem. Requer entrada, stop e capital.
Três modos de dimensionamento na execução (capitalModo em abrirOrdem):
valor — margem fixa em USDT (histórico). A perda no stop VARIA conforme a distância do stop.pct — margem = % do saldo disponível.risco — dimensiona a quantidade por risco ÷ |entrada − stop|, de modo que a perda no stop seja ~constante entre trades (a margem vira consequência). É o modo recomendado para o objetivo "perder pouco". Disponível na ordem manual e na automação.Em resumo
O resultado "bruto" de um trade ignora as taxas da corretora e o slippage (diferença entre o preço esperado e o executado). O Perspicio desconta esses custos para que a performance e o backtest mostrem um número mais próximo do real — o que você de fato leva para casa.
Custo total = (taxa por perna + slippage por perna) × 2 (ida e volta). Padrões conservadores: taker 0,05% e slippage 0,02% por perna, ajustáveis. O resultado líquido = bruto − custo total, sempre subtraído (reduz ganho e amplia perda). Aplicado na simulação realista do backtest e disponível para o cálculo de resultado do diário.
Em resumo
Todo trade fica registrado num diário, com resultado percentual quando fechado. A tela de performance mostra sua taxa de acerto, resultado acumulado (curva de capital) e desempenho por moeda e por período.
Resultado percentual: long = (saída−entrada)/entrada; short = o inverso. Win rate = trades com resultado > 0 sobre os fechados. Há agregação por símbolo e por período (7d/30d/90d/tudo) e curva de capital acumulada. Além do win-rate, a tela mostra métricas de risco: expectativa por trade (pWin·ganho médio − pLoss·perda média), profit factor (ganhos ÷ perdas) e max drawdown (maior queda pico-a-vale da curva). Essas métricas revelam se a estratégia é lucrativa mesmo com win-rate abaixo de 50% — o que importa é a expectativa, não só a taxa de acerto.
Separação por ambiente (produção/homologação). Cada trade guarda o ambiente em que foi aberto. Ao alternar entre produção e homologação (testnet) no perfil, o diário e a performance passam a mostrar só os trades do ambiente ativo — os testes feitos na homologação não contaminam as métricas de produção, e vice-versa. Os dados de mercado (candles, preços, indicadores) são sempre de produção; só a parte da sua conta (ordens e trades) segue o ambiente escolhido.
Em resumo
Como tudo é automatizado, a plataforma avisa você no Telegram quando algo acontece na sua automação: quando ela abre um trade na Binance, quando a gestão avançada faz uma saída parcial, quando o stop é movido (break-even ou trailing) e no desfecho do trade — quando bate o alvo ou o stop.
Para ativar, abra o bot da plataforma no Telegram, envie /start e cole o chat_id que ele devolve no hub de configuração (ao lado das chaves da Binance). Você pode ligar/desligar as notificações sem perder a conexão e desconectar quando quiser. As mensagens de homologação (testnet) vêm com um selo para você não confundir com produção.
O envio é best-effort: o módulo lib/notificacoes/ formata a mensagem (função pura) e a despacha ao Telegram numa casca que NUNCA lança — se o Telegram cair, faltar a chave do bot ou a rede falhar, a notificação é engolida sem afetar o trade. Os gatilhos ficam no caminho da automação: abertura (executar-trades), saída parcial e stop movido (gestão de saída) e o desfecho pela verdade real do trade fechado (executar-resolucao-shadow).
Importante: o alvo e o stop só disparam notificação pela verdade real — o trade de fato fechado na conta (lucro → alvo, prejuízo → stop) —, nunca por uma mecha que apenas tocou o nível sugerido com a posição ainda aberta. O chat_id é guardado cifrado (AES-256-GCM) e jamais volta ao navegador: a tela só sabe se está conectado e se as notificações estão ligadas.
Em resumo
O backtest roda a mesma lógica de análise sobre o histórico para estimar o desempenho da estratégia num par. Além da taxa de acerto de direção, ele simula trades realistas: define stop e alvo com base na volatilidade (ATR), verifica candle a candle qual foi tocado primeiro (se o stop viesse antes do alvo, conta como perda) e desconta os custos, reportando expectativa por trade e profit factor.
Janela deslizante reusando montarSnapshot (mesma lógica de produção, incluindo o regime). A simulação realista ancora stop/alvo em múltiplos de ATR (1,5× e 3× por padrão), resolve o desfecho com path-dependency (mesma lógica de tracking) e aplica custos, produzindo taxaAcerto, expectativa e profitFactor líquidos. Limitação: os dados de derivativos e o contexto BTC não são backtestáveis com candles puros (ficam ausentes); o backtest reflete os indicadores técnicos + regime.
Em resumo
Os dados vêm da Binance (futuros USD-M). Para não sobrecarregar a API, os candles ficam em cache por um tempo que depende do timeframe. Suas chaves da Binance e de IA são guardadas de forma criptografada e usadas só em seu nome.
Candles são cacheados em candles_cache com TTL por timeframe; scalping ignora o cache para dados frescos. Endpoints públicos (klines, ticker, derivativos) não são assinados; conta e ordens usam assinatura HMAC. Erros de rate limit (429/418) e símbolo inválido são tipados e tratados.
Frescor na interface. Os dados ao vivo (preço, posições, saldo, P&L aberto e candles) seguem o padrão stale-while-revalidate: ao voltar a uma tela, ela reexibe o último valor conhecido imediatamente e revalida em segundo plano — sem piscar "carregando" e sem exigir recarregar a página. O polling continua ativo (preço/posições a cada 5s, saldo a cada 15s, candle ao vivo via stream) e retoma na hora quando a aba volta ao foco. Um F5 limpa esse cache de sessão e recarrega do zero. As transições entre páginas mostram esqueletos (skeletons) enquanto a próxima tela monta.
Proteção de custo/escala. Os endpoints caros (análise em lote) e os públicos de mercado (klines, preço, screener) têm rate limiting por usuário/IP — uma janela deslizante que barra loops e abuso com HTTP 429, sem atrapalhar o uso normal. O candles_cache tem retenção por timeframe (job diário): velas curtas expiram em dias, as diárias/semanais ficam anos, mantendo o banco compacto sem perder histórico relevante.
Em resumo
Cada pessoa cria sua conta com e-mail e senha e conecta as próprias chaves (Binance e IA), guardadas de forma criptografada. Toda conta tem um status (ativa ou inativa) e um plano. Contas novas entram ativas e no plano gratuito.
O perfil (perfis_usuario) carrega role (user/admin), status (active/inactive) e plano (free/pro) + plano_expira_em. O isolamento por usuário (RLS) é reforçado por policies de admin via a função is_admin() (SECURITY DEFINER, evita recursão de RLS). A autorização das rotas passa por um helper único requireUsuario (401 sem sessão, 403 conta inativa) e requireAdmin; o proxy protege as rotas do app e redireciona contas inativas. O gate de plano requerPlano('pro') já existe para fechar features pagas quando a cobrança for ligada (considera a expiração). A gestão usa /api/admin/usuarios (service role), com trava que impede o admin de desativar ou rebaixar a própria conta.
O Perspicio é uma ferramenta de leitura técnica e organização de informação. Não é recomendação financeira. Operar futuros com alavancagem envolve risco elevado, incluindo a perda total do capital. As sugestões da IA são interpretações automatizadas e podem estar erradas. Decida com o seu próprio julgamento e nunca arrisque mais do que pode perder.