Функции в MQL

 

Функции могут и не возвращать никакого значения. Для таких функций в MQL предопределён специальный тип: void. То есть выходных данных такая функция не имеет, но она так же как и другие функции может иметь один или несколько входных параметров

Пример:

void func_1 ( int count)

{

//блок операторов

return;

}

Из примера видно что в конце оператора return круглых скобок нет, а значит никакого значения эта функция не возвращает. Но у неё есть входной параметр ( переменная count ).В данном примере входной параметр один, но как уже говорилось их может быть и несколько.

Теперь с учётом того что мы узнали о функциях и ранее пройденного можно попробовать написать реально работающую программу.Для этого используем наш учебный советник. Возьмём простейшее уравнение вида Y=A*X+B. (из школьного курса математики)))))))) X в данном случае переменная, A и B являются константами. Если эти константы заданы , к примеру A=5, B=7 нам остаётся только подставлять в уравнение значение X. для каждого значения X мы получим соответствующее значение Y. Немного усложним задачу, пусть X будет не произвольным значением, а результатом работы какой то функции . Чтобы результат можно было считать для разных значений A и B мы их сделаем переменными и вынесем в настройки.

Сделаем так:

extern int a=5;

extern int b=7;

int start()

{

return(0);

}

//определим функцию для x

double x_function()

{

double x;

return(x);

}

Чтобы было поинтересней пусть функция для X складывает две цены, к примеру цены открытия текущего и предыдущего баров. Для получения таких цен в MQL существуют предопределённые переменные. Я не буду приводить тут полный список предопределённых переменных, их всегда можно посмотреть непосредственно в редакторе (вкладка словарь), Для цены открытия текущего бара это будет переменная Open[]. Нам нужны цены текущего и предыдущего баров., то есть Open [ 0 ] и Open [ 1 ] соответственно...

Ну так и запишем:

extern int a=5;

extern int b=7;

int start()

{

return(0);

}

//определим функцию для x

double x_function()

{

double x;

//вычисляем значение X

x=Open[0]+Open[1];

return(x);

}

Теперь нужно решить, что мы будем делать с результатом решения нашего уравнения? Можно сохранить его в какой то переменной (например y) для дальнейших вычислений, а можно просто вывести на экран или напечатать в журнале. Сделаем и то и другое и третье)))))))) Но нужно сначала объявить такую переменную. Сделаем её общей, чтобы её можно было использовать не только в функции start.

Пишем:

extern int a=5;

extern int b=7;

double y;//переменная для результата решения уравнения

int start()

{

//решаем уравнение

y=a*x_function()+b;

Comment(y);//выводим результат на экран

Print (y);//печатаем результат в журнале

return(0);

}

//определим функцию для x

double x_function()

{

double x;

//вычисляем значение X

x=Open[0]+Open[1];

return(x);

}

Готово. Мы получили работающую программу. Конечно это ещё далеко не советник и вычисляет она непонятно что)))), но как пример составления программы вполне годится и какие то выводы из её работы можно сделать. К примеру если поставить наш советник на демо счёт мы увидим, что с каждым новым баром значение на экране будет изменяться ( догадайтесь почему)))))))) Ещё один момент, при удалении советника с графика последнее значение выведенное на экран останется вверху графика. Это не очень хорошо, мусорить на графике не должен даже наш суперпуперсоветник))))))Поэтому нужно добавить к нему функцию deinit, чтобы при выходе это сообщение удалялось.

примерно так:

int deinit()

{

Comment("");

return(0);

}
Вставить эту функцию в советник я думаю вы сможете самостоятельно)))))). Вот теперь наша программа окончательно готова и можно переходить к изучению других операторов языка MQL. Но это уже следующий шаг)))))

 

 

 Назад

 

 

TEXT.RU - 100.00%

 

 

Added By Plugin From Parameter - 19264

Страницы: Первая Предыдущая 1 2
Комментарии (0)

Нет комментариев. Ваш будет первым!

Яндекс.Метрика