Возможности МТ4 или компа очень ограничены оказывается. Если задать в алгоритме многоуровневые циклы с "тяжелыми" математическими формулами - то компьютер зависает..... - страница 2

 

Ihor Herasko:

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

Алексей Тарабанов:

Понравилось 

Тут можно: 

1. Воспользоваться профайлером МТ, хотя он в зародышевом состоянии.

2. Оптимизировать код в VS на С++ проекте - там профайлеры что надо. Перенос MQL -> C++проблем не вызовет.

3. Вынести все в DLL, которую компилировать на Intel Parallel Studio 2016

 
MetaQuotes Software Corp.:

Это в корне ошибочное утверждение.

Все наши программы с 2000 года эффективно используют многоядерность. В то же время, оптимизатор статегий в MetaTrader 4 однопотоковый по своей архитектуре. Если нужен многопотоковы/сетевой/облачный оптимизатор торговых стратегий, то используйте MetaTrader 5.

А разве не одно ядро максимум использует MT4? У меня так, даже при торговле.
 
Alexey Volchanskiy:

...

3. Вынести все в DLL, которую компилировать на Intel Parallel Studio 2016

Зачем?
 
Пока сколько случаев встречалось с этими "невероятно тяжелыми" индикаторами, во всех случаях проблема решалась оптимизацией алгоритма. 
 
Dmitry Fedoseev:
Зачем?
Для оптимизации скорости, едреныть. 
 
Алексей Тарабанов:
Для оптимизации скорости, едреныть. 

Очень похоже на анекдот:

- Студент, как работает трансформатор? 

- Уууууууууууууууууууууууууууууууууууу...

 
Dmitry Fedoseev:

Очень похоже на анекдот:

- Студент, как работает трансформатор? 

- Уууууууууууууууууууууууууууууууууууу...

Так и работает :) 

 
Alexey Volchanskiy:

...

Вообще, MQ заявляют, что в МТ4 каждый советник работает в своем потоке. Проверить это крайне легко, задача на 5 минут, сейчас тест выложу. Самому стало интересно. 

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

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

1. Запустите на одном чарте

2. Потом на втором и так далее

3. Смотрите вывод в закладке Эксперты 

4. Выключите все советники, кроме одного. Время такое же, как в начале? 

Ну и посмотрите на загрузку ядер.

Код (готовый советник скачайте внизу страницы)

extern long num_steps   = 1000000;  // Число циклов вычисления Пи
extern int  ind_steps   = 500;      // Число прогонов для индикации

ulong SumTime = 0;

void OnTick()
{
    ulong dtStart, dtStop;
    static int indCount = 0;
    static ulong count = 0;
    double step;
    double x, pi, sum = 0.0;
    int i;
    while(!IsStopped())
    {
        dtStart = GetMicrosecondCount();
        step = 1./(double)num_steps;
        for (i=0; i < num_steps; i++)
        {
            x = (i + .5)*step;
            sum = sum + 4.0/(1.+ x*x);
        }
        pi = sum*step;
        count++;
        dtStop = GetMicrosecondCount();
        SumTime += dtStop - dtStart;
        if(indCount++ > ind_steps)
        {
            ulong t = SumTime / count;
            printf("Время выполнения цикла %u мкс\n", t);
            indCount = 0;
        }
    }    
}
Файлы:
 
Alexey Volchanskiy:

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

Тот же код без изменений можно запустить на МТ5, надо только файл переименовать, вот переименованный
Файлы:
 
MetaQuotes Software Corp.:

Это в корне ошибочное утверждение.

Все наши программы с 2000 года эффективно используют многоядерность. В то же время, оптимизатор статегий в MetaTrader 4 однопотоковый по своей архитектуре. Если нужен многопотоковы/сетевой/облачный оптимизатор торговых стратегий, то используйте MetaTrader 5.

Как использовать, если пишу на мкл4?!
Причина обращения: