Форум трейдеров рынка ФОРЕКС (FOREX)


MetaQuotes Language II - учимся программировать. Урок №2

Дата:  3.3.07 | Раздел: MQL программирование

MetaQuotes Language II - учимся программировать. Урок №2

Обучение MQL II Урок №2



Компания "Fxtest"
Халхальян Артур
техническая поддержка трейдеров
artur@fxtest.ru

Здравствуйте, дорогие читатели. Сегодня мы детально разберем типы переменных, познакомимся с операторами присваивания и инструкцией if - then.

2.1 Переменные числового типа

Переменные, как Вы знаете, нужны для хранения какой-либо информации, с возможностью в любой момент к ней обратиться или изменить ее. Переменные числового типа, по логике хранят числа.
var: K(0),N(0); //Внутренние переменные K и N, поумолчанию их значения равно 0.
//Это переменные числового типа, т.к. поумолчанию они равны указанному числу
//окончание описания переменных, как и любую другую инструкцию MQL
// заканчивает <;>. Если Вы заметили перед каждой строчкой стоит двойной слеш <//>
//так обозначаются однострочные комментарии
/* Это уже обычный, полнострочный комментарий */
{
K=1;
// присваивание осуществляется обычным знаком равенства <=>
N=10*2; //в правой части могут быть записаны математические выражения с четырьмя //основными математическими действиями +, -, *, /
K=N+5;
N=(bid+ask)/2;
K=K+10; /* Математически выражение не верно, т.к. правая часть не равна левой.
Практически в любом языке программирования, включая MQL, такая операция присваивания абсолютно нормальна. После этого выражения переменная K увеличится на 10. Для лучшего понимания этого момента, можете считать, что до знака равенства стоит новое значение переменной (которое мы хотим получить), а после старое значение. Т.е. K=K+10, новое значение K равно старое плюс 10. */
};

Вы можете скопировать весь текст в Meta Editor, от слова var до закрывающей фигурной скобки вместе с описаниями, т.к они все закомментированы.

2.2 Переменные строкового типа

var: string1("text"), string2("toge text"),string3(" ") ;
// переменные строкового типа, т.к. поумолчанию равны текстовой строке
//название переменной может содержать в себе цифры, но название переменной не может начинаться с цифры

{
string3="slovo";
string3=string1+string2;
/* Для работы с текстовыми строками имеется всего один строковый оператор, обозначается <+> переменная string3 , будет равна " text toge text " */
};

2.3 Относительные операторы

Используются для сравнения двух значений одинакового типа. Первое значение сравнивается со вторым, в результате чего формируется логическое значение True (истина) или False (ложь). Меньше - '<' , больше - '>', равно - '=' , не равно - '<>', меньше или равно - '<='; больше или равно - '>='.

2.4 Инструкция if-then

Наверное, нет ни одного торгующего эксперта, который не имеет этой инструкции. Т.к. ситуация на рынке все время меняется нужно все время что то с чем то сравнивать или проверять. Для этого и используется эта инструкция.
If (условие) then (действие происходящее при истинности условия)
 else (действие происходящее при ложности условия)
else - это необязательная часть инструкции
Пример:
If k>n then k=k+1; //1й
If k>b then k=k+1 else k=k-1;
//2й
Заметьте во втором примере после первого действия (a=a+1) нет точки с запятой, т.е. перед else <;> ставить не надо. Если нужно исполнить несколько действий то можно использовать конструкцию begin:end; или {:.};
Пример:
If k>b then {k=k+1; b=b-1;};
If k>b then {a=a+1; b=b-1;} else {k=k-1; b=b+1;};

2.5 Переменные логического типа

Эти переменные могут иметь всего 2 значения True (истина) или False (ложь). Они используются как флаги разрешающие что-то или запрещающие. С переменными логического типа работают логические операторы: and, or, not.
Var: k(True),n(false);
{
k = FreeMargin >= 1000;
If not k then exit;
};

Происходит принудительный выход из эксперта, если свободная маржа меньше или равна 1000.
Мы можем также писать (if k<>True) или (if k=False) и все это будет иметь один смысл. Вместо того, что бы после if писать логическую переменную и проверять ее на равенство true, можно просто написать переменную, а вместо проверки на равенство False, перед переменной ставится логический оператор not, как в нашем случае.
If k>0 and b>0 then exit;
Оператор and(И) группирует условия, действие после then выполнится только при истинности всех условий.
If k>0 or b>0 then exit;
Оператор or(или) выбирает хотя бы одно истинное условие. Т.е. если любое из двух переменных больше 0 то действие выполнится.
Оператор not(не), применяется для логических переменных. Для переменных числового типа используется относительный оператор не равно (<>)
В следующем выпуске мы начнем более специализированное изучение MQL. Мы рассмотрим обращение к массивам котировок и научимся открывать позиции.



Материал предоставлен : http://www.forextimes.ru/magazine




Cтатья опубликована на сайте "Форекс форум. Торговля на Forex. Cообщество трейдеров":
http://youfx.ru

Адрес статьи:
http://youfx.ru/modules/myarticles/article_storyid_2.html