Termos de Referência
Título do Projeto: EA Trading Utility – Manual Grid Launcher (Gradiente Linear) Pro
1. Objetivo do Projeto
Desenvolver um utilitário (Expert Advisor) para MetaTrader 5 focado na automação do lançamento de grades de ordens pendentes (Limit Orders). O objetivo é substituir o lançamento manual "linha a linha", garantindo rapidez, precisão matemática e conformidade estrita com as regras de negociação (Tick Size e Volume Step) de cada ativo.
Premissa Principal: O EA é uma ferramenta de execução manual (One-Click Grid). Não deve haver lógica de retroalimentação ou reposição automática de ordens.
2. Interface Gráfica (GUI) e Usabilidade
-
Estilo: Design moderno, flutuante e limpo, inspirado na janela nativa de "Nova Ordem" das versões recentes do MT5.
-
Sentido Padrão: O painel deve abrir configurado para COMPRA (Buy Limit). Deve haver um alternador (Tab ou Switch) para mudar para VENDA (Sell Limit).
-
Resumo Financeiro: Exibir em tempo real o Custo Total Notional da grade.
-
Cálculo: Somatória (Preço_de_Entrada,i x Volume).
3. Configuração da Grade (Campos Vinculados)
O painel deve possuir inteligência de cálculo entre os campos (Inputs):
-
Entradas Base: 'Preço de Início' (ex: 190,00) e 'Step/Distância entre linhas' (ex: 0,10).
-
Volume (Lote): O campo de lote deve validar o “SYMBOL_VOLUME_STEP”. Se o usuário digitar um volume inválido para o ativo (ex: 0,51 em um ativo que só aceita múltiplos de 0,10), o botão de execução deve ser desabilitado.
-
Sincronização Quantidade vs. Preço Final:
-
Opção A: Se o usuário digitar a Quantidade de Linhas (ex: 42), o campo 'Preço da Última Ordem' deve ser calculado automaticamente.
-
Opção B: Se o usuário digitar o Preço da Última Ordem (ex: 194,10), o campo 'Quantidade' deve ser preenchido automaticamente com o número de ordens que cabem naquele intervalo usando o 'Step' definido.
-
Nota técnica: O cálculo deve ocorrer via eventos de alteração de campo (OnChange), e não no OnDeinit, garantindo atualização em tempo real ao digitar.
4. Lógica de Take Profit (TP) e Arredondamento
O TP deve ser flexível, respeitando sempre o “SYMBOL_TRADE_TICK_SIZE”:
-
TP por Valor Nominal: Ao definir um valor fixo (ex: 2,05), o sistema aplica esse alvo a todas as linhas. O painel deve exibir a porcentagem correspondente em relação à primeira ordem.
-
TP por Porcentagem: Ao definir uma % (ex: 1,00%), o sistema calcula o valor nominal para cada linha.
-
Regra de Ouro: O preço de TP calculado deve ser sempre arredondado para cima (em favor do lucro) para o próximo Tick Size válido.
-
Exemplo: Se o cálculo resultar em 191,902 e o ativo sobe de 0,05 em 0,05, o TP deve ser ajustado para 191,95.
5. Trava de Segurança (Smart Button)
O botão de execução deve permanecer DESABILITADO (Cinza/Inativo) nas seguintes condições:
-
Validação de Preço:
-
Para COMPRA: Se qualquer ordem da grade tiver preço de entrada >= preço atual (Ask).
-
Para VENDA: Se qualquer ordem da grade tiver preço de entrada <= preço atual (Bid).
-
Validação de Volume: Se o volume preenchido não for múltiplo do passo de lote do ativo.
6. Gestão de Contas (Hedging vs. Netting)
O EA deve identificar o tipo de conta (“ACCOUNT_MARGIN_MODE”) e agir conforme abaixo:
-
Modo HEDGING (Padrão): Envia cada ordem com seu respectivo Take Profit individual. As ordens são independentes e podem se sobrepor a outras já existentes.
-
Modo NETTING: Envia as ordens de entrada normalmente, mas NÃO deve incluir Take Profit nas ordens (visto que o Netting consolida a posição e o TP seria global).
-
Nota: Não deve haver funções de "limpar" ou "cancelar" ordens anteriores para evitar cliques acidentais. O EA apenas adiciona novas camadas.
-
Nota:Prever um botão “fechar”, para sair da tela de execução sem enviar nenhuma ordem.
7. Requisitos Técnicos e Entregáveis
-
Compatibilidade: Testado e funcional em ativos da B3 (Ações, WDO, WIN) e Forex/CFDs (ActivTrades).
-
Performance: Uso de “OrderSendAsync” é preferível se a grade for muito grande, para evitar congelamento da GUI.
-
Tratamento de Erros: Logs claros no "Expert" em caso de rejeição pela corretora (Requote, Invalid Price, etc.).
-
Arquivos: Entrega do arquivo compilado (.ex5) e do código-fonte original (.mq5).
-
Instalação: Entreda de um PDF com a Instrução completa de como instalar e usar;
-
Suporte: Correção de bugs e suporte para instalação inicial inclusos até a validação dos testes. Mesmo após o término do trabalho, se constatado algum BUG, o cliente pode reportar o problema ao desenvolvedor para solicitar a adequação dos problemas;
8. SUGESTÕES ADICIONAIS DE QUALIDADE (Diferenciais):
-
Visual Preview: Desenhar linhas horizontais temporárias (OBJ_HLINE) no gráfico durante o preenchimento para que o usuário veja a grade antes de disparar.
-
Magic Number e Comentário: Incluir campo de Magic Number e comentário fixo em todas as ordens para facilitar a identificação. Deixar o Magic number bem visível na tela, logo abaixo do lote.
-
Controle de Loop: Adicionar um micro-delay (ms) entre os envios para evitar rejeição por "Trade context busy".
-
Log de Inicialização: Imprimir no log se detectou conta Hedging ou Netting ao carregar o EA;
Dica para o Desenvolvedor (Nota do Cliente):
O foco deste projeto é a precisão matemática. O arredondamento dos Ticks e a validação do sentido da ordem pendente (Limit) em relação ao preço atual são os pontos mais críticos. O painel deve ser visualmente profissional, seguindo a estética nativa do MetaTrader 5.