Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2301
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Важные моменты который, как мне кажется, я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
1.Программа существует в 2 видах, и в 2 соответствующих этим видам файлах .
- Программа в которой данные и алгоритм написаны символами английского алфавита и знаками пунктуации и арифметическими знаками, числами. Это прjграмма с расширением mq( mql4, mqh)
- Программа в которой данные и алгоритм написаны комбинацией 0 и 1 . Это программа с расширением exe. Именно с этой программой работает процессор
2.Программа mq превращается в программу exe при компиляции.
3.Программа ехе при исполнении , не теряет связь с программой mq4 из которой она была скомпилирована. Как я понял , если в процессе работы Советника в коде Советника mq4 происходят какие то изменения(обновилась цена), то происходит повторная компиляция кода mq4 после чего в файл ехе этого Советника попадает уже немного другая комбинация 0 и 1. И этот процесс идет постоянно .... постоянно с каждым тиком меняются данные в Советнике mq4 и вслед за этим постоянно меняются комбинации 1 и 0 в этом же Советнике но в файле ехе.
4.Код который написан в файле mqh компилируется вместе Советником в котором есть ссылка на этот файл mqh. Но после компиляции файла mqh. обратной связи у него с скомпилированным файлом Советника нет, как у Советника mq4 с Советником ехе. Нет наверное потому что все изменения кода в процессе исполнения Советника ехе происходят в коде который лежит в файле mql4 , но никаких изменений в процессе исполнения кода mql4 не происходит в файле mqh,а соответственно и кода который в нем как бы лежит .
4.В файле mqh код не лежит точно так же как он лежит в файле mql4. Хотя внешне разница не заметна. В файле mql4 как мне кажется, лежит другой код, который позволяет выполнять этому файлу свою функцию, а именно подключать якобы лежащий в нем код к Советнику и компилировать этот код. А якобы лежащий в mqh код на самом деле лежит в оперативной памяти. Но не в файле Советника mql4 в котором есть ссылка на этот файл mqh, а где то в другом месте.
Возможно я что то не правильно понял, или недопонял. Буду признателен всем кто поправит меня.
Абсолютное непонимание вообще что такое программирование и компилирование. Дальше даже читать не смог.
Важные моменты который, как мне кажется, я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
1.Программа существует в 2 видах, и в 2 соответствующих этим видам файлах .
- Программа в которой данные и алгоритм написаны символами английского алфавита и знаками пунктуации и арифметическими знаками, числами. Это прjграмма с расширением mq( mql4, mqh)
- Программа в которой данные и алгоритм написаны комбинацией 0 и 1 . Это программа с расширением exe. Именно с этой программой работает процессор
2.Программа mq превращается в программу exe при компиляции.
3.Программа ехе при исполнении , не теряет связь с программой mq4 из которой она была скомпилирована. Как я понял , если в процессе работы Советника в коде Советника mq4 происходят какие то изменения(обновилась цена), то происходит повторная компиляция кода mq4 после чего в файл ехе этого Советника попадает уже немного другая комбинация 0 и 1. И этот процесс идет постоянно .... постоянно с каждым тиком меняются данные в Советнике mq4 и вслед за этим постоянно меняются комбинации 1 и 0 в этом же Советнике но в файле ехе.
4.Код который написан в файле mqh компилируется вместе Советником в котором есть ссылка на этот файл mqh. Но после компиляции файла mqh. обратной связи у него с скомпилированным файлом Советника нет, как у Советника mq4 с Советником ехе. Нет наверное потому что все изменения кода в процессе исполнения Советника ехе происходят в коде который лежит в файле mql4 , но никаких изменений в процессе исполнения кода mql4 не происходит в файле mqh,а соответственно и кода который в нем как бы лежит .
4.В файле mqh код не лежит точно так же как он лежит в файле mql4. Хотя внешне разница не заметна. В файле mql4 как мне кажется, лежит другой код, который позволяет выполнять этому файлу свою функцию, а именно подключать якобы лежащий в нем код к Советнику и компилировать этот код. А якобы лежащий в mqh код на самом деле лежит в оперативной памяти. Но не в файле Советника mql4 в котором есть ссылка на этот файл mqh, а где то в другом месте.
Возможно я что то не правильно понял, или недопонял. Буду признателен всем кто поправит меня.
После компиляции никаких связей уже нет. Файлы mql4, mqh и т.д. рабочее пространство, файл ex4 готовая программа работающая самостоятельно!!! После компиляции файлы mql4 и mqh можно удалить - программа все равно будет работать.
Важные моменты который, как мне кажется, я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
1.Программа существует в 2 видах, и в 2 соответствующих этим видам файлах .
- Программа в которой данные и алгоритм написаны символами английского алфавита и знаками пунктуации и арифметическими знаками, числами. Это прjграмма с расширением mq( mql4, mqh)
- Программа в которой данные и алгоритм написаны комбинацией 0 и 1 . Это программа с расширением exe. Именно с этой программой работает процессор
2.Программа mq превращается в программу exe при компиляции.
3.Программа ехе при исполнении , не теряет связь с программой mq4 из которой она была скомпилирована. Как я понял , если в процессе работы Советника в коде Советника mq4 происходят какие то изменения(обновилась цена), то происходит повторная компиляция кода mq4 после чего в файл ехе этого Советника попадает уже немного другая комбинация 0 и 1. И этот процесс идет постоянно .... постоянно с каждым тиком меняются данные в Советнике mq4 и вслед за этим постоянно меняются комбинации 1 и 0 в этом же Советнике но в файле ехе.
4.Код который написан в файле mqh компилируется вместе Советником в котором есть ссылка на этот файл mqh. Но после компиляции файла mqh. обратной связи у него с скомпилированным файлом Советника нет, как у Советника mq4 с Советником ехе. Нет наверное потому что все изменения кода в процессе исполнения Советника ехе происходят в коде который лежит в файле mql4 , но никаких изменений в процессе исполнения кода mql4 не происходит в файле mqh,а соответственно и кода который в нем как бы лежит .
4.В файле mqh код не лежит точно так же как он лежит в файле mql4. Хотя внешне разница не заметна. В файле mql4 как мне кажется, лежит другой код, который позволяет выполнять этому файлу свою функцию, а именно подключать якобы лежащий в нем код к Советнику и компилировать этот код. А якобы лежащий в mqh код на самом деле лежит в оперативной памяти. Но не в файле Советника mql4 в котором есть ссылка на этот файл mqh, а где то в другом месте.
Возможно я что то не правильно понял, или недопонял. Буду признателен всем кто поправит меня.
1, 2 - верно
3, 4 - нет
Компиляция - один раз.
По крайней мере, пока мы не берём jit-компиляцию.
После компиляции никаких связей уже нет. Файлы mql4, mqh и т.д. рабочее пространство, файл ex4 готовая программа работающая самостоятельно!!! После компиляции файлы mql4 и mqh можно удалить - программа все равно будет работать.
Спасибо за пояснение. А изменения данных которые происходят на каждом тике попадают сразу в файл ex4?
Например в коде мql4 написано if (вid ==1.3456) {открыть ордер}. И вid стало равно 1.3456 далеко после компиляции кода мql4 Получается что новое значение вid попадет сразу в исполняемый файл ex4? То есть в файл ex4 попадают в виде 1 и 0 не только данные и последовательность операций с ними , но все движение кода, то есть, осуществление самих операций тоже происходит в файле ex4.
Дальше даже читать не смог.
Соболезную.... Просто по жизни я был ооооочень далек от программирования. А занялся программированием на mql 4 что бы совместить приятное с полезным и более менее полезно и приятно убивать свободное время которого у меня очень много. Процесс программирования мне очень нравиться. Это очень похоже на поиск сокровищ. И мне кажется что это сокровище я почти нашел . График моего баланса в тестере с 2010 по сегодня постоянно устремлен на север с очень незначительными просадками. При том что код написан на минутных свечах . А по всеобщему убеждению на минутках сплошной хаос и нет никаких закономерностей. Если хотите могу скинуть график моего баланса и информацию из вкладки ОТЧЕТ
Очевидно что мои познания кода ограничиваются учебником Ковалева, Справочником( который я конечно изучил и понял пока частично) и информацией из ответов на мои вопросы моих собеседников здесь. Так что не обессудьте.....
Спасибо за пояснение. А изменения данных которые происходят на каждом тике попадают сразу в файл ex4?
Например в коде мql4 написано if (вid ==1.3456) {открыть ордер}. И вid стало равно 1.3456 далеко после компиляции кода мql4 Получается что новое значение вid попадет сразу в исполняемый файл ex4? То есть в файл ex4 попадают в виде 1 и 0 не только данные и последовательность операций с ними , но все движение кода, то есть, осуществление самих операций тоже происходит в файле ex4.
Исполняемый файл, в данном случае - ex4, загружается в оперативную память однократно. Далее вся работа происходит в памяти, никак не затрагивая файл на диске.
загружается в оперативную память однократно.
Вот этого я никак не мог предположить самостоятельно. Да прочитать об этом я не знаю где.....
Но Вы так и не ответили мне куда попадает новое значение bid? Получается что оно попадает сразу в код Советника который после того как он покинул файл ex4, расположился в оперативной памяти и представлен в виде 1 и 0 ?
никак не затрагивая файл на диске.
А на диске остается и файл ex4 и файл mql4 одного и того же Советника. Но оба эти файла пустые, без кода который был в них раньше?
А на диске остается и файл ex4 и файл mql4 одного и того же Советника. Но оба эти файла пустые, без кода который был в них раньше?
Сделайте такой эксперимент. Напишите советник чтобы он просто выводил текущую цену в комментарий графика. Запустите его, убедитесь, что в комментарии графика отображается цена, затем удалите файлы и mq4, и ex4 и посмотрите как будет работать советник которого уже нет на диске. Правда после перезапуска терминала советник работать не будет, но ведь это эксперимент…
Сделайте такой эксперимент. Напишите советник чтобы он просто выводил текущую цену в комментарий графика. Запустите его, убедитесь, что в комментарии графика отображается цена, затем удалите файлы и mq4, и ex4 и посмотрите как будет работать советник которого уже нет на диске. Правда после перезапуска терминала советник работать не будет, но ведь это эксперимент…
Спасибо. Я этот эксперимент сделал мысленно и понял что даже после удаления файлов mq4, и ex4 из жесткого диска Советник все равно будет печатать в Print() цену, до перезапуска этого Советника.
Но я подумал еще раз и мне почему то показалось что файл mq4 не становится пустым после компиляции. Иначе его было бы невозможно повторно компилировать. Он не пустой а с тем же кодом , но уже не нужный для исполнения кода Советника в оперативной памяти.Но я это понял еще до того как Вы мне предложили провести эксперимент. Я задал исключительно уточняющий вопрос. Ответ на него я догадываюсь , но спросил на всякий случай для уточнения и перепроверки себя . Ответ заключается в том оба эти файла пустые, без кода который был в них раньше. А раз они без кода то их можно удалить без ущерба для работы советника, если его не перезапускать.
То есть при создании Советника сначала создаются на жестком диске файлы mq4, и ex4 В файл mq4 код заносит программист. В файл ex4 потом код заносит программа при компиляции . Из этих файлов код в конечном итоге перелетает в оперативную память и если не перезапускать этот Советник то эти файлы на жестком диске больше не нужны.
Каждый тик изменяет какие данные кода Советника. Правильно я понимаю что тик с новыми данными попадает прямо и непосредственно с оперативную память в которой находится код советника выгруженный однократно из файла ex4?