Привет, коллеги!
Нужно научить советник работать с простой базой данных для централизованного хранения котировок, спреда и настроек/параметров. Это нужно, чтобы иметь единое центральное место, к которому будут обращаться все советники (30 пар открыто в одном терминале, на каждой установлен данный советник).
Понимаю, что в MQL 5 есть уже нативная возможность работы с базами. Знаю, есть третье-сторонние DLL для работы с базами для MQL4.
В первом случае - не могу я перейти на MQL5 - проект уже довольно большой на MQL4.
Во втором - документации мало - не понятно как работать с этой DLL - как данные записывать, считывать, проверять наличие таблиц?..
Нет ли более элегантного решения?
Может эту "нативную" работу с базами всё же можно вести из MQL4? Или может есть более качественно-задокументированные DLL для работы с SQLite?
Или может мне не нужна база, а можно обойтись работой с файлами?..
Как считаете?
Заранее спасибо за советы!
Я бы делал удалённую базу на веб-сервере, а оттуда забирал-бы через webrequest
Там образом имел-бы возможность получать настройки с любого места
- www.mql5.com
Привет, коллеги!
Нужно научить советник работать с простой базой данных для централизованного хранения котировок, спреда и настроек/параметров. Это нужно, чтобы иметь единое центральное место, к которому будут обращаться все советники (30 пар открыто в одном терминале, на каждой установлен данный советник).
Понимаю, что в MQL 5 есть уже нативная возможность работы с базами. Знаю, есть третье-сторонние DLL для работы с базами для MQL4.
В первом случае - не могу я перейти на MQL5 - проект уже довольно большой на MQL4.
Во втором - документации мало - не понятно как работать с этой DLL - как данные записывать, считывать, проверять наличие таблиц?..
Нет ли более элегантного решения?
Может эту "нативную" работу с базами всё же можно вести из MQL4? Или может есть более качественно-задокументированные DLL для работы с SQLite?
Или может мне не нужна база, а можно обойтись работой с файлами?..
Как считаете?
Заранее спасибо за советы!
Привет, коллеги!
Нужно научить советник работать с простой базой данных для централизованного хранения котировок, спреда и настроек/параметров. Это нужно, чтобы иметь единое центральное место, к которому будут обращаться все советники (30 пар открыто в одном терминале, на каждой установлен данный советник).
Понимаю, что в MQL 5 есть уже нативная возможность работы с базами. Знаю, есть третье-сторонние DLL для работы с базами для MQL4.
В первом случае - не могу я перейти на MQL5 - проект уже довольно большой на MQL4.
Во втором - документации мало - не понятно как работать с этой DLL - как данные записывать, считывать, проверять наличие таблиц?..
Нет ли более элегантного решения?
Может эту "нативную" работу с базами всё же можно вести из MQL4? Или может есть более качественно-задокументированные DLL для работы с SQLite?
Или может мне не нужна база, а можно обойтись работой с файлами?..
Как считаете?
Заранее спасибо за советы!
Здесь посмотрите.
- www.mql5.com
По поводу производительности работы со встроенным SQLite движком из SQLite: нативная работа с базами данных на SQL в MQL5.
Результаты выполнения даны в миллисекундах — чем меньше, тем лучше.
Название | Описание | LLVM | MQL5 |
---|---|---|---|
Test 1 | 1000 INSERTs | 11572 | 8488 |
Test 2 | 25000 INSERTs in a transaction | 59 | 60 |
Test 3 | 25000 INSERTs into an indexed table | 102 | 105 |
Test 4 | 100 SELECTs without an index | 142 | 150 |
Test 5 | 100 SELECTs on a string comparison | 391 | 390 |
Test 6 | Creating an index | 43 | 33 |
Test 7 | 5000 SELECTs with an index | 385 | 307 |
Test 8 | 1000 UPDATEs without an index | 58 | 54 |
Test 9 | 25000 UPDATEs with an index | 161 | 165 |
Test 10 | 25000 text UPDATEs with an index | 124 | 120 |
Test 11 | INSERTs from a SELECT | 84 | 84 |
Test 12 | DELETE without an index | 25 | 74 |
Test 13 | DELETE with an index | 70 | 72 |
Test 14 | A big INSERT after a big DELETE | 62 | 66 |
Test 15 | A big DELETE followed by many small INSERTs | 33 | 33 |
Test 16 | DROP TABLE: finished | 42 | 40 |
Скорость MQL5 исполнения на уровне LLVM/Clang 9.0, иногда даже быстрее за счет лучшей оптимизации.
В статье расмотрены особенности скорострельной работы с SQL базами. Плюс в MetaEditor 5 есть встроенный SQL Browser.
БД [...] не годится для хранения котировок. Из-за последовательного поступления их с монотонным увеличением ключевого поля (время) дерево получается несбалансированным, и происходит постоянная перепись индекса, и это сильно замедляет работу. Так описывается в учебниках, сам не замерял.
Сколько лет уже в голове эта информация. Наконец решил замерить. Запись с ключевым полем в инкрементном порядке не отличается по скорости от записи в случайном порядке. Похоже, SQLite далеко ушёл за это время.
Так что вполне можно хранить котировки, поступающие с линейно растущим ключевым полем типа datetime.
Спасибо всем за советы!
Решил всё же использовать файл.
Спасибо всем за советы!
Решил всё же использовать файл.
индексировать(сортировать записи базы в базе данных) файлы как будете?
допустим нужно выбрать только часть записей. Вы будете лопатить весь файл?
Ведь SQL часть работы делает сам и выдает только ответы на запрос
индексировать(сортировать записи базы в базе данных) файлы как будете?
допустим нужно выбрать только часть записей. Вы будете лопатить весь файл?
Ведь SQL часть работы делает сам и выдает только ответы на запрос
Добрый день, @Renat Akhtyamov,
В данном конкретном случае мне нужно сохранять совсем не много данных. Один небольшой файл с каждого открытого в терминале графика. Я просто сохраняю последних 100 значений спреда, не больше. Чтобы потом брать средний пред и сравнивать с ним текущий и таким образом определять - на сколько сейчас спред завышен/занижен/нормальный.
Но при решении бОльших задач - согласен - база данных удобнее. Но опять же - у меня проект на MLQ4, а он, как я понял, не имеет возможности работы с локальными базами данных, у которых нет сервера БД (как это умеет MQL5). Поэтому мой выбор тут пал на файлы, что для данного случая вполне приемлемо.
Но при решении бОльших задач - согласен - база данных удобнее. Но опять же - у меня проект на MLQ4, а он, как я понял, не имеет возможности работы с локальными базами данных, у которых нет сервера БД (как это умеет MQL5).
да, в MQL5 уже встроено - ... для sqlite3 сервер не нужен (это файловая БД)...
но можно, вероятно, поискать и для MQL4 - не тестировала
- github.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет, коллеги!
Нужно научить советник работать с простой базой данных для централизованного хранения котировок, спреда и настроек/параметров. Это нужно, чтобы иметь единое центральное место, к которому будут обращаться все советники (30 пар открыто в одном терминале, на каждой установлен данный советник).
Понимаю, что в MQL 5 есть уже нативная возможность работы с базами. Знаю, есть третье-сторонние DLL для работы с базами для MQL4.
В первом случае - не могу я перейти на MQL5 - проект уже довольно большой на MQL4.
Во втором - документации мало - не понятно как работать с этой DLL - как данные записывать, считывать, проверять наличие таблиц?..
Нет ли более элегантного решения?
Может эту "нативную" работу с базами всё же можно вести из MQL4? Или может есть более качественно-задокументированные DLL для работы с SQLite?
Или может мне не нужна база, а можно обойтись работой с файлами?..
Как считаете?
Заранее спасибо за советы!