Взаимодействие экспертов

 
Как уже было разъяснено разработчиками, для экспертов в МТ существует отдельный поток.
Насколько я понял, это речь шла о торговом потоке, то есть о потоке обмена торговыми инструкциями с сервером брокера. Если я ошибаюсь - поправьте меня.

Хотелось бы также понять, как происходит работа экспертов на уровне исполнения программ.
Конкретно я имею в виду следующее.

У меня есть два эксперта на одном графике. Один из них отрабатывает мгновенно, другой - совершает достаточно большие вычисления. Меня интересуют такие вопросы.

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

2. Если при приходе очередного тика второй эксперт еще не закончил свою работу, то будет ли запущен первый, не дожидаясь пока второй закончит свой цикл.
 
Каждый эксперт это отдельный thread (программный поток)... Я думаю все реализовано следующим образом:
Когда приходит новый тик создаются и запускаются треды для экспертов находящихся в состоянии ожидания тика... Те же которые не закончили свою работу пропускаются...
Поэтому:
1. Запущен первым наверное будет тот кто прикреплен первым если оба в режиме ожидания тика...
2. Второй будет запускаться независимо от второго и наоборот
 
Alexz,
Спасибо, я примерно так себе и представляю. То есть все thread'ы исполняются квазипараллельно (время процессора распределяется между ними равными "порциями").

Теперь хорошо бы еще к этим предположениям получить пояснения разработчиков.
В том числе и по вопросу о порядке исполнения.
 
Очень легко проверить экспериментально. Записывать в текстовый файл такую инфу:
Котировка по инструменту и время системы в миллисекундах.
MarketInfo() + GetTickCount( )
потом можно сравнить миллисекунды в файлах для одинаковых тиков при разных вариантах прикрепления экспертов
 
Yurixx, это не предположения, а вполне точное изложение. Почитайте "MQL4: Выполнение программ"

То же самое написано в словаре MetaEditor
 
Yurixx, это не предположения, а вполне точное изложение. Почитайте
"MQL4: Выполнение программ"

Slawa,
Вы подтвердили наши предположения, что я собственно и хотел получить. Спасибо.
А в статье "Выполнение программ" есть много общих ответов, но нет того конкретного, что я спросил.

Остался еще вопрос о очередности исполнения. Если на графике 2 эксперта, можно ли что-либо определенное сказать о том, который из них будет исполняться первым при приходе тика или нет ?
 
Думаю, врядли можно предсказать, какой из них будет исполнен первым, но запустяться оба как бы одновременно.
 
Если Вас заинтересовал вопрос о последовательности срабатывания экспертов, значит, я так понимаю, они у вас завязаны между собой каким-либо образом. Но тогда самое лучшее решение - это простое их объединение в одном эксперте с жёстким заданием последовательности их выполнения как вам требуется. Поскольку в любом случае остальные варианты решения этой проблемы будут заметно сложнее, гарантируя при этом не слишком много.
 
solandr,
Отказ от самого лучшего решения и разбиение одного эксперта на два, как Вы наверное понимаете, связан с невозможностью решить одну техническую проблему в одном. Так что Ваша рекомендация не подходит. :(

Rosh
Я тоже так ПРЕДПОЛАГАЮ. В принципе это подходит, но может быть Slawa скажет что-то более определенное. Может быть мне тогда и ухищряться не придется. Или наоборот. :-)
 
Первым запустит поток эксперта активный график. Следом - все остальные в порядке внутреннего списка дочерних окон.

Но совершенно неопределено, какой из потоков начнёт работать первым. И совершенно неопределена очерёдность активности потоков.

Так что, правильно будет полагать, что все эксперты работают одновременно.
Причина обращения: