Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 512
- Avaliação:
- Publicado:
- Atualizado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
High-Performance JSON (v3.7.0)
Uma biblioteca JSON de ultra-alta performance projetada para LLMs, Trading Autônomo e Ultra-Baixa Latência.
O Problema
Ao integrar modelos de IA generativa (como GPT-4o, Claude 3.5 e DeepSeek) no MetaTrader 5, as bibliotecas JSON tradicionais da comunidade falham em dois pilares críticos: Alocação excessiva de memória no Heap e Latência na Serialização. O uso abusivo de recursão, objetos variantes mutáveis e strings temporárias transforma o processamento de payloads massivos em gargalos severos que congelam a thread principal do terminal. A perda de ticks importantes enquanto o Garbage Collector tenta limpar fragmentações do Heap foi a motivação para redesenhar essa arquitetura.
Arquitetura fast_json
Reescrita inteiramente do zero com foco obsessivo em eficiência computacional e arquitetura HFT:
- Zero-Allocation Parse & Direct Buffer Parsing: Introduzimos o método ParseBuffer(uchar&[]) . Agora, os bytes brutos recebidos diretamente dos sockets (WebRequests ou WebSockets) são processados sem conversão intermediária para string . O parser opera via Tape (um único buffer contínuo long[] ), eliminando a instanciação de milhares de objetos na memória.
- Tabela de Hashes Compacta na Tape: O layout de memória da Tape armazena as chaves de forma compactada junto com seus comprimentos e hashes pré-calculados. Isso permite buscas por string em O(1) sem a necessidade de re-scan de aspas ou loops de comparação lineares.
- Encoder UTF-8 Nativo Bitwise: A serialização de caracteres acentuados (Unicode > 127) foi portada para um codificador puramente matemático operando no nível de bits (sem alocações temporárias no Heap e sem chamadas de sistema lentas como StringToCharArray ).
- Hybrid Numeric Parsing & SWAR: Acumulação branchless de números inteiros via ALU nativa e decodificação ultra-rápida de floating-points. A varredura de espaços em branco e escapes do JSON utiliza paralelismo 64-bit SWAR (SIMD em nível de software, processando 8 bytes por ciclo de instrução).
Performance
Métricas consolidadas obtidas em hardware x64 padrão processando um payload complexo de alta densidade (50.000 nós):
| Operação | (fast_json v3.7.0) | Legacy Lib (JAson) | Vantagem |
|---|---|---|---|
| Parse | 137 ms | 1540 ms | 11.2x mais rápido |
| Serialização | 264 ms | 568 ms | 2.1x mais rápido |
| Total (Roundtrip) | 401 ms | 2129 ms | 5.3x mais rápido |
> Resultados 100% reprodutíveis através do script de benchmark TestJsonBenchmark.mq5 disponível no pacote.
Principais Recursos
- Resiliência: Alocação estritamente determinística. Nenhuma intervenção do Garbage Collector do MQL5 durante a execução crítica de parsing e serialização.
- Introspecção Ultrarrápida: Operações como HasKey() e Size() respondem de forma imediata via lookup de chaves otimizado.
- Segurança contra Corrupção de Memória: Tipagem estrita de acesso ( GetInt , GetDouble , GetString ) protegida por roteamentos seguros que impedem erros silenciosos de leitura Out-of-Bounds (OOB).
- Depuração de Linha de Produção: Retorna exatamente a Linha e a Coluna em caso de falha estrutural no JSON.
Exemplo de Uso: Parser Direto de Buffer (OpenAI API)
#include <fast_json.mqh>
void OnStart() {
uchar response_bytes[];
string response_headers;
// Requisição HTTP para a API de IA
int res = WebRequest("POST", "https://api.openai.com/v1/chat/completions", headers, timeout, data, response_bytes, response_headers);
CJson json;
// Parse direto do buffer de bytes brutos - ZERO alocação de strings temporárias!
if(json.ParseBuffer(response_bytes)) {
// Acesso direto performance-critical (Zero-Copy)
string content = json["choices"][0]["message"]["content"].ToString();
if(json.HasKey("usage")) {
long tokens = json["usage"]["total_tokens"].ToInt();
PrintFormat("Tokens consumidos: %d | Conteúdo: %s", tokens, content);
}
} else {
// Debug de parser preciso
int l, c;
json.GetErrorPos(l, c);
PrintFormat("Erro de parser no JSON na Linha %d, Coluna %d", l, c);
}
}
Exemplo: Construindo Request Complexo (Builder de Alta Velocidade)
CJsonBuilder b;
b.Obj()
.Key("model").Val("gpt-4o")
.Key("messages").Arr()
.Obj()
.Key("role").Val("user")
.Key("content").Val("Analyze EURUSD H1 trend")
.EndObj()
.EndArr()
.Key("temperature").Val(0.7)
.EndObj();
string body = b.Build(); // Serialização ultra-rápida (Zero-Alloc no builder)
Desenvolvido por Jonathan Pereira como infraestrutura de alta fidelidade para o framework AI-Toolkit.
iCrosshair - Real-Time Candle Metrics on Hover
Passe o mouse sobre qualquer candle para ver o que o MT5 não mostra: Tamanho do intervalo, porcentagem de corpo, proporções de pavio. Inteligente, rápido e personalizável.
RSI Price Action Breakout Indicator
A high-precision trend reversal indicator combining RSI exhaustion zones with candlestick breakout patterns.
nCalcular o lote por porcentagem
Função de cálculo de lote por porcentagem de risco
Larry Williams XGBoost Onnx
adoção do método de Larry William usando o AI Time-Series XGBoost

