Структура Индикатора, Советника и Эксперта

 

Подскажите пожалуйста, где подсмотреть структуру программных сущностей

(из каких блоков состоит, какие события и когда вызываются, что и когда должен возвращать) - ну то есть интерфейс взаимодействия с MT

желательно в блочном виде 


Спасибо

 
Андрей:

Подскажите пожалуйста, где подсмотреть структуру программных сущностей

(из каких блоков состоит, какие события и когда вызываются, что и когда должен возвращать) - ну то есть интерфейс взаимодействия с MT

желательно в блочном виде 


Спасибо

Ну есть же справка. Неужели сложно так просто почитать?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт и каждый эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 
Андрей:

Подскажите пожалуйста, где подсмотреть структуру программных сущностей

(из каких блоков состоит, какие события и когда вызываются, что и когда должен возвращать) - ну то есть интерфейс взаимодействия с MT

желательно в блочном виде 


Спасибо

Самое простое - откройте MetaEditor MQL5 - далее меню "Файл" - пункт "Создать".

И по шагам создавайте Индикатор и Эксперт. Попутно внимательно смотрите какие функции предлагаются вставить в код. Можете вставить всё, что предлагается и затем в справке не спеша прочесть.

 
Vladimir Karputov:

Самое простое - откройте MetaEditor MQL5 - далее меню "Файл" - пункт "Создать".

И по шагам создавайте Индикатор и Эксперт. Попутно внимательно смотрите какие функции предлагаются вставить в код. Можете вставить всё, что предлагается и затем в справке не спеша прочесть.

мне "просто" не надо - мне нужно именно то, что спросил

 
Artyom Trishkin:

Ну есть же справка. Неужели сложно так просто почитать?

это похоже на то, о чем спрашивал. Только ответить можно было без нервов - мы ж не на привозе..

 
Андрей:

мне "просто" не надо - мне нужно именно то, что спросил

Тю, а чего губы то надули? Здесь всех не просканируешь, у кого что на уме. 

 
Vladimir Karputov:

Самое простое - откройте MetaEditor MQL5 - далее меню "Файл" - пункт "Создать".

И по шагам создавайте Индикатор и Эксперт. Попутно внимательно смотрите какие функции предлагаются вставить в код. Можете вставить всё, что предлагается и затем в справке не спеша прочесть.

вообщем-то вопрос почему возник

в примерах (MACD Sample например) нет OnInit, OnTrade и т.п., но есть обработчики типа 


bool CSampleExpert::InitIndicators(void)

bool CSampleExpert::LongClosed(void) ну и т.д.


Я не вижу в коде WM_Mapping или прямого вызова, и гадаю, как они вызываются

 
Андрей:

вообщем-то вопрос почему возник

в примерах (MACD Sample например) нет OnInit, OnTrade и т.п., но есть обработчики типа 


bool CSampleExpert::InitIndicators(void)

bool CSampleExpert::LongClosed(void) ну и т.д.


Я не вижу в коде WM_Mapping или прямого вызова, и гадаю, как они вызываются

ага! в конце кода вроде нашел.

но вопрос про блочный интерфейс остался. Можно было бы добавить в литературу для понятности ;)

 
Андрей:

вообщем-то вопрос почему возник

в примерах (MACD Sample например) нет OnInit, OnTrade и т.п., но есть обработчики типа 


bool CSampleExpert::InitIndicators(void)

bool CSampleExpert::LongClosed(void) ну и т.д.


Я не вижу в коде WM_Mapping или прямого вызова, и гадаю, как они вызываются

Итак, советник [dafa folder]\MQL5\Experts\Examples\MACD\MACD Sample.mq5.

Смотрим внимательно начиная со строк №№ 32:

class CSampleExpert

- объявляется класс CSampleExpert. 

Затем смотрим на все функции которые есть в этом файле:


и обращаем внимание, что здесь есть OnTick. Если перейти на OnTick

//+------------------------------------------------------------------+
//| Expert new tick handling function                                |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   static datetime limit_time=0; // last trade processing time + timeout
//--- don't process if timeout
   if(TimeCurrent()>=limit_time)
     {
      //--- check for data
      if(Bars(Symbol(),Period())>2*InpMATrendPeriod)
        {
         //--- change limit time by timeout in seconds if processed
         if(ExtExpert.Processing())
            limit_time=TimeCurrent()+ExtTimeOut;
        }
     }
  }

то видно, что из OnTick вызывается метод Processing() класса CSampleExpert.

А дальше как клубок за ниточку.

 
Андрей:

ага! в конце кода вроде нашел.

но вопрос про блочный интерфейс остался. Можно было бы добавить в литературу для понятности ;)

Ответ был дан выше - соберите самостоятельно советник или индикатор и увидите все блоки.

 
Vladimir Karputov:

Итак, советник [dafa folder]\MQL5\Experts\Examples\MACD\MACD Sample.mq5.

Смотрим внимательно начиная со строк №№ 32:

- объявляется класс CSampleExpert. 

Затем смотрим на все функции которые есть в этом файле:


и обращаем внимание, что здесь есть OnTick. Если перейти на OnTick

то видно, что из OnTick вызывается метод Processing() класса CSampleExpert.

А дальше как клубок за ниточку.

да нашел я уже... просто растерялся поначалу... :(

Спасибо.

Причина обращения: