Ошибки, баги, вопросы - страница 2646
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
поиском по форуму и докам не нашел, вопрос назрел:
1. какой максимальный размер string может хранить MQL5
2. какой максимальный размер string может хранить MQL4
3. если будет нехватка памяти этот максимальный размер будет уменьшен (или будет не выделена память для string) или будет runtime error ?
Дефекты:
(не исправлено MT5(build 2319)) баг в работе кеша шаблонного класса: "Создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...".
(не исправлено MT5(build 2319)) баг с генерацией кода шаблонного класса при использовании internal class.
(не исправлено MT5(build 2319)) баг при определении internal class - отсутствует возможность явно сослаться на глобальное пространство имен при указании базового класса.
Предложения:
ссылка - о необходимости введения в MQL typedef declaration функциональности.
ссылка - о предоставлении возможности принудительной генерации дефолтных конструкторов копирования и операторов присвоения.
Дефекты:
Хорошо, что отслеживаете свои баг-репорты. Я так не делал, от того все безвозвратно затерялось на форуме.
Наверное, нужно в посты со своими баг-репортами добавлять какую-нибудь одну и ту же хэш-запись, чтобы поиском можно было разом их все вместе находить.
поиском по форуму и докам не нашел, вопрос назрел:
1. какой максимальный размер string может хранить MQL5
2. какой максимальный размер string может хранить MQL4
3. если будет нехватка памяти этот максимальный размер будет уменьшен (или будет не выделена память для string) или будет runtime error ?
попробовал потестировать string в МТ4
в диспетчере Вин память по не многу течет (5,1 из 11,9) , в МТ4 в логе:
StringLen = 221696000 , m_physical = 12157, m_total = 4095, m_available = 3365, m_used = 729
в целом, для разумных задач можно большие string использовать, может чуть позже файл через string скопирую проверю
UPD: заменил uchar u_arr[102400]; на uchar u_arr[524224]; чтобы ускорить процесс
итог: в МТ4 примерный максимум, что можно положить в string это:
2020.02.13 21:11:24.177 tst_string EURUSD,H1: out of memory
2020.02.13 21:11:24.024 tst_string EURUSD,H1: StringLen = 640601728 , m_physical = 12157, m_total = 4095, m_available = 2556, m_used = 1539
т.е. около 640 Мб
ЗЫ: МТ5
2020.02.13 21:56:12.964 tst_string (EURUSD,H1) StringLen = 1073610752 , m_physical = 12157, m_total = 24314, m_available = 21975, m_used = 2339
2020.02.13 21:56:13.140 tst_string (EURUSD,H1) out of memory in 'tst_string.mq5' (41,12)
попробовал потестировать string в МТ4
в диспетчере Вин память по не многу течет (5,1 из 11,9) , в МТ4 в логе:
StringLen = 221696000 , m_physical = 12157, m_total = 4095, m_available = 3365, m_used = 729
в целом, для разумных задач можно большие string использовать, может чуть позже файл через string скопирую проверю
UPD: заменил uchar u_arr[ 102400 ]; на uchar u_arr[524224]; чтобы ускорить процесс
итог: в МТ4 примерный максимум, что можно положить в string это:
2020.02.13 21:11:24.177 tst_string EURUSD,H1: out of memory
2020.02.13 21:11:24.024 tst_string EURUSD,H1: StringLen = 640601728 , m_physical = 12157, m_total = 4095, m_available = 2556, m_used = 1539
т.е. около 640 Мб
ЗЫ: МТ5
2020.02.13 21:56:12.964 tst_string (EURUSD,H1) StringLen = 1073610752 , m_physical = 12157, m_total = 24314, m_available = 21975, m_used = 2339
2020.02.13 21:56:13.140 tst_string (EURUSD,H1) out of memory in 'tst_string.mq5' (41,12)
Это длина строки для Unicode, поэтому в МБ это как минимум double. 1,3 Гб для MT4, что имеет смысл, так как вам нужен непрерывный буфер памяти, а MT4 - 32-битное приложение. Таким образом, ограничение mql4 само по себе не является ограничением, а ограничено только доступной памятью.
Я немного удивлен, что MT5 не позволяет больше, так как кажется, что у вас много доступной памяти. Я буду стараться на моей стороне.
Это длина строки для Unicode, поэтому в МБ это как минимум double. 1,3 Гб для MT4, что имеет смысл, так как вам нужен непрерывный буфер памяти, а MT4 - 32-битное приложение. Таким образом, ограничение mql4 само по себе не является ограничением, а ограничено только доступной памятью.
Я немного удивлен, что MT5 не позволяет больше, так как кажется, что у вас много доступной памяти. Я буду стараться на моей стороне.
у меня памяти 12 Гб, ОС Windows 10 , свободной памяти около 8 Гб
этот тест мне нужен был, чтобы определить максимально допустимые длины строк в терминалах МТ4/МТ5
я сейчас хочу наладить обмен между терминалами через базу данных Redis
Redis очень простая база данных и работает исключительно со строками (ключ - значение --> strin - string)
вчера я сделал сериализацию POD-структур в Base64, при этом размер данных увеличивается примерно на 1/3
я считаю, что даже в этом случае у меня есть возможность обмениваться структурами с размером по 400 Мб за одну транзакцию - это более чем достаточно для любых целей! ;)
Сейчас в MetaEditor при работе над проектом для перемещения файлов проекта во вкладке "Project", например в новосозданную подпапку, необходимо выполнить целый "ритуал":
Предложение:При перемещении файлов проекта во вкладке "Project", например в новосозданную подпапку:
- для открытых но неизмененных файлов автоматически обновлять их путь расположения.
- для измененных файлов - дополнительно запрашивать подтверждение: "Перенести с сохранением", "Перенести с потерей изменений" или же "Отменить операцию переноса".
у меня памяти 12 Гб, ОС Windows 10 , свободной памяти около 8 Гб
этот тест мне нужен был, чтобы определить максимально допустимые длины строк в терминалах МТ4/МТ5
я сейчас хочу наладить обмен между терминалами через базу данных Redis
Redis очень простая база данных и работает исключительно со строками (ключ - значение --> strin - string)
вчера я сделал сериализацию POD-структур в Base64, при этом размер данных увеличивается примерно на 1/3
я считаю, что даже в этом случае у меня есть возможность обмениваться структурами с размером по 400 Мб за одну транзакцию - это более чем достаточно для любых целей! ;)
Интересно, я проверю этот "Redis", я этого не знаю.
Поэтому я проверил ваш код на своей стороне, я остановил его через 1 минуту, слишком медленно. Так что я немного изменил ;-)
2020.02.13 15: 50: 51.199 1111R-2646 (EURUSD, M1) m_physical = 16230 МБ, m_total = 32460 МБ, m_available = 31786 МБ, m_used = 674 МБ, лимит = 8388608 МБ, используется = 0 МБ
2020.02.13 15: 50: 51.763 1111R-2646 (EURUSD, M1) StringLen = 1073 миллиона символов , m_used = 2722 МБ, использовано = 2048 МБ
Менее 1 секунды. Наконец, существует ограничение mql5, которое составляет 2 ГБ или около 1,073 миллиарда символов.
Поясните, почему в кодебазу нельзя загрузить ico-файлы? Они являются стандартной частью программы, подключаются средствами MQL. То, что они запрещены, явно неправильно. Но дальше больше.
Правильно приготовленный ico можно переименовать в png без ущерба для работы: он по-прежнему нормально линкуется в программу (с помощью #property icon "mql5pack.png") и отображается в диалоге свойств. Но все это прокатывает только локально. Я загрузил такой png в кодебазу и при проверке исходника получил ошибку:
Прошу администрацию mql5 починить загрузку или/и хотя бы проверку иконок.
ПС. Поправочка, похоже, что сайт молча съедает png-файл, то есть дает его загрузить, но потом его нет в списке компилируемых файлов. Пробовал MQL5\Images, MQL5\Files - ничего на сервер не грузится, но молча, без ошибок. Ошибку выдает уже при проверке.