Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В отличие от MT4, MT5 не выводит в журнал входные параметры советников при его запуске или их изменении. Поэтому по логу невозможно определить, что запускалось в Терминале.
Исправить эту ситуацию может подобная функция.
Применение
Результат
ЗЫ К сожалению, для скриптов не работает. MT4 сам выводит входные параметры скриптов, MT5 - нет.
Не получается запустить советника, в котором используются DLL, с помощью данной библиотеки. В логах DLL loading is not allowed. C этим можно, что-то сделать ?
Работает.
Что-то у меня опасение, что принцип использования константы в качестве имени временного шаблона в строке:
содержит потенциальную ошибку, связанную с многопоточностью. Если одна и та же программа, запущенная на разных чартах, попытается воспользоваться библиотекой, может возникнуть коллизия с файлом шаблона - или ошибка доступа или по тихому запустится две одинаковых копии шаблона, хотя применялись разные.
По-хорошему нужно генерировать временное имя, желательно вида (было __FILE__, "страйк" в здешнем html не работает)MQL-program-name + timestamp + random.
Также прежние файлы желательно удалять автоматом по таймауту при любом следующем вызове, например, в 1 сутки (за счет анализа части timestamp), чтобы не замусоривали папки.
PS. Дело еще хуже, потому что __FILE__ - это файл исходника и всегда равен Expert.mqh - во всех программах его использующих! Подкорректировал предложение по имени.Это было сделано осознанно, взвесив все за и против.
Удалять имеет смысл сразу после создания шаблона, не раз в сутки. Однако, удобно всегда иметь последний сохраненный шаблон, чтобы лучше анализировать происходящее.
Это было сделано осознанно, взвесив все за и против.
Удалять имеет смысл сразу после создания шаблона, не раз в сутки. Однако, удобно всегда иметь последний сохраненный шаблон, чтобы лучше анализировать происходящее.
Что-то не могу привести ни одного "за" для текущего способа. ИМХО, предложил более правильный.
Удалять сразу имеет смысл, если стоит Sync = true (что есть по умолчанию), но оно же сейчас так не реализовано - файл остается.
Что-то не могу привести ни одного "за" для текущего способа. ИМХО, предложил более правильный.
За - это практическое применение. Запускал Терминал с ранее запущенными советниками, которые при старте сразу лезли в свои шаблоны. Отлично отрабатывали. Уверен, что теоретическую коллизию возможно воспроизвести. Но это далеко от практики в моем случае. Если решитесь городить универсальное решение, поделитесь здесь. Обновлю библу. Сам не готов этим заниматься.
Удалять сразу имеет смысл, если стоит Sync = true (что есть по умолчанию), но оно же сейчас так не реализовано - файл остается.
Да, не удаляю специально.
За - это практическое применение. Запускал Терминал с ранее запущенными советниками, которые при старте сразу лезли в свои шаблоны. Отлично отрабатывали. Уверен, что теоретическую коллизию возможно воспроизвести. Но это далеко от практики в моем случае. Если решитесь городить универсальное решение, поделитесь здесь. Обновлю библу. Сам не готов этим заниматься.
Да, не удаляю специально.
Все равно не понял, чем константное название Expert.mqh.tpl более "практическое" (практичное?), чем шаблоны, названные по имени программы, которые их плодят? Допустим есть программа A.mq5 и B.mq5, использующие библу. Если бы они генерировали шаблоны со своими именами было бы более практично, во-первых, иметь последний "отпечаток" действий _каждой_ программы, а не перезаписывать одно другим. Во-вторых, по имени сразу можно было бы видеть, кто есть генератор (особенно удобно, если программы чужие). Сейчас по файлу Expert.mqh.tpl этого не скажешь, пока внутрь не залезешь. Универсальное решение я привел - брать имя MQL-программы+таймстамп+рандом. И в оставлении файла при sync=true не вижу надобности. Вроде, давно все проверено и отлажено. В случае ошибок и необходимости отладки есть опция sync=false. Тогда файл следует оставлять. По-моему всё логично. И правки простые.
Согласен, что на практике коллизия может возникать редко, если только кто-то не будет использовать библу параллельно в нескольких программах. У меня такого нет, но я просто в код мимоходом глянул, да и за Expert.mqh.tpl глаз в папке Files "зацепился". Всё - сугубое имхо.