Ошибки, баги, вопросы - страница 2610

 
fxsaber:


Если запустить 5 советников - будут работать на одном ядре или пяти? Если на одном, то единственный способ - Агенты Тестера?

Каждый эксперт работает в своем собственном потоке.

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

 
SEM:

Получилось загрузить все ядра 1 советником, оперативной памяти требуется 3 Gb.

Взял скрипт BitonicSort.mq5 в примерах есть, переделал OnStart в OnInit

Пример во вложении

 

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

Если у Вас будет желание, было бы прекрасно продемонстрировать возможности OpenCL на нем. Там миллиарды независимых подзадач.

 
MetaQuotes Software Corp.:

Каждый эксперт работает в своем собственном потоке.

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

К сожалению, некомпетентен. Поэтому не в курсе, будут ли эти потоки распределяться одновременно между разными ядрами процессора.

 
Igor Makanu:

запустил Ваш код у себя

в диспетчере задач Windows у терминала было 19 потоков, после запуска Вашего кода добавился всего один поток диспетчере задач в колонке "потоки"

а как Вы проверяли?

как и предполагал, на Win10 планировщик задач по другому себя ведет, вот запустил код этот код, процессор на 100% нагрузился и планировщик задач начал блокировать его


Открыт 1 чистый график (без индикаторов). Был вопрос параллельных вычислений на всех ядрах или одном.

В результате советник может задействовать все ядра, все 8 ядер задействованы.


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2019.12.03 14:35

Не нашел поиском. Нужно распараллелить вычисления. Если запустить 5 советников - будут работать на одном ядре или пяти? Если на одном, то единственный способ - Агенты Тестера?


 
SEM:

Открыт 1 чистый график (без индикаторов). Был вопрос параллельных вычислений на всех ядрах или одном.

В результате советник может задействовать все ядра, все 8 ядер задействованы.



наверное Вы правы, прогуглил еще на тему потоки-ядра, один программный поток может в нескольких ядрах одновременно выполняться

в общем, тут я пасс, не в теме

 
fxsaber:

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

Если у Вас будет желание, было бы прекрасно продемонстрировать возможности OpenCL на нем. Там миллиарды независимых подзадач.

https://www.mql5.com/ru/blogs/post/731774

Research03: находим простые связи между движениями цены в разных частях суток
Research03: находим простые связи между движениями цены в разных частях суток
  • www.mql5.com
Как это не парадоксально, но именно при активной алготоровле много времени уходит на вглядывание в монитор. Иногда возникают иллюзии, будто что-то полезное уловил глазом. Так произошло и в этот раз. Давно была гипотеза, что какие-то движения внтури дня имеют связь с движениями после в этом же дне. Например, может показаться, что микрогепы в...
 
RickD:

В тестере нет папок и для экспертов. Но в случае тестирования эксперта MQLInfoString(MQL_PROGRAM_NAME) возвращает одинаковое значение.

А нужно мне одинаковое значение, чтобы связать тестируемую версию и версию на чарте с помощью именованных каналов.

Исправлено
 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".
 

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?


Дело в том, что при снятии советника намертво вешается Терминал. Нужно понять, в каком месте это происходит.

 
fxsaber:

В режиме отладки запускаю советник. Нужно сделать точку останова ровно в тот момент, когда руками сниму с чарта советник. Как это сделать?

написал такой код:

int OnInit()
  {
     if(IsStopped()) DeInitEA(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(IsStopped()) DeInitEA(2);

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(IsStopped()) DeInitEA(3);
  }
//+------------------------------------------------------------------+

void DeInitEA(const int callfunc)
{
   string s = "";
   switch (callfunc)
   {
      case 1: s = "OnInit"; break;
      case 2: s = "OnDeinit"; break;
      case 3: s = "OnTick"; break;
   }
   Print(s + " , остановка работы советника");
   
}

установил точку останова на string s = ""; - без проблем вернулся в МЕ, появились окна отладки, ну все как обычно