MQL5 vs V8 - страница 3

 
Renat >>:

По скорости исполнения MQL5 вплотную приблизился к C/C++. Скоро начнем публиковать тесты производительности.

Написал тестер-оптимизатор своей системы (не универсальный) на C/C++. Тестер основан на целочисленном представлении цены, соответстенно граблей со сравнением цен нет.

Выигрышь по сравнению с MQL4 в 180 раз:

MQL4 время расчета 6 часов, скорость ~ 180 000 баров в секунду.

C/C++ время расчета 2 минуты, скорость ~ 33 000 000 баров в секунду.

 
BARS >>:

Путина боятся, - в сортир не ходить !
...


Давайте будем немного сдержанней.

 
mql4com >>:

Написал тестер-оптимизатор своей системы (не универсальный) на C/C++. Тестер основан на целочисленном представлении цены, соответстенно граблей со сравнением цен нет.

Выигрышь по сравнению с MQL4 в 180 раз:

MQL4 время расчета 6 часов, скорость ~ 180 000 баров в секунду.

C/C++ время расчета 2 минуты, скорость ~ 33 000 000 баров в секунду.

Первое - сколько Вы писали свой тестер? Две минуты?

Второе. Сколько потребуется времени, чтобы переделать его на тестирование второй системы? Третьей системы? И так далее.

Третье. Сколько проверок в нем реализовано? Нехватка денег на открытие сделки, покупка по Bid', значения индикатора с другого таймфрейма и символа, и так далее.

 

Программистам легко все проверить. Давайте сравним скорости MQL4, Java Script (IE 7), Java Script (FF 3) и Java Script (V8):

  • описание условий теста и результаты тестирования здесь
  • новые результаты:

    MQL4
    Java Script (IE 7)
    Java Script (FireFox 3.0)
    Java Script (V8, Google Chrome)
    672 ms
    27 708 ms (фантастический тормоз)
    7 306 ms
    3 224 ms

Пример на Java Script (поправьте, если я где-то ошибся):

<html><head><meta http-equiv="Content-Type" content="text/html;"></head>

<body>
<script type="text/javascript">

   var res_int=0,i,start_time;
   var res_double=0;
//---
   start_time=new Date()

   for(i=0;i<=10000000;i++)
     {
      res_int+=i*i;
      res_int++;
      res_double+=i*i;
      res_double++;
     } 
   start_time=new Date()-start_time;
//---
   document.write("Time: "+start_time+" ms, ResInt= "+res_int+" ResDouble= "+res_double);

</script>
</body></html>


Кто-нибудь (кроме конкурентов) хочет, чтобы в терминале был язык в 5 (пять) раз медленнее MQL4? Думаю, нет.


А MQL5 в 20 (ДВАДЦАТЬ!!!) раз быстрее MQL4. Вот куда мы вкладываемся и вот чем занимаемся.

 
mql4com >>:

Написал тестер-оптимизатор своей системы (не универсальный) на C/C++. Тестер основан на целочисленном представлении цены, соответстенно граблей со сравнением цен нет.

Выигрышь по сравнению с MQL4 в 180 раз:

MQL4 время расчета 6 часов, скорость ~ 180 000 баров в секунду.

C/C++ время расчета 2 минуты, скорость ~ 33 000 000 баров в секунду.

Вы не первый такой тестерописатель с минимумом проверок.

Жаль только, что не раскроете код и не покажете, что тестер не расширяем, в нем нет массы торговых проверок, сбора статистики, GUI обвязки, не говоря уже об моделировании цен (тут Вы скажете, что Вам это не нужно) :)


ps: но вообще очень полезно самостоятельно писать тестеры - это дает более глубокое понимание проблем тестирования.

 

Rosh >>:

Первое - сколько Вы писали свой тестер? Две минуты?

Второе. Сколько потребуется времени, чтобы переделать его на тестирование второй системы? Третьей системы? И так далее.

Третье. Сколько проверок в нем реализовано? Нехватка денег на открытие сделки, покупка по Bid', значения индикатора с другого таймфрейма и символа, и так далее.

Rosh, вы бы не задали подобные вопросы, если бы прочли внимательнее мое сообщение выше: Написал тестер-оптимизатор своей системы (не универсальный) на C/C++.

Отвечу по пунктам:

1. Свой тестер писал несколько часов. Ядро системы, как логику, несколько дней (без исследовательской работы). Совершенствую саму систему больше года.

2. На переделку тестера под другую систему уйдет около часа.

3. Проверок в нем минимум. Поскольку тестирование идет прибыльности системы и все проверки, ее не касаемые, отсекаются.

Renat >>:

А MQL5 в 20 (ДВАДЦАТЬ!!!) раз быстрее MQL4. Вот куда мы вкладываемся и вот чем занимаемся.


Renat, вас понимаю, к чему эти оправдания?! Речь не об этом. Если кто-то хочет тестировать прибыльность логики своей системы, целесообразно написать ее на C/C++. На это должно уйти около суток, чтобы переписать это все с MQL4 на C/C++ и сделать тестер-оптимизатор. Дальнейшая же экономия времени колоссальная.

Проверял скорость по ценам открытия на MQL4 и на C/C++, чтобы было корректно. Сбор статистики веду в своем тестере такой же, как и тестер-оптимизатор MetaTrader.

Жертвой универсальноси MQL5 стала скорость: падение в 9 раз. Сложно сказать, какие проверки могут дать такое серьезное падение производительности. Возможно, отсутствие целочисленного представления цен и действий с ними...

 
Renat >>:


А MQL5 в 20 (ДВАДЦАТЬ!!!) раз быстрее MQL4. Вот куда мы вкладываемся и вот чем занимаемся.


Честно говоря скорость - это последнее что меня волновало. Если недостаточно производительности компьютера, то можно купить более быстрый, мало одно ядра купите двух-шести и более ядерный и N процессорный, можно перенести вычисления в графический процессор, на другие компьютеры. Есть куча других способов нарастить аппаратную производительность. 

Но! Только если язык позволяет вынести вычисления за рамки платформы с минимальными накладными издержками. Меня в большей мере беспокоят возможности языка, как такового. Придется ли опять придумывать всевозможные подпорки для конструкций, которые стали базовыми во многих других языках или по крайней мере существуют эффективные реализации - работа с регулярными выражениями, хэш таблицы, объекты/классы со свойствами и методами, исключения, передача неопределенного количества параметров в функции, приведение типов, перегрузка функций,  беспроблемный вызов системных и других внешних библиотек и прочее, прочее.

 
TedBeer >>:


Честно говоря скорость - это последнее что меня волновало. Если недостаточно производительности компьютера, то можно купить более быстрый, мало одно ядра купите двух-шести и более ядерный и N процессорный, можно перенести вычисления в графический процессор, на другие компьютеры. Есть куча других способов нарастить аппаратную производительность.

Нарастить функционал тоже есть способ.

Но! Только если язык позволяет вынести вычисления за рамки платформы с минимальными накладными издержками. Меня в большей мере беспокоят возможности языка, как такового. Придется ли опять придумывать всевозможные подпорки для конструкций, которые стали базовыми во многих других языках или по крайней мере существуют эффективные реализации -


работа с регулярными выражениями, хэш таблицы,

В MQL? Зачем?

объекты/классы со свойствами и методами, приведение типов, перегрузка функций,

Хочу...

исключения, передача неопределенного количества параметров в функции,

Можно обойтись

беспроблемный вызов системных и других внешних библиотек и прочее, прочее.

Ну и сейчас есть, не беспроблемный, но есть.


<added> Зашел посмотрел...

"V8 can run standalone, or can be embedded into any C++ application. "

В чем проблема? Встраивайте, делайте мост и пользуйте на здоровье.

 
TheXpert >>:

В MQL? Зачем?

Можно обойтись

Ну если сегодня ваши алгоритмы не требуют таких возможностей, до завтра вы до них дорастете.

 
TedBeer писал(а) >>

Честно говоря скорость - это последнее что меня волновало. Если недостаточно производительности компьютера, то можно купить более быстрый, мало одно ядра купите двух-шести и более ядерный и N процессорный, можно перенести вычисления в графический процессор, на другие компьютеры. Есть куча других способов нарастить аппаратную производительность.

Но! Только если язык позволяет вынести вычисления за рамки платформы с минимальными накладными издержками. Меня в большей мере беспокоят возможности языка, как такового. Придется ли опять придумывать всевозможные подпорки для конструкций, которые стали базовыми во многих других языках или по крайней мере существуют эффективные реализации - работа с регулярными выражениями, хэш таблицы, объекты/классы со свойствами и методами, исключения, передача неопределенного количества параметров в функции, приведение типов, перегрузка функций, беспроблемный вызов системных и других внешних библиотек и прочее, прочее.

to TedBeer

купи себе TradeStation !!!!