Это ограничение визуального режима или я что-то не так делаю? Или из эксперта нельзя индикаторы с DLL запускать?
DLL лежит в MQL5\Libraries. В папку с индикатором тоже положил - не помогло.
Здравствуйте,
есть индикатор с DLL.
При запуске только индикатора на реальном графике - DLL работает и индикатор что-то показывает.
Сделал вызов этого индикатора из эксперта.
При запуске в тестере в визуальном режиме, в журнале пишет, что
Cannot load 'my.dll'
.....
Cannot call 'fnCalk', 'my.dll' is not loaded
Это ограничение визуального режима или я что-то не так делаю? Или из эксперта нельзя индикаторы с DLL запускать?
DLL лежит в MQL5\Libraries. В папку с индикатором тоже положил - не помогло.
DLL достаточно загрузить один раз. Попробуйте перед тестированием запустить индюк на графике - DLL загрузится и , возможно, подхватится из тестера.
Во всяком случае, DLL с экспертом в тестере работают точно (проверял только в МТ4). Возможно, какой-то глюк, когда идет вызов индюка с DLL.
Попробуйте к DLL полный путь прописать. Не поможет - уж тогда точно тестер.)
Путь не нужен, dll ищется в \MQL4\Libraries или \MQL5\Libraries. Ну или по стандартным виндозным путям для dll. Тут именно какой-то тестерный глюк.
Кстати, хозяйке на заметку, если из первой dll грузится вторая, то вторая почему-то должна лежать в корне папки терминала. Все сказанное тестировалось в режиме portable.
Кстати, хозяйке на заметку, если из первой dll грузится вторая, то вторая почему-то должна лежать в корне папки терминала. Все сказанное тестировалось в режиме portable.
DLL достаточно загрузить один раз. Попробуйте перед тестированием запустить индюк на графике - DLL загрузится и , возможно, подхватится из тестера.
Запустил - не подхватился.
В принципе не уверен, что эксперт запустит индикатор с DLL. Воскресение - тиков нет, посмотреть на реале не могу...
Т.к. при запуске он не показывает предупреждения, что индикатор собирается грузить DLL. Видимо потому, что индикатор в onInit вызывается, а терминал наверное не проверяет наперед, что используют индикаторы. А так как мы не даем согласия на использование этой dll - то она и не запускается.
Решил проблему.
В эксперте надо тоже вызвать DLL которая в индикаторе и сделать обращение к одной из его функций (у меня одна, может надо ко всем, если их много, чтобы разрешить их использование)
#import "my.dll"
void fnCalk(....);
#import
потом в onInit вызов который никогда не сработает, но терминал определит, что функция нужна
pseudocall=false;
if(pseudocall){fnCalk(....);}
Скорее из цикла: "Напишу кривую dll. Опыт программирования 20 лет"
Особенно, если вызов ДЛЛ через ДЛЛ.
У меня такой вызов работает без нареканий, при том, что обе .dll расположены вне песочницы
Засады бывают и на ровном месте. Такие, например (из VB):
if a=1 then... Еле нашел.)) Везде работает, а здесь нет, присваивает а=1 и условие всегда выполняется.
Пришлось именно в этом месте написать if 1=a then...
В языках высокого уровня это могло бы означать например - ленивые вычисления
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте,
есть индикатор с DLL.
При запуске только индикатора на реальном графике - DLL работает и индикатор что-то показывает.
Сделал вызов этого индикатора из эксперта.
При запуске в тестере в визуальном режиме, в журнале пишет, что
Cannot load 'my.dll'
.....
Cannot call 'fnCalk', 'my.dll' is not loaded
Это ограничение визуального режима или я что-то не так делаю? Или из эксперта нельзя индикаторы с DLL запускать?
DLL лежит в MQL5\Libraries. В папку с индикатором тоже положил - не помогло.