1. Обзор
Библиотека MQL5 JSON - это мощная и многофункциональная библиотека, разработанная специально для разбора, манипулирования и сериализации JSON-данных в среде MQL5. Она предоставляет простой и интуитивно понятный API Document Object Model (DOM), стремясь сделать работу с JSON в MQL5 сравнимой с современными языками программирования, такими как JavaScript и Python.
Эта библиотека способна решать широкий спектр задач, от чтения простых конфигураций советников до сложного обмена данными между системами в режиме реального времени. Ее основные функции и возможности включают:
Гибкий парсер: Опционально поддерживает некоторые нестандартные особенности JSON5, такие как комментарии к коду и запятые в конце строки, для улучшения совместимости с различными источниками данных.
--- Манипулирование и доступ ---
Интуитивно понятный обход DOM: Доступ к данным с помощью интуитивно понятного синтаксиса с ключами ( node["key"] ) и индексами ( node[0] ), как при использовании словаря Python или объекта JavaScript.
Динамическая модификация: Свободное добавление, обновление или удаление пар ключ-значение в объектах JSON и элементов в массивах (Set, Add, Remove).
--- Расширенные возможности запросов и обработки ---.
Мощный механизм запросов: встроенная поддержка JSON Pointer (RFC 6901, для прямого доступа к пути) и JSONPath (для сложных и нечетких запросов), позволяющая эффективно извлекать один или несколько узлов данных из глубоко вложенных сложных структур, как в массовом порядке, так и с высокой точностью.
Утилитарные функции: Предлагает расширенные функции, такие как клонирование документов ( .Clone() ) и глубокое слияние ( JsonMerge ), которые значительно упрощают обычные сложные задачи, такие как слияние "конфигурации по умолчанию" с "конфигурацией пользователя".
--- Надежность и безопасность ---.
Автоматическое управление памятью: Применяется паттерн проектирования RAII (Resource Acquisition Is Initialization). JsonDocument отвечает за управление жизненным циклом всех своих узлов. Разработчикам не нужно вручную добавлять/удалять какие-либо элементы JSON, что в корне исключает риск утечки памяти.
2. Основные понятия и управление памятью
[!!!] 2.1 Пространство имен - ключ к интеграции вашего проекта [!!!] Самый важный совет: Все классы этой библиотеки (например, JsonDocument , JsonNode ) и глобальные функции (например, JsonParse ) инкапсулированы в пространстве имен MQL5_Json .
**Как правильно его использовать:** - **В заголовочных файлах (.mqh)**: MQL5 не позволяет использовать ``пространство имен`` в глобальной области видимости заголовочных файлов. **Поэтому вы должны использовать полностью квалифицированные имена**. Это единственный надежный способ в многофайловых проектах. Неправильно: `JsonDocument doc;` Правильно: `MQL5_Json::JsonDocument doc;` - **Внутренние функции в основных файлах программы (.mq5)**: Для удобства внутри функций можно использовать `использование пространства имен MQL5_Json;`, но для обеспечения общности примеров во всем коде в этом руководстве будет использоваться подход с использованием полного квалифицированного имени. **Если вы столкнулись с ошибкой компиляции`'JsonNode'' - объявление без типа`,** **то почти всегда это связано с тем, что вы забыли добавить префикс `MQL5_Json::`` к типам и функциям** **.
[!!!] 2.2 Модель управления памятью JsonDocument владеет данными; JsonNode - это просто представление.
[!!] 2.3 Передача объектов в MQL5 MQL5 требует, чтобы все объекты класса (включая JsonNode), передаваемые в качестве аргументов функции , передавались по ссылке (с использованием &). Неправильно: void myFunction(MQL5_Json::JsonNode node) Правильно: void myFunction(MQL5_Json::JsonNode &node
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/62735
Market Watch Panel Utility
Инструмент мониторинга в реальном времени для MetaTrader 5, который отображает ключевые финансовые данные, позволяет быстро переключать символы и настраивать списки символов. Сохраняйте и перезагружайте символы, сбрасывайте списки, настраивайте цвета текста и панели для индивидуального подхода к торговле.
Tarantella
Tarantella EA: Продвинутая сеточная торговая система с возможностью хеджирования и интеграцией Market Profile. Использует фильтрацию трендов ADX, интервалы сетки на основе Фибоначчи и многоуровневые условия входа (RSI/ATR/объем) для совершения сделок только в областях значений Market Profile. Интеллектуальное управление рисками, включая трейлинг-стопы, триггеры безубыточности и частичное закрытие хеджа.
Multi_Divergence_EA
Советник определяет торговые установки, дожидаясь, пока определенное пользователем количество индикаторов (например, 2 из 3) одновременно покажут дивергенцию. Такой многоуровневый подход к подтверждению отфильтровывает рыночный шум. Ключевые особенности: Тройной механизм подтверждения: Анализирует дивергенцию RSI, MACD и Stochastic. Дополнительные фильтры: Дополнительные фильтры Trend Filter (MA) и Volume Filter для повышения качества сигналов. Полная настройка: Контролируйте все настройки индикаторов, чувствительность к дивергенции и логику торговли. Профессиональный риск-менеджмент: Используйте фиксированные лоты или процентное управление капиталом с помощью SL/TP.
Spread lister - current, min, max
EA Spread lister показывает текущие, минимальные и максимальные значения для всех символов / инструментов.