« Предыдущий пост | На главную страницу | Следующий пост »

Создание собственных функций

Любой эксперт, как мы уже увидели в прошлом выпуске, состоит из как минимум трех функций: init(), start() и deinit(). Без понимания, что они делают, невозможно написать своего эксперта, поэтому я в следующем выпуске подробно эти функции рассмотрю.

Для начала же полезно понять, а что такое функция вообще. Допустим Вы в своей программе часто производите одни и те же действия. Вы можете в каждом месте написать код, который выполняет эти действия. Однако это неудобно и неправильно с нескольких точек зрения:

  1. Если вдруг Вам понадобится внести изменения в этот кусок кода, то это придется делать везде, где он используется. Существует большая вероятность, что где-то Вы забудете внести изменения, и советник будет торговать с ошибками.
  2. Гораздо более читабельным будет код, когда выполнение повторяющихся действий вынесено в отдельную функцию, а в соответствующих местах эта функция вызывается. В этом случае изменения (в случае необходимости) надо делать всего в одном месте и читаемость такого кода будет гораздо лучше.

Таким образом, в любой момент Вы можете описать свою функцию, которая будет выполнять определенные действия:

тип    имя ( параметры )
   {
         действия
   }

Функция может возвращать какое значение любого из стандартных типов (int, bool, datetime, double, color, string - см. описание типов в выпуске "Настраиваем параметры нового эксперта"), либо не возвращать никакого значения (тип void).

Имя функции - это любое понятное Вам имя, которое помогает сразу же вспомнить, что делает эта функция. Имя может состоять из цифр (0-9), латинских прописных и строчных букв (а - z и А - Z, следует помнить, что буквы 'a' и 'A' - совершенно разные символы), символа подчеркивания (_). Первый символ не может быть цифрой. Также имя функции не должно совпадать с зарезервированным словом (т.е. словом, которое имеет особый смысл в языке MetaQuotes Language 4 - но об этом позже).

Пример имени функции: GetConnectionStatus.

Каждой функции могут передаваться определенные параметры. Они указываются через через запятую в круглых скобках после имени функции. Для каждого параметра указывается тип.

Приведем пример описания функции, которая вычисляет наименьшее из двух целых чисел:

int GetMinValue(int a1, int a2)
   {
         if (a1<a2) return(a1); else return(a2);
   }

Эта функция возвращает значение типа int (целое число), ее имя - GetMinValue и она имеет два входящих целочисленных параметра: a1 и a2.

Для возврата значения в вызывающую программу используется команда return(значение).

Если в каком-то месте нашего советника нам потребуется вычислить минимальное число из двух, то мы можем вызвать нашу функцию следующим образом: имя(параметры через запятую). Например: GetMinValue(10, 15).

Теперь мы знаем достаточно о функциях, чтобы перейти к подробному рассмотрению трех важнейших функций любого эксперта: init(), start() и deinit().



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Комментарии по теме "Создание собственных функций"

Как написать эксперта написано
А как написать индикатор чтобы он выводил график?

SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,Red);
Кто подскажет Что делает эта функция?

void SetIndexStyle( int index, int type, int style=EMPTY, int width=EMPTY, color clr=CLR_NONE)

Устанавливает новый тип, стиль, ширину и цвет для указанной линии индикатора.

Параметры:

index - Порядковый номер линии. Должен быть от 0 до 7.

type - Стиль отрисовки линии индикатора.

style - Стиль линии. Используется для линий толщиной в 1 пиксель.

Пустое значение (EMPTY) указывает, что стиль не будет изменен.

width - Ширина линии. Допустимые значения - 1,2,3,4,5. Пустое значение (EMPTY) указывает, что ширина не будет изменена.

clr - Цвет линии. Пустое значение CLR_NONE указывает, что цвет не будет изменен.

А нельзя ли весь материал в одном файле закинуть для скачки? например в формате chm или pdf

Константин, вместо "копи-паст" лучше указать источник, либо способ получения информации.

А нельзя ли весь материал в одном файле закинуть для скачки? например в формате chm или pdf

Хорошая идея. Но сначала надо закончить написание цикла статей по программированию экспертов.

Константин, вместо "копи-паст" лучше указать источник, либо способ получения информации.

Я не Константин, но отвечу на Ваш вопрос.

Есть несколько источников получения информации, кроме моего блога:

1. Встроенный хэлп MetaEditor.

2. Статьи Rosh на сайте Альпари: http://www.alpari-idc.ru/ru/experts/articles/

3. Сайт разработчика MQL4:
http://www.mql4.com/ru

Можно ли в МетаТрейдере 4 увидеть график цены на нефть или на фьючерсы на нефть?

Монжо. Скачайте метатрейдер с сайта ДЦ "Альпари": www.alpari-idc.ru

Вот спецификации контрактов:
http://www.alpari-idc.ru/ru/markets/cspec/

Разместите свой комментарий по теме "Создание собственных функций"

Подписаться на мою рассылку


Рассылки Subscribe.Ru
Методы анализа рынка ФОРЕКС / FOREX. Торговые стратегии

Размещение статьи "Создание собственных функций" на Вашем сайте

Размещение статьи "Создание собственных функций" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Создание собственных функций" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Рейтинг@Mail.ru Rambler's Top100
Рассылка 'Методы анализа рынка ФОРЕКС / FOREX. Торговые стратегии'
Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 3.31