Новая версия платформы MetaTrader 5 build 4730: расширение поддержки OpenBLAS и общая оптимизация работы - страница 2

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2024.11.27 16:57

Волшебство.

Убираем в исходнике (см. вложение) эту строку.

   Print((string)t[ArrayMinimum(t)] + " - " + (string)t[ArrayMaximum(t)]);


Compiler Version: 4699 AVX, optimization - true
Intel Core i7-2700K  @ 3.50GHz, AVX
Without hours (dt.hour+ dt.min+ dt.sec - off), random datetimes[].
TimeToCalendar's magic
 7.91 ns, checksum = 1238992342013450   // TimeToStruct2100
 7.62 ns, checksum = 1238992342013450   // TimeToStructFast
 7.79 ns, checksum = 1238992342013450   // TimeToStructFast_fxsaber
 4.02 ns, checksum = 1238992342013450   // TimeToCalendar
 6.87 ns, checksum = 1238992342013450   // TimeToJulian
38.02 ns, checksum = 1238992342013450  /// MQL's TimeToStruct()

Compiler Version: 4699 AVX, optimization - true
Intel Core i7-2700K  @ 3.50GHz, AVX
Without hours (dt.hour+ dt.min+ dt.sec - off), not random datetimes[].
TimeToCalendar's magic
 7.29 ns, checksum = 706253275674880   // TimeToStruct2100
 7.60 ns, checksum = 706253275674880   // TimeToStructFast
 6.59 ns, checksum = 706253275674880   // TimeToStructFast_fxsaber
 4.00 ns, checksum = 706253275674880   // TimeToCalendar
 6.80 ns, checksum = 706253275674880   // TimeToJulian
 5.69 ns, checksum = 706253275674880  /// MQL's TimeToStruct()


TimeToCalendar в AVX-компиляторе очень сильно опережает любые другие реализации.

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

Строка для поиска: Uluchshenie 105.
 
fxsaber #:

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

Строка для поиска: Uluchshenie 105.

а это совсем не безобидная строка ;-)

в ней преобразование в string, конкатенация,поиск в массиве и вывод в журнал..каждое по отдельности может втормозить, а уж вместе тем более. И кеши они срывают, конвееры прерывают. 

 
Maxim Kuznetsov #:

а это совсем не безобидная строка ;-)

Скорее всего, не смотрели исходник.
 
fxsaber #:

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

Если ее не удалять, а сделать невызываемой, то ускорения не будет. Т.е. ускорение достигается не за счет отсутствия вызова этой строки, а за счет генерации другого кода компилятором, когда этой строки нет в самом исходнике.

 

Пожалуйста, уберите лишние подсказки в Metaeditor.

https://www.mql5.com/ru/forum/1111/page3595#comment_55261383

К случаям, упомянутым в посте по ссылке выше, можно добавить объявление переменных тоже. Я думаю, смысл вы поняли, вам там виднее.

 
Forester #:

Demo MQ. По прежнему в тестере берется *3 своп 2 раза в неделю

https://www.mql5.com/ru/forum/474452#comment_54821872

3 свопа за вторник-среду и 3 свопа за среду-четверг.


Разве это правильно?

Bild 4709. Что-то со свопами поменялось, но по прежнему за эти 2 дня берется *6 своп. Хотя если тестировать отдельно каждый день, то все норм, а если за несколько дней - нет.

А в целом объем свопов увеличился в тесте за 6 лет. Проанализировал логи. Оказалось, что вместо *3 свопа берется *5 при переходе со среды на четверг.

По Buy все дни берет по 1 свопу, а 2024-05-16 5 свопов:


Отчеты Тестера не показываю длительность сделок. Вот те же сделки из нормального отчета: (видно, что позиция жила менее 1 дня, а не 3-5 дней)

N Ticket Magic OpenTime CloseTime LengthTime TurnOver Symbol Type Lots OpenPrice StopLoss TakeProfit ClosePrice Commission Swap Profit Comment Pips Slippage Balance
10215 20429 100010213 2024.05.14 15:32:01.414 2024.05.15 15:39:23.065 1d 00:07:21.651 216 369.00 EURUSD sell 1.00 1.07876

1.08493
-1.00 (-1.00) -617.00
-617
1 000 003 160.10
10216 20431 100010214 2024.05.15 15:39:23.065 2024.05.15 17:35:10.165 01:55:47.100 217 012.00 EURUSD buy 1.00 1.08493

1.08519

26.00
26
1 000 003 186.10
10217 20433 100010215 2024.05.15 17:35:10.165 2024.05.16 09:53:07.627 16:17:57.462 217 268.00 EURUSD sell 1.00 1.08519

1.08749
-5.00 (-5.00) -230.00
-230
1 000 002 951.10
10218 20435 100010216 2024.05.16 09:53:07.627 2024.05.16 18:54:55.050 09:01:47.423 217 493.00 EURUSD buy 1.00 1.08749

1.08744

-5.00
-5
1 000 002 946.10
10219 20437 100010217 2024.05.16 18:54:55.050 2024.05.17 05:30:04.085 10:35:09.035 217 299.00 EURUSD sell 1.00 1.08744

1.08555
-1.00 (-1.00) 189.00
189
1 000 003 134.10

По Sell все дни берет по 1 свопу = 0.7, а 2024-05-23 5 свопов:


Нормальный отчет:

N Ticket Magic OpenTime CloseTime LengthTime TurnOver Symbol Type Lots OpenPrice StopLoss TakeProfit ClosePrice Commission Swap Profit Comment Pips Slippage Balance
10227 20453 100010225 2024.05.22 18:45:32.718 2024.05.22 21:18:03.612 02:32:30.894 216 691.00 EURUSD sell 1.00 1.08425

1.08266

159.00
159
1 000 003 702.70
10228 20455 100010226 2024.05.22 21:18:03.612 2024.05.23 10:30:01.150 13:11:57.538 216 590.00 EURUSD buy 1.00 1.08266

1.08324
-3.50 (-3.50) 58.00
58
1 000 003 757.20
10229 20457 100010227 2024.05.23 10:30:01.150 2024.05.23 16:45:00.415 06:14:59.265 216 696.00 EURUSD sell 1.00 1.08324

1.08372

-48.00
-48
1 000 003 709.20
10230 20459 100010228 2024.05.23 16:45:00.415 2024.05.24 10:52:53.487 18:07:53.072 216 619.00 EURUSD buy 1.00 1.08372

1.08247
-0.70 (-0.70) -125.00
-125
1 000 003 583.50
10231 20461 100010229 2024.05.24 10:52:53.487 2024.05.27 15:03:41.301 3d 04:10:47.814 216 720.00 EURUSD sell 1.00 1.08247

1.08473
-1.00 (-1.00) -226.00
-226
1 000 003 356.50

Тестирование проделанной работы видимо в MQ отсутствует... в предыдущий раз то же самое было. Исправили исправленное, которое опять исправлять надо /

 
Forester #:
Bild 4709. Что-то со свопами поменялось, но по прежнему за эти 2 дня берется *6 своп. Хотя если тестировать отдельно каждый день, то все норм, а если за несколько дней - нет.

А в целом объем свопов увеличился в тесте за 6 лет. Проанализировал логи. Оказалось, что вместо *3 свопа берется *5 при переходе со среды на четверг.

По Buy все дни берет по 1 свопу, а 2024-05-16 5 свопов:


Отчеты Тестера не показываю длительность сделок. Вот те же сделки из нормального отчета: (видно, что позиция жила менее 1 дня, а не 3-5 дней)

N Ticket Magic OpenTime CloseTime LengthTime TurnOver Symbol Type Lots OpenPrice StopLoss TakeProfit ClosePrice Commission Swap Profit Comment Pips Slippage Balance
10215 20429 100010213 2024.05.14 15:32:01.414 2024.05.15 15:39:23.065 1d 00:07:21.651 216 369.00 EURUSD sell 1.00 1.07876

1.08493
-1.00 (-1.00) -617.00
-617
1 000 003 160.10
10216 20431 100010214 2024.05.15 15:39:23.065 2024.05.15 17:35:10.165 01:55:47.100 217 012.00 EURUSD buy 1.00 1.08493

1.08519

26.00
26
1 000 003 186.10
10217 20433 100010215 2024.05.15 17:35:10.165 2024.05.16 09:53:07.627 16:17:57.462 217 268.00 EURUSD sell 1.00 1.08519

1.08749
-5.00 (-5.00) -230.00
-230
1 000 002 951.10
10218 20435 100010216 2024.05.16 09:53:07.627 2024.05.16 18:54:55.050 09:01:47.423 217 493.00 EURUSD buy 1.00 1.08749

1.08744

-5.00
-5
1 000 002 946.10
10219 20437 100010217 2024.05.16 18:54:55.050 2024.05.17 05:30:04.085 10:35:09.035 217 299.00 EURUSD sell 1.00 1.08744

1.08555
-1.00 (-1.00) 189.00
189
1 000 003 134.10

По Sell все дни берет по 1 свопу = 0.7, а 2024-05-23 5 свопов:


Нормальный отчет:

N Ticket Magic OpenTime CloseTime LengthTime TurnOver Symbol Type Lots OpenPrice StopLoss TakeProfit ClosePrice Commission Swap Profit Comment Pips Slippage Balance
10227 20453 100010225 2024.05.22 18:45:32.718 2024.05.22 21:18:03.612 02:32:30.894 216 691.00 EURUSD sell 1.00 1.08425

1.08266

159.00
159
1 000 003 702.70
10228 20455 100010226 2024.05.22 21:18:03.612 2024.05.23 10:30:01.150 13:11:57.538 216 590.00 EURUSD buy 1.00 1.08266

1.08324
-3.50 (-3.50) 58.00
58
1 000 003 757.20
10229 20457 100010227 2024.05.23 10:30:01.150 2024.05.23 16:45:00.415 06:14:59.265 216 696.00 EURUSD sell 1.00 1.08324

1.08372

-48.00
-48
1 000 003 709.20
10230 20459 100010228 2024.05.23 16:45:00.415 2024.05.24 10:52:53.487 18:07:53.072 216 619.00 EURUSD buy 1.00 1.08372

1.08247
-0.70 (-0.70) -125.00
-125
1 000 003 583.50
10231 20461 100010229 2024.05.24 10:52:53.487 2024.05.27 15:03:41.301 3d 04:10:47.814 216 720.00 EURUSD sell 1.00 1.08247

1.08473
-1.00 (-1.00) -226.00
-226
1 000 003 356.50

Тестирование проделанной работы видимо в MQ отсутствует... в предыдущий раз то же самое было. Исправили исправленное, которое опять исправлять надо /

I hope the official can fix it soon
 
Одним из способов улучшить функцию свойств TimeToStruct(TimeCurrent()).year можно добавить возможность обращения к году напрямую через функцию TimeCurrent().year . Таким образом, можно избежать необходимости создания дополнительной переменной типа MqlDateTime для получения года.
 

Напишу тут про чат-группы.

Я в последнюю неделю активно использую чат-группу, и вот что я скажу - это очень неудобно!

  1. Нет возможности обратиться к конкретному участнику, приходится копировать его ник, хотя обычно для этих целей есть специальная кнопка.
  2. Нет списка участников, или я его не вижу.
  3. Нет возможности отвечать на часть фразы, что очень неудобно, особенно когда люди много пишут и сразу на все темы.
  4. Нет поиска, что важно, если идёт обсуждение важной информации и к ней надо вернуться.
  5. Нет возможности редактировать своё сообщение. Да, я в последнее время делаю часто опечатки, замечаю позже, и уже не могу их исправить после отправки. А это может влиять на смысл предложения.
  6. Хорошо бы сделать возможность сохранять чаты в файл pdf или как то иначе.
  7. Если я хочу пригласить человека, который запретил ему писать всем, то я этого не могу сделать без общения с ним, хотя это же не ему в личку дальше пойдут сообщение, нужно - хотя бы дать возможность ему отправлять приглашение с информационным сообщением, отклонит, ну и ладно.
 
Баг с тиковыми данными в истории MQ Demo:
Почти час цена тиков резко меняется на +-350 пт. Прошу поправить, чтобы можно было нормально тестировать на ваших демо данных. Файл 201711.tkc обновлял - не помогло.