ФОРЕКС 21 Четверг, 02.05.2024, 15:26
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта

Главная » 2009 » Декабрь » 26 » MetaQuotes Language II
MetaQuotes Language II
22:00
Язык программирования MetaQuotes Language II используется при написании собственных программ -экспертов (expert advisors) для автоматизации контроля торговых процессов , а также для реализации собственных торговых стратегий . MetaQuotes Language II прост в изучении , использовании и отладке . В состав MQL II включено большое количество переменных , необходимых для контроля текущих и прошлых котировок , основные арифметические и логические операции , встроены основные индикаторы и команды по открытию позиций и контролю над ними . По синтаксису похож на язык программирования EasyLanguage от TradeStation Technologies, Inc., однако есть некоторые отличия . Для написания кода программы используется текстовый редактор экспертов MetaEditor, умеющий выделять цветом различные конструкции языка MQL II, позволяя пользова - телю легче ориентироваться в тексте экспертной системы . Комментарии начинаются с символов //(двойной слеш ). Также комментарии можно выделять парой 'слеш -звёздочка ' - 'звёздочка -слеш ' (/*[comments]*/ как в языке программирования Си ). Встроенный редактор выделяет комментарии серым цветом . Для отладки и контроля работающей стратегии ведется лог -файл , где сохраняется информация о сгенерированных сигналах , вывод переменных и результаты проведения сделок . Логи работы экспертов находятся в файле /logs/YYYYMMDD.log в каталоге MetaTrader. Доступ к текущему логу возможен прямо из нижнего окна "Terminal" (вкладка Journal). В качестве справочной системы по языку MQL II используется окно MetaQuotes Language Dictionary, вызываемое при нажатии на кнопку Dictionary либо из меню Tools. Краткий справочник содержит разбитые на категории функции , операции , зарезервированные слова etc и позволяет узнать описание каждого используемого элемента , входящего в язык . 1. Основные языковые конструкции Как любой другой язык , MQL II имеет набор основания . Основным объектом языка являются данные . Данные могут быть 3 типов : числовые , логические или строковые . Все числовые значения имеют формат double. Логические данные могут принимать значения True или False. Строка - это набор символов , выделенный апострофами . Строка символов может называться также текстовой строкой . Данные могут храниться в переменных соответствующих типов , либо могут быть непосредственно представлены в исходном тексте программы . Предложение (MetaQuotes Language statement) представляет собой законченную инструкцию . Предложения могут содержать зарезервированные слова , операторы , данные , переменные , выражения , знаки пунктуации и всегда заканчиваются знаком ';' (точка с запятой , semicolon). Зарезервированными словами будем называть предопределённые слова , имеющие специфическое значение или специальное назначение . Операторами называются символы , представляющие собой обозначение неких операций над данными , переменными и (или ) выражениями . Переменные необходимы для хранения числовых ,строковых или логических данных . Выражением будем называть комбинацию зарезервированных слов , переменных , данных , операторов , результатом которой является значение одного из 3 используемых в языке типов :числовое ,логическое либо строка символов .Знаки пунктуации используются для представления выражений ,определения параметров ,разделения слов либо для переупорядочения последовательности вычислений . 2. Знаки пунктуации Знак Название Описание ; Semicolon Завершает инструкцию MetaQuotes Language II ( ) Parentheses Группирует значения в выражении для изменения порядка вычислений. Выделяют параметры в функциях и инициализируют выражения в описании переменных. Выделяют инициализирующие значения для переменных и массивов в секции описания переменных. , Comma Разделяют параметры при вызове функции. Разделяют переменные в секции описания переменных. Разделяют числа в описании размерности массивов. Разделяют индексы при доступе к элементам массива. : Colon Используется в секции описания переменных в качестве начала списка переменных " " Quotation marks Выделяют текстовую строку (строку символов) [ ] Square brackets Выделяют числа при определении размерности массива. Выделяют числа(индексы) при доступе к какому-либо элементу массива. Выделяют номер периода при доступе к <историческим> данным { } Curty brackets Операторные скобки. Могут использоваться вместо begin : end. Выделяют набор инструкций в блок /* */ Comment brackets Выделяют комментарий // Double slash Определяет начало однострочного комментария 3. Операторы Операторы делятся на 6 групп : оператор присваивания, строковый оператор , математические операторы , относительные операторы , логические операторы , операторы инкремента и декремента. 3.1. Оператор присваивания Для назначения переменным какого -либо значения (числового , строкового или логического , в зависимости от типа переменной ) используется оператор присваивания '=' (знак равенства ). Присваиваемое значение может быть результатом выражения . Пример : Variable: Counter(0); ... Counter = Counter + 1 ; В результате переменной Counter будет присвоено значение 1 . Присваивать значения можно также и элементам массива . Примечание : знаком равенства обозначается также и оператор сравнения "равно ". В логических выражениях If-Then и While знак равенства воспринимается как оператор сравнения . 3.2. Строковый оператор Для манипулирования текстовыми строками имеется всего один оператор '+' (знак плюс ). Он обеспечивает объединение двух строк . Пример : Variable: String(" "); : String = "some_" + "text"; В результате переменная String будет содержать текстовую строку "some_text". Допускается также объединение строк с числовыми и логическими значениями . В этом случае перед объединением числовые и (или ) логические значения будут приведены к строковому типу . Пример : String = "string" + 1 ; В результате переменная String будет содержать текстовую строку "string 1 ". В качестве операндов могут выступать не только значения , но и переменные соответствующих типов , содержащие такие значения , а также выражения , результатом выполнения которых , будут такие значения . 3.3. Математические операторы Четыре основных математических действия : сложение - '+' (знак плюс ); вычитание - '-' (знак минус ); умножение - '*' (звёздочка ); деление - '/' (слеш ). Используются в математических выражениях для вычисления числовых значений . Примеры математических выражений : ( Ask + Bid ) / 2 , High[1 ] + 20 * Point 3.4. Относительные операторы Используются для сравнения двух значений одного и того же типа . Первое значение сравнивается со вторым , в результате чего формируется логическое значение True (истина ) или False (ложь ). Меньше - '<' (левая угловая скобка ); больше - '>' (правая угловая скобка ); равно - '=' (знак равенства ); не равно - '<>'; меньше или равно - '<='; больше или равно - '>='; 'crosses over'; 'crosses under'. Логические значения , полученные в результате сравнительного выражения , используются в управляющих структурах MetaQuotes Language II. Пример : If FreeMargin < 1 000 Then Exit; Результат сравнительного выражения может быть присвоен логической переменной (переменная , которая может принимать значения True или False). Так как знак равенства обозначает одновременно и оператор присваивания , и относительный оператор "равно ", то в данном случае , для преодоления неоднозначности , в качестве относительного оператора "равно " необходимо использовать '==' (два знака равенства подряд ), как это принято в языке программирования Си . Пример : ConditionValue = OrderValue(cnt,VAL_TYPE) == OP_SELL; Текстовые строки сравниваются в лексикографическом порядке . То есть строка "aaa" меньше строки "zzz". При сравнении логических значений следует иметь в виду , что числовым значением логического значения True является 1 , а значением False - 0. Для сравнения данных , хранящихся в массивах можно использовать операторы 'crosses over' (синоним 'crosses above') и 'crosses under' (синоним 'crosses below'). Эти операторы используются для сравнения пары подряд идущих значений одного массива с парой значений другого массива . 'crosses over' - текущее значение больше и предыдущее значение меньше или равно ; 'crosses under' - текущее значение меньше и предыдущее значение больше или равно. Пример : If Close[0] crosses over Open[0] Then Alert("Close price crosses over open price!"); 3.5. Логические операторы Позволяют комбинировать логические значения . Логическое ИЛИ - '|' (вертикальная черта , broken bar); логическое И - '&' (амперсант ); логическое НЕТ - '!' (восклицательный знак ). Логическим операторам соответствуют зарезервированные слова OR, AND, NOT. Пример : If FreeMargin > 1 00 and FreeMargin < 1 000 then print( "Free margin is ", FreeMargin ); Заметим , что операции OR и AND являются двухместными , то есть оперируют с двумя значениями . Операция же NOT является одноместной , то есть , применима только к одному значению . Пример : Variable: Condition 1 ( True ); : Condition 1 = FreeMargin >= 1 000; If not Condition 1 then exit; Также логическое НЕТ может быть применено к сравнительному оператору "равно ". Такая конструкция будет воспринята компилятором как оператор "не равно ". Ниже приведём таблицы результатов логических операций . Значение 1 Значение 2 Значение 1 OR Значение 2 True True True True False True False True True False False False Значение 1 Значение 2 Значение 1 AND Значение 2 True True True True False False False True False False False False Значение 1 Значение 2 NOT Значение 1 True False False True 3.6. Операторы инкремента и декремента Эти операторы изменяют значение числовой переменной . В этом смысле они аналогичны оператору присваивания . В сочетании с переменной такой оператор представляет собой законченное выражение , поэтому не может быть использован внутри другого выражения . Инкремент единицы - "++"; декремент единицы - "--"; инкремент числового выражения - "+="; декремент числового выражения - "-=" Примеры : Counter++; // same as Counter = Counter + 1 ; Counter--; // same as Counter = Counter - 1 ; Counter -= 1 0; // same as Counter = Counter - 1 0; По аналогии с инкрементом и декрементом числового выражения можно использовать операторы "*=" и "/=". Примеры : SomeNumber *= 7; // same as SomeNumber = SomeNumber * 7; SomeNumber /= 11 ; // same as SomeNumber = SomeNumber / 11 ; Справа от операторов "+=", "-=", "*=", "/=" должно находиться любое числовое выражение . Продолжение читайте в следующем номере . По материалам компании MetaQuotes Software Corp. http://www.metaquotes.ru
Просмотров: 454 | Добавил: forex21 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Календарь новостей
«  Декабрь 2009  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Поиск

Друзья сайта


Статистика

Copyright MyCorp © 2024 Бесплатный конструктор сайтов - uCoz