Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 29

 
fxsaber #:

Если получится, буду делать оптимизацию только в мат. режиме. Сплошные плюсы - и скорость и экономия на памяти. Т.е. можно гораздо бОльшую историю тиков использовать.

Если уж делать тестер своими руками, то может посмотреть в сторону GPU? Там общая память под тики примерно такая же, а ядер расчетных на порядки больше.

 
Stanislav Korotky #:

Если уж делать тестер своими руками, то может посмотреть в сторону GPU? Там общая память под тики примерно такая же, а ядер расчетных на порядки больше.

Там под тики загрузить файл в память можно за раз не более 4гб сейчас.

 
Stanislav Korotky #:

Если уж делать тестер своими руками, то может посмотреть в сторону GPU? Там общая память под тики примерно такая же, а ядер расчетных на порядки больше.

Некомпетентен, к сожалению.

 

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

Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления

Aliaksandr Hryshyn, 2025.06.27 14:43

Для старта берите это:

#import "kernel32.dll"
ulong MapViewOfFileFromApp(HANDLE hFileMappingObject,ulong DesiredAccess,ulong FileOffset,ulong NumberOfBytesToMap);
HANDLE CreateFileMappingFromApp(HANDLE hFile,long lpFileMappingAttributes,uint flProtect,ulong MaximumSize,const string lpName);
bool UnmapViewOfFile(ulong lpBaseAddress);
#import
#import "KernelBase.dll"
HANDLE OpenFileMappingFromApp(uint dwDesiredAccess,bool bInheritHandle,const string lpName);
#import

Следующих шести функций должно хватить:

CreateFileMappingW
OpenFileMappingW
MapViewOfFile
memcpy
UnmapViewOfFile
CloseHandle
 

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

Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления

Forester, 2025.06.27 07:59


Мат вычисления
 По реал. тикам
1 блок памяти
Agents = 36
Performance = 3.7 Ticks(millions)/sec.
Total time in sek: 87
 1 блок памяти
Agents = 36
Performance = 15.3 Ticks(millions)/sec.
Total time in sek: 123 - в 1,4 раза медленнее
3 блока памяти
Agents = 36
Performance = 20.1 Ticks(millions)/sec.
Total time in sek: 16
3 блока памяти
Agents = 36
Performance = 19.7 Ticks(millions)/sec. - соизмеримо
Total time in sek: 118 - в 7,4 раза медленнее

 36 блоков памяти
Agents = 36
Performance = 5.5 Ticks(millions)/sec.
Total time in sek: 62
36 блоков памяти
Agents = 36
Performance = 20.4 Ticks(millions)/sec.
Total time in sek: 99

Не понял. По реальным тикам блоков столько же, сколько и Агентов.
 
fxsaber #:
Не понял. По реальным тикам блоков столько же, сколько и Агентов.
3 эксперимента: с 1, 3 и 36 блоками памяти. Агентов всегда было по максимуму физ. ядер: 36.
 
Forester #:
3 эксперимента: с 1, 3 и 36 блоками памяти. Агентов всегда было по максимуму физ. ядер: 36.

В режиме реальных тиков никакие же свои блоки не работают. Там от MQ одинаковые блоки для каждого Агента.

 
fxsaber #:

В режиме реальных тиков никакие же свои блоки не работают. Там от MQ одинаковые блоки для каждого Агента.

Эксперт не правил - просто переключил в режим теста по реал. тикам.

А блоки читались как и раньше.
 
Forester #:
Эксперт не правил - просто переключил в режим теста по реал. тикам.

А блоки читались как и раньше.

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

 

Неожиданные результаты работы функции ArrayInitialize(), версии для long в частности. Функция вообще не работает.

int  ArrayInitialize(
   long    array[],     // initialized array
   long    value        // value that will be set
   );

Видео подтверждение.