MQL5(4)-вопрос. Точка входа.

 

Всем привет. Приступил к изучению языка MQL5. Пока только прочитал "Основы языка" из документации. Возник один вопрос, который я пока из основ к сожалению не уловил. Возможно он конечно дальше по докам объясняется, но для лучшего освоения информации я бы хотел это знать сейчас. Если не трудно объясните пожалуйста что является в MQL5 программе точкой входа? Всмысле такой же точкой входа как метод main в языках C++ или Java. Или лучше поделитесь ссылкой в доках где об этом описано.

На данный момент у меня сформировалось какое-то понятие как все работает. Есть методы, которые слушают определенные лиснеры, onTick, onStart и т.д. И при срабатывании определенных событий, срабатывают соответствующие методы. Но неужели нет чего-то более глобального?

Извиняюсь сразу если вопрос глупый? :) Спасибо заранее.

 
Конструктор глобального класса

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

MQL5 Как узнать закрылась сделка по стоп-лоссу или нет?

fxsaber, 2017.02.14 20:00

Грубо говоря, перед двоеточием указывается имя класса, откуда вызывается соответствующий метод.

Если ничего перед двоеточием не стоит - класс глобальный.

 
Denis:

Всем привет. Приступил к изучению языка MQL5. Пока только прочитал "Основы языка" из документации. Возник один вопрос, который я пока из основ к сожалению не уловил. Возможно он конечно дальше по докам объясняется, но для лучшего освоения информации я бы хотел это знать сейчас. Если не трудно объясните пожалуйста что является в MQL5 программе точкой входа? Всмысле такой же точкой входа как метод main в языках C++ или Java. Или лучше поделитесь ссылкой в доках где об этом описано.

На данный момент у меня сформировалось какое-то понятие как все работает. Есть методы, которые слушают определенные лиснеры, onTick, onStart и т.д. И при срабатывании определенных событий, срабатывают соответствующие методы. Но неужели нет чего-то более глобального?

Извиняюсь сразу если вопрос глупый? :) Спасибо заранее.



void OnInit()
{
...
}
Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Denis:

Всем привет. Приступил к изучению языка MQL5. Пока только прочитал "Основы языка" из документации. Возник один вопрос, который я пока из основ к сожалению не уловил. Возможно он конечно дальше по докам объясняется, но для лучшего освоения информации я бы хотел это знать сейчас. Если не трудно объясните пожалуйста что является в MQL5 программе точкой входа? Всмысле такой же точкой входа как метод main в языках C++ или Java. Или лучше поделитесь ссылкой в доках где об этом описано.

На данный момент у меня сформировалось какое-то понятие как все работает. Есть методы, которые слушают определенные лиснеры, onTick, onStart и т.д. И при срабатывании определенных событий, срабатывают соответствующие методы. Но неужели нет чего-то более глобального?

Извиняюсь сразу если вопрос глупый? :) Спасибо заранее.

Все зависит от того, какую программу Вы пишите. Если пишите эксперта, точкой входа (основной функцией расчетов - обработчиком событий) будет OnTick(), если пишите индикатор - OnCalculate(), если скрипт - OnStart().

https://www.mql5.com/ru/docs/basis/function/events

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Для новичков правильным ответом будет ответ, который дал Alexey Kozitsyn - в зависимости от типа программы OnTick(), OnCalculate() или OnStart(). И еще есть функция OnInit().

В программах на MQL реализована событийная модель работы. То есть, после запуска эксперта - нет точки, аналогичной функции main(), которая выполняется сразу после запуска. Программа "просто лежит", ничего не делает до тех пор, пока не произойдет определенное событие, которое будет вызывать соответствующую функцию. Как правило, сперва это функция OnInit() - вызывается как раз тогда, когда рабочая среда программы уже готова, и надо привести все внутренние переменные в рабочее состояние. И после выполнения этой функции - программа опять "лежит", до тех пор, пока не будет вызывана OnTick(), OnCalculate() или OnStart().

Строго говоря, есть функция, вызывающаяся еще до OnInit() - здесь прав  fxsaber - это конструктор глобального класса. Но, думаю, в такие дебри влезать новичку не требуется.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Вопросы от начинающих MQL4 MT4 MetaTrader 4".