SKILL: signal — Sinyal Scalping M3/M5 via Debat 2 IA
1. TRIGGER & MODO
| Trigger | Arti |
|---|---|
signal-<par> (ex. signal-xauusd, signal-eurusd) | Gerar sinal de entrada com ordem pendente M3/M5 |
signal-result win / signal-result lose [motivo] | Usuário informa resultado do último sinal → registra no histórico |
<par>= símbolo MT5 local. Resolver com~/.local/share/mt5-venv/bin/python scripts/mt5_query.py symbols <consulta>. Se não existir, mostre os candidatos mais próximos, não invente.- Não faça perguntas se o par estiver claro. Não tenha pressa — debate de 3-5 rodadas é normal, qualidade > velocidade.
2. REGRAS DURAS DE TRADING (verificadas pelo JUIZ, não pelo analista)
- Tipo de ordem: apenas BUY/SELL LIMIT ou STOP (ordem pendente em nível técnico). Ordem a mercado só é permitida se ambos os analistas concordarem que o preço está exatamente no nível e isso for escrito explicitamente.
- SL máximo $3 por sinal (lote 0.01) — NÃO são 300 pontos fixos.
Conversão automática por par a partir do bloco
riskda saída demt5_query.py scalp:sl_max_points = risk.sl_max_points(XAUUSD ≈ 300 pontos = $3; outros pares diferem automaticamente). Proposta de SL do analista que ultrapassar esse valor = REJEITADA pelo juiz, enviada de volta para correção. - TP = RR 1:1,5 ou 1:2 da distância do SL. Escolha um dos dois e informe o RR.
- Timeframe de análise: M3 + M5 (principal) + H1 (tendência geral rápida).
- Spread razoável: se o spread > ~20% da distância do SL proposto, o analista deve destacar (entrada com limite é mais segura em condições de spread alto).
3. DADOS (apenas MT5 local — SEM web/websearch, para ser rápido)
Comando único:
~/.local/share/mt5-venv/bin/python ~/.config/opencode/skills/signal/scripts/mt5_query.py scalp <SYMBOL>
Saída JSON: bid/ask, spread, risk (usd/point, sl_max_points), daily change,
M3/M5/H1 (ATR14, EMA20/50, tendência, S/R, range, último candle + direção do corpo).
Forneça essa saída bruta para AMBOS os analistas. Proibido inventar dados MT5.
Fuso horário: mencione o horário em WIB + horário do servidor MT5 (UTC+3) entre parênteses,
exemplo 21:45 WIB (17:45 server). WIB = servidor + 4 horas.
4. APRENDIZADO A PARTIR DO HISTÓRICO (OBRIGATÓRIO ANTES DO DEBATE)
- Antes da rodada 1, o juiz obtém o histórico:
rclone cat gdrive:Linux-Server/signals/track-record.md(se 404/não encontrado = ainda vazio, continue sem histórico — informe isso). - Resuma o padrão dos últimos resultados (ex. "as últimas 5 perdas foram todas sell-limit durante tendência de baixa") e FORNEÇA para ambos os analistas como contexto de aprendizado: padrões vencedores podem ser repetidos; padrões perdedores devem ser evitados ou contestados pelo analista explicando por que desta vez é diferente.
- Sinal salvo em
gdrive:Linux-Server/signals/<AAAAMMDD>-<par>/signal.mdstatusPENDING(veja §7).
5. DEBATE (2 analistas + 1 juiz, 3-5 rodadas)
Papéis e modelos (use a ferramenta subagent, agente general, parâmetro model explícito):
| Papel | Modelo | Tarefa |
|---|---|---|
| Analista 1 — Técnico de Entrada | opencode/step-5-preview-free | Estrutura M3/M5, tipo de ordem (limit/stop), entrada, SL, TP, timing |
| Analista 2 — Gestor de Risco | opencode/nemotron-3.5-lightning-free | Validação de SL/TP, R:R, armadilhas de nível (stop hunt, spread, sessão), dimensionamento de posição |
| Juiz = agente principal, modelo DA SESSÃO ATUAL (dinâmico) | — | Neutro: orquestração, envio de dados, verificação de regras duras (§2), contagem de votos, composição da saída. PROIBIDO analisar/opinar sobre direção do mercado. Juiz = modelo de IA que está executando esta sessão — pode ser qualquer provedor; não assuma que é sempre custom/auto. Ao compor a saída, verifique seu próprio modelo e escreva seu nome real. |
Fluxo:
- Rodada 1 (independente): envie dados MT5 + resumo do histórico para ambos os analistas. Cada um propõe: direção, tipo de ordem, entrada, SL (pontos & $), TP (RR), confiança %, motivo.
- Rodada de debate (1-3 rodadas): trocam textos. Podem solicitar novos dados MT5
(chamar
scalpnovamente — o preço se move). Foco em divergências reais: níveis, tipo de ordem, validade do SL. - Posição final: cada um declara sua posição final.
- Votação: ambos os analistas concordam → sinal válido. Divergência = NO TRADE (saída oficial: nenhum sinal + motivo breve). Isso é um resultado válido e normal, não force.
Modelo de fallback em caso de limite de taxa (ordem Tier 1): opencode/longcat-2.5-preview-free
→ opencode/space-bunny-free → opencode/cat-jam-free; Tier 2 máx 1 analista:
9roy/9router_combo; Tier 3: custom/auto ("babá") — apenas se o juiz
NÃO for custom/auto (um modelo não pode desempenhar dois papéis). Não use 2 analistas
do mesmo provedor se houver alternativa. Máximo de 2 retentativas por erro;
se ambos os analistas falharem completamente = reporte e pare.
6. ORÇAMENTO
Cálculo simples: 1 chamada de analista = 3, retentativa/fallback = 1, chamada de
ferramenta do juiz = 1. Total alvo 12-27 (2-3 chamadas de analista × ~3 rodadas +
ferramenta). Escreva na saída: Budget: X/27 (método: peso-sinal).
Não ultrapasse 27 — 3-5 rodadas de debate são suficientes; depois disso, pare e
componha a saída.
7. SAÍDA & ARMAZENAMENTO (rclone, zero arquivos locais)
a) Sinal (se válido)
Formato da resposta ao usuário (resumo do debate primeiro, resultado no final):
- Resumo do debate: propostas iniciais, pontos-chave do debate (inclua citações breves), resultado da votação + modelos de IA usados para cada papel.
- Depois, no FINAL, o bloco do sinal:
🔔 SIGNAL <PAR> — <BUY/SELL> <LIMIT/STOP>
Entry: <preço> | SL: <preço> (<X> pontos = $<Y>, máx $3)
TP: <preço> (RR 1:<r>) | Confiança: <Z>%
Motivo: <1-2 frases em linguagem humana — por que este nível e direção, a partir do debate>
Válido até: <observação de timing/expiração, ex. cancelado se o preço já passou do nível>
- Salvar via
rclone rcat gdrive:Linux-Server/signals/<AAAAMMDD>-<PAR>/signal.mdcontendo: data, par, sinal completo, argumentos de ambos os analistas, votação, modelos, orçamento, status:PENDING.
b) No trade (votação divergente / dados inválidos)
Saída: "🚫 NO TRADE — ", salvar na mesma
pasta com status NO-TRADE.
c) Comando signal-result win|lose [motivo]
- Procurar último sinal
PENDING:rclone lsf gdrive:Linux-Server/signals/ --dirs-only | sort | tail→ lersignal.mdviarclone cat. Se não houver PENDING, perguntar ao usuário qual sinal se refere (permitido perguntar de volta neste modo). - Atualizar
signal.mdno Drive: status →WIN/LOSE, adicionar linha de resultado + motivo do usuário + data de fechamento. - Adicionar ao histórico
gdrive:Linux-Server/signals/track-record.md(criar se não existir) uma linha:AAAAMMDD | par | direção+tipo | entrada | resultado WIN/LOSE | motivo do usuário. - Responder ao usuário de forma breve: resultado registrado + estatísticas do histórico
(ex.
XAUUSD: 4W-2L, taxa de acerto 67%— calcular a partir do histórico).
d) Sinal expirado
Se o usuário informar que o sinal nunca atingiu a entrada (preço passou/inverteu),
registrar como LOSE com o motivo do usuário (ex. "momento perdido") — isso ainda é
aprendizado válido.
8. PROIBIÇÕES
- Proibido usar websearch/web fetch — dados apenas do MT5 local.
- Proibido inventar preços/ATR/níveis.
- Proibido dar sinal se o spread estiver extremo ou o mercado fechado (tick_time desatualizado) — saída NO TRADE.
- Proibido SL maior que $3, TP fora de RR 1:1,5/1:2, ordem a mercado sem aprovação dos dois analistas.
- Juiz proibido de avaliar direção do mercado.
- Juiz proibido de analisar/opinar — mesmo que o modelo do juiz seja inteligente, seu papel é apenas de moderador. A análise permanece com os analistas.