Исполняемые файлы в MQL-4 (скрипты, советники, индикаторы) В MQL-4 существуют три вида самостоятельно исполняемых файлов, каждый из которых выполняет собственную задачу. По этой же причине, каждый их этих видов располагается в своей директории, скрипты хранятся в папке …MetaTrader 4expertsscripts , индикаторы в папке …MetaTrader 4expertsindicators, а советники в папке …MetaTrader 4experts , которая содержит и папки …scripts и …indicators. Сделано это для того, чтобы уже по месту нахождения файла можно было определить тип файла, так как расширение у них одинаковое — *.mq4. Каждый из этих типов файлов выполняет только свои функции. Так, отражать на графике различные кривые наиболее простым и экономичным способом можно только из индикаторов, а проводить торговые операции на счету можно только скриптами и советниками. Тут можно сделать маленькое отступление: утверждение о невозможности рисования из скриптов и советников можно, вроде бы, опровергнуть — создавать и наносить графические объекты (линии вертикальные, горизонтальные и трендовые (в виде луча), значки разных стилей и цветов) можно и из скриптов и советников. Но попробуйте переключить тайм-фрейм графика — и все придется делать заново, потому что графические объекты имеют привязку по времени и цене, и на другом тайм-фрейме нужно будет удалять все объекты и рисовать новые. Индикаторы, скрипты и советники также являются объектами. На график можно повесить советника, который будет в своем коде обращаться к одному или нескольким индикаторам, скрипт также не ограничен в вызовах индикаторов (пользовательских или стандартных). Можно также повесить индикатор, который строится на значениях другого индикатора, а тот в свою очередь вызывает для расчета третий индикатор. Все это в терминах ООП (объектноориентированного программирования) можно охарактеризовать так. Объект-график содержит в себе объект-советник, который содержит в себе объекты-индикаторы. Отобразим это представление двумя способами, стандартным и в виде диаграммы. Откроем график EURUSD, тайм-фрейм H1. Повесим на график советник MACD Sample из стандартной поставки MetaTrader4, разрешим ему торговать. Также набросим стандартный индикатор Stochastic Oscillator(5,5,5) , стандартный индикатор Fractals и пользовательский индикатор Zigzag (тоже из стандартной поставки MetaTrader4) . Получим такую картину: Имеем три индикатора (два стандартных и один пользовательский), каждый из которых работает независимо от остальных. Кроме того, исполняется советник. Работа каждого из них требует машинного времени (ресурсов процессора) и размещения в оперативной памяти (ресурсов памяти). А теперь рассмотрим это под другим ракурсом: График EURUSD , H1 представляет из себя объект-окно графика, в который помещено еще три объекта-индикатора и один объект-эксперт (эти объекты называют дочерними). Объект-график получает ресурсы компьютера и распределяет его между своими дочерними объектами. Если заглянуть в код эксперта, то можно увидеть, что там содержится вызов стандартного индикатора MACD со значениями параметров 12, 26, 9. Обращение из советника к индикатору создает в самом эксперте еще один индикатор MACD(12,29,9), который мы не видим на графике, но, тем не менее, этот индикатор-объект также существует. Кроме того, существуют индикаторы, которые также обращаются в своих расчетах к значениям других индикаторов (стандартные или пользовательские — не имеет значения). То есть, кроме объектов, которые мы видим на графике, могут существовать и другие объекты — невидимые для нас. Но эти объекты также требуют ресурсов компьютера (процессора и оперативной памяти). Таким образом, на самом деле мы имеем не четыре объекта (три индикатора и один советник), а пять — три индикатора и один советник, содержащий один индикатор. На деле, часто на график набрасывают значительно больше трех индикаторов, и используют советники, использующие вызовы более одного индикатора, и все эти объекты используют ресурсы, отводимые терминалу (программе MetaTrader4). Кроме того, при тестировании индикаторов и советников в одном терминале часто открывают до 10 и более графиков, каждый из которых содержит индикаторы и советник. Поэтому правильное написание исполняемых файлов и экономный алгоритм работы советников, скриптов и индикаторов имеет первостепенное значение. Напоследок приведу скриншот моего терминала в выходные (рынок не работает и котировки не поступают). Открыто 19 окон-графиков, каждый из которых содержит до 4 индикаторов. Ресурсы процессора (ЦП) практически не используются, а вот память задействовала более 70 мегабайт под работу терминала.