Обработка данных в одном советнике или в нескольких?

 
Доброго времени суток. Появился такой вопрос: у меня в одном советнике обрабатывается информация по 12 валютным парам и это занимает достаточно много времени. Если я раскидаю советник на несколько, чтобы каждый проводил сбор информации и вычисления на своей валютной паре - как это будет работать? Все советники будут работать параллельно или поочередно? Сможет ли это ускорить обработку информации если я просто нужные данные с разных советников/индикаторов вынесу в глобальные переменные, а уже главный советник будет их использовать для торговли?
 
Anton Novokhatskii:
Доброго времени суток. Появился такой вопрос: у меня в одном советнике обрабатывается информация по 12 валютным парам и это занимает достаточно много времени. Если я раскидаю советник на несколько, чтобы каждый проводил сбор информации и вычисления на своей валютной паре - как это будет работать? Все советники будут работать параллельно или поочередно? Сможет ли это ускорить обработку информации если я просто нужные данные с разных советников/индикаторов вынесу в глобальные переменные, а уже главный советник будет их использовать для торговли?

каждый советник технически работает в отдельном потоке и данные по своему символу получает шустрее. Поэтому да, отчасти работать будет быстрее.

Есть подводные камни - обмен через глобальные переменные может стать bottleneck.  И если нет опыта с многопоточными приложениями, широкое поле напортачить

 
Anton Novokhatskii:
Доброго времени суток. Появился такой вопрос: у меня в одном советнике обрабатывается информация по 12 валютным парам и это занимает достаточно много времени. Если я раскидаю советник на несколько, чтобы каждый проводил сбор информации и вычисления на своей валютной паре - как это будет работать? Все советники будут работать параллельно или поочередно? Сможет ли это ускорить обработку информации если я просто нужные данные с разных советников/индикаторов вынесу в глобальные переменные, а уже главный советник будет их использовать для торговли?

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

 
Aleksey Vyazmikin #:

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

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

перенос вычислений обычно делается наоборот - из индикаторов в советники. То есть был индикатор, стала функция или библиотека чтобы без расчетов всей истории "от Адама" и только когда надо и только на ограниченном промежутке

 
Maxim Kuznetsov #:

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

перенос вычислений обычно делается наоборот - из индикаторов в советники. То есть был индикатор, стала функция или библиотека чтобы без расчетов всей истории "от Адама" и только когда надо и только на ограниченном промежутке

Где Вы прочли, что индикаторы рассчитываются в одном потоке?

 
Aleksey Vyazmikin #:

Где Вы прочли, что индикаторы рассчитываются в одном потоке?

Один поток на один инструмент со всеми индикаторами что на нём. 

Для визуализации все потоки синхронизируются, при большом количестве синхронизаций визуализация подвисает
 
Aliaksandr Hryshyn #:

Один поток на один инструмент со всеми индикаторами что на нём. 

Для визуализации все потоки синхронизируются, при большом количестве синхронизаций визуализация подвисает

Так я и не говорю, что иначе - тут же речь о разных инструментах - за счёт этого предполагаю разгрузку.

Может я не прав - я просто не вижу, где написано в инструкции иное.

 
Aleksey Vyazmikin #:

Где Вы прочли, что индикаторы рассчитываются в одном потоке?

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

 
Sergey Gridnev #:
Каждый скрипт, сервис и эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока.

И что в Вашем сообщении нового, чего ещё тут не обсудили? Речь идёт об индикаторах на разных символах - если они задействованы одним советником.

 
Aleksey Vyazmikin #:

И что в Вашем сообщении нового, чего ещё тут не обсудили? Речь идёт об индикаторах на разных символах - если они задействованы одним советником.

У советника один поток. От того, что он использует данные индикаторов, пусть даже у каждого из них свой собственный поток, работать быстрее не будет, т. к. нет распараллеливания вычислений внутри советника. Советнику все равно нужно будет вызывать расчеты последовательно внутри своего единственного потока.

 
Ihor Herasko #:

У советника один поток. От того, что он использует данные индикаторов, пусть даже у каждого из них свой собственный поток, работать быстрее не будет, т. к. нет распараллеливания вычислений внутри советника. Советнику все равно нужно будет вызывать расчеты последовательно внутри своего единственного потока.

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

В общем надо провести эксперимент :)