Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сам скрипт из примера работает нормально. Только сам пример очень сложен и из него я никак не пойму что я делаю не так когда хочу записать строку в виртуальный файл, а затем считать из него.
Вот мой код:
В логах терминала наблюдаем следующее:
Вопрос в том почему не происходит считывания записанного значения? То есть я ожидаю эту строку в следующем виде:
Пользуйтесь вариантом без DLL
https://www.mql5.com/ru/code/818
Фантастика! Вариант без DLL отлично работает и в МТ4, который мне и нужен.
Теперь остаётся только выяснить вопрос о том как удаляется файл, созданный в памяти.
Или же в случае простого закрытия файла он в памяти удаляется автоматически без дополнительных действий, как это требуется при работе с обычными файлами?
Или же в случае простого закрытия файла он в памяти удаляется автоматически без дополнительных действий, как это требуется при работе с обычными файлами?
Удаляется в случае, если корректно завершилось все. А так сталкивался, что некорректное завершение не позволяет дальше без краша использовать ранее использованные Memory-файлы.
А есть ли какие-то железобетонные схемы работы с такими вот виртуальными файлами в случае, если что-то пошло не так и нужно чтобы советник сам разобрался и предпринял необходимые действия для возобновления работы с виртуальными файлами, имеющими те же самые наименования?
Теперь остаётся только выяснить вопрос о том как удаляется файл, созданный в памяти.
Или же в случае простого закрытия файла он в памяти удаляется автоматически без дополнительных действий, как это требуется при работе с обычными файлами?
обычные файлы ведь тоже не удаляются. А только первый символ имени заменяется на "?".
C файлами в памяти еще проще - память вообще не чистится, а просто закрывается хендл на неё.
Поэтому будете встречаться с ситуацией, когда при открытии файла в памяти с таким же именем у него будут в этой памяти какие то данные от прошлого раза.
И если вам так важно обнулять ячейки памяти - то делайте это принудительно перед закрытием хендла.
Не знаю. Мне было проще просто изменить имя файла лишь в одном месте кода.
Пока не могу представить как это у Вас сделано. Если идёт обмен данными между двумя терминалами и файл обмена переклинило так, что он не может быть открыт, то нужно будет менять имя наверное в обоих терминалах? А как согласовать на какое новое имя его нужно будет поменять? Просто какой-нибудь счётчик ошибок синхронный вставлять в новое имя, или же открывать новую резервную линию связи для обмена именем нового файла между терминалами создавать?
Все терминалы(и MT5 и MT4) залинкованы на одну MQL-папку - никаких противоречий не возникает.
Название файла сидит только в одном месте - в mqh-файле, который подключается ко всем соответствующим советникам.
Соответственно, поправив это место в mqh, получаю работоспособными все обменные советники.