Новая версия MetaTrader 4 Client Terminal build 419 - страница 11

 
vladds:

скажите пожалуйсто! может зделать програмно? чтобы пропуски от брокеров выставлялись пустые свечи другого цвета, означающие что брокер пропустил котировку!

это просто сегодня все биржи и банки отдыхают

котировки редко приходят

 
smshev:

это просто сегодня все биржи и банки отдыхают

котировки редко приходят


ну я так про это говорю! нет котировок а мт4 или мт5 программно сделает свечу другого цвета или даже другой формы! для чего? для того чтобы можно было бы рассчитать цикличные линии!
 

Только что обнаружил, косяк в массивах с инициализацией, проверил на билдах 409 и 419

#property copyright "Alexey Volchanskiy"
#property link      "http://robo-forex.ru"

double arr[] = {1, 2 3 4 5}; // пропуск запятых
int start()
{
   Print(ArraySize(arr)); // печатает 2
   Print(arr[0], "   ", arr[1]); // печатает 1   5   
   return(0);
}

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

 

Заодно уж проверил быстродействие на цифровом фильтре, ускорение на 419-м билде по сравнению с 409 составляет 6.5%

Фильтр на 168 коэффициентов, фильтруются 6000000 чисел, вот результаты


Ради хохмы запустил тот же фильтр на Visual Studio 2010, вот вам результаты. Разумеется, все по честному, SSE и многопросессорность отключены. Так как вместо 49 секунд тест выполнялся менее секунды )), количество чисел для фильтрации увеличил в 10 раз


Итого имеем разницу в скорости на простейшей математике 51,7 раз! Процессор i5-2320 3.2 ГГц

Прилагаю тесты в исходниках и exe для VS2010, проверьте сами

Файлы:
tests.zip  43 kb
 
Что то изменилось в командах (добавили новые, убрали старые) ? експерт не работает, хотя ошибок компиляции нет, нормально устанавливается, терминал показывает что эксперт запущен, в меню настроек заходит, только такое впечатление что отключен, исходник есть, на 418 нормально работает.
 
VDev:

Заодно уж проверил быстродействие на цифровом фильтре, ускорение на 419-м билде по сравнению с 409 составляет 6.5%

Фильтр на 168 коэффициентов, фильтруются 6000000 чисел, вот результаты

Предложенный код содержал ошибки и неточности:

  1. 164 коэффициента в C++ и 168 в MQL4
  2. В MQL4 счетчик multCount бы переполнялся (9 млрд, а счетчик int), если поднять расчет в 10 раз, как в C++
  3. счетчик asize в MQL4 являлся чистой переменной, а в C++ за счет констатного определения "asize=COEFF_SIZE;" цикл упрощался

После исправления код MQL4, MQL5 и C++ стал одинаковым. Файлы приложены.

Мои тесты на i7-2600, Windows 7 x64:

  1. VS2010 (exe файл из примера выше) - 8.27 секунд

    Processed 60000000 ticks,  calculated 9840000000 base filtering operations
    The time to calculate=  8.273000 seconds, Ticks per second = 7252508.159072,  
    base filtering operations per second = 1189411338.087755
  2. MQL5 (619 билд, x64) - 45 сек
    Всего обработано 60000000 тиков,   сделано 9840000000 умножений с суммированием
    Затрачено времени 45 секунд,  скорость 1333333 тиков в секунду,    
    218666666 базовых операций фильтрации в сек.
    

  3. MQL4 (419 билд) - 430 сек (с учетом необходимого увеличения 43 сек в 10 раз)
    Всего обработано 6000000 тиков,   сделано 984000000 умножений с суммированием
    Затрачено времени 43 секунд,  скорость 139534 тиков в секунду,    
    22883720 базовых операций фильтрации в сек.
    

График производительности (чем меньше, тем лучше):


Видно, что MQL5 отстает от С++ где-то в 5 раз, MQL4 от C++ в 50 раз, а MQL4 от MQL5 в 10 раз.

Оптимизация кода в MQL5 еще не завершена - мы можем кратно увеличить его скорость.

Файлы:
 
BeerGod:
Что то изменилось в командах (добавили новые, убрали старые) ? експерт не работает, хотя ошибок компиляции нет, нормально устанавливается, терминал показывает что эксперт запущен, в меню настроек заходит, только такое впечатление что отключен, исходник есть, на 418 нормально работает.
Обратитесь в сервисдеск вместе с исходником, пожалуйста.
 
Renat:

Предложенный код содержал ошибки и неточности:

  1. 164 коэффициента в C++ и 168 в MQL4
  2. В MQL4 счетчик multCount бы переполнялся (9 млрд, а счетчик int), если поднять расчет в 10 раз, как в C++
  3. счетчик asize в MQL4 являлся чистой переменной, а в C++ за счет констатного определения "asize=COEFF_SIZE;" цикл упрощался

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

1. Это я пытался развернуть циклы в МТ4 по 14 сложений+умножений подряд, дополнил коэффициенты нулями справа и слева. А в MSVC забыл перенести изменения. Но разница небольшая. Кстати, на МТ4 при раскрутке циклов по 14*12==168 скорость выигрывает около 5%.

Просто я не мог понять, отчего такие жуткие тормоза, думал, может, у вас в циклах проблемы, решил проверить. Дали бы код из дизассемблера, в студии 2008 это делается на автомате. Ну правда интересно, где можно ТАК тормозить. Вы можете прислать мне дизассемблированный код этого примера? Обещаю при всех трейдерах этого сайта не разглашать и не комментировать присланный код.

2. Именно поэтому я и сделал в проекте VS 2010 тип _int64, иначе, конечно, будет переполнение

3. Смотрим в ассемблер и видим, что разницы нет. Конечно, я говорю про ассемблер от MS, ваша реализация закрыта от общественности.

 

VDev:

Дали бы код из дизассемблера, в студии 2008 это делается на автомате. Ну правда интересно, где можно ТАК тормозить. Вы можете прислать мне дизассемблированный код этого примера? Обещаю при всех трейдерах этого сайта не разглашать и не комментировать присланный код.


А не то скомпилирую на Intel Parallel Studio XE11 под все 4 ядра и злостно выложу в Ынтернет)) Да и еще IPP для вредности присобачу)) Лучше соглашайтесь!
 

Т.е. менялся с 1.3118 на 1.3128, а не на 1.3119

Как то первый раз с таким сталкиваюсь

Это глюк ДЦ?

Причина обращения: