Некоторые основные понятия
Итак, предметом нашего интереса является программа, написанная на языке MQL4. Перед тем как мы приступим к детальному изучению правил построения программ,
необходимо обозначить основные понятия, характеризующие программу и её взаимоотношения
с информационной средой. Известно, что клиентский терминал MetaTrader 4 работает в интерактивном режиме. Ситуация
на финансовом рынке постоянно меняется, и это находит своё отражение на графиках финансовых инструментов в клиентском терминале.
Информацию об изменениях цен на рынке в клиентский терминал приносят тики.
Понятие тика
Тик — это событие, характеризующееся новой ценой по финансовому инструменту в некоторый момент времени.
Поставщиком тиков для каждого клиентского терминала является сервер, установленный в дилинговом центре. В зависимости от ситуации на рынке тики могут поступать часто или редко, но каждый из них несёт новую котировку - стоимость единицы одной валюты, выраженную в единицах другой валюты.
Прикладная программа, работающая в составе клиентского терминала, может находиться в работе в течение длительного периода, например, несколько дней или недель. Каждая прикладная программа исполняется в соответствии с правилами, установленными для программ определённого вида. Эксперт, например, не работает всё время безостановочно. Обычно эксперт запускается в работу в момент, когда приходит новый тик. По этой причине мы охарактеризовали тик не просто как новую котировку, а как событие, которое обрабатывается клиентским терминалом.
Продолжительность работы эксперта зависит от того, какой программный код в него заложен. Обычные эксперты завершают один цикл обработки информации в течение десятых или сотых долей секунды. За это время эксперт может обработать какие-то параметры, принять торговое решение, сообщить полезную информацию трейдеру и т.д.
Отработав, эксперт переходит в режим ожидания тика. Новый тик снова запускает эксперт на выполнение, программа снова выполняет заложенные в неё операции и
снова переходит в режим ожидания тика. Как именно появление нового тика влияет на работу программ, будет более подробно описано далее.
Понятие управления
Говоря о последовательности выполнения кода в программе и её взаимодействии с клиентским терминалом, мы будем использовать термин "управление".
Управление — это процесс выполнения действий, предопределённых алгоритмом программы и свойствами клиентского терминала. Управление может передаваться внутри программы от одной программной строки к другой, а также между программой и клиентским терминалом.
Передача управления больше всего напоминает передачу права произносить речь на собрании от одного оратора к другому в нашей обычной жизни. Подобно тому, как ораторы выступают на собрании и передают друг другу слово, клиентский терминал и программа передают друг другу управление. Причём клиентский терминал играет главенствующую роль. Его статус выше, чем у программы, так же как полномочия председателя собрания выше, чем у рядового оратора.
Пока программа не запущена в работу, управление находится в ведении клиентского терминала. В момент, когда появляется новый тик, клиентский терминал передаёт управление программе. С этого момента начинается исполнение программного кода.
Клиентский терминал, передавший управление программе, не останавливает свою работу. Он продолжает полноценно работать в течение всего времени, пока он запущен на компьютере. Программа же может начать работать только в тот момент, когда клиентский терминал передал ей управление (подобно тому, как председатель собрания управляет собранием всё время, а текущий оратор держит слово только в течение ограниченного времени).
По окончании своей работы программа возвращает управление клиентскому терминалу и не может быть запущена по собственной инициативе. Однако с момента, когда управление передано программе, она сама возвращает управление клиентскому терминалу. Иными словами, клиентский терминал не может сам вернуть себе управление из программы. Исключение составляют активные действия пользователя (например, принудительное завершение программы).
При обсуждении вопросов, связанных с работоспособностью и внутренним устройством программ, нас главным образом будет интересовать та часть управления, которая передаётся внутри программы. Обратимся к рис. 2, на котором показан общий характер передачи управления в программу, из программы и внутри неё. Кружки на представленном рисунке характеризуют некоторые небольшие, логически завершённые фрагменты программы, а стрелки между ними - передачу управления от одного фрагмента к другому.
Рис. 2. Передача управления в программе
Программа, получившая управление от клиентского терминала (исполняющаяся программа), начинает выполнять некоторые действия в соответствии с заложенным в неё алгоритмом. Программа содержит программные строки; общий порядок исполнения программы состоит в последовательной передаче управления от одной строки к другой в направлении сверху вниз. Что и по каким правилам может быть написано в этих строках, будет подробно рассмотрено в последующем изложении.
Здесь же важно подчеркнуть, что каждый логически завершённый фрагмент исполняется - например, производятся какие-либо математические вычисления, выводится текст
сообщения на экран, формируется торговый приказ и пр. До тех пор пока текущий фрагмент программы не выполнен, он удерживает управление. После того как он выполнен
полностью, управление передаётся следующему фрагменту. Таким образом, управление внутри программы передаётся от одного логически завершённого фрагмента к другому по мере их исполнения. Когда будет исполнен последний фрагмент, программа передаст (вернёт) управление клиентскому терминалу.
Понятие комментария
Программа состоит из двух видов записей: тех, которые составляют собственно программу, и тех, которые являются лишь пояснительным текстом к ней.
Комментарий - это необязательная и неисполняемая часть программы.
Комментарий - это необязательная часть программы. Готовая программа будет работать в соответствии с заложенным в неё кодом независимо от того, есть в ней комментарии или нет. Однако комментарии очень облегчают понимание кода программы. Они могут быть однострочными и многострочными. Однострочный комментарий - это любая последовательность символов, перед которой стоят две косые черты (//). Признак однострочного комментария заканчивается вместе с переводом строки. Многострочный комментарий начинается символами /* и заканчивается
символами */ (см. рис. 3).
|
Комментарии используются для пояснения кода программы. Хорошая программа всегда содержит комментарии. |
Рис. 3. Примеры комментариев в программе.
Комментарии широко используются при написании программ. В коде они обычно отражаются серым цветом. Мы также будем использовать комментарии для пояснений в программах, чтобы сделать их содержание более понятным.