Асинхронное и многопоточное программирование в MQL - страница 28

 
Andrey Barinov:

Print, ASSERT, DEBUG. Штатный отладчик в этом случае не использую...

Да, в этом и неудобство. Почти, как в старом MQL4.

 
Реter Konow:
А насколько такая "многопоточность" соответствует своему понятию? Можно ли разбить задачи программы на потоки используя эту функцию?

Для определенных задач на 100%. Например нужно управлять сделками - Тралить или что-то еще.

Эту задачу можно выполнять на агенте на каждом тике хоть сколько долго и ГУИ при этом будет продолжать работать.

 
Andrey Barinov:

При такой схеме делаются защиты

  • От закрытия OBJ_CHART кем-то. Например, чей-то "умный" скрипт.
  • Механизм свой-чужой евент не только по ID.
Обмен данными через файлы - не возникают физические проблемы с диском? По-моему, все маркет-копировщики творят что-то страшное из-за такой синхронизации.


ЗЫ Каким флагом пользуетесь для определения слейв/мастер режиме советника? В MT5 с этим просто - если OBJ_CHART, то слейв. А в MT4? У меня во входных был datetime, поэтому легко решал задачу через отрицательный datetime. А вот без input не пробовал.

 
Andrey Barinov:

Для определенных задач на 100%. Например нужно управлять сделками - Тралить или что-то еще.

Эту задачу можно выполнять на агенте на каждом тике хоть сколько долго и ГУИ при этом будет продолжать работать.

Пока темный лес. Функция сохраняет шаблон графика и далее, можно открыть новый график из советника и применить к нему сохраненный шаблон, и при этом, копия советника запуститься на том графике?
 
fxsaber:

При такой схеме делаются защиты

  • От закрытия OBJ_CHART кем-то. Например, чей-то "умный" скрипт.
  • Механизм свой-чужой евент не только по ID.
Обмен данными через файлы - не возникают физические проблемы с диском? По-моему, все маркет-копировщики творят что-то страшное из-за такой синхронизации.

Да, защита нужна, как и всегда.

Файлы надо разумно использовать. Только когда нужно. Синхронизируются ведь только моменты существенного изменения окружения / состояния, которые агент сам не может распознать.

Копировщики обычно работают на VPS, поэтому не очень страшно.

 
Andrey Barinov:

Копировщики обычно работают на VPS, поэтому не очень страшно.

Бедные VPS... выше дополнил вопрос.

 
Реter Konow:
Пока темный лес. Функция создает сохраненную копию графика и далее, можно открыть новый график из советника и запустить применить к нему сохраненный шаблон, и при этом, копия советника запуститься на том графике?

1.Пользователь помещает советник на чистый график.

2. Советник создает шаблон (с самим собой на графике)

3. Советник создает новый график (OBJ_CHART  или обычный, в случае МТ4)

4. Советник применяет шаблон к новому графику.

5. На новом графике запустилась копия советника, теперь она должна понять что это агент, а не главный советник :)

6. Они начинают общаться.

Живут долго и счастливо и умирают в один день :)

 
fxsaber:

Бедные VPS... выше дополнил вопрос.

Копир без файлов не сделать (для маркета). И файлы синхронизации торгового окружения между терминалами занимают гораздо больше операций чем синхронизация между агентами.


Агент в МТ4 определяю по наличию соответствующих глобальных переменных, которые устанавливает главный советник перед применением шаблона к новому графику.

 
fxsaber:

Бедные VPS... выше дополнил вопрос.

Надо учитывать, что ОС не топорно пишет на диск, она умеет кэшировать. Не помню где, но в винде даже настройка где-то есть.

 
Andrey Barinov:

1.Пользователь помещает советник на чистый график.

2. Советник создает шаблон (с самим собой на графике)

3. Советник создает новый график (OBJ_CHART  или обычный, в случае МТ4)

4. Советник применяет шаблон к новому графику.

5. На новом графике запустилась копия советника, теперь она должна понять что это агент, а не главный советник :)

6. Они начинают общаться.

Живут долго и счастливо и умирают в один день :)

Круто!)) Спасибо!

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

А общение через ресурсы с копиями на обычных графиках (не OBJ_CHART) будет происходить? Или там какие то ограничения?

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