高性能 JSON(v3.5.0)
专为 LLM、自主交易和超低延迟设计的 JSON 库。
问题所在
在将人工智能模型(GPT-4o、Claude 3.5、DeepSeek)集成到 MetaTrader 5 时,社区的标准库在两个关键点上出现了问题:内存分配 和序列化延迟。递归和临时字符串的过度使用使人工智能响应(函数调用)的处理陷入瓶颈,导致终端冻结。在垃圾收集器清除字符串的过程中损失的点数所带来的 "痛苦 "正是这种架构的动机所在。
fast_json 架构
从头开始重写,专注于性能:
- 零分配架构:通过Tape(连续缓冲区 long[])进行解析,并在缓冲区 uchar[] 中直接序列化。我们消除了中间环节:有效载荷从套接字直接进入数据结构,无需创建数千个对象。
- 混合数字解析:在 v3.4.0,我们通过 long(本地 ALU)和静态 Exp10 查找表引入了整数累加功能,以实现浮点 最高精度。
- 迭代状态机:告别递归。线性解析器可防止堆栈溢出,即使在深度嵌套的 JSON 中也是如此。
- SWAR 扫描:SIMD 读取(每周期 8 字节)跳过空白和长字符串。
性能
测试在标准硬件(x64)上进行,使用 50,000 个节点的复杂有效载荷:
| 操作 | (fast_json) | 传统 Lib (JAson) | 优势 |
|---|---|---|---|
| 解析 | 137 毫秒 | 1540 毫秒 | 快 11.2 倍 |
| 序列化 | 264 毫秒 | 568 毫秒 | 快 2.1 倍 |
| 总计(往返) | 401 毫秒 | 2129 毫秒 | 快 5.3 倍 |
> 可通过软件包中的 TestJsonBenchmark.mq5 脚本验证结果。
主要功能
- HFT 恢复能力:确定性内存分配。垃圾回收器不会在解析过程中介入。
- O(1) 自省:即时检查 HasKey() 键或 Size() 数组,无需线性扫描。
- 类型安全:严格的类型访问(GetInt、GetDouble 和 GetString)。没有会导致隐性错误的神奇变体。
- 准确的错误报告:如果出现故障,会返回准确的行和列。
使用示例:读取 OpenAI 响应
#include <fast_json.mqh>
void OnStart() {
string payload = GetOpenAIResponse(); // JSON massivo
CJson json;
if(json.Parse(payload)) {
// Acesso direto performance-critical (Zero-Copy)
string content = json["choices"][0]["message"]["content"].ToString();
// Exemplo: Extraindo uso de tokens
if(json.HasKey("usage")) {
long tokens = json["usage"]["total_tokens"].ToInt();
Print("Consumo: ", tokens);
}
} else {
// Debug preciso
int l, c;
json.GetErrorPos(l, c);
PrintFormat("Erro JSON na Linha %d, Coluna %d", l, c);
}
}
示例:构建请求(优化生成器)
CJsonBuilder b;
b.Obj()
.Key("model").Val("gpt-4-turbo")
.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.Serialization(); // Serialização ultra-rápida
由 Jonathan Pereira 开发,是AI-Toolkit 框架的核心基础架构。
由MetaQuotes Ltd译自葡萄牙语
原代码: https://www.mql5.com/pt/code/68596
Timeframe Quality Analyzer
寻找完美的交易时间框架
VR Rsi Robot - 多时间框架交易策略
仅有两个时间框架 — H1 和 D1 — 同步工作,以过滤掉市场噪音,只捕捉RSI从超买和超卖区域发出的强力反转信号。没有随机入场,只有来自“老大哥”的明确方向确认。

