Для сравнения скорости расчета статистических функций были подготовлены скрипты для измерения времени расчета функций плотности (pdf), функций вероятности (cdf), функций расчета квантилей и функций генерации псевдослучайных чисел.
Вычисления производились на массиве из 51 значения, для непрерывных распределений расчет значений функций производился в диапазоне от 0 до 1, для дискретных от 0 до 50. Измерение времени расчета статистических функций языка R производилось при помощи библиотеки microbenchmark. Время расчета функций на MQL5 рассчитывалось при помощи функции GetMicrosecondCount(). Скрипт расчета TestStatBenchmark.mq5 можно найти в папке каталог_данных_терминала\MQL5\Scripts\UnitTests\Stat. Скрипт для R и результаты измерения скорости расчетов приведены в Приложении.
Расчеты производились на Intel Core i7-4790, CPU 3.6 Ghz, 16 GB RAM, Windows 10 x64.
Результаты измерения времени расчетов (в микросекундах):
№
Распределение
MQL5 время расчета PDF (мкс)
R время расчета PDF (мкс)
PDF R/MQL5
MQL5 время расчета CDF (мкс)
R время расчета CDF (мкс)
CDF R/MQL5
MQL5 время расчета квантилей (мкс)
R время расчета квантилей (мкс)
Quantile R/MQL5
MQL5 время генерации случайных чисел (мкс)
R время генерации случайных чисел (мкс)
Random R/MQL5
1
Binomial
4.39
11.663
2.657
13.65
25.316
1.855
50.18
66.845
1.332
318.73
1816.463
5.699
2
Beta
1.74
17.352
9.972
4.76
15.076
3.167
48.72
129.992
2.668
688.81
1723.45
2.502
3
Gamma
1.31
8.251
6.347
8.09
14.792
1.828
50.83
64.286
1.265
142.84
1281.707
8.973
4
Cauchy
0.45
1.423
3.162
1.33
15.078
11.34
1.37
2.845
2.077
224.19
588.517
2.625
5
Exponential
0.85
3.13
3.682
0.77
2.845
3.695
0.53
2.276
4.294
143.18
389.406
2.72
6
Uniform
0.42
2.561
6.098
0.45
1.423
3.162
0.18
2.846
15.81
40.3
247.467
6.141
7
Geometric
2.3
5.121
2.227
2.12
4.552
2.147
0.81
5.407
6.675
278
1078.045
3.879
8
Hypergeometric
1.85
11.095
5.997
0.9
8.819
9.799
0.75
9.957
13.28
302.55
880.356
2.91
9
Logistic
1.27
4.267
3.36
1.11
4.267
3.844
0.71
3.13
4.408
178.65
626.632
3.508
10
Weibull
2.99
5.69
1.903
2.74
4.268
1.558
2.64
6.828
2.586
536.37
1558.472
2.906
11
Poisson
2.91
5.974
2.053
6.26
8.534
1.363
3.43
13.085
3.815
153.59
303.219
1.974
12
F
3.86
10.241
2.653
9.94
22.472
2.261
65.47
135.396
2.068
1249.22
1801.955
1.442
13
Chi Square
2.47
5.974
2.419
7.71
13.37
1.734
44.11
61.725
1.399
210.24
1235.059
5.875
14
Noncentral ChiSquare
8.05
14.223
1.767
45.61
209.068
4.584
220.66
10342.96
46.873
744.45
1997.653
2.683
15
Noncentral F
19.1
28.446
1.489
14.67
46.935
3.199
212.21
2561.991
12.073
1848.9
2912.141
1.575
16
Noncentral Beta
16.3
26.739
1.64
10.48
43.237
4.126
153.66
2290.915
14.909
2686.82
2839.893
1.057
17
Negative Binomial
6.13
11.094
1.81
12.21
19.627
1.607
14.05
60.019
4.272
1130.39
1936.498
1.713
18
Normal
1.15
4.267
3.71
0.81
3.983
4.917
0.7
2.277
3.253
293.7
696.321
2.371
19
Lognormal
1.99
5.406
2.717
3.19
8.819
2.765
3.18
6.259
1.968
479.75
1269.761
2.647
20
T
2.32
11.663
5.027
8.01
19.059
2.379
50.23
58.596
1.167
951.58
1425.92
1.498
21
Noncentral T
38.47
86.757
2.255
27.75
39.823
1.435
1339.51
1930.524
1.441
1550.27
1699.84
1.096
<PDF R/MQL5>
3.474
<CDF R/MQL5>
3.465
<Quantile R/MQL5>
7.03
<Random R/MQL5>
3.13
Табл. 4. Время расчета статистических функций в R и MQL5 (в микросекундах)
Для R брались значения минимального времени, а для MQL5 брались средние значения (pdf_mean, cdf_mean, quantile_mean, random_mean).
Из таблицы видно, что даже при таких условиях расчет функций статистической библиотеки MQL5 производится в несколько раз быстрее R. В среднем MQL5 считает от 3 до 7 раз быстрее R даже с учетом того, что сравниваемые варианты функций R на самом деле написаны на C++.
На практике компилятор MQL5 языка оказался гораздо быстрее С++ реализаций функций в R, что показывает высокое качество наших разработок. При переносе программ из R на MQL5 можно получить серьезный прирост скорости и не нужно использовать сторонних DLL библиотек.
То же самое сделаем по отношению к Python/Numpy. Сейчас MQL5 в сотни раз быстрее Питона, но с вводом нативных матричных операций в основу языка, мы покажем потрясающую, кратно превосходящую скорость математики по сравнению со сторонними модулями Питона.
1) давно есть в виде штатных DatabaseXXX функций, даже броузер sqlite баз данных встроен в редактор, детальная статья про SQL в MQL5
2) весь вывод питон скриптов пишется в логи детально
3) это давно есть в виде отдельных решений и не относится к питоновской библиотеке. Я вопросы задавал про питоновскую связку. Вместо телеграма удобно использовать штатные пуши в мобильные телефоны
4) всегда было доступно
спасибо за подробный ответ, с DB я как то проглядел
клянусь я ржал целый день! Вы взяли три функции из миллионов что есть в R , сами придумали что они главные и переписали на мкл эти три функции.. И все!!! ))) Все вы переплюнули R!!! Ахаха ))) не могу извините...
А как же быть с тем что в R самая большая база любых стат. методов , для любых направлений тысячи библиотек.. Когда вы это переписывать будете ?
А как же полный список любых алгоритмов МО, сотни библиотек.. Когда вы это переписывать будете ?
А как же база CRAN на которой каждый день появляются самые новинки мировые, которые каждый хочет и может попробовать .. Когда вы это переписывать будете ? А главное ЗАЧЕМ?
А вы знаете что в R я могу одной строчкой кода заменить сотню мкл ?
Все что у вас есть в аргументах это скорость, скорость трех никому не нужных функций которые вы взяли в R
А вы знаете что в R можно написать любую функцию на с++ ?
Эхх , ладно... зачем я распинаюсь... все равно бес толку, вы уже все решили.. да и я тоже..
Об одном прошу - не пишите больше что " вы берете что то лучшее от R " вы не понимаете о чем вы говорите..
Даже если вы тысячу функций перепишете на мкл это не будет даже сотой процента того что есть в R, какой смысл заниматься этой дуристикой?
Почему не дать людям самим порт в этом мир статистики , машинного обучения , обработки сигналов, эконометрики и многого другого...
клянусь я ржал целый день! Вы взяли три функции из миллионов что есть в R , сами придумали что они главные и переписали на мкл эти три функции.. И все!!! ))) Все вы переплюнули R!!! Ахаха ))) не могу извините...
Мы взяли и переписали на чистом MQL5 около 500 встроенных функций R. Именно они и являются штатной математической основой системы R. А все остальное - сторонние пакеты.
Мы эти функции переписали быстрее и в исходниках распространяем в /include/math/stat. Это показывает качество нашего языка и наших разработчиков.
Выбор, кого и как поддерживать, мы сделали:
развивать MQL5
иметь интеграцию с Питоном
Когда вы бросаетесь вопросами и ржаками, рекомендую посмотреть на оппонента, который:
безостановочно пишет код уже 30 лет
потратил половину своей жизни на разработку 5 торговых платформ
создал, ведет и наполняет это трейдерское сообщество уже 15 лет
...поищите сами на досуге
Если пришли потреблять (ваших результатов тут никто не видел на публике), то ведите себя прилично и следите за речью.
Если пришли потреблять (ваших результатов тут никто не видел на публике), то ведите себя прилично и следите за речью.
Я ничего тут не потребляю, я просто общаюсь на форуме, если забаните то мне только лучше будет... так что...
А вот эти 500 функций что вы переписали, они мертвы ! в том смысле что они как линейка которой можно что то мерять, а вот это "что то" это как раз сторонние пакеты доступ к которым вы закрыли
Я ничего тут не потребляю, я просто общаюсь на форуме, если забаните то мне только лучше будет... так что...
А вот эти 500 функций что вы переписали, они мертвы ! в том смысле что они как линейка которой можно что то мерять, а вот это "что то" это как раз сторонние пакеты доступ к которым вы закрыли
Потребляете. И на этом сайте, и в R и других местах.
Но при этом еще и требуете "дай, а если не дал - мертво, ржака, закрыл доступ".
Попробуйте создавать и отдавать. Почувствуете уважение к чужому труду на основе своего.
Может есть смысл сделать нативную поддержку ZeroMQ?
Практического смысла нет.
Методов коммуникации и передачи данных достаточно:
пайпы
файлы
вебреквесты
сырые сокеты, включая TLS
DLL
У нас другая специализация - считать массивные/разнообразные данные и максимум работы делать внутри тестера. Тут любой выход за пределы убивает все.
На текущий момент для нас интеграция с Питоном - это кусочное решение для охвата экосистемы ML разработчиков.
Мы постоянно апгрейдим MQL5:
избавились от наследия 32 бит
заменили профайлер и отладчик, еще лучше сделаем
добавим максимально быстрые матричные/векторные операции, чтобы тяжелые расчеты можно было делать без библиотек
запустим MQL5 модули/пакеты на основе опенсорсных C/C++ библиотек
добавим еще нативные интеграции, как мы сделали с OpenCL, DirectX, SQLite
Мало сделать ML модель на стороне. Надо эту модель нативно, безопасно и защищенно загрузить в робота, чтобы его можно было:
прогнать в тестере
запустить в терминале
продать в маркете, не потеряв интеллектуальную собственность
Поэтому мы шаг за шагом увеличиваем возможности MQL5. Планируем использовать WinML + ONNX для загрузки моделей и родной отработки внутри платформы без единой сторонней привязки.
Методов коммуникации и передачи данных достаточно:
пайпы
файлы
вебреквесты
сырые сокеты, включая TLS
DLL
У нас другая специализация - считать массивные/разнообразные данные и максимум работы делать внутри тестера. Тут любой выход за пределы убивает все.
На текущий момент для нас интеграция с Питоном - это кусочное решение для охвата экосистемы ML разработчиков.
Мы постоянно апгрейдим MQL5:
избавились от наследия 32 бит
заменили профайлер и отладчик, еще лучше сделаем
добавим максимально быстрые матричные/векторные операции, чтобы тяжелые расчеты можно было делать без библиотек
запустим MQL5 модули/пакеты на основе опенсорсных C/C++ библиотек
добавим еще нативные интеграции, как мы сделали с OpenCL, DirectX, SQLite
Мало сделать ML модель на стороне. Надо эту модель нативно, безопасно и защищенно загрузить в робота, чтобы его можно было:
прогнать в тестере
запустить в терминале
продать в маркете, не потеряв интеллектуальную собственность
Поэтому мы шаг за шагом увеличиваем возможности MQL5. Планируем использовать WinML + ONNX для загрузки моделей и родной отработки внутри платформы без единой сторонней привязки.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
печально....
самый востребованый в мире продукт после матлаба для статистических вычислений, называть колхозом )))
уровень понятен, и где колхоз тоже...
Уровень показан тут: Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
Сравнение скорости расчетов
Для сравнения скорости расчета статистических функций были подготовлены скрипты для измерения времени расчета функций плотности (pdf), функций вероятности (cdf), функций расчета квантилей и функций генерации псевдослучайных чисел.
Вычисления производились на массиве из 51 значения, для непрерывных распределений расчет значений функций производился в диапазоне от 0 до 1, для дискретных от 0 до 50. Измерение времени расчета статистических функций языка R производилось при помощи библиотеки microbenchmark. Время расчета функций на MQL5 рассчитывалось при помощи функции GetMicrosecondCount(). Скрипт расчета TestStatBenchmark.mq5 можно найти в папке каталог_данных_терминала\MQL5\Scripts\UnitTests\Stat. Скрипт для R и результаты измерения скорости расчетов приведены в Приложении.
Расчеты производились на Intel Core i7-4790, CPU 3.6 Ghz, 16 GB RAM, Windows 10 x64.
Результаты измерения времени расчетов (в микросекундах):
расчета PDF (мкс)
расчета PDF (мкс)
R/MQL5
расчета CDF (мкс)
расчета CDF (мкс)
R/MQL5
квантилей (мкс)
квантилей (мкс)
R/MQL5
случайных чисел (мкс)
случайных чисел (мкс)
R/MQL5
Табл. 4. Время расчета статистических функций в R и MQL5 (в микросекундах)
Для R брались значения минимального времени, а для MQL5 брались средние значения (pdf_mean, cdf_mean, quantile_mean, random_mean).
Из таблицы видно, что даже при таких условиях расчет функций статистической библиотеки MQL5 производится в несколько раз быстрее R. В среднем MQL5 считает от 3 до 7 раз быстрее R даже с учетом того, что сравниваемые варианты функций R на самом деле написаны на C++.
На практике компилятор MQL5 языка оказался гораздо быстрее С++ реализаций функций в R, что показывает высокое качество наших разработок. При переносе программ из R на MQL5 можно получить серьезный прирост скорости и не нужно использовать сторонних DLL библиотек.
То же самое сделаем по отношению к Python/Numpy. Сейчас MQL5 в сотни раз быстрее Питона, но с вводом нативных матричных операций в основу языка, мы покажем потрясающую, кратно превосходящую скорость математики по сравнению со сторонними модулями Питона.
1) давно есть в виде штатных DatabaseXXX функций, даже броузер sqlite баз данных встроен в редактор, детальная статья про SQL в MQL5
2) весь вывод питон скриптов пишется в логи детально
3) это давно есть в виде отдельных решений и не относится к питоновской библиотеке. Я вопросы задавал про питоновскую связку. Вместо телеграма удобно использовать штатные пуши в мобильные телефоны
4) всегда было доступно
Уровень показан тут: Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее
Скорость это хорошо, но далеко не определяющее
Когда вы назвали свою статью "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"
клянусь я ржал целый день! Вы взяли три функции из миллионов что есть в R , сами придумали что они главные и переписали на мкл эти три функции.. И все!!! ))) Все вы переплюнули R!!! Ахаха ))) не могу извините...
А как же быть с тем что в R самая большая база любых стат. методов , для любых направлений тысячи библиотек.. Когда вы это переписывать будете ?
А как же полный список любых алгоритмов МО, сотни библиотек.. Когда вы это переписывать будете ?
А как же база CRAN на которой каждый день появляются самые новинки мировые, которые каждый хочет и может попробовать .. Когда вы это переписывать будете ? А главное ЗАЧЕМ?
А вы знаете что в R я могу одной строчкой кода заменить сотню мкл ?
Все что у вас есть в аргументах это скорость, скорость трех никому не нужных функций которые вы взяли в R
А вы знаете что в R можно написать любую функцию на с++ ?
Эхх , ладно... зачем я распинаюсь... все равно бес толку, вы уже все решили.. да и я тоже..
Об одном прошу - не пишите больше что " вы берете что то лучшее от R " вы не понимаете о чем вы говорите..
Даже если вы тысячу функций перепишете на мкл это не будет даже сотой процента того что есть в R, какой смысл заниматься этой дуристикой?
Почему не дать людям самим порт в этом мир статистики , машинного обучения , обработки сигналов, эконометрики и многого другого...
Скорость это хорошо, но далеко не определяющее
Когда вы назвали свою статью "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"
клянусь я ржал целый день! Вы взяли три функции из миллионов что есть в R , сами придумали что они главные и переписали на мкл эти три функции.. И все!!! ))) Все вы переплюнули R!!! Ахаха ))) не могу извините...
Мы взяли и переписали на чистом MQL5 около 500 встроенных функций R. Именно они и являются штатной математической основой системы R. А все остальное - сторонние пакеты.
Мы эти функции переписали быстрее и в исходниках распространяем в /include/math/stat. Это показывает качество нашего языка и наших разработчиков.
Выбор, кого и как поддерживать, мы сделали:
Когда вы бросаетесь вопросами и ржаками, рекомендую посмотреть на оппонента, который:
Если пришли потреблять (ваших результатов тут никто не видел на публике), то ведите себя прилично и следите за речью.
Я ничего тут не потребляю, я просто общаюсь на форуме, если забаните то мне только лучше будет... так что...
А вот эти 500 функций что вы переписали, они мертвы ! в том смысле что они как линейка которой можно что то мерять, а вот это "что то" это как раз сторонние пакеты доступ к которым вы закрыли
Может есть смысл сделать нативную поддержку ZeroMQ?
Я ничего тут не потребляю, я просто общаюсь на форуме, если забаните то мне только лучше будет... так что...
А вот эти 500 функций что вы переписали, они мертвы ! в том смысле что они как линейка которой можно что то мерять, а вот это "что то" это как раз сторонние пакеты доступ к которым вы закрыли
Потребляете. И на этом сайте, и в R и других местах.
Но при этом еще и требуете "дай, а если не дал - мертво, ржака, закрыл доступ".
Попробуйте создавать и отдавать. Почувствуете уважение к чужому труду на основе своего.
Потребляете. И на этом сайте, и в R и других местах.
Но при этом еще и требуете "дай, а если не дал - мертво, ржака, закрыл доступ".
Попробуйте создавать и отдавать. Почувствуете уважение к чужому труду на основе своего.
пожалуй вы правы..
Может есть смысл сделать нативную поддержку ZeroMQ?
Практического смысла нет.
Методов коммуникации и передачи данных достаточно:
У нас другая специализация - считать массивные/разнообразные данные и максимум работы делать внутри тестера. Тут любой выход за пределы убивает все.
На текущий момент для нас интеграция с Питоном - это кусочное решение для охвата экосистемы ML разработчиков.
Мы постоянно апгрейдим MQL5:
Мало сделать ML модель на стороне. Надо эту модель нативно, безопасно и защищенно загрузить в робота, чтобы его можно было:
Поэтому мы шаг за шагом увеличиваем возможности MQL5. Планируем использовать WinML + ONNX для загрузки моделей и родной отработки внутри платформы без единой сторонней привязки.
Практического смысла нет.
Методов коммуникации и передачи данных достаточно:
У нас другая специализация - считать массивные/разнообразные данные и максимум работы делать внутри тестера. Тут любой выход за пределы убивает все.
На текущий момент для нас интеграция с Питоном - это кусочное решение для охвата экосистемы ML разработчиков.
Мы постоянно апгрейдим MQL5:
Мало сделать ML модель на стороне. Надо эту модель нативно, безопасно и защищенно загрузить в робота, чтобы его можно было:
Поэтому мы шаг за шагом увеличиваем возможности MQL5. Планируем использовать WinML + ONNX для загрузки моделей и родной отработки внутри платформы без единой сторонней привязки.
Спасибо за развернутый ответ