Ошибки, баги, вопросы - страница 1168
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Та емае...
Перед передачей надо засунуть в дабл из лонга. Для глобальной переменной. Там не нулевое значение, там просто дабл число от балды, оно может быть скажем 1.34*е-307 может быть 4.29*е+120, потому что там биты лонга.
После передачи распаковать из дабла в лонг.
Все.
ОК, уговорил ;)
ОК, уговорил ;)
Ну я просто не понимаю что непонятно.
Дабл обрезает данные, поэтому напрямую лонг в дабл нельзя. Но и тот и тот по 8 байт, значит можно передавать без потерь просто используя дабл как контейнер, что я и сделал в примере.
Ну я просто не понимаю что непонятно.
Дабл обрезает данные, поэтому напрямую лонг в дабл нельзя. Но и тот и тот по 8 байт, значит можно передавать без потерь просто используя дабл как контейнер, что я и сделал в примере.
Андрей, мне непонятен был формат хранения и отображения в GV терминала. Казалось, что покажет ID графика, а показывает 0.
в GV будет видно что-то напоминающее мусор по виду, этот "мусор" превратится в ID графика после обратного преобразования.
У дабла свой формат данных, при подсовывании лонга мы кладем на формат дабла и используем его просто как 8 байт памяти.
в GV будет видно что-то напоминающее мусор по виду, этот "мусор" превратится в ID графика после обратного преобразования.
У дабла свой формат данных, при подсовывании лонга мы кладем на формат дабла и используем его просто как 8 байт памяти.
Скорее вопрос:
Ищу существующую GV терминала по имени. Через неё в индикатор передаётся ID графика, на котором работает советник. Индикатор висит на другом символе. Т.е., хочу в индикатор передать ID графика, на котором работает управляющий советник. Ищу так:
вот что мне пишет терминал:
Как только ни пытался считать переменную. И сразу в строку, чтоб просто в журнал вывести, и в переменные различных типов - всё одно. На 2 разница.
Что не так?
Почитайте здесь https://www.mql5.com/ru/docs/basis/types/casting параграф "Приведение данных типа простых структур"
Как раз Ваш случай. У даблов гораздо ниже точность в _количестве_ знаков, чем у лонгов. Поэтому вы и получаете такой результат при простом присваивании.
Но Вы можете полностью использовать 64 бита глобальной переменной для хранения _любой_ информации длиной 64 бита (например, коротеньких строчек длиной 8 байт. не говоря уже о лонгах)
Советник стоит на М2, данные индикатора берутся с М3.
1) в логах перезапуск терминала в 14:40:
MD 0 14:40:06.009 Terminal MetaTrader 5 Alfa-Forex x64 build 930 started (Альфа-Форекс)
II 0 14:40:06.586 Terminal OpenCL not found, install the latest OpenCL driver for better performance
JO 0 14:40:07.257 Experts expert FX_Money_Flow_v1_06 (EURUSD,M2) loaded successfully
RO 0 19:55:28.399 Terminal MetaTrader 5 Alfa-Forex x64 build 930 started (Альфа-Форекс)
OP 0 19:55:28.992 Terminal OpenCL not found, install the latest OpenCL driver for better performance
RD 0 19:55:29.507 Experts expert FX_Money_Flow_v1_07 (EURUSD,M2) loaded successfully
вот только дальше нормально работать он не начинает, все время так:
KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Значение индикатора ТФ1: -1.#QNAN -1.#QNAN
График М3 при этом открыт, и на нем нанесен индикатор, который все показывает корректно:
(разница во времени терминала и логов 5 часов, скриншот относится ко второму перезапуску)
Почитайте здесь https://www.mql5.com/ru/docs/basis/types/casting параграф "Приведение данных типа простых структур"
Как раз Ваш случай. У даблов гораздо ниже точность в _количестве_ знаков, чем у лонгов. Поэтому вы и получаете такой результат при простом присваивании.
Но Вы можете полностью использовать 64 бита глобальной переменной для хранения _любой_ информации длиной 64 бита (например, коротеньких строчек длиной 8 байт. не говоря уже о лонгах)