zdd: В торговом терминале MetaTrader 4 build 495 и 496 перестали работать импортируемые функции (DLL библиотеки). В MetaTrader 4 build 482 и более ранних версиях работали. Пытался создать заявку в "Сервисдеск" - при нажатии "Сохранить" постоянно пишет "Произошла ошибка" даже без прикрепленных файлов (использовал MSIE 8.0.7601.17514 64 bit, Google Chrome 26.0.1410.64 m, Opera 12.14 Build 1738). Отправлю разработчикам пример советника, DLL библиотеку с исходным кодом и log-файлы (сообщите каким способом).
Вечером попробую со стандартными DLL библиотеками ОС Windows, а также попробую создать минимальную пользовательскую DLL библиотеку и выложу здесь в качестве примера.
zdd: В торговом терминале MetaTrader 4 build 495 и 496 перестали работать импортируемые функции (DLL библиотеки). В MetaTrader 4 build 482 и более ранних версиях работали. Пытался создать заявку в "Сервисдеск" - при нажатии "Сохранить" постоянно пишет "Произошла ошибка" даже без прикрепленных файлов (использовал MSIE 8.0.7601.17514 64 bit, Google Chrome 26.0.1410.64 m, Opera 12.14 Build 1738). Отправлю разработчикам пример советника, DLL библиотеку с исходным кодом и log-файлы (сообщите каким способом).
Напишите мне в личку и приложите в виде zip файла необходимые файлы, пожалуйста.
Вызов функций из DLL библиотек операционной системы Windows работает, а пользовательские библиотеки перестали работать в build 495 и build 496.
Напишем простейшую пользовательскую библиотеку на языке ассемблера:
.586P
.MODEL FLAT
_TEXT SEGMENT
;---------------------------------------
_START: RET 12 ; Эта процедура входа вызывается при загрузке и выгрузке динамической библиотеки, в ней мы ничего делать не будем. Так как через стек передается три параметра, при выходе указатель стека перемещаем на 12 байт.
;
Proba1 PROC EXPORT
MOV EAX,OFFSET ResultData ; Это функция, которую будем вызывать из советника. В регистр EAX помещаем адрес строки, которую функция будет возвращать. Так как был передан один параметр, указатель стека перемещаем на 4 байта.
RET 4
Proba1 ENDP
;----------------------------------------
_TEXT ENDS
_DATA SEGMENT
ResultData DB 'Answer from DLL.',0
_DATA ENDS
END _START
При помощи ассемблера ml.exe и компоновщика link.exe, входящих в пакет MASM32, компилируем:
ml.exe /c /coff /Cp proba.asm
Assembling: proba.asm
link.exe /subsystem:windows /DLL proba.obj
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
Creating library proba.lib and object proba.exp
proba.dll : warning LNK4086: entrypoint '_START' is not __stdcall with 12 bytes of arguments; image may not run
При компоновке мы получили предупреждение, на работоспособность DLL библиотеки оно, вроде, не влияет (но если кто-то подскажет как бороться с этим предупреждением, буду благодарен).
А у нас так и было 7 лет подряд - трейдер мог сам решать. В результате это привело к полному беспределу в версиях.
Renat, сдаётся мне вы упорно не понимаете суть вопроса!
А суть не в том, что не обновляться, а в том чтобы
после обновления терминал самопроизвольно НЕ ПЕРЕЗАПУСКАЛСЯ!
Это является критически важным моментом, т.к. у меня могут быть запущены советники и прочие моменты, прерывания которых я не хочу допустить.
И ещё вопрос сейчас проверка на наличие обновлений и их закачка происходит при запуске терминала (как раньше было) или при работающей без перезагрузок месяц терминал всёравно будет проверять переодически наличие новых версий, скачивать их и перезагружаться?
Если так, то скоро поднимиться ужасный вой, т.к. в сети есть даже коммерческие советники (тот же гроубот) которые после перезагрузки теряют позиции, не говоря уже о самоделках неопытных кодеров.
ПОЭТОМУ ПЕРЕЗАГРУЗКА ТЕРМИНАЛА ПОСЛЕ ОБНОВЛЕНИЯ ДОЛЖНА БЫТЬ ТОЛЬКО С РАЗРЕШЕНИЯ ПОЛЬЗОВАТЕЛЯ!!!
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
В торговом терминале MetaTrader 4 build 495 и 496 перестали работать импортируемые функции (DLL библиотеки). В MetaTrader 4 build 482 и более ранних версиях работали. Пытался создать заявку в "Сервисдеск" - при нажатии "Сохранить" постоянно пишет "Произошла ошибка" даже без прикрепленных файлов (использовал MSIE 8.0.7601.17514 64 bit, Google Chrome 26.0.1410.64 m, Opera 12.14 Build 1738). Отправлю разработчикам пример советника, DLL библиотеку с исходным кодом и log-файлы (сообщите каким способом).
У меня работают. Может включить разрешение надо?
Все включено. Запускаю build 482 - работает, даю обновиться до build 496 - перестает работать: "17:49:02 proba EURUSD,M1: cannot load library 'getquotes.dll' (error 126)".
Вечером попробую со стандартными DLL библиотеками ОС Windows, а также попробую создать минимальную пользовательскую DLL библиотеку и выложу здесь в качестве примера.
В торговом терминале MetaTrader 4 build 495 и 496 перестали работать импортируемые функции (DLL библиотеки). В MetaTrader 4 build 482 и более ранних версиях работали. Пытался создать заявку в "Сервисдеск" - при нажатии "Сохранить" постоянно пишет "Произошла ошибка" даже без прикрепленных файлов (использовал MSIE 8.0.7601.17514 64 bit, Google Chrome 26.0.1410.64 m, Opera 12.14 Build 1738). Отправлю разработчикам пример советника, DLL библиотеку с исходным кодом и log-файлы (сообщите каким способом).
Все включено. Запускаю build 482 - работает, даю обновиться до build 496 - перестает работать: "17:49:02 proba EURUSD,M1: cannot load library 'getquotes.dll' (error 126)".
126 ошибка означает, что не может найтись связанная с этой DLL другая библиотека.
От каких других (кастомных, не системных) DLL библиотек зависит qetquotes.dll ?
обновил терминал, включил реал счёт.
открыто 2 позиции евробакс и золото
перетаскиваю ТП и СЛ мышью на евробаксе нормально, удаляю правой кнопкой мыши нормально
перетаскиваю ТП и СЛ мышью на золоте нормально, пытаюсь удалить мышью уровни ТП и СЛ, терминал падает при нажатии правой кнопки мыши
ЗЫ: через окно отправки ордера удаляет нормально
Вызов функций из DLL библиотек операционной системы Windows работает, а пользовательские библиотеки перестали работать в build 495 и build 496.
Напишем простейшую пользовательскую библиотеку на языке ассемблера:
При помощи ассемблера ml.exe и компоновщика link.exe, входящих в пакет MASM32, компилируем:
При компоновке мы получили предупреждение, на работоспособность DLL библиотеки оно, вроде, не влияет (но если кто-то подскажет как бороться с этим предупреждением, буду благодарен).
Пишем простейший советник:
Запускаем его в MetaTrader 4 build 482. В журнале Expert:
Даем обновиться MetaTrader 4 до build 496 и запускаем советник. В журнале Expert:
Прилагаю файлы.
обновил терминал, включил реал счёт.
открыто 2 позиции евробакс и золото
перетаскиваю ТП и СЛ мышью на евробаксе нормально, удаляю правой кнопкой мыши нормально
перетаскиваю ТП и СЛ мышью на золоте нормально, пытаюсь удалить мышью уровни ТП и СЛ, терминал падает при нажатии правой кнопки мыши
ЗЫ: через окно отправки ордера удаляет нормально
И ещё: какой язык интерфейса у клиентского терминала?
А у нас так и было 7 лет подряд - трейдер мог сам решать. В результате это привело к полному беспределу в версиях.
Renat, сдаётся мне вы упорно не понимаете суть вопроса!
А суть не в том, что не обновляться, а в том чтобы
после обновления терминал самопроизвольно НЕ ПЕРЕЗАПУСКАЛСЯ!
Это является критически важным моментом, т.к. у меня могут быть запущены советники и прочие моменты, прерывания которых я не хочу допустить.
И ещё вопрос сейчас проверка на наличие обновлений и их закачка происходит при запуске терминала (как раньше было) или при работающей без перезагрузок месяц терминал всёравно будет проверять переодически наличие новых версий, скачивать их и перезагружаться?
Если так, то скоро поднимиться ужасный вой, т.к. в сети есть даже коммерческие советники (тот же гроубот) которые после перезагрузки теряют позиции, не говоря уже о самоделках неопытных кодеров.
ПОЭТОМУ ПЕРЕЗАГРУЗКА ТЕРМИНАЛА ПОСЛЕ ОБНОВЛЕНИЯ ДОЛЖНА БЫТЬ ТОЛЬКО С РАЗРЕШЕНИЯ ПОЛЬЗОВАТЕЛЯ!!!
Сервер, инструмент и направление позиции уточните пожалуйста.
И ещё: какой язык интерфейса у клиентского терминала?
сервер: EGlobal-Cent2 EGlobal-Cent3
инструмент: GOLD
позиция: sell
язык: Russian
ЗЫ: проверил ситуацию ещё раз, как и прежде терминал падает.