Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
512
Avaliação:
(5)
Publicado:
Atualizado:
Freelance MQL5 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:

  1. 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.
  2. 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.
  3. 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 ).
  4. 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.

Benchmark



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 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 RSI Price Action Breakout Indicator

A high-precision trend reversal indicator combining RSI exhaustion zones with candlestick breakout patterns.

nCalcular o lote por porcentagem nCalcular o lote por porcentagem

Função de cálculo de lote por porcentagem de risco

Larry Williams XGBoost Onnx Larry Williams XGBoost Onnx

adoção do método de Larry William usando o AI Time-Series XGBoost