потоки событий терминала.

 

Доброго времени суток, подскажите как распределяются потоки внутри терминала, я что то запутался слегка ? То что робота распаралеливать нельзя это я знаю, меня другое интересует.

Я немного запутался два варианта опишу как я понимаю может быть и буду благодарен за разъяснения:

Вариант 1:

  1.  каждый робот работает в своем потоке
  2. все события запускаемые внутри робота запускаются в потоке робота синхронно.

Вариант 2:

  1. каждый робот запускается в своем потоке
  2. все события робота запускаются во вторичных потоках относительно потоку робота

Касательно событий, меня интересуют по большому счету лишь 4:

Как минимум последние два думаю должны в своем потоке каждый запускаться, или же я не прав ? Если верен только лишь первый вариант, то в какой последовательности они тогда движутся (события имею ввиду).

 
Andrey Azatskiy:

Доброго времени суток, подскажите как распределяются потоки внутри терминала, я что то запутался слегка ? То что робота распаралеливать нельзя это я знаю, меня другое интересует.

Я немного запутался два варианта опишу как я понимаю может быть и буду благодарен за разъяснения:

Вариант 1:

  1.  каждый робот работает в своем потоке
  2. все события запускаемые внутри робота запускаются в потоке робота синхронно.

Вариант 2:

  1. каждый робот запускается в своем потоке
  2. все события робота запускаются во вторичных потоках относительно потоку робота

Касательно событий, меня интересуют по большому счету лишь 4:

Как минимум последние два думаю должны в своем потоке каждый запускаться, или же я не прав ? Если верен только лишь первый вариант, то в какой последовательности они тогда движутся (события имею ввиду).

https://www.mql5.com/ru/docs/runtime/running

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

https://www.mql5.com/ru/docs/runtime/running

Благодарю за ссылку - полезной оказалась, однако остались кое какие вопросы еще. 

И так, как я понял:

  1. На каждого эксперта по потоку
  2. OnTick - запускается в потоке эксперта (Если долго обрабатывается и пришло еще несколько срабатываний данного события, то они игнорируются)
  3. OnTradeTransaction всегда предшествует OnTrade (т.е. друг относительно друга они в одном потоке выполняются). Вопрос, относительно OnTick - данные событие во вторичном потоке ? Или же они так же совместно с OnTick работают в одном потоке? Имею ввиду что если к примеру зациклить OnTick - то события OnTradeTransaction и OnTrade все еще будут поступать верно ?
  4. OnBookEvent - как я понял из информации от сюда, данное событие запускается в одном потоке на одном графике и транслирует все стаканы которые были подписаны все роботы / индикаторы на данном графике верно ? Имею ввиду что опять же если чисто теоритически я где нибудь зациклю данное событие то получается что ни одна другая программа на данном графике не сможет получить данное событие пока первая программа где данные событие было зациклено - не выйдет из цикла верно ?
 
Andrey Azatskiy:

Благодарю за ссылку - полезной оказалась, однако остались кое какие вопросы еще. 

И так, как я понял:

  1. На каждого эксперта по потоку
  2. OnTick - запускается в потоке эксперта (Если долго обрабатывается и пришло еще несколько срабатываний данного события, то они игнорируются)
  3. OnTradeTransaction всегда предшествует OnTrade (т.е. друг относительно друга они в одном потоке выполняются). Вопрос, относительно OnTick - данные событие во вторичном потоке ? Или же они так же совместно с OnTick работают в одном потоке? Имею ввиду что если к примеру зациклить OnTick - то события OnTradeTransaction и OnTrade все еще будут поступать верно ?
  4. OnBookEvent - как я понял из информации от сюда, данное событие запускается в одном потоке на одном графике и транслирует все стаканы которые были подписаны все роботы / индикаторы на данном графике верно ? Имею ввиду что опять же если чисто теоритически я где нибудь зациклю данное событие то получается что ни одна другая программа на данном графике не сможет получить данное событие пока первая программа где данные событие было зациклено - не выйдет из цикла верно ?

 

Все события обрабатываются одно за другим в порядке поступления. 

Крайне не рекомендуется использовать бесконечные циклы для обработки событий.
 
Andrey Barinov:

 

Благодарю за помощь. жаль что сейчас выходной и нет возможности протестить и удостовериться что верно все понял

 
Andrey Azatskiy:

Благодарю за помощь. жаль что сейчас выходной и нет возможности протестить и удостовериться что верно все понял

на МТ5 не искал, под МТ4 точно биткоин в выходные работает, думаю что и в МТ5 можно найти криптовалюты на демо в выходные

;)

 
Igor Makanu:

на МТ5 не искал, под МТ4 точно биткоин в выходные работает, думаю что и в МТ5 можно найти криптовалюты на демо в выходные

;)

Крипты вообще без продыху работают ?) не знал такого финомина, интересно

 
Igor Makanu:

на МТ5 не искал, под МТ4 точно биткоин в выходные работает, думаю что и в МТ5 можно найти криптовалюты на демо в выходные

;)

Какой у него символ не подскажите ли ? (как в инструментах забить его) Хотя в демке от MetaTrader - не нашел крипты вообще, видимо ее нет тут.

 

Andrey Barinov:

Крайне не рекомендуется использовать бесконечные циклы для обработки событий. 

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

 
Andrey Azatskiy:

Крипты вообще без продыху работают ?) не знал такого финомина, интересно

нашел и на МТ5 крипту, символ BTCUSD, можно BCHUSD - тоже тикает в выходные , проверил и ордера выставляет

 
Andrey Azatskiy:


Роботы запускаются каждый в своем потоке, а вот события генерит терминал и роботу фиолетово, как он там их создает )) В одном потоке работают индикаторы на чарте.