Нужен совет

 
У меня очень тажелый алгоритм вычислений. Грузит все процессоры на ура.
Возникла такая мысль: а можно ли показания индикатора скидывать в глобальнуые переменные чтобы потом считывать их советником.
Иначе просто не тянет железо. Функцию iCustom использовать нельзя, не получится.
Вопрос: что в первую очередь выполняется индикатор или советник при приходе нового тика?
 
Debugger >>:
У меня очень тажелый алгоритм вычислений. Грузит все процессоры на ура.
Возникла такая мысль: а можно ли показания индикатора скидывать в глобальнуые переменные чтобы потом считывать их советником.
Иначе просто не тянет железо. Функцию iCustom использовать нельзя, не получится.
Вопрос: что в первую очередь выполняется индикатор или советник при приходе нового тика?

кто бы ни был первым есть функция слип для облегчения жизни

 
Знаю про такую, но это не выход из положения
 

Кстати, а в чем разумный смысл разделения рабочего кода на советник и индикатор в МТ4?

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

 
Andrei01 >>:

Кстати, а в чем разумный смысл разделения рабочего кода на советник и индикатор в МТ4?

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


А в чем разница между диагнозом и лечением?

Индикаторы - анализ. Они так и называются - индикаторы ТА. Советник же - принятие решений на основе аналитических инструментов.

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

 

Ну дык и диагноз и лечение разумно делать в одном месте, а не мучить больного пустыми поездками туда-сюда - так и помереть по дороге можно )))

Ну а всё же в чем смысл? Или это просто кому-то такая идея в голову взбрела?

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

 
по логике вначале должны выполниться индикаторы, а потом советники, если найти 3 минуты и написать так:
советник 123
int start()
  {
   int i;
   datetime now;
   now=TimeLocal();
   for (i=1;i<10;i++)Print("expert : ",DoubleToStr(i,0)," / ",TimeToStr(now,TIME_SECONDS));
 
   return(0);
  }
индикатор 456
int start()
  {
    
   int i;
   datetime now;
   now=TimeLocal();
   for (i=1;i<10;i++)Print("indicator : ",DoubleToStr(i,0)," / ",TimeToStr(now,TIME_SECONDS));
 
  
   return(0);
  }
потом закрыть и заново запустить терминал,то имеем, что однозначно запись в журнал первым делает индикатор :)
Файлы:
log.txt  10 kb
 
В индикаторе и в советнике реализована одна логика, они дублируют друг друга, для подстраховки, но процессоры не тянут.
Вот и решил, а не оставить ли работать алгоритм только в индикаторе, и данные по необходимости скармливать в советник.
 
Debugger >>:
В индикаторе и в советнике реализована одна логика, они дублируют друг друга, для подстраховки, но процессоры не тянут.
Вот и решил, а не оставить ли работать алгоритм только в индикаторе, и данные по необходимости скармливать в советник.

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

 
Попробую.
 
а если продолжить мысль про оптимизацию, то mql является интерпретатором, а значит от него ждать производительности не стоит, но mql может подключать dll, а значит ......
:)
Причина обращения: