Ошибки, баги, вопросы - страница 2940
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Скажите, в чем потенциальная опасность ZeroMemory, что в этой ситуации происходит ошибка?
private/protected и const (в большей его части) исключительно для программистов, компилятор лишь помогает придерживаться наложенных на код ограничений
Классический пример:
Вы используете чужую библиотеку, под капотом тяжёлый код со связями, несанкционированное изменение которых приведёт к сбою, поэтому создатель библиотеки прячет часть объекта в private, чтобы запретить незапланированные изменения.
private/protected и const (в большей его части) исключительно для программистов, компилятор лишь помогает придерживаться наложенных на код ограничений
Классический пример:
Вы используете чужую библиотеку, под капотом тяжёлый код со связями, несанкционированное изменение которых приведёт к сбою, поэтому создатель библиотеки прячет часть объекта в private, чтобы запретить незапланированные изменения.
Понял, Спасибо за подробное объяснение!
Похоже, что поле real_volume в структуре MqlRates хотя и имеет тип long, но не способно хранить значения в диапазоне всех значений long (по документации - 0x7FFFFFFFFFFFFFFF). В частности, если записать в поле 0x40000000000000A8 по факту запишется 0xA8. Речь про кастом-символы.
Где-нибудь указан реальный диапазон допустимых значений? В принципе, причин для того, чтобы не работать как обычному long-у нет - похоже на баг.
PS. по tick_volume наверно такая же проблема
Подскажите, если есть, способ сохранить в индикаторе предыдущее значение строковой переменной после наступления события Init? Глобальные переменные терминала со string не работают. Если быть точнее, то в конце OnCalculate() нужно сделать prev_val=val и чтобы после Init prev_val сохранилась, а val могла бы, как обычно, принимать новое значение. Но не хотелось бы извращений типа создать объект на графике, обозвать его требуемым именем, а после Init считывать старое значение. Это как-то дико уродливо, хотя и возможно вроде... да и имя может потребоваться длинное, а у объектов оно сильно ограничено.
можно через ресурсы и юнионы сохранять и передавать между ТФ простые структуры или даже массивы простых структур.
для этого вам понадобятся:
для хранения строк придется использовать статический массив uchar фиксированного размера. (см. CharArrayToString, StringToCharArray)можно через ресурсы и юнионы сохранять и передавать между ТФ простые структуры или даже массивы простых структур.
для этого вам понадобятся:
для хранения строк придется использовать статический массив uchar фиксированного размера. (см. CharArrayToString, StringToCharArray)Ещё вспомнилось — через файлы, но тоже не хотелось бы, поскольку способ не самый естественный.
Спасибо, буду пробовать.
Ещё вспомнилось — через файлы, но тоже не хотелось бы, поскольку способ не самый естественный.
Спасибо, буду пробовать.
Ещё вспомнилось — через файлы, но тоже не хотелось бы, поскольку способ не самый естественный.
Спасибо, буду пробовать.
Если речь идёт об MT5, то существует ненулевая вероятность, что OnInit нового состояния индикатора будет вызван раньше, чем OnDeinit предыдущего состояния индикатора
Поэтому сохранение данных должно происходить не в OnDeinit, а сразу после изменения данных или по какому-нибудь событию.