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

 
Aleksey Vyazmikin #:

Вы противоречите сами себе.

В чем заключается противоречие?

 
Ihor Herasko #:

В чем заключается противоречие?

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

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

 
Aleksey Vyazmikin #:

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

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

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

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

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

Обрабатываю в одном алгоритме более 50 инструментов, проблем со скоростью нет.

 
Ihor Herasko #:

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

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

Индикатор будет считать столько баров, сколько нужно, а может вообще не считать...

 
Aleksey Vyazmikin #:

Индикатор будет считать столько баров, сколько нужно, а может вообще не считать...

В советнике еще проще ))

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

На многоядерном конечно будет выгода. Связь лучше делать чрез Memory Mapping, тут по этой теме много статей. 

 
использовать gpu для таких расчётов не вариант ?
 
Juhen #:
использовать gpu для таких расчётов не вариант ?

Если не нужна оптимизация, то вариантов много.

В GPU есть смысл, когда обсчитывать надо много относительно независимых данных.

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

будет работать не лучше, а прекрасно

чего не скажешь о мультивалютгиках

для этого пишется советник, например не на EURUSD, а на Symbol() и устанавливается хоть куда, например на 12 пар ;)