Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления - страница 33
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Думаю для больших блоков памяти > 4Гб можно их делить на куски по 2 Гб например и при запросе - выбирать нужный.
Да, это первое приходит на ум. Но я не уверен, что можно через данный механизм выделить порциями суммарно больше 4-х гигов.
Гуглил, делают. Но ничего не понял. Нет фундаментальных знаний по теме.
Если главная задача - экономия памяти - то можно и через RAM диск работать, я себе 36 Гб выделал.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5120: улучшения и исправления
Forester, 2025.06.29 09:21
При оптимизации через RAM диск. Лучший результат был при 3-х блоках памяти:
Agents = 36
Performance = 20.9 Ticks(millions)/sec.
Total time in sek: 16
Но он в 2 раза медленнее по Performance и на 20% по общему времени этого варианта работы непосредственно с памятью.
Замер начинается после этого.
Ну и переделать загрузку тиков в память. Сейчас тики помещаются в массив MqlTick[] и затем копируются в общую память. А это в моменте двойной расход RAM.
Тройной или больше: еще RAM диск фикс размера.
Использование только RAM диска, пока кажется лучшим вариантом.
Для оценки общего времени думаю и подготовительные процессы надо учитывать.
Тройной или больше: еще RAM диск фикс размера.
RAM-диск не нужен для FileMap-варианта.
Можно прямо TKC файлы в отдельные блоки памяти и сохранять (если получится много разных адресов использовать). Размеры меньше 4 Гб и навигация/поиск просты.
TKC не раскрыт. Можно любой свой формат. Используется все равно только три поля: MqlTick.time_msc/bid/ask. Поэтому, возможно, 4 гига хватит и на долгую историю.
Эти два параметра определяют 64-битное число размера памяти из старших и младших 32-х бит. То есть, размер памяти может быть больше 4 Гб.
Эту функцию сам не использовал, но по логике так.
TKC не раскрыт. Можно любой свой формат. Используется все равно только три поля: MqlTick.time_msc/bid/ask. Поэтому, возможно, 4 гига хватит и на долгую историю.
А если еще float использовать, то больше истории влезет и быстрее чтение из памяти будет.
пс Перевод всех расчетов в float увеличит скорость расчетов в 2 раза, но муторно перед каждой переменной (float) писать.