EA CandleSniper · v1.263 · Produção
CandleSniperPro
Versão clean da ajuda — só os parâmetros do robô de produção. Sem indicadores, contra-tendência, Telegram, Stats API, zonas, debug ou proteção da cesta (que existem só no robô de estudo).
O que é o CandleSniperPro
Objetivo principal — capturar a reversão logo após um candle de corpo esticado (movimento exagerado), entrando na direção oposta ao corpo desse candle.
Como funciona — a cada nova vela o EA avalia o candle anterior (o "START"). Se o corpo for grande o bastante e passar nos filtros (corpo/range, sombra, horário), ele arma um sinal na direção contrária e só executa quando o preço confirma uma reversão de X pontos no candle atual. Aí abre uma cesta de até 5 ordens (com pesos, TP e trailing por perna) e gerencia TP / SL / proteções até encerrar.
Propósito — é a versão de produção (conta real), enxuta: só o motor de operação, os cards por operação e o desenho "e se eu entrasse". Sem indicadores, contra-tendência, Telegram, Stats API, zonas, debug ou proteção da cesta — esses ficam no robô de estudo.
Lógica operacional · IA · resumo
Para uso em IA
Documento de referência do CandleSniper 1.263. Use apenas os Inp listados e os nomes de botões/campos descritos; o código mantém estado em runtime (g_, painel, GlobalVariables) que pode divergir dos inputs após a primeira sessão.
Arquitetura modular + sistema de perfis
Desde a v1.110 o EA está dividido em módulos sob MQL5/Experts/:
- core/:
CS_Common(enums),CS_Inputs(declaraçõesinput),CS_State(globaisg_*+ structs),CS_FileIO(panel persist via GlobalVariables),CS_Helpers(math/lot/volume/PnL fmt),CS_LiveJson(log JSON incremental por cesta). - ui/:
CS_Panel(painel principal + lateral Ajuste fino),CS_PanelProfiles(painel de perfis),CS_PanelIndicadores(painel de indicadores + guia de score),CS_PanelUpdate(repaint),CS_PanelEvents(handlers de click/edit),CS_Drawing(cards de debug + modo ESTUDO). - motor/:
CS_Signal(EvaluateStartCandle+ filtros),CS_Strategy(ProcessAutoStrategy),CS_Trade(OpenBasketAuto/Manual),CS_Risk(trailing, BE, prot.cesta),CS_Tracking(basket id, comments, closed orders),CS_Closing(encerramento automático),CS_Indicators(indicadores visuais + scores de reversão). - perfis/:
CS_ProfileTypes(structCSProfile+HorarioSegment),CS_ProfileEngine(parser JSON,MatchProfile,ApplyProfile, snapshot/restore MANUAL).
Perfis JSON via InpPerfisJsonFile (relativo a MQL5/Files/; no Tester também Common/Files/). Modos: MANUAL, AUTO PERFIL, FIXED. Modo inicial: InpPerfilModo (default AUTO) + InpPerfilFixoNome se FIXED. Editor em /perfil. Em AUTO/FIXED campos read-only; COMPRAR/VENDER/ARMAR OPER. desabilitados em AUTO. Snapshot MANUAL em g_manualSnap.
InpRangeBodyPontos (string): "1000" = min; "700-1000" = range. Válido no F7, painel e JSON de perfil. Inválido bloqueia entradas (input) ou ignora perfil (JSON).
Trailing (desde v1.145): InpTrailingGatilhos, InpTrailingDistancia e InpTrailingStep são três strings O1–O5 (ex.: "0-0-0-80-80").
Filtro horario_operacao (opcional, raiz do perfil): "3", "15-18", "9|13|15-17|22". Broker time. Prioridade absoluta sobre perfis sem horário.
InpHorarioOperacao (global, input do EA): mesma sintaxe do horario_operacao de perfil, mas age como filtro global que bloqueia qualquer entrada fora das horas configuradas. Vazio = sem restrição.
InpPointScale: 0=auto (3/5 dígitos→10×), 1=sem ajuste, 10=forçar. Afeta todos os cálculos em pontos (corpo, SL, TP, etc.).
Indicadores visuais (desde v1.200): 6 indicadores internos (S/R D1, ATR Band, EMA 20, EMA 50, Sessões, VWAP) com toggles no painel INDICADORES. Inputs InpInd* definem estado inicial; painel persiste via GlobalVariables.
Sistema de Score (desde v1.200): 4 scores em tempo real — Entry (setup técnico: ATR stretch, Z-Score, rejeição, corpo vs avg, exaustão), Context (localização: S/R, VWAP, EMA, sweep, H4/H1), Risk (continuação: momentum, aceleração, stretch baixo, H4 contra), Final (combinado 0–100 com decisão textual PREMIUM/BOA/PODE ENTRAR/AGUARDAR/EVITAR). Inclui análise multi-TF (H4/D1/W1/MN — bid vs open do candle corrente + % distância) e frase narrativa. InpDebugScore imprime decomposição no log.
Telegram Alerts (InpTg*): notificação remota antes do close. Master switch InpTgAtivo (false = zero overhead). O EA fala só com o backend (InpTgApiUrl) — bot token, chat ID e botões de risco/SL ficam no servidor. Envia POST N segundos antes do close (InpTgSegundosAntes) e faz polling GET para receber a decisão. Filtros: horário (InpTgHorarioNotificacao), modo do EA (InpTgModoFiltro), condição (InpTgCondicaoEnvio). Ação sem resposta configurável (InpTgDefaultAction: ENTRAR/PULAR).
Lógica operacional
Timeframe e velas
- O EA está preso ao período do gráfico. START = barra índice 1 (fechada). Atual = índice 0.
- Em cada mudança de Time[0], um ciclo novo de qualificação de START pode começar (sinal anterior sem entrada vira «sem confirmação» no debug).
Quando ProcessAutoStrategy corre
- Se não há
g_autoTradeOne não hág_armarProxOper, zera estado de sinal e sai (AUTO off). g_armarProxOper: permite uma próxima janela em que o START é forçado como válido sem corpo mínimo, sombra, filtro range, etc.; flag é consumida ao fechar a vela; imprime log «ARMAR OPER. consumido». Também ignora o bloqueio de AUTO para esse arranque.
Fase 1 — Qualificar START (abertura de vela nova)
- Lê OHLC do START.
- Se não for modo armar forçado:
EvaluateStartCandle— corpo em pontos vs g_rangeBodyPontos (piso); teto vem do perfil FIXED ativo viaProfileEngine_ActiveBodyMax()quandohasBodyMaxFromRangefor true (em MANUAL/AUTO PERFIL não há teto nesse ponto — AUTO valida teto dentro do_CSP_CandleFiltersPassno Match); filtro corpo/range se g_filtroRangeOn, direção reversa do corpo, g_tipoOperacao, g_filtroSombraOn com limites, extremos gravados para SL %. - Primeiro candle do dia civil no período atual: bloqueio — não arma sinal.
- Se aprovado: arma — g_signalDirection, GetConfirmacaoPontos(body) (PTS fixos ganham da % corpo via g_confPontos/ g_confPercentual), GetSLPontos, abertura do candle 0 naquele momento em g_signalOpen0.
Fase 2 — Tick com sinal armado
- Uma entrada por vela: g_umaEntradaPorCandle + já entrou nesta barra.
- Posição aberta: g_bloquearNovaEntrada + já existe magic no símbolo.
- Spread: > g_spreadMaxPontos → para.
- Confirmação em preço usando Open[0] e distância em pontos igual à calculada em Fase 1 (bid/ask vs open0 ± N×Point).
- Novamente bloqueio 1.º candle do dia antes de enviar.
- Resolve perfil via
ProfileEngine_ResolveForEntry(body, corpoPctRange, sombraRevPct, candleStartTime). MANUAL/FIXED retornam true direto (g_ já refletem o que vai operar). AUTO PERFIL fazMatchagora: pode retornar idx (aplica perfil em g_) ou bloquear com razãono_profile_match,profile_conflictouhorario_active_candle_rejected. Razão é gravada emg_lastBlockReasone o sinal é abortado. OpenBasketAuto(direction, ClampQuantidade(), slPts, …)com ClampQuantidade = 5 sempre.; lotes apenas para ordens g_ordAtiva[i] não nulas na etapa final (redistribuição se só parte ativa). O snapshot do perfil (mode,name,match_kind,match_hour,match_spec) é gravado emg_liveCurrentpara sair no live JSON.
Gestão intra–OpenBasket
- SL real pode diferir dos pontos nominais no modo % candle — lotes dimensionados por distância real entrada→SL.
- Trailing configurado pela tripleta de strings por índice (gatilho, distância, passo).
Ciclo por tick quando não está em modo backtest player
Proteção cesta → trailing por perna → tracking de fechos → encerramentos automáticos (hora / N velas / minutos) → ProcessAutoStrategy → UI.
Entrada manual / ações
- OpenBasketManual no COMPRAR/VENDER (duplo clique).
- FECHAR TODAS / SAIR POSITIVO / nudge TP-SL: ver secção Painel.
Modo ESTUDO
- Não opera em conta: só objetos STUDY_ no gráfico; simula lotes (CalculateLotsForBasket), g_ordAtiva e fechos walk-forward até TP ou SL.
- Ligar o botão ESTUDO: AUTO off, sem sinal, sem posição; ao ligar zera ARMAR e estudos anteriores.
- Duplo clique no mesmo candle em ≤500 ms (fora dos botões): candle = START; entrada no seguinte após confirmar trigger com high/low intrabar desde o open. Walk-forward até TP ou SL; mesmo candle com ambos tocados → SL primeiro.
Parâmetros (Inp*)
A lista detalhada segue nas secções com MT5: nomes técniques + textos espelhados do painel e campos.
Nota (coluna MT5): No MT5 os input aparecem com comentários na coluna da esquerda — aqui repetimos esse texto onde existir no código-fonte. Quando um perfil JSON está ativo (AUTO PERFIL ou FIXED), edits no painel são bloqueados e os valores efetivos vêm do perfil (InpRangeBodyPontos, InpRiscoDolar, etc.).
Resumo em uma frase: Reversão pós candle START esticado: em cada nova vela o EA avalia o candle anterior; se qualificar (ou se você armar manualmente), prepara entrada na direção oposta ao corpo do START e só executa depois da confirmação em pontos no candle atual. A cesta tem até 5 ordens, com pesos, TP e trailing por perna (strings v1-v2-v3-v4-v5 para gatilho, distância e passo). O EA está modularizado em core/, ui/, motor/ e perfis/ e suporta perfis JSON (modo MANUAL / AUTO PERFIL / FIXED) com filtro de horario_operacao, range body ("1000" ou "700-1000") no input F7, no painel e no JSON. O painel espelha e persiste quase tudo em GlobalVariables; quando um perfil está ativo, os campos ficam read-only. Editor visual de perfis público em /perfil. O modo ESTUDO simula walk-forward (TP/SL) com duplo clique no gráfico — não envia ordens. Desde a v1.200 o EA inclui 6 indicadores visuais (S/R D1, ATR Band, EMA 20/50, Sessões, VWAP) com toggles no painel INDICADORES, sistema de score composto (Entry / Context / Risk → Final Score 0–100) com decisão textual e análise multi-timeframe (H4/D1/W1/MN via bid vs open + % distância), e filtro de horário global (InpHorarioOperacao). O módulo Telegram Alerts (InpTg*) envia notificações com dados completos do candle START antes do fechamento, com botões inline para decisão remota via celular (bot/chat/risco ficam no backend). O Placar 1 traz 3 colunas de leitura — Candle Start, Candle Operação (com zonas de tempo do candle, InpZonasCandlePct) e Candle Anterior (último candle fechado, com filtros e status) — e o EA desenha linhas de reversão no gráfico (entrada/TP/SL, InpMostrarLinhasReversao) como preview "e se entrasse". Há filtros contra-tendência (motor de regra: InpBlockCounterTrend, InpMaxATRStretchEntry, InpMinExaustaoContraTendencia), painel STATS (WR/MFE/MAE + verdict via InpStatsApiUrl) e log JSON de operações (InpSalvarOperacoesJson).
=== Estratégia automática ===
Liga ou desliga a abertura automática de ordens pela lógica de reversão (candle START esticado + confirmação no candle atual). É o valor inicial ao carregar o EA; depois do primeiro tick prevalece o botão AUTO do painel (g_autoTradeOn), que persiste entre sessões.
Relacionado
Para a estratégia automática executar entradas, AUTO precisa estar ON ou você precisa ter usado ARMAR OPER. (que bypassa AUTO off por um ciclo). Independe de InpTipoOperacao (direção) e dos filtros de candle — estes só afetam se o START é aprovado.
Exemplo
AUTO=true no input e no painel. H1: candle das 9h tem corpo 1500 pts, passa filtros → sinal armado às 10h. Se o preço confirmar 150 pts de reversão no candle das 10h, abre a cesta automaticamente.
No MT5: corpo do candle START (pts). "1000" = min; "700-1000" = range min-max
Filtro de tamanho do corpo do candle START (barra índice 1, fechada). Corpo = |close − open| em pontos. Tipo string no input F7 (desde v1.145 / etapa 19.2): "1000" = só piso (corpo ≥ 1000 pts); "700-1000" = range inclusivo (min e max). Inteiro legado no JSON de perfil ainda aceito. String inválida marca g_rangeBodyInvalid=true e bloqueia entradas até corrigir no painel ou .set.
Relacionado
Parseado por ApplyRangeBodyString / ParseRangeBodyString → g_rangeBodyPontos, g_rangeBodyMax, g_rangeBodyRaw. Painel EDT_RANGE_BODY espelha a mesma string. InpMaxBodyPontos removido — teto só via range. Em perfil JSON, string inválida marca o perfil invalid. Combina com InpUsarFiltroCorpoPercentualRange e filtros de sombra.
Exemplo
InpRangeBodyPontos="1000" → START com 800 pts rejeitado. "1200-2500" → aceita só corpos entre 1200 e 2500 pts. Perfil JSON: "InpRangeBodyPontos": "1000-1500".
No MT5: confirmação fixa em pts (se não usar %) · % do corpo do candle START
Define quantos pontos o preço precisa andar contra o corpo do START, a partir do open do candle atual (índice 0), para confirmar a entrada. Dois modos: pontos fixos (InpConfirmacaoReversaoPontos) ou percentual do corpo do START (InpConfirmacaoPercentual). Em runtime, GetConfirmacaoPontos usa g_confPontos se > 0; senão calcula g_confPercentual × corpo / 100.
Relacionado
Depende de um START já aprovado (corpo, filtros, direção). InpConfirmacaoReversaoPontos=0 deixa o percentual valer. Campos do painel EDT_CONF_PTS e EDT_CONF_PCT espelham os globais. Não existe mais InpUsarConfirmacaoPercentual — a escolha é implícita.
Exemplo
START com corpo 2000 pts, InpConfirmacaoPercentual=10 → confirmação = 200 pts. Sinal de venda: bid precisa cair 200 pts abaixo do open[0]. InpConfirmacaoReversaoPontos=300 com PTS>0 no painel → usa 300 pts fixos, ignorando o %.
No MT5: Distância fixa em pontos a partir da entrada · ou % corpo START ancorado no extremo
Escolhe como o stop loss é calculado na abertura da cesta: SL_FIXO_PONTOS usa distância fixa desde a entrada; SL_PERCENTUAL_CANDLE ancora o SL no extremo oposto do corpo do START (low para BUY, high para SELL) usando InpSL_PercentualCandle.
Relacionado
Trabalha com InpSL_Pontos (modo fixo e referência na proteção da cesta) e InpSL_PercentualCandle (modo %). No painel, botão SL: FIXO / PERC alterna g_modoSL; EDT_SL_FIXO e EDT_SL_PERC guardam os valores.
Exemplo
Modo FIXO, InpSL_Pontos=3000 → SL a 3000 pts da entrada. Modo %, corpo START=2000 pts, InpSL_PercentualCandle=10 → SL fica 200 pts além do low (compra) ou do high (venda) do START.
No MT5: % do corpo: SL fica X% do corpo abaixo do low (BUY) / acima do high (SELL) do candle START
Percentual do corpo do candle START usado para posicionar o SL no modo percentual. O SL fica além do extremo oposto à direção da entrada: para compra, abaixo do low; para venda, acima do high.
Relacionado
Só aplica quando InpModoSL = SL_PERCENTUAL_CANDLE (ou g_modoSL no painel = PERC). InpSL_Pontos continua relevante como referência na proteção da cesta e no dimensionamento de lotes (distância real entrada→SL).
Exemplo
START: high 2660, low 2640, corpo 1500 pts (venda esperada). InpSL_PercentualCandle=10 → buffer = 150 pts → SL da venda ≈ 2660 + 150 = 2810 pts acima do low em termos de distância SL.
Spread máximo permitido, em pontos, para abrir nova cesta. Se o spread atual (ask − bid) ultrapassar esse teto, a entrada é bloqueada mesmo com sinal armado e confirmação ok.
Relacionado
Checado em IsSpreadOk() na Fase 2 (tick com sinal armado). Também afeta entrada manual indiretamente se spread alto. Editável no painel lateral (EDT_SP_SPREAD → g_spreadMaxPontos).
Exemplo
InpSpreadMaxPontos=100, spread atual 120 pts → sinal fica em «spread alto» e não entra. Spread 80 pts → passa.
No MT5: direções permitidas
Restringe quais direções a estratégia automática pode operar: só compra, só venda ou ambas. A direção do trade é sempre reversa ao corpo do START (START de alta → busca venda; START de baixa → busca compra), mas este filtro pode bloquear uma das direções.
Relacionado
Avaliado em EvaluateStartCandle junto com corpo e filtros. Ciclo Op: AMBOS / COMPRA / VENDA no painel (g_tipoOperacao) substitui em runtime. COMPRAR/VENDER manual respeita ordens ativas O1–O5, não este enum diretamente.
Exemplo
InpTipoOperacao=TO_SELL. START de baixa (corpo bearish) geraria compra → bloqueado. START de alta → venda permitida.
Quando true, impede abrir nova cesta enquanto já existir posição aberta do magic neste símbolo. Evita sobreposição de operações automáticas ou manuais.
Relacionado
Checado na Fase 2 antes da confirmação de preço. Toggle Bloquear com posição no painel lateral (BTN_SP_BLOQ → g_bloquearNovaEntrada). Independe de InpUmaEntradaPorCandle — os dois podem estar ativos ao mesmo tempo.
Exemplo
true + cesta aberta às 10:15 → novo sinal confirmado às 11:00 não abre segunda cesta. Após fechar todas, próximo sinal pode entrar.
Limita a no máximo uma entrada por candle do timeframe do gráfico. Se já entrou na vela atual, ignora novos disparos até a próxima barra.
Relacionado
Usa g_lastEntryBarTime vs Time[0]. Toggle Uma entrada por vela no painel (BTN_SP_UMA_CDL → g_umaEntradaPorCandle). Complementa InpBloquearNovaEntradaComPosicaoAberta (este bloqueia por posição aberta, não por vela).
Exemplo
true, H1: entrou às 10:05 no candle das 10h → outro trigger às 10:40 no mesmo candle é ignorado («já entrou neste candle»). Às 11:00 (nova vela) pode entrar de novo.
Preferência para operar só com candles START já fechados. Valor inicial ao carregar; em runtime o toggle Candle fechado ON/OFF no painel lateral (g_usarApenasCandleFechado) substitui e persiste. A Fase 1 da estratégia automática já qualifica o candle índice 1 (anterior fechado) a cada nova vela — este parâmetro alinha configuração, painel e API de backtest.
Relacionado
Espelhado no painel lateral (BTN_SP_CDL_FECH). Combina com InpUmaEntradaPorCandle (evita múltiplas entradas na mesma vela) e com InpAtivarAutoTrade / AUTO (sem auto, só entra via manual ou após ARMAR OPER.).
Exemplo
true (padrão): às 10:00 no H1, o START é o candle 9h–10h já fechado; confirmação ocorre no candle 10h–11h em formação. false: preferência registrada no painel para setups mais agressivos em TF baixo (estado exportado no JSON do EA).
=== Filtros opcionais (candle anterior) ===
Ativa o filtro que exige que o corpo do candle START ocupe uma fração mínima e máxima do range total (high − low). Candles com corpo «muito pequeno» ou «quase doji com range grande» são reprovados.
Relacionado
Precisa estar true (g_filtroRangeOn) para InpMinCorpoPercentualRange e InpMaxCorpoPercentualRange valerem. Toggle Filtro corpo (range) no painel principal. Bypassado por ARMAR OPER. (força START sem filtros).
Exemplo
true, min=70, max=95. Candle com range 1000 pts e corpo 800 pts → 80% → aprovado. Corpo 600 pts → 60% → rejeitado.
No MT5: mínimo / máximo: corpo em % do range
Limites inferior e superior do corpo em percentual do range (high − low) do candle START. O corpo precisa estar entre min e max (inclusive) para passar.
Relacionado
Só aplicados se InpUsarFiltroCorpoPercentualRange = true. Persistem como g_filtroMinPct / g_filtroMaxPct; editáveis no EDT_FILTRO_RANGE do placar (formato 70-95, min < max, 0–100).
Exemplo
InpMinCorpoPercentualRange=70, InpMaxCorpoPercentualRange=95. Range 2000 pts, corpo 1500 pts → 75% → ok. Corpo 1300 pts → 65% → abaixo do mínimo.
No MT5: campo `70-95` típico
Campo de texto EDT_FILTRO_RANGE no placar principal para editar min e max do filtro corpo/range em runtime, sem reabrir propriedades do EA.
Relacionado
Escreve em g_filtroMinPct e g_filtroMaxPct após validação (dois números 0–100, min < max). Só tem efeito se InpUsarFiltroCorpoPercentualRange / toggle filtro range estiver ON.
Exemplo
Digite 75-90 → aceita STARTs cujo corpo represente entre 75% e 90% do range. Valor inválido 90-70 reverte ao anterior.
=== Filtro sombra de reversão (sombra do candle START) ===
Sombra do lado para onde o preço deve reverter; limites em % do TOTAL do candle (range = high − low).
No MT5: ativa / mín / máx % do total do candle
Filtra o tamanho da sombra na direção da reversão esperada. candle de COMPRA (bullish) → reversão SELL → sombra SUPERIOR (sw_h); candle de VENDA (bearish) → reversão BUY → sombra INFERIOR (sw_l). InpFiltroSombraReversaoMinPct e InpFiltroSombraReversaoMaxPct definem limites em % do TOTAL do candle (range = high − low) — por construção nunca passam de 100%. 0 no mínimo = aceita qualquer sombra pequena; 0 no máximo = sem teto.
Relacionado
Requer InpUsarFiltroSombraReversao = true (g_filtroSombraOn). Toggle Sombra reversão e EDT_SP_SOMBRA_RANGE no painel lateral. Bypassado por ARMAR OPER.
Exemplo
Candle de alta (venda esperada), total 1000 pts: mede a sombra superior. Min=5%, max=30% → sombra válida entre 50 e 300 pts. Sombra superior 400 pts (40%) → rejeitado.
=== Horário operacional (broker time) ===
Filtro **global** de horas permitidas para qualquer entrada automática. Independe do `horario_operacao` dos perfis JSON (que filtra **por perfil**). Aqui o EA inteiro é bloqueado fora das horas configuradas.
No MT5: horas permitidas. "" = sem restrição. Ex: "10-12" ou "9|13|15-17|22"
String com segmentos separados por |. Cada segmento é uma hora isolada ("3") ou range inclusivo ("15-18" = 15, 16, 17, 18). Horas de 0 a 23 em broker time (server time MT5). Vazio ("") = sem restrição horária global. Range invertido ou token inválido gera warning no log.
Relacionado
Diferente de horario_operacao no perfil JSON — este input age como filtro global do EA, independente de perfil. Se ambos existirem, os dois precisam permitir a hora para a entrada acontecer. Avaliado antes de ProcessAutoStrategy.
Exemplo
InpHorarioOperacao="10-12" → EA só arma sinais entre 10h e 12h broker time. "9|13|15-17|22" → 9h, 13h, 15–17h e 22h. Vazio → sem restrição.
=== Encerramento automático ===
No MT5: Hora 0–23 (25=off) · filtro ao atingir hora
InpFechamentoHora: hora do servidor (0–23) em que o EA tenta encerrar posições abertas; 25 = desligado. InpFechamentoHoraFiltro: define quais ordens fechar (todas, só positivas, só negativas, aguardar positivo, etc. — enum ENUM_FECHAR_FILTRO).
Relacionado
Espelhados em g_fechamentoHora / g_fechamentoHoraFiltro; editáveis no painel lateral (EDT_SP_FECH_HORA, botão BTN_SP_FECH_HORA_F). Independente de InpFechamentoMinutos — cada gatilho é avaliado separadamente. Só age com posição aberta do magic.
Exemplo
InpFechamentoHora=17, filtro=FC_TODAS: às 17:00 server time fecha toda a cesta. InpFechamentoHora=25 → gatilho por hora desligado.
No MT5: N minutos absolutos da entrada · filtro ao atingir o tempo
InpFechamentoMinutos: após N minutos desde a abertura da cesta (entryTime), dispara encerramento; 0 = off. Contagem em minutos reais, não em número de candles. InpFechamentoMinutosFiltro: mesmo enum de filtro da hora.
Relacionado
g_fechamentoMinutos / g_fechamentoMinutosFiltro no painel lateral. Diferente de InpExitByTimeMinutos (fecha cesta inteira sem filtro) e de InpTempoMaxArmadoMinutos (aborta sinal armado, não posição).
Exemplo
InpFechamentoMinutos=120, filtro=FC_POSITIVAS: 2 h após entrada, fecha só pernas com lucro flutuante. Com filtro FC_AGUARDAR_POSITIVO, armazena gatilho e espera PnL agregado ≥ 0.
=== Defesas adicionais (cortar SL antes de virar) ===
No MT5: 0=off; >0=aborta sinal armado se confirmação não vier em N min
Timeout do sinal armado (antes de abrir posição). Se a confirmação de preço não ocorrer em N minutos desde g_signalArmedTime, aborta o sinal e libera novo ciclo. 0 = desligado.
Relacionado
g_tempoMaxArmadoMinutos no painel lateral. Diferente de InpExitByTimeMinutos (fecha cesta aberta) e InpFechamentoMinutos (encerramento com filtro). Avaliado a cada tick com sinal armado.
Exemplo
InpTempoMaxArmadoMinutos=30: sinal armado 10:05, sem confirmação até 10:35 → aborta com razão timeout armado (30min).
=== Risco e lotes ===
No MT5: % saldo (>0 ganha prioridade sobre dólar)
Percentual do saldo da conta arriscado por operação (até o SL). Se > 0, o EA dimensiona lotes para que a perda total no SL ≈ esse % do saldo.
Relacionado
Tem prioridade sobre InpRiscoDolar quando g_riscoPct > 0. Usa distância real entrada→SL e InpPesos / ordens ativas O1–O5. Campo EDT_RISCO_PCT no painel.
Exemplo
Saldo $10 000, InpRiscoPercentual=1 → risco alvo $100 no SL. Com SL 3000 pts e 5 ordens ativas, lotes são calculados para somar ~$100 de perda no stop.
No MT5: Risco fixo em $ (usado só se g_riscoPct=0)
Risco fixo em moeda da conta (dólares) por operação. Usado somente quando InpRiscoPercentual = 0 (ou g_riscoPct = 0 no painel).
Relacionado
Segundo na prioridade após InpRiscoPercentual. EDT_RISCO_DOL → g_riscoDolar. Combina com InpSL_Pontos (distância do stop) e InpPesos.
Exemplo
InpRiscoPercentual=0, InpRiscoDolar=500 → cada cesta arrisca ~$500 até o SL, repartido pelos pesos das ordens ativas.
No MT5: SL fixo (referência / modo fixo)
Distância do stop loss em pontos no modo fixo. Também serve de referência/teto na proteção da cesta e no cálculo de lotes (distância nominal quando SL real difere no modo %).
Relacionado
Modo fixo: InpModoSL = SL_FIXO_PONTOS. EDT_SL_FIXO → g_slPontos. Usado por InpProtecaoO3_LucroMinimoDolar como teto de SL na proteção.
Exemplo
InpSL_Pontos=3000, modo FIXO, entrada 2650.00 compra → SL ≈ 2650.00 − 30.00 = 2620.00 (XAUUSD, 3000 pts × 0.01).
No MT5: ex.: 5-4-3-2-1
String com 5 inteiros positivos separados por hífen — peso relativo de cada ordem O1–O5 no cálculo de lotes. O risco total é repartido proporcionalmente apenas entre ordens ativas (g_ordAtiva[i]).
Relacionado
EDT_PESOS → g_pesos. Se alguma ordem O1–O5 estiver OFF, o risco dela é redistribuído às ativas. Se todas inativas, OpenBasketAuto aborta.
Exemplo
InpPesos=5-4-3-2-1, risco $500, todas ativas → O1 recebe 5/15 do risco, O2 recebe 4/15, etc. Só O1, O3, O5 ativas → pesos efetivos 5, 3, 1 (renormalizados).
=== Take Profit por ordem (O1–O5; 0=sem TP) ===
No MT5: 50-75-150-0-0
Cinco valores em pontos — TP de cada perna O1 a O5 a partir do preço de entrada. 0 em uma posição = sem TP naquela perna (só SL ou trailing).
Relacionado
EDT_TP_PONTOS → g_tpPontos. Botões TP+ / TP− deslocam todos os TPs abertos em ±g_tpStep. Trailing (InpTrailingGatilhos) pode coexistir — TP fecha antes se tocado.
Exemplo
InpTP_Pontos=50-75-150-0-0, compra em 2650: O1 TP +50 pts, O2 +75, O3 +150, O4/O5 sem TP. TP+ com step 10 → todos sobem 10 pts.
No MT5: múltiplo do TP no envio (reancorado no fill depois). 1 = desliga a rede
Rede de segurança do TP na abertura: cada perna é enviada com o TP multiplicado por este fator e, assim que o preço de execução real (fill) é conhecido, o EA reancora o TP para o valor correto em pontos a partir da entrada efetiva. Evita que um TP fique perto demais do preço de envio (e seja rejeitado pelo broker ou disparado no fill). 1 desliga a rede (envia o TP já no valor final).
Relacionado
Aplicado em OpenBasketAuto no envio de cada perna; a reancoragem aparece no Journal como Reancoragem O1: TP … recolocado…. Trabalha junto com InpTP_Pontos (valores-alvo por perna).
Exemplo
InpTpSafetyMult=3, O1 com TP-alvo 75 pts: a ordem sai com ~225 pts de TP e, no fill, é recolocada em 75 pts a partir da entrada real.
No MT5: painel EDT_TP_STEP · EDT_SL_STEP
Incremento em pontos dos botões TP+ / TP− / SL+ / SL− do painel. Um clique ajusta todas as posições abertas via NudgeOpenPositions.
Relacionado
Só funcionam com operação aberta. EDT_TP_STEP e EDT_SL_STEP (ints 1–100000). Independentes de InpTP_Pontos (valores iniciais na abertura).
Exemplo
g_tpStep=10, 3 pernas abertas: TP+ uma vez → cada TP sobe 10 pts. SL− com g_slStep=50 → todos os SLs descem 50 pts (compra).
=== Trailing por ordem (O1–O5; 0=sem trailing na perna) ===
No MT5: gatilhos · distância · passo — três strings O1-O5
Trailing stop por perna. Três strings com 5 inteiros separados por hífen (O1–O5). Gatilhos: lucro flutuante em pts para armar trailing. Distância: pts entre preço e SL após armado. Passo: avanço mínimo do SL. Desde v1.145 (etapa 19.3), distância e passo também são strings ("0-0-0-80-80"), alinhadas ao painel — não mais int único replicado 5×.
Relacionado
Runtime: g_trailingGatilhos, g_trailingDistancia, g_trailingStep editáveis no lateral (EDT_SP_TRAIL_*). 0 no gatilho = sem trailing naquela perna; 0 em dist/step = trailing desligado na perna mesmo com gatilho. Complementa o TP por perna (InpTP_Pontos) e a proteção da cesta.
Exemplo
Gatilhos=0-0-0-150-200, Dist=0-0-0-80-80, Step=0-0-0-10-10 → trailing só O4/O5 após +150/+200 pts; SL segue a 80 pts, avanço mínimo 10.
=== Proteção após TP (cesta) ===
No MT5: dispara quando esta ordem fechar em TP
Enum ENUM_PROT_APOS_TP: quando a ordem indicada (O1–O5) fecha em TP, dispara proteção nas pernas ainda abertas movendo SL conforme InpSlProtAposTpPontos. PROT_TP_OFF (0) = desligado.
Relacionado
Requer InpSlProtAposTpPontos > 0. Implementado em CS_Tracking ao detectar fechamento da ordem alvo. BUY: SL → entry + pts; SELL: entry − pts.
Exemplo
InpProtegerAposTpOrdem=1 (após O1), InpSlProtAposTpPontos=10 → quando O1 fecha em TP, SL das demais pernas vai para entry + 10 pts (compra).
No MT5: pts a partir da entrada (BUY=entry+X, SELL=entry-X); 0 = ignora
Distância em pontos a favor a partir da entrada para mover SL das pernas abertas quando o gatilho InpProtegerAposTpOrdem dispara.
Relacionado
Só age se InpProtegerAposTpOrdem ≠ OFF e valor > 0. Independe da proteção da cesta O3/O4.
Exemplo
10 pts, compra entry 2650 → SL protegido ≈ 2650.10 nas pernas restantes após TP da ordem configurada.
=== Outros ===
No MT5: 0=magic automático; outro=fixo
Número mágico que identifica ordens desta instância do EA. 0 = EA gera magic único por gráfico/instância; qualquer outro valor = magic fixo (útil para vários EAs no mesmo símbolo).
Relacionado
Todas as funções de posição (HasOpenPositionByMagic, fechamentos, estatísticas ACUMULADO) filtram por este magic. Não alterável em runtime pelo painel.
Exemplo
InpMagic=0 → magic auto gerado por gráfico. InpMagic=151515 → fixo 151515.
No MT5: 0=auto (3/5 dígitos→10x); 1=sem ajuste; 10=broker 3 casas
Multiplicador do ponto do símbolo. 0 (auto): se o símbolo tem 3 ou 5 casas decimais, multiplica por 10 (converte pontos pipette em pips). 1: sem ajuste (usa o ponto raw do broker). 10: forçar 10× (brokers como Dukascopy com 3 casas). Afeta todos os cálculos em pontos: corpo START, confirmação, SL, TP, trailing, spread, etc.
Relacionado
Grava em g_pointScale no OnInit. PointValue() retorna _Point * g_pointScale. Afeta CalculateLotsForBasket, ParseRangeBodyString, todos os filtros em pontos. Não alterável em runtime.
Exemplo
XAUUSD com 2 casas decimais + InpPointScale=0 → g_pointScale=1 (auto detecta sem ajuste). EURUSD 5 casas + InpPointScale=0 → g_pointScale=10 (1 pip = 10 pontos).
=== Cards de operação, log e info do candle ===
Itens visuais e de diagnóstico (gráfico/Journal) — não afetam a lógica de entrada.
No MT5: canto onde os cards das operações aparecem
Define o canto do gráfico onde ficam os cards flutuantes por operação (um card por cesta, com pernas, PnL e estado). Enum ENUM_OPCARD_SIDE (direita/esquerda).
Relacionado
Renderizado por OpCards_SyncAndDraw (módulo ui/CS_OpCards). Combina com InpOpCardMaxVisiveis.
Exemplo
InpOpCardLado=OPCARD_RIGHT → cards no canto superior direito.
No MT5: quantidade máxima de cards visíveis ao mesmo tempo
Limita quantos cards de operação aparecem simultaneamente; mostra os mais recentes e tira o excedente da tela (não afeta o tracking interno das operações).
Relacionado
Usado por OpCards_SyncAndDraw. Puramente visual.
Exemplo
InpOpCardMaxVisiveis=5 → no máximo 5 cards na tela; a 6ª operação empurra o card mais antigo para fora.
No MT5: loga no Journal a decisão de cada candle
Liga o log de decisão por candle no Journal do MT5: para cada vela registra se o candle START foi aceito/rejeitado (e o motivo) e se a operação foi aceita/rejeitada. Útil para estudar por que uma entrada não ocorreu.
Relacionado
Módulo ui/CS_DecisionLog (DecLog_*). Só escreve no Journal — não envia ordens nem desenha no gráfico.
Exemplo
InpLogDecisaoAtivo=true → Journal: Candle Start [09/06 14:00] - rejeitado - corpo 73 pts < mínimo 500 pts.
No MT5: info do candle em formação (tempo/range/corpo/sombras)
Mostra no gráfico (à direita, acima do preço) o candle em formação: tempo restante para fechar, range (high−low), corpo e sombras em pontos. Ajuda a antecipar se o candle atual vai qualificar como START.
Relacionado
Módulo ui/CS_CandleInfo (CandleInfo_Draw). Puramente visual; não interfere na lógica.
Exemplo
InpMostrarInfoCandle=true → exibe algo como "H1 | 12:34 restante · range 820 · corpo 540 · sombras 120/160".
=== JSON de operações (log estruturado) ===
Grava o ciclo de vida completo de cada operação em JSON, para análise posterior (dashboards, backtests estatísticos, IA). Independente do log de texto do MT5.
No MT5: Salva snapshot completo de cada operação em JSON (Common\Files\Trades\)
Quando true, grava um JSON por operação em Common\Files\Trades\ com candle START, entrada, pernas, TP/SL, trailing, fechamentos, PnL e contexto de indicadores/score. É a mesma estrutura consumida pelo backend de estatísticas e pelos dashboards.
Relacionado
Combina com InpTradePathIntervalSec (amostragem do caminho do trade). Funciona em live e no Strategy Tester. Schema único para live / mt5_tester / backtest_player.
Exemplo
InpSalvarOperacoesJson=true → cada cesta encerrada gera um arquivo JSON com todos os campos da operação.
No MT5: Intervalo (s) para amostrar o caminho do trade (0=desligado)
De quantos em quantos segundos o EA registra um ponto do caminho do preço durante a operação (MFE/MAE ao longo do tempo). 0 = não amostra o caminho (só os eventos). Útil para reconstruir a excursão da cesta.
Relacionado
Só tem efeito com InpSalvarOperacoesJson=true. Alimenta o gráfico de excursão/MFE-MAE nas análises.
Exemplo
InpTradePathIntervalSec=20 → registra preço/PnL a cada 20 s enquanto a cesta está aberta.
=== Sistema de Perfis (JSON) ===
Perfis carregados de um arquivo JSON em `MQL5/Files` (e `Terminal/Common/Files` no Strategy Tester — ver página **`/perfil`**). Cada perfil reescreve um subconjunto dos parâmetros (risco, SL, TPs, filtros, trailing, proteção, body range, horário). Três modos: **MANUAL**, **AUTO PERFIL**, **FIXED**. Modo inicial definido por **InpPerfilModo** (default **AUTO**). JSON ausente/inválido → MANUAL com warning.
No MT5: Caminho do JSON em MQL5/Files (vazio = manual)
Caminho relativo (a partir de MQL5/Files/) do arquivo JSON com a lista de perfis. Vazio = não carrega nada e o EA opera em MANUAL puro com os inputs do .set. Arquivo ausente / JSON malformado / sem perfis válidos = log de warning e o EA segue MANUAL (não bloqueia entradas).
Relacionado
Carregado em OnInit via ProfileEngine_LoadFromFile (tenta MQL5/Files e fallback Common/Files no Tester). Painel PERFIS → RECARREGAR JSON. Editor web em /perfil (público). Limite CS_MAX_PROFILES = 32.
Exemplo
InpPerfisJsonFile=perfis.json → abre MQL5/Files/perfis.json. No backtest, copie também para Terminal/Common/Files/. Vazio → MANUAL puro.
No MT5: Modo inicial dos perfis
Modo de perfis ao carregar o EA ou iniciar backtest: CS_PROFILE_MANUAL (0) = inputs/.set; CS_PROFILE_AUTO (1) = engine escolhe por candle/hora (default); CS_PROFILE_FIXED (2) = força perfil de InpPerfilFixoNome. Se AUTO/FIXED pedidos sem JSON válido → cai para MANUAL com log.
Relacionado
Aplicado no OnInit após carregar JSON. Depois o usuário troca pelo painel PERFIS (MANUAL / AUTO / duplo-clique no nome = FIXED). Em AUTO, COMPRAR/VENDER/ARMAR OPER. desabilitados.
Exemplo
Backtest com perfis: InpPerfilModo=AUTO + perfis.json carregado → cada entrada resolve perfil via Match. FIXED + InpPerfilFixoNome=moderado → aplica perfil moderado desde o início.
No MT5: Nome do perfil (usado SÓ se InpPerfilModo = FIXED)
String com o nome exato (perfil) de um perfil no JSON. Usado apenas quando InpPerfilModo = FIXED no OnInit. Nome não encontrado → MANUAL com warning.
Relacionado
Deve coincidir com a chave "perfil" no JSON. No live, FIXED também pode ser escolhido pelo painel (duplo-clique no nome).
Exemplo
InpPerfilModo=FIXED, InpPerfilFixoNome=scalp_rapido → EA inicia já com parâmetros desse perfil aplicados.
No MT5: schema (parser manual, tolerante a comentários //)
Array top-level com objetos. Cada perfil tem chaves no nível raiz "perfil" (nome único), "ativo" (opcional, default true — ver seção dedicada), "horario_operacao" (opcional, ver seção dedicada), "candle" (filtros do candle START) e "operacao" (parâmetros de risco/trade). Campos ausentes mantêm o valor do snapshot MANUAL (gravado quando o usuário sai de MANUAL pela primeira vez). Comentários // ... são strip-ados no parse.
Relacionado
Chaves aceitas em candle: InpRangeBodyPontos (int OU string "min-max"), InpMinCorpoPercentualRange, InpMaxCorpoPercentualRange, InpFiltroSombraReversaoMinPct, InpFiltroSombraReversaoMaxPct, InpConfirmacaoReversaoPontos, InpConfirmacaoPercentual, InpSpreadMaxPontos. Em operacao: InpRiscoDolar, InpRiscoPercentual, InpSL_Pontos, InpSL_PercentualCandle, InpPesos, InpTP_Pontos, InpTrailingGatilhos/Distancia/Step, InpAtivarProtecaoCesta, InpProtecaoO3_LucroMinimoDolar, InpProtecaoO4_LucroMinimoPontos, InpProtegerAposTpOrdem, InpSlProtAposTpPontos, InpExitByTimeMinutos, InpTempoMaxArmadoMinutos. InpMaxBodyPontos foi removido — use range em InpRangeBodyPontos. InpMinBodyPontos legado dispara warning mas a chave é ignorada (foi renomeada para InpRangeBodyPontos).
Exemplo
[{ "perfil": "moderado", "candle": { "InpRangeBodyPontos": "1200-2500", "InpMinCorpoPercentualRange": 70 }, "operacao": { "InpRiscoDolar": 600, "InpSL_Pontos": 2000, "InpTP_Pontos": "120-160-240-0-0", "InpAtivarProtecaoCesta": true } }]. Veja perfis/profiles_example.json no repo.
MANUAL: sem perfil ativo; o EA usa os valores do painel/.set. Edits no painel ficam habilitados. AUTO PERFIL: na hora da entrada, o engine consulta o candle START + a hora do servidor e escolhe o perfil que casa (segundo as regras de prioridade descritas em horario_operacao). FIXED: usuário pré-seleciona um perfil pelo painel; os campos do perfil são aplicados imediatamente e ficam ativos até o usuário voltar para MANUAL ou trocar de perfil.
Relacionado
Switch via painel PERFIS ou InpPerfilModo no backtest. Em AUTO PERFIL, COMPRAR / VENDER / ARMAR OPER. ficam desabilitados. Em FIXED, ARMAR OPER. habilitado. Snapshot MANUAL em g_manualSnap — restore ao voltar para MANUAL.
Exemplo
Usuário em MANUAL ajusta SL=3000, risco=500. Clica perfil moderado no painel (vira FIXED) → painel exibe SL=2000, risco=600 (do perfil) read-only. Clica MANUAL de volta → valores 3000/500 restaurados.
Quando o modo é AUTO PERFIL ou FIXED, todos os campos editáveis do painel principal (Risco, SL, Corpo range, Filtro corpo, Pesos, TPs) e do Ajuste fino (Spread, Sombra, Trailing, etc.) ficam read-only com aparência acinzentada. Edits via OBJ_EDIT são rejeitadas no Panel2_HandleEndEdit com log informativo.
Relacionado
Exceções: EDT_TP_STEP, EDT_SL_STEP e EDT_SAIR_POSITIVO continuam editáveis (são ferramentas operacionais sobre posições abertas, não parâmetros do perfil). Os botões AUTO ON/OFF, PERFIS, ESTUDO, AJUSTE, INDICADORES e 1..5 ON/OFF ficam sempre ativos.
Exemplo
FIXED com perfil scalp_rapido → tentar editar EDT_RISCO_DOL → log «Painel: edicao bloqueada — perfil ativo (FIXED: scalp_rapido). Volte a MANUAL pra editar.».
Painel lateral acionado pelo botão PERFIS (acima de AUTO). Lista os perfis carregados + dois botões de modo (MANUAL, AUTO PERFIL) + RECARREGAR JSON. Cada linha tem o nome do perfil + um toggle ON / OFF. Duplo-clique no nome seleciona-o em modo FIXED; duplo-clique em AUTO PERFIL muda para AUTO; duplo-clique em MANUAL volta ao modo manual com os valores snapshot.
Relacionado
Estado em g_profilesPanelOn, g_profileMode, g_profileFixedIdx. RECARREGAR JSON chama ProfileEngine_LoadFromFile de novo (útil para editar o JSON com o EA ligado). O toggle ON/OFF alterna p.ativo in-memory (não persiste no arquivo; pra persistir use a página /perfil ou edite o JSON).
Exemplo
Clica PERFIS → painel lateral abre listando abertura_NY, scalp_rapido, moderado, carregado com ON/OFF cada. Duplo-clique no nome moderado → modo FIXED. Clique simples em OFF do scalp_rapido → perfil fica inativo e ignorado pelo Match.
No MT5: default true — opcional no JSON
Cada perfil aceita opcionalmente a chave "ativo": false no nível raiz pra ficar carregado mas ignorado pelo Match. Útil pra desabilitar temporariamente um perfil sem apagar a configuração (ex: "essa semana vou ser conservador, deixo perfis 1, 4 e 5 ON e 2, 3 OFF"). Ausente = true.
Relacionado
Painel: clique simples no botão ON/OFF ao lado de cada perfil alterna o estado in-memory. Em FIXED, desativar o perfil atualmente fixado força volta pra MANUAL automaticamente. Engine: ProfileEngine_Match pula !p.ativo em ambas as rodadas (horário e candle). ProfileEngine_ActiveCount() retorna quantos perfis estão ativos.
Exemplo
No JSON: { "perfil": "scalp_rapido", "ativo": false, "candle": { ... } }. No painel, o perfil aparece com a tag OFF acinzentada. Reativa clicando ON. Perfis ON aparecem na cor verde; OFF acinzentados.
=== Filtro horario_operacao (no perfil) ===
Campo **opcional** no nível raiz do perfil. Limita o perfil a operar apenas em determinadas horas do **broker time** (server time do MT5). Perfis com `horario_operacao` têm **prioridade absoluta** sobre perfis sem.
No MT5: ex.: "3", "15-18", "13|15-17|22"
String com segmentos separados por |. Cada segmento é uma hora isolada ("3") ou um range inclusivo ("15-18" = 15, 16, 17, 18). Horas em 0..23. Range invertido ("18-15"), tokens não-numéricos, segmentos vazios, hora > 23 = warning no parse e perfil marcado inválido (ignorado pelo Match).
Relacionado
Parseado em ParseHorarioSpec. Armazenado em p.horarioSegments[] + p.horarioOperacaoRaw. Match feito em HoraInSegments(hora, segs) onde hora = MqlDateTime.hour do candle START.
Exemplo
"3" = só candle que abre às 03:00. "15-18" = das 15h às 18h inclusive. "9|13|15-17|22" = 9, 13, 15-17, 22.
Algoritmo do ProfileEngine_Match (AUTO PERFIL): (a) avalia primeiro todos os perfis COM horario_operacao cuja hora bate; (b) se exatamente 1 também passa nos filtros de candle do próprio perfil → vence (perfis sem horário são ignorados na rodada, mesmo que casassem); (c) se mais de 1 → profile_conflict; (d) se a hora bate em algum perfil mas filtros de candle rejeitam → horario_active_candle_rejected (sem fallback); (e) se nenhum perfil com horário tem hora batendo → fallback para perfis SEM horário usando filtros de candle.
Relacionado
Retornos: CS_MATCH_NO_MATCH (−1), CS_MATCH_CONFLICT (−2), CS_MATCH_HORARIO_BLOCK (−3). ProfileEngine_ResolveForEntry mapeia para razões textuais (no_profile_match, profile_conflict, horario_active_candle_rejected).
Exemplo
Perfis: abertura_NY (horario 10-12), moderado (sem horário). Candle START às 10:00 com corpo 1500 pts: se passa filtros de abertura_NY → vence (moderado ignorado mesmo que também passasse). Candle às 14:00: abertura_NY fora do horário → cai para moderado que casa.
A cada cesta aberta, o JSON da operação (LiveJson_BuildOperation) inclui bloco "profile" com mode, name, match_kind (hour ou candle) e, quando match_kind=hour, match_hour (int) + match_spec (raw string do horario_operacao).
Relacionado
Snapshot dos campos é gravado em g_liveCurrent no OpenBasketAuto. Variáveis intermediárias: g_profileLastMatchKind, g_profileLastMatchHour, g_profileLastMatchSpec.
Exemplo
JSON da op: "profile": { "mode": "AUTO", "name": "abertura_NY", "match_kind": "hour", "match_hour": 10, "match_spec": "10-12" }.
=== Sintaxe range em InpRangeBodyPontos ===
Válido no **input F7**, no **EDT_RANGE_BODY** do painel e no bloco `candle` do perfil JSON. Parser único: `ParseRangeBodyString` / `_CSP_AssignRangeBodyPontos`.
No MT5: string "1000" | "700-1000" · int legado no JSON de perfil
String com um número ("1000") = só mínimo; corpo ≥ 1000 pts. String range ("700-1000") = corpo entre min e max inclusive. Inteiro no JSON de perfil (1000) = idem string "1000". String inválida: no input/painel → g_rangeBodyInvalid e entradas bloqueadas; no perfil JSON → perfil marcado invalid e ignorado pelo Match.
Relacionado
Grava g_rangeBodyPontos (min), g_rangeBodyMax (max, 0 = sem teto), g_rangeBodyRaw. Teto aplicado em AUTO via _CSP_CandleFiltersPass; em FIXED via ProfileEngine_ActiveBodyMax() no EvaluateStartCandle.
Exemplo
Válidos: "1000", "700-1000", JSON int 1000. Inválidos: "1000-", "abc", "1500-1000", "a-b-c".
Placar 1 — timer + 3 colunas (Candle Start · Operação · Candle Anterior)
O placar principal de leitura. No topo direito, o **timer** (TF | countdown até o candle fechar). Abaixo, **3 colunas** lado a lado: **Candle Start** (esquerda), **Candle Operação** com zonas (centro) e **Candle Anterior** (direita). Embaixo, a **barra de status** com o estado do sinal e o motivo de bloqueio. Tudo somente leitura — serve para ler o setup em tempo real, não para configurar.
Timeframe do gráfico + contagem regressiva até o candle atual fechar. É o relógio que define quando o candle em formação vira o «candle fechado» e tudo recalcula (Candle Anterior, linhas de reversão, novo START qualificável).
Relacionado
Mesmo instante em que a estratégia reavalia a barra 1 (ver lógica operacional). Quando zera, nasce um novo candle.
Exemplo
H1 | 00:14:48 → faltam ~15 min para o candle de 1h fechar.
Anatomia do candle de gatilho com valor + % do range e um badge verde/vermelho por linha indicando se passa no filtro ativo. candle tot. = range (high−low); corpo = |close−open|; sombra = range−corpo; sw_h = pavio superior; sw_l = pavio inferior. Quando ocioso mostra o candle em formação (bar 0); quando há sinal armado/posição, congela no candle START. Leitura: corpo grande com % alto = vela esticada (bom para reversão); pavio grande na direção da reversão = sinal de exaustão.
Relacionado
Mesmas fórmulas dos filtros (InpRangeBodyPontos, InpMinCorpoPercentualRange/Max, InpFiltroSombraReversao*). Badge usa o perfil casado (AUTO) ou os globais (MANUAL/FIXED). Badge ▲ BUY / ▼ SELL = direção da reversão.
Exemplo
corpo 1500 p [78%], sw_h 250 p [13%] num candle de alta → corpo esticado e pavio superior moderado = setup de venda na reversão.
Mostra o candle onde a entrada aconteceria e o progresso da confirmação: a barra vertical enche conforme o preço anda contra o corpo do START em direção ao gatilho (g_signalConfirmacaoPontos). Abaixo, as 3 zonas do candle (LOW→HIGH) com o tempo que o preço passou em cada faixa — ver InpZonasCandlePct. Leitura: barra quase cheia = confirmação iminente; tempo concentrado no topo/base revela onde o preço foi aceito.
Relacionado
Reflete g_signalActive, g_signalConfirmacaoPontos, progresso tick a tick vs open[0] e o tracking de zonas (LiveJson tempo_por_zona). Cores da barra mudam com o estado (longe / neutro / quase entrando).
Exemplo
Sinal de venda, conf=200 pts: barra a 80% = bid já caiu 160 pts abaixo do open[0]. Zonas topo 65% · meio 25% · base 10% = preço passou a maior parte do tempo no alto.
Histórico do último candle fechado, independente de estar armado ou em operação. Linhas: 1ª título Candle Ant. [data] (com ↑/↓ da direção do candle); 2ª Modo: (Manual / Fixo·perfil / Auto·perfil ou «sem match»); depois tot / corpo / sombra / sw_h / sw_l com valor, % e badge de filtro; e a última linha de status (aprovado em verde ou rejeitado - <motivo> em vermelho, truncada para caber no painel). Leitura: revisão pós-fechamento — por que aquele candle entrou ou foi descartado, e sob qual perfil.
Relacionado
Filtros recalculados contra o perfil candidato (AUTO via ProfileEngine_PreviewMatch, não-destrutivo) ou os globais (MANUAL/FIXED). É a versão em painel do mesmo cálculo das linhas de reversão no gráfico (InpMostrarLinhasReversao).
Exemplo
Candle Ant. ↑ [29/05 18:00] · Modo: Auto - sem match · corpo 701 p [19%] · rejeitado - nenhum perfil compativel → candle de alta com corpo fraco, nenhum perfil pegaria.
Faixa abaixo das colunas com o estado do ciclo à esquerda (sem sinal / aguardando confirmação / armado / em operação) e o motivo do bloqueio quando há (spread alto, posição aberta, já entrou neste candle, fora do horário, timeout armado, sem perfil compatível, etc.).
Relacionado
Reflete g_lastBlockReason, g_signalActive e HasOpenPositionByMagic(). Os scores e indicadores detalhados ficam no painel INDICADORES (toggle próprio).
Exemplo
«Sinal armado · venda» à esquerda; «Bloqueio: spread alto» quando o spread passa InpSpreadMaxPontos.
Modo ESTUDO — simulação no gráfico (sem ordens)
Simula uma cesta nos **mesmos moldes da estratégia** (preço de entrada na confirmação, SL como no `OpenBasketAuto`, pesos/`g_ordAtiva`, TP por perna no **preço de trigger**) e faz **walk-forward barra a barra** até fechar todas as pernas em TP ou SL. Desenhos OBJ com prefixo **STUDY_**.
Com ESTUDO ON, duplo clique no fundo do gráfico (não em botões/objetos) seleciona o candle START. Primeiro clique regista o tempo da vela; segundo clique na mesma vela dentro de 500 ms dispara DrawStudy.
Relacionado
Requer botão ESTUDO ON (g_estudoOn), AUTO OFF, sem sinal armado e sem posição. Precisa de candle seguinte ao START para simular entrada.
Exemplo
H1, ESTUDO ON: duplo clique no candle das 9h → retângulo laranja no START; simulação tenta entrada no candle das 10h se trigger for tocado.
O candle clicado vira START (retângulo laranja). Direção = reversa ao corpo (alta → venda; baixa → compra). Confirmação usa GetConfirmacaoPontos — mesma regra do live. Candle de entrada (azul): high/low devem atravessar o trigger desde o open.
Relacionado
Usa InpConfirmacaoReversaoPontos / InpConfirmacaoPercentual (via globais do painel). Se trigger não tocado intrabar → texto «trigger não tocado», sem linha de entrada.
Exemplo
START de alta, corpo 2000 pts, conf 10% = 200 pts: trigger = open[entrada] − 200. Se low do candle de entrada não chega lá → simulação aborta entrada.
Preço de entrada simulado = preço do trigger. SL: modo fixo (g_slPontos) ou % candle (extremos do START). Lotes via CalculateLotsForBasket respeitando ordens O1–O5 ativas. TP por perna = trigger ± pontos de TP.
Relacionado
Espelha InpModoSL, InpSL_Pontos, InpSL_PercentualCandle, InpPesos, InpTP_Pontos e toggles O1–O5 do painel. Não envia ordens reais.
Exemplo
Trigger 2650.00, SL fixo 3000 pts, TP=50-75-150-0-0 compra → O1 TP 2650.50, O2 2650.75, O3 2651.50; lotes proporcionais aos pesos.
Do candle de entrada até a barra 0, testa a cada vela se high/low tocaram SL ou TP de cada perna aberta. Se ambos na mesma vela → SL primeiro (conservador). Calcula PnL em pts e $.
Relacionado
Usa mesmos TP/SL da abertura simulada. Independe de trailing live (simulação não replica trailing dinâmico barra a barra salvo extensão futura).
Exemplo
O1 aberta, candle com high no TP e low no SL → conta SL. Triângulos marcam saídas; balão resume TP/SL/ abertas e total $.
Balão no gráfico com direção, corpo/conf/SL em pts, contagem de pernas fechadas em TP vs SL vs ainda abertas, e PnL total simulado em dólares. Print no terminal espelha o resumo.
Relacionado
Objetos prefixo STUDY_ removidos ao desligar ESTUDO ou ao ligar novo estudo (ClearAllStudies).
Exemplo
Balão: «SELL | body 1800 conf 180 sl 3000 | TP:2 SL:1 open:2 | +$340 sim».
Placar 2 — botões (comportamento de clique)
No **Strategy Tester** nativo UI read-only para cliques efetivos. Conta real: **tracking global** (`Btn_TrackClick`) — **só um botão por vez**. Janelas: **500 ms** (padrão) ou **2000 ms** para **SAIR POSITIVO**. **Threshold** atual: **2 cliques** para toggles principais **e** para ações COMPRAR/VENDER/FECHAR (constantes `THRESHOLD_TOGGLE` / `THRESHOLD_ACTION` ambas = 2). **TP+/−/SL+/−**: **um clique** imediato, só **com operação aberta**. Botão **INDICADORES** abre o painel de indicadores visuais e score.
Abre o painel lateral de perfis JSON (PP_*): lista perfis carregados, modos MANUAL / AUTO PERFIL, toggle ON/OFF por perfil, RECARREGAR JSON. Duplo-clique no nome = FIXED.
Relacionado
Estado g_profilesPanelOn, g_profileMode, g_profileFixedIdx. Editor web de perfis em /perfil (exporta perfis.json). Ver seção Sistema de Perfis.
Exemplo
2 cliques PERFIS → painel lateral; duplo-clique em moderado → FIXED com SL/risco do perfil read-only no painel principal.
Botão principal que liga/desliga a estratégia automática em runtime (g_autoTradeOn). Estado persiste entre sessões via GlobalVariables.
Relacionado
Espelha InpAtivarAutoTrade no init. ARMAR OPER. pode qualificar START mesmo com AUTO off (uma vez). ESTUDO ON força AUTO off.
Exemplo
2 cliques rápidos → AUTO OFF → EA para de armar novos sinais (posição aberta continua sendo gerida).
Ativa modo simulação no gráfico sem enviar ordens. Duplo clique no botão alterna g_estudoOn. Ao ligar, limpa estudos anteriores e desliga AUTO.
Relacionado
Só liga com AUTO OFF, sem sinal armado (g_signalActive) e sem posição. Duplo clique no gráfico dispara simulação — ver Modo ESTUDO.
Exemplo
2 cliques → ESTUDO ON → duplo clique num candle H1 passado → desenho STUDY_ com TP/SL simulados.
Cicla direções permitidas para a estratégia automática: ambas, só compra ou só venda (sempre na lógica reversa ao START).
Relacionado
Espelha InpTipoOperacao → g_tipoOperacao. Não bloqueia COMPRAR/VENDER manual diretamente.
Exemplo
2 cliques: AMBOS → COMPRA → VENDA → AMBOS. Em COMPRA, START de alta (venda) é ignorado.
Alterna modo de cálculo do stop loss entre pontos fixos e percentual ancorado no candle START.
Relacionado
Espelha InpModoSL → g_modoSL. Valores numéricos em EDT_SL_FIXO e EDT_SL_PERC.
Exemplo
2 cliques: FIXO → PERC. Próxima entrada usa SL % com InpSL_PercentualCandle / g_slPercCandle.
Liga/desliga filtro que exige corpo do START entre min% e max% do range (high − low).
Relacionado
Espelha InpUsarFiltroCorpoPercentualRange → g_filtroRangeOn. Limites em EDT_FILTRO_RANGE.
Exemplo
2 cliques OFF → STARTs passam sem checar 70–95% range. ON → filtro volta a valer.
Toggle da proteção automática de SL após TPs parciais (O3/O4).
Relacionado
Espelha InpAtivarProtecaoCesta → g_protCestaOn. Valores em EDT_PROT_DOL / EDT_PROT_PTS.
Exemplo
2 cliques OFF → após TP da O3, SL de O4/O5 não é rescalonado automaticamente.
Arma flag para forçar o próximo candle fechado como START válido, ignorando filtros de corpo, sombra, range e corpo mínimo. Consumido em uma tacada.
Relacionado
Funciona mesmo com AUTO OFF (bypass pontual). Requer sem posição aberta. Zera ao ligar ESTUDO.
Exemplo
AUTO off, 2 cliques ARMAR OPER. → na próxima abertura de vela, candle anterior vira START mesmo com corpo 500 pts (< mínimo).
Ativa/desativa cada perna da cesta. Ordens OFF não recebem lote; risco é redistribuído às ativas.
Relacionado
Afeta InpPesos efetivo e InpTP_Pontos / trailing por índice. Se todas OFF, OpenBasketAuto aborta.
Exemplo
O3 OFF, pesos 5-4-3-2-1 → risco de O3 vai para O1,O2,O4,O5 proporcionalmente. 2 cliques em O3 alterna estado.
Abre cesta manual imediatamente na direção escolhida, sem esperar confirmação tick-a-tick. Mesma lógica de lotes/SL/TP da automática.
Relacionado
Bloqueado se já há posição do magic (InpBloquearNovaEntradaComPosicaoAberta também bloqueia auto, não manual se false). 2 cliques em 500 ms.
Exemplo
2 cliques COMPRAR sem posição → abre até 5 ordens com SL/TP/pesos atuais do painel.
Fecha todas as posições abertas do magic neste símbolo (ExecutarFechamentoManual).
Relacionado
Só com posição aberta. 2 cliques em 500 ms. Independe de encerramento automático (InpFechamentoHora, etc.).
Exemplo
Cesta com O1–O3 abertas → 2 cliques FECHAR TODAS → todas as pernas encerradas a mercado.
Ajusta TPs das pernas abertas para atingir lucro flutuante mínimo em dólares (g_sairPositivoValor), se ainda abaixo do alvo.
Relacionado
Valor alvo em EDT_SAIR_POSITIVO. Janela longa 2000 ms, 2 cliques. Respeita stops level do símbolo.
Exemplo
EDT=300, lucro flutuante $180 → 2 cliques SAIR POSITIVO → TPs puxados para somar ~$300 se possível.
Desloca TPs ou SLs de todas as posições abertas em ±g_tpStep ou ±g_slStep pontos.
Relacionado
Requer posição aberta. 1 clique imediato. Passos em EDT_TP_STEP / EDT_SL_STEP.
Exemplo
TP+ com step 10 → cada TP sobe 10 pts. SL− com step 50 → SLs descem 50 pts (compra).
Mostra ou esconde o painel lateral com toggles e campos extras (spread, trailing, fechamento, etc.).
Relacionado
Controla g_sidePanelOn. Não altera parâmetros — só visibilidade do Painel lateral (AJUSTE).
Exemplo
2 cliques ▶ → painel lateral expande com Bloquear com posição, EDT_SP_SPREAD, etc.
Abre o painel lateral de indicadores visuais e score. Contém toggles para ligar/desligar cada indicador no gráfico (S/R D1, ATR Band, EMA 20, EMA 50, Sessões, VWAP + botão TODOS) e uma guia completa documentando o sistema de score em duas colunas.
Relacionado
Controla g_indicadoresPanelOn. Posiciona-se à direita do painel principal (ou do painel de perfis/ajuste se estiverem abertos). 2 cliques. Ver seção Painel de Indicadores para detalhes.
Exemplo
2 cliques INDICADORES → painel 840px abre com botões ON/OFF + guia explicando Entry/Context/Risk/Final Score, Pullback, Exaustão, Multi-TF, decisão textual.
Placar 2 — campos de texto OBJ_EDIT
Ao terminar edição (**EndEdit**) validam e gravam nos **g_*** correspondentes `SavePanelState()`. Inválidos revertem ao valor anterior quando o repaint aplica.
Campos numéricos do SL fixo em pontos e do percentual do corpo START para modo SL %.
Relacionado
→ g_slPontos e g_slPercCandle. Usados conforme SL: FIXO / PERC (g_modoSL). Espelham InpSL_Pontos e InpSL_PercentualCandle.
Exemplo
EDT_SL_FIXO=3000, EDT_SL_PERC=10. Com SL FIXO ativo, novas entradas usam 3000 pts.
Risco em dólares fixos ou percentual do saldo por operação.
Relacionado
→ g_riscoDolar [0..1e6] e g_riscoPct [0..100]. Se g_riscoPct > 0, ignora dólar — espelha InpRiscoPercentual / InpRiscoDolar.
Exemplo
EDT_RISCO_PCT=1, EDT_RISCO_DOL=500 → usa 1% do saldo. Zerar PCT → passa a usar $500.
Cinco pesos inteiros positivos separados por hífen para repartir risco entre O1–O5.
Relacionado
→ g_pesos. Espelha InpPesos. Ordens OFF redistribuem peso — ver toggles O1–O5.
Exemplo
Digite 5-4-3-2-1 → válido. 5-4-0-2-1 → inválido (zero), reverte.
Cinco TPs em pontos por perna; 0 = sem TP naquela ordem.
Relacionado
→ g_tpPontos. Espelha InpTP_Pontos. TP+/- ajusta posições abertas; este campo define default na abertura.
Exemplo
50-75-150-0-0 → O4 e O5 sem TP na abertura.
Corpo do candle START em pontos — string "1000" (só mín.) ou "700-1000" (range min-max). Desde v1.145 espelha InpRangeBodyPontos via g_rangeBodyRaw.
Relacionado
→ ApplyRangeBodyString → g_rangeBodyPontos / g_rangeBodyMax. Bypassado por ARMAR OPER. Read-only quando perfil ativo (AUTO/FIXED). String inválida bloqueia entradas.
Exemplo
EDT_RANGE_BODY=1200-2500 → START com 1100 pts rejeitado; 1300 pts ok. Inválido 2500-1200 → reverte e log de erro.
Confirmação em pontos fixos ou percentual do corpo do START. Os dois campos têm exclusão mútua: preencher um torna o outro read-only. Zerar ambos libera os dois para edição. Quando PTS > 0, tem prioridade sobre % em runtime.
Relacionado
→ g_confPontos / g_confPercentual. Readonly mútuo: confPtsActive = (g_confPercentual <= 0), confPctActive = (g_confPontos <= 0). Ambos zero = ambos editáveis. Perfil ativo trava ambos.
Exemplo
CONF_PCT=10 → campo PTS fica readonly. Zere CONF_PCT → ambos ficam editáveis → digite 300 em PTS → campo PCT fica readonly.
Limites min-max do filtro corpo/range em percentual (0–100).
Relacionado
→ g_filtroMinPct / g_filtroMaxPct. Só aplica se toggle Filtro corpo (range) ON.
Exemplo
70-95 válido. 95-70 inválido (min ≥ max).
Parâmetros da proteção da cesta: pontos de buffer na O5 pós-O4 e dólares reservados pós-O3.
Relacionado
→ g_protO4Pontos / g_protO3Dolar. Requer Prot.Cesta ON (InpAtivarProtecaoCesta).
Exemplo
PROT_DOL=200, PROT_PTS=50 → valores usados nas fases O3 e O4 da proteção.
Incremento em pontos dos botões TP± e SL±.
Relacionado
→ g_tpStep / g_slStep. Ints 1..100000. Só afetam posições já abertas via nudge.
Exemplo
EDT_TP_STEP=25 → cada TP+ move 25 pts.
Alvo em dólares de lucro flutuante para o botão SAIR POSITIVO.
Relacionado
→ g_sairPositivoValor. Usado só pela ação SAIR POSITIVO (2 cliques, 2000 ms).
Exemplo
EDT_SAIR_POSITIVO=500 → botão tenta configurar TPs para ~$500 de lucro flutuante.
Painel lateral (AJUSTE) — toggles e EDT
Todos os toggles **2 cliques** (500 ms). Estado persiste nas mesmas GV que o painel principal.
No MT5: BTN_SP_BLOQ · UMA_CDL · CDL_FECH
Três toggles de regras operacionais: bloquear nova entrada com posição aberta, limitar uma entrada por candle, e preferência por candle START fechado.
Relacionado
→ g_bloquearNovaEntrada, g_umaEntradaPorCandle, g_usarApenasCandleFechado. Espelham InpBloquearNovaEntradaComPosicaoAberta, InpUmaEntradaPorCandle, InpUsarApenasCandleFechado.
Exemplo
Bloquear ON + posição aberta → novo sinal confirmado não abre segunda cesta. Uma entrada ON → no máximo 1 entrada por vela.
No MT5: BTN_SP_SOMBRA
Liga/desliga filtro de sombra na direção da reversão esperada.
Relacionado
→ g_filtroSombraOn. Limites em EDT_SP_SOMBRA_RANGE. Espelha InpUsarFiltroSombraReversao.
Exemplo
2 cliques ON → STARTs passam a validar a sombra de reversão (% do total do candle) entre min/max configurados.
No MT5: BTN_SP_FECH_HORA_F · BTN_SP_FECH_MIN_F
Cicla o enum de filtro (ENUM_FECHAR_FILTRO) aplicado ao fechamento por hora e por minutos — ex.: todas, só positivas, aguardar positivo.
Relacionado
→ g_fechamentoHoraFiltro / g_fechamentoMinutosFiltro. Valores de hora/min em EDT_SP_FECH_HORA / EDT_SP_FECH_MIN (ou equivalente minutos).
Exemplo
2 cliques no filtro de hora: TODAS → POSITIVAS → NEGATIVAS → …
Spread máximo permitido para nova entrada, em pontos.
Relacionado
→ g_spreadMaxPontos. Espelha InpSpreadMaxPontos. Checado em IsSpreadOk().
Exemplo
EDT_SP_SPREAD=80 → spread 100 pts bloqueia entrada.
Limites min-max da sombra de reversão em % do TOTAL do candle, formato a-b.
Relacionado
→ g_filtroSombraMinPct / g_filtroSombraMaxPct. Requer toggle Sombra reversão ON.
Exemplo
5-30 → sombra de reversão entre 5% e 30% do total do candle START.
Hora do dia (0–23, 25=off) e minutos após entrada para encerramento automático.
Relacionado
→ g_fechamentoHora / g_fechamentoMinutos. Filtros via botões de ciclo. Espelham InpFechamentoHora / InpFechamentoMinutos.
Exemplo
FECH_HORA=17, FECH_MIN=120 → às 17h ou 2 h após entrada (conforme gatilho), aplica filtro configurado.
Minutos para exit-by-time da cesta inteira (fecha todas as pernas após N min da entrada). EDT_SP_BE_PTS (break-even) e EDT_SP_MAX_BODY foram removidos — o break-even por perna saiu do EA e o teto de corpo agora é via range min-max em InpRangeBodyPontos (no painel ou em perfil JSON).
Relacionado
→ g_exitByTimeMinutos. Espelha InpExitByTimeMinutos. Trava (read-only) quando um perfil JSON está ativo. Para teto de corpo, use "InpRangeBodyPontos": "1000-5000".
Exemplo
EXIT_MIN=60 → cesta fecha após 60 min independente de lucro/prejuízo.
Três strings com cinco inteiros cada — gatilho, distância e passo de trailing por O1–O5.
Relacionado
→ g_trailingGatilhos, g_trailingDistancia, g_trailingStep. Espelham InpTrailingGatilhos / dist / step.
Exemplo
GAT=0-0-0-150-200, DIST=0-0-0-80-80, STEP=0-0-0-10-10 → trailing só O4/O5 após lucros 150/200 pts.
Mover o painel
Arrastar a barra superior do painel reposiciona todos os objetos gráficos do EA no chart. Posição salva via SavePanelPosition.
Relacionado
Não altera parâmetros de estratégia — só layout UI. Posição inicial padrão definida no código (~50 px esquerda, ~200 px topo).
Exemplo
Clique e arraste o header para canto inferior direito → painel permanece lá após reiniciar EA (se GV de posição existir).
=== Desenho da operação no gráfico (e se eu entrasse) ===
Auxílio visual exclusivo do Pro — não envia ordens, só desenha o cenário do sinal atual.
No MT5: desenha a operação no gráfico (e se eu entrasse)
Liga o preview "e se eu entrasse": o EA desenha no gráfico as linhas da operação hipotética do sinal atual (entrada, TP e SL por perna), sem enviar ordem. Serve para enxergar onde a cesta abriria/sairia caso a confirmação ocorresse.
Relacionado
Controla g_revPvOn; renderizado por RefreshReversalPreviewLines (módulo ui/CS_RevPreview). Exclusivo do CandleSniperPro — no robô de estudo esse preview faz parte do bloco Debug visual candle START.
Exemplo
InpDesenharOperacao=true → ao armar um sinal de reversão, aparecem as linhas de entrada/TP/SL no gráfico até a confirmação acontecer (ou o sinal expirar).
Convenções
Convenções
- Strings
v1-v2-v3-v4-v5: ordem O1–O5 (pesos, TP, gatilhos, distância e passo de trailing). Desde v1.145, distância e passo também são strings por perna. - 0 em TP, gatilho, distância ou passo = desligado/ignorado naquela perna.
- InpRangeBodyPontos: string
"1000"(min) ou"min-max"no F7, painel e perfil JSON. - InpPerfilModo: 0=MANUAL, 1=AUTO (default), 2=FIXED (+ InpPerfilFixoNome).
- InpHorarioOperacao: filtro global de horas (broker time). Vazio = sem restrição. Formato:
"10-12"ou"9|13|15-17|22". - InpPointScale: 0=auto (3/5 dígitos→10×), 1=raw, 10=forçar. Afeta todos os cálculos em pontos.
- Indicadores visuais: 6 toggles (
InpInd*) definem estado inicial; painel INDICADORES persiste. Cálculos internos rodam sempre (scores dependem deles). - Tendência Multi-TF: bid vs open do candle atual de cada TF (H4/D1/W1/MN). Badges mostram direção (C/V) + % distância. Threshold 50 pts para neutro.
- Scores: Entry (0–100) × 0.4 + Context (0–100) × 0.4 − Risk (0–100) × 0.3 → Final Score → decisão textual (PREMIUM / BOA / PODE ENTRAR / AGUARDAR / EVITAR).
- Telegram Alerts (
InpTg*): master switchInpTgAtivo(default false = zero overhead). Filtros: horários, modo do EA, condição de envio. Botões inline de risco/SL via backend FastAPI. - Confirmação reversão: campos PTS e PCT têm exclusão mútua — preencher um trava o outro; zerar ambos libera os dois.
- Runtime: muitos g_ espelham
Inpno init e depois são alimentados pelo painel +SavePanelState.