Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2301

 
ANDREY #:

Важные моменты который, как мне кажется,  я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
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, а где то в другом месте.

Возможно я что то не правильно понял, или недопонял. Буду признателен всем кто поправит меня.

Абсолютное непонимание вообще что такое программирование и компилирование. Дальше даже читать не смог.

 
ANDREY #:

Важные моменты который, как мне кажется,  я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
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 можно удалить - программа все равно будет работать.

 
ANDREY #:

Важные моменты который, как мне кажется,  я понял благодаря нашей беседе и которые возможно помогут понять мне какие то другие детали заключается вот в чем...
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-компиляцию.

 
Tretyakov Rostyslav #:

После компиляции никаких связей уже нет. Файлы mql4, mqh и т.д. рабочее пространство, файл ex4 готовая программа работающая самостоятельно!!! После компиляции файлы mql4 и mqh можно удалить - программа все равно будет работать.

Спасибо за пояснение. А изменения данных которые происходят на каждом тике попадают сразу в файл ex4? 

Например в коде мql4  написано if (вid ==1.3456) {открыть ордер}. И вid  стало равно 1.3456 далеко после  компиляции кода  мql4  Получается что новое значение  вid  попадет сразу в исполняемый файл  ex4? То есть в файл  ex4 попадают в виде 1 и 0 не только данные и последовательность операций с ними  , но все движение кода, то есть, осуществление самих операций тоже происходит в файле  ex4.

 
Alexey Viktorov #:
Дальше даже читать не смог.

Соболезную....  Просто по жизни я был ооооочень далек от программирования. А занялся программированием на mql 4  что бы совместить приятное с полезным и более менее полезно и приятно убивать свободное время которого у меня очень много. Процесс программирования мне очень нравиться. Это очень похоже на поиск сокровищ. И мне кажется что это сокровище я почти нашел . График моего баланса в тестере с 2010 по сегодня  постоянно устремлен на север с очень незначительными просадками. При том что код написан на минутных свечах . А по всеобщему убеждению на минутках сплошной хаос и нет никаких закономерностей. Если хотите могу скинуть график моего баланса и информацию из вкладки ОТЧЕТ

Очевидно что мои познания кода ограничиваются учебником Ковалева, Справочником( который я конечно изучил и понял пока частично)  и информацией из ответов на мои вопросы моих собеседников здесь. Так что не обессудьте.....

 
ANDREY #:

Спасибо за пояснение. А изменения данных которые происходят на каждом тике попадают сразу в файл ex4? 

Например в коде мql4  написано if (вid ==1.3456) {открыть ордер}. И вid  стало равно 1.3456 далеко после  компиляции кода  мql4  Получается что новое значение  вid  попадет сразу в исполняемый файл  ex4? То есть в файл  ex4 попадают в виде 1 и 0 не только данные и последовательность операций с ними  , но все движение кода, то есть, осуществление самих операций тоже происходит в файле  ex4.

Исполняемый файл, в данном случае - ex4, загружается в оперативную память однократно. Далее вся работа происходит в памяти, никак не затрагивая файл на диске.

 
JRandomTrader #:
загружается в оперативную память однократно.

Вот этого я никак не мог предположить самостоятельно. Да прочитать об этом я не знаю где.....
Но Вы так и не ответили мне куда попадает новое значение bid?  Получается что оно попадает сразу  в код Советника который после того как он покинул файл ex4, расположился  в оперативной памяти и  представлен в виде  1 и 0 ?

 
JRandomTrader #:
никак не затрагивая файл на диске.

А на диске остается и файл ex4  и файл mql4 одного и того же Советника. Но оба эти файла  пустые,  без кода который был в них раньше?

 
ANDREY #:

А на диске остается и файл ex4  и файл mql4 одного и того же Советника. Но оба эти файла  пустые,  без кода который был в них раньше?

Сделайте такой эксперимент. Напишите советник чтобы он просто выводил текущую цену в комментарий графика. Запустите его, убедитесь, что в комментарии графика отображается цена, затем удалите файлы и mq4, и ex4 и посмотрите как будет работать советник которого уже нет на диске. Правда после перезапуска терминала советник работать не будет, но ведь это эксперимент…

 
Alexey Viktorov #:

Сделайте такой эксперимент. Напишите советник чтобы он просто выводил текущую цену в комментарий графика. Запустите его, убедитесь, что в комментарии графика отображается цена, затем удалите файлы и mq4, и ex4 и посмотрите как будет работать советник которого уже нет на диске. Правда после перезапуска терминала советник работать не будет, но ведь это эксперимент…

Спасибо. Я этот эксперимент сделал мысленно и понял что даже после удаления файлов mq4, и ex4  из жесткого диска Советник все равно будет печатать в Print() цену, до перезапуска этого Советника.
Но я это понял еще до того как Вы мне предложили провести эксперимент. Я задал исключительно уточняющий вопрос. Ответ на него я догадываюсь , но спросил на всякий случай для уточнения и перепроверки себя . Ответ заключается в том  оба эти файла  пустые,  без кода который был в них раньше. А раз они без кода то их можно удалить без ущерба для работы советника, если его не перезапускать.
То есть при создании Советника сначала создаются на жестком диске  файлы  mq4, и ex4  В файл  mq4 код заносит программист. В файл ex4    потом  код заносит программа при компиляции . Из этих файлов код    в конечном итоге перелетает в оперативную память и если не перезапускать этот Советник то эти файлы на жестком диске больше не нужны.

Но я подумал еще раз и мне почему то показалось что файл  mq4 не становится пустым после компиляции. Иначе его было бы невозможно повторно компилировать. Он не пустой а с тем же кодом , но уже не нужный для исполнения кода Советника в оперативной памяти.
Каждый тик изменяет какие данные кода Советника. Правильно я  понимаю что тик с новыми данными попадает прямо и непосредственно с оперативную память в которой находится код советника выгруженный однократно  из файла  ex4?
Причина обращения: