Добрый день!
Поиск по форуму и Google мне не помогли, по этому решил создать обсуждение.
Проблема: Программно (средствами языка MQL4 в частности) загрузить всю историю сделок в терминал для дальнейшей работы с ним.
У меня вообще задача стоит такая: загрузить историю сделок в базу данных. По-скольку счетов много, возникает вероятность,что где-то история отображается не вся или нет ее частично ... Хотелось бы иметь возможность перед загрузкой всей истории в базу программно подгрузить ее полностью в терминал, а потом перевести в, к примеру, "Сегодня". В этом случае код будет не привязан к рукам юзера, который может забыть загрузить ее полностью перед тем как использовать скрипт.
Подскажите, если это вообще возможно...
Программно?
Размер списка истории зависит от текущих настроек вкладки "История счета" терминала.
Программно?
Размер списка истории зависит от текущих настроек вкладки "История счета" терминала.
Эт понятно... я хочу программно загружать историю в терминал, чтобы потом ее выгрузить в БД.
Прямого способа программно из языков MQL изменить установку периода истории в закладке "История счета" я не знаю, только вручную. Однако в Вашем случае сбора историй со многих счетов, когда время не критично, это возможно.
Посмотрите в файл \config\terminal.ini. В нем перезаписывается строка с HistoryPeriod= всякий раз, когда Вы изменяете установку в закладке "История счета": вся история HistoryPeriod=7, за 3 месяца HistoryPeriod=5 и т.д. При работающем терминале файл не открыт им монопольно, файл можно редактировать и после этого сохранять на диске. Очевидно, его инструкции считываются при запуске терминала, однако это необходимо проверить.
Дальше. Напишите bat файл или более удобными для Вас средствами создайте программу, которая еще до запуска терминалов пропишет во все нужные terminal.ini строку HistoryPeriod= с требуемым вариантом. Путем замены строки или ее вставки перед строкой с "LastScanTime=". Эта же программа должна (либо один раз? сделать вручную, а не программно) рассовать по всем каталогам с нужными terminal.exe файлы с конфигурацией при старте (справка "Сервис\Конфигурация при старте"), указав в каждом из них логин и пароль к нужному счету, а также график, который должен автоматически появиться, и нужные скрипт и/или советник на нем. Например, такими строками в файле MyStart:
Login=1181083
Password=za2p55Join
.......
Symbol=EURUSD
Period=M1
Template=My_EUR.tpl Здесь сразу задан еще и шаблон графика, его нужно поместить в \templates\. Это для единства внешнего вида, необязательно. В шаблоне графика скрипты и советники не упоминать
Script=My_Script Требуемые программки MQL должны быть уже откомпилированы, а их ex4 версии находиться в нужных местах
Expert=My_Ord
Теперь запускаем все терминалы с помощью bat файла, с ожиданием закрытия каждого терминала или без него, как требуется. Возникающие окна графиков из файла MyStart конфигурации при старте сразу будут иметь подключенный скрипт (эксперт), который и соберет сведения из истории счета, а в конце своей работы может и закрыть терминал командой TerminalClose(0).
Подразумевается режим работы терминалов /portable. То есть запуск из командной строки и bat файлов в виде "C:\каталоги\terminal.exe /portable MyStart"
- 2018.01.09
- Andrey Gordienko
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Поиск по форуму и Google мне не помогли, по этому решил создать обсуждение.
Проблема: Программно (средствами языка MQL4 в частности) загрузить всю историю сделок в терминал для дальнейшей работы с ним.
У меня вообще задача стоит такая: загрузить историю сделок в базу данных. По-скольку счетов много, возникает вероятность,что где-то история отображается не вся или нет ее частично ... Хотелось бы иметь возможность перед загрузкой всей истории в базу программно подгрузить ее полностью в терминал, а потом перевести в, к примеру, "Сегодня". В этом случае код будет не привязан к рукам юзера, который может забыть загрузить ее полностью перед тем как использовать скрипт.
Подскажите, если это вообще возможно...