Обсуждение статьи "Трейдинг с экономическим календарем MQL5 (часть 12): Хранение данных в SQLite и предотвращение повторных сделок"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Трейдинг с экономическим календарем MQL5 (часть 12): Хранение данных в SQLite и предотвращение повторных сделок:
В новой архитектуре обе части этой разделённой системы заменены единым файлом базы данных SQLite, расположенным в общей папке терминала. SQLite — это автономный движок базы данных, встроенный в среду выполнения MetaTrader 5 через Database API, который даёт нам привычные инструменты: создание таблиц, подготовку операторов, привязку параметров, выполнение транзакций и выборку строк — и всё это прямо из MQL5. Размещение в общей папке означает, что агент графика в реальном времени и каждый агент тестера стратегий указывают на один и тот же физический файл. Всё, что режим реального времени узнаёт о календаре, тестер может прочитать. Всё, что предоставляют тестеру для обработки, видит и график в реальном времени. Внутри этого файла находятся две таблицы: одна содержит сами события со всеми полями, необходимыми для отображения с учётом единиц измерения и принятия торговых решений, а другая — идентификаторы новостных событий, которые уже вызвали открытие сделок, чтобы набор для предотвращения повторных сделок сохранялся после перезапусков.
Поток данных становится асимметричным и упорядоченным. В режиме реального времени при каждом обновлении API календаря теперь выполняется upsert (вставка или обновление) каждого события в базу данных в рамках одной транзакции, поэтому состояние данных на диске остаётся синхронизированным с тем, что программа видит в памяти. Новый входной параметр позволяет пользователю запросить однократную загрузку данных за любой исторический диапазон дат для начального наполнения базы данных; при этом поверх отображается индикатор выполнения, показывающий процент и количество записей по мере накопления строк. В режиме тестера программа вообще не выполняет вызовов API — она запрашивает таблицу событий за настроенное окно бэктеста и передаёт результат напрямую в тот же конвейер фильтрации и отрисовки, который используется в режиме реального времени. Список идентификаторов сработавших сделок загружается один раз при запуске из истории базы данных за последние двадцать четыре часа, восстанавливая контекст предотвращения повторных сделок, оставленный предыдущим сеансом. Ниже представлена визуализация того, чего мы намерены достичь.
Автор: Allan Munene Mutiiria