Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 231
- Рейтинг:
- Опубликован:
- Обновлен:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Высокопроизводительный JSON (v3.5.0)
Библиотека JSON, разработанная для LLM, автономной торговли и сверхнизких задержек.
Проблема
При интеграции моделей искусственного интеллекта (GPT-4o, Claude 3.5, DeepSeek) в MetaTrader 5 стандартные библиотеки сообщества не справлялись с двумя критическими задачами: выделение памяти и задержка сериализации. Чрезмерное использование рекурсии и временных строк превратило обработку ответов ИИ (вызов функций) в узкие места, которые приводили к зависанию терминала. Именно "боль" от потери тиков при очистке строк сборщиком мусора послужила стимулом для создания этой архитектуры.
архитектура fast_json
Переписана с нуля с навязчивым вниманием к производительности:
- Zero-Allocation Architecture: парсинг через Tape (смежный буфер long[] ) и прямая сериализация в буфер uchar[] . Мы устраняем посредников: полезная нагрузка поступает из сокета прямо в структуру данных без создания тысяч объектов.
- Гибридный разбор чисел: в версии 3.4.0 мы ввели целочисленное накопление через long (родной ALU) и статические таблицы поиска Exp10 для максимальной точности при работе с плавающей точкой.
- Итеративная машина состояний: прощай рекурсия. Линейный парсер предотвращает переполнение стека даже в глубоко вложенных JSON.
- SWAR-сканирование: SIMD-чтение (8 байт за цикл) для пропуска пробельных символов и длинных строк.
Производительность
Тесты проводились на стандартном оборудовании (x64) со сложной полезной нагрузкой в 50 000 узлов:
| Операция | (fast_json) | Legacy Lib (JAson) | Преимущество |
|---|---|---|---|
| Разбор | 137 мс | 1540 мс | 11.2x быстрее |
| Сериализация | 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
Разработан Джонатаном Перейрой в качестве основной инфраструктуры фреймворка AI-Toolkit.
Перевод с португальского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/pt/code/68596
Timeframe Quality Analyzer
Найдите идеальный таймфрейм для торговли
WPR With TPSL
Индикатор WPR в окне графика с TPSL
SessionRangeBoxes
Рисует цветные рамки диапазонов для азиатской, лондонской и нью-йоркской сессий на любом графике. Включает панель статистики, показывающую средние диапазоны сессий в пунктах, и дополнительные оповещения о прорыве, когда цена выходит из коробки сессии.
WPR Monitoring MTF Trend
мониторинг различных тенденций временных рамок в одной временной рамке

