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

Функции init(), start() и deinit()

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

Функция init()

Эта функция вызывается в следующих случаях:

  • после присоединения советника к графику;
  • после старта MetaTrader 4 и подгрузки исторических данных;
  • после смены инструмента или периода графика;
  • после перекомпиляции программы в редакторе MetaEditor;
  • после изменения настроек эксперта;
  • после смены торгового счета.

Функция start()

Функция start() запускается на каждом новом тике. Собственно это основная функция эксперта, т.к. она вызывается на каждом тике и выполняет основную работу.

Важно: Если функция start() не успела завершить свою работу до прихода следующего тика, следующий тик пропускается и функция для него не вызывается.

Функция deinit()

С помощью UninitializeReason() можно узнать причину вызова функции deinit().

Функция deinit() вызвается в следующих случаях:

  • при завершении работы MetaTrader 4 или при закрытии графика (функция UninitializeReason() возвращает REASON_CHARTCLOSE);
  • при удалении эксперта с графика (REASON_REMOVE);
  • перед изменением инструмента графика или периода графика (REASON_CHARTCHANGE);
  • при удачной перекомпиляции программы в MetaEdito (REASON_RECOMPILE)r;
  • при изменении параметров эксперта (REASON_PARAMETERS);
  • при переключении на другой счет (REASON_ACCOUNT).

Функция UninitializeReason() возвращает 0, если скрипт самостоятельно завершил работу.

Если в течение 2.5 секунд фукция deinit() работу не завершила, то она прерывается принудительно.

В следующем выпуске я выложу код нашего первого советника и подробно разберу каждую его строчку. После этой серии статей Вы уже сможете самостоятельно писать простейших экспертов.



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

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

Комментарии по теме "Функции init(), start() и deinit()"

dear andrey vedikhin
i sent an email for you about partnership with alpari 4 days ago.
but you dont answer yet.

i am looking forward for your email

best regards
e-commerce manager of fara novon ict co ltd

Уважаемый Андрей!
Как можно вывести на печать количество глобальных переменных
оператором

Print("Всего глобальных переменных: ", GlobalVariablesTotal());

Я вставил в индикатор, но так оно не работает
Заранее Вам благодарен

Я думаю, что проблема тут в том, что Вы используете Print() в пользовательском индикаторе, в то время, как эта функция работает, видимо, только в экспертах.

Уважаемый Андрей!
Имеет ли значение в какую папку помещать эксперта или пользовательский индикатор в МТ4?
Я скапировал Вашего эксперта для ночной работы
(очень интресно)
В какую папку его поместить?

Эксперты в папку:
c:\programs files\MetaTrader - Alpari\experts

Индикаторы в папку:
c:\programs files\MetaTrader - Alpari\experts\indicators

Скачал эксперта для ночной торговли,
но он за 5 ночей ни разу не сработал
Дифф установил на уровне 7
Что делать?
Заранее благодарен

Уже разобрался
Проблема была во времени, так как оно не московское а другое

Разместите свой комментарий по теме "Функции init(), start() и deinit()"

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



Размещение статьи "Функции init(), start() и deinit()" на Вашем сайте

Размещение статьи "Функции init(), start() и deinit()" на Вашем сайте возможно при условии выполнениия следующих условий:

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

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

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


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