У кого мощное железо? Помогите протестировать код.

 

Написал такой код. Суть в следующем. Обработать данные с помощью индикаторов и записать полученный сигнал в файл. 5-6 инструментов тянет нормально, но мне надо что бы обрабатывал все инструменты. Как я только запускаю на всех, а их 135, сервер Альпари. Комп впадает в глубокую спячку. Данные моей машины следующие

Может кто подскажет как лучше сделать, что бы нормально обрабатывал все инструменты. Очень буду благодарен за помощь

Файлы:
y3ez21s.mq5  8 kb
 

135..... туда ли плывете?)

 
Makser:

135..... туда ли плывете?)

В смысле туда ли? 135 инструментов на сколько я знаю это не так уж и много. Но мне надо еще и каждый ТФ обработать на каждом инструменте, их 21 итого  надо получить  135*21=2835 сигналов
 

а смысл 60 раз в минуту проверять цену закрытия? (минутный таймфрейм)

код оптимизировать не пробовали? 

         BB_handle[i][n]=iBands(SymbolName(i,true),TF(n),90,0,2,PRICE_CLOSE);
         RSI_handle[i][n]=iRSI(SymbolName(i,true),TF(n),14,PRICE_CLOSE);
         MACD_handle[i][n]=iMACD(SymbolName(i,true),TF(n),12,26,9,PRICE_CLOSE);
         ST_handle[i][n]=iStochastic(SymbolName(i,true),TF(n),5,3,3,MODE_SMA,STO_LOWHIGH); 

а если взять старшие таймфремы? вы цену закрытия дневки в холостую гоняете...
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Konstantin83:

а смысл 60 раз в минуту проверять цену закрытия? (минутный таймфрейм)

код оптимизировать не пробовали? 

         BB_handle[i][n]=iBands(SymbolName(i,true),TF(n),90,0,2,PRICE_CLOSE);
         RSI_handle[i][n]=iRSI(SymbolName(i,true),TF(n),14,PRICE_CLOSE);
         MACD_handle[i][n]=iMACD(SymbolName(i,true),TF(n),12,26,9,PRICE_CLOSE);
         ST_handle[i][n]=iStochastic(SymbolName(i,true),TF(n),5,3,3,MODE_SMA,STO_LOWHIGH); 

а если взять старшие таймфремы? вы цену закрытия дневки в холостую гоняете...
где вы тут увидели проверку цены закрытия, это код создания хендлов индикаторов и записи их в массивы, запись проводиться один раз при запуске советника.
 

Излишни, на мой взгляд, использовать все ТФ. Возьмите вместо 21 только 9 основных (которые были в МТ4).

Символы же, на мой взгляд, следует разделить по определенному признаку (к примеру Forex, Металлы, Акции) и запустить несколько совтников на разных графиках.

Совместно с записью в разные файлы это обеспечит определенную "многопоточность" и распределит (по идеи) нагрузку на CPU.

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


 
Interesting:

Излишни, на мой взгляд, использовать все ТФ. Возьмите вместо 21 только 9 основных (которые были в МТ4).

Символы же, на мой взгляд, следует разделить по определенному признаку (к примеру Forex, Металлы, Акции) и запустить несколько совтников на разных графиках.

Совместно с записью в разные файлы это обеспечит определенную "многопоточность" и распределит (по идеи) нагрузку на CPU.

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


Спасибо за советы. Вот только с DLL я пока не знаком, Да и ООП еще не освоил.

На 9 основных у меня в МТ4 советники сделаны. Я хочу попробовать передавать с 21 ТФ сигналы с МТ5 в МТ4.

 
sergey1294:

Спасибо за советы. Вот только с DLL я пока не знаком, Да и ООП еще не освоил.

На 9 основных у меня в МТ4 советники сделаны. Я хочу попробовать передавать с 21 ТФ сигналы с МТ5 в МТ4.

Конечно, все будет зависеть от логики советника, но лично мне кажется сигналы с 21 ТФ будут дублироваться (такой поток данных окажется излишним).

На счет распределения нагрузки на CPU в MQL есть интересная статья - Параллельные вычисления в MetaTrader 5 штатными средствами

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

С DLL конечно будет все немного сложней (по крайней мере иным с точки зрения профессионального подхода к многопоточности), но зато все будет интересней и находиться в одном "флаконе".

PS

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

Также часть работы можно передать индикаторам, по возможности конечно.

 
Interesting:

Конечно, все будет зависеть от логики советника, но лично мне кажется сигналы с 21 ТФ будут дублироваться (такой поток данных окажется излишним).

На счет распределения нагрузки на CPU в MQL есть интересная статья - Параллельные вычисления в MetaTrader 5 штатными средствами

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

С DLL конечно будет все немного сложней (по крайней мере иным с точки зрения профессионального подхода к многопоточности), но зато все будет интересней и находиться в одном "флаконе".

PS

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

Также часть работы можно передать индикаторам, по возможности конечно.

Там код то по сути простой, просто один цикл вложен в другой и все, скорее всего нагрузка сильная идет из-за большого числа индикаторов. Всего получается запускается 21*4*135=11340 индикаторов, видимо они и грузят сильно процессор.
 

Есть статья Параллельные вычисления в MetaTrader 5 штатными средствами там как раз рассматривается вариант многопоточных вычислений с помощью индикаторов.

Железо откровенно слабое. Если не ошибаюсь eMachines - это нетбук. На таком железе даже полноценно Windows XP гонять нельзя, а вы хотите 11 340 индикаторов. Если занимаетесь серьезными вычислениями, то ваш выбор однозначен - мощный midi-tower сервер на базе последних камней Intel или AMD. Например шестиядерный Phenom II будет очень хорош. По моему опыту гонять ресурсоемкие вычисления на маломощных камнях - ужас. У меня индивидульный сервер на базе маломощного Atom N-510 и более быстрый AMD Phenom x3 710. Так вот, разница в производительности раз в 8! Пока Atom на своих "четырех" ядрах просчитает 4 прогона, АМД сделает их штук 30-35.  

 
C-4:

Есть статья Параллельные вычисления в MetaTrader 5 штатными средствами там как раз рассматривается вариант многопоточных вычислений с помощью индикаторов.

Железо откровенно слабое. Если не ошибаюсь eMachines - это нетбук. На таком железе даже полноценно Windows XP гонять нельзя, а вы хотите 11 340 индикаторов. Если занимаетесь серьезными вычислениями, то ваш выбор однозначен - мощный midi-tower сервер на базе последних камней Intel или AMD. Например шестиядерный Phenom II будет очень хорош. По моему опыту гонять ресурсоемкие вычисления на маломощных камнях - ужас. У меня индивидульный сервер на базе маломощного Atom N-510 и более быстрый AMD Phenom x3 710. Так вот, разница в производительности раз в 8! Пока Atom на своих "четырех" ядрах просчитает 4 прогона, АМД сделает их штук 30-35.  

Для бюджетного ноутбука (не нетбука) нормально.

А "мощный midi-tower" брать с собой не очень удобно, даже в грузовике. ;)