Ошибки, баги, вопросы - страница 1168

 
TheXpert:

Та емае...

Перед передачей надо засунуть в дабл из лонга. Для глобальной  переменной. Там не нулевое значение, там просто дабл число от балды, оно может быть скажем 1.34*е-307 может быть 4.29*е+120, потому что там биты лонга.

После передачи распаковать из дабла в лонг.

Все.

ОК, уговорил ;)

 
artmedia70:

ОК, уговорил ;)

Ну я просто не понимаю что непонятно.

Дабл обрезает данные, поэтому напрямую лонг в дабл нельзя. Но и тот и тот по 8 байт, значит можно передавать без потерь просто используя дабл как контейнер, что я и сделал в примере.

 
TheXpert:

Ну я просто не понимаю что непонятно.

Дабл обрезает данные, поэтому напрямую лонг в дабл нельзя. Но и тот и тот по 8 байт, значит можно передавать без потерь просто используя дабл как контейнер, что я и сделал в примере.

Андрей, мне непонятен был формат хранения и отображения в GV терминала. Казалось, что покажет ID графика, а показывает 0.
 
artmedia70:
Андрей, мне непонятен был формат хранения и отображения в GV терминала. Казалось, что покажет ID графика, а показывает 0.

в GV будет видно что-то напоминающее мусор по виду, этот "мусор" превратится в ID графика после обратного преобразования.

У дабла свой формат данных, при подсовывании лонга мы кладем на формат дабла и используем его просто как 8 байт памяти.

 
TheXpert:

в GV будет видно что-то напоминающее мусор по виду, этот "мусор" превратится в ID графика после обратного преобразования.

У дабла свой формат данных, при подсовывании лонга мы кладем на формат дабла и используем его просто как 8 байт памяти.

Да, я это уже понял, спасибо.
 
Что-то я замечаю, что обновление библиотеки или ресурсов, подключенных в какой-либо другой скрипт (индикатор) приводит к его (индикатора) перекомпиляции и перезагрузке терминалом. Без спроса! Это баг или фича? P.S. Речь про МТ4.
 
artmedia70:

Скорее вопрос:

Ищу существующую GV терминала по имени. Через неё в индикатор передаётся ID графика, на котором работает советник. Индикатор висит на другом символе. Т.е., хочу в индикатор передать ID графика, на котором работает управляющий советник. Ищу так:

вот что мне пишет терминал:


Как только ни пытался считать переменную. И сразу в строку, чтоб просто в журнал вывести, и в переменные различных типов - всё одно. На 2 разница.

Что не так?

Почитайте здесь https://www.mql5.com/ru/docs/basis/types/casting параграф "Приведение данных типа простых структур"

Как раз Ваш случай. У даблов гораздо ниже точность в _количестве_ знаков, чем у лонгов. Поэтому вы и получаете такой результат при простом присваивании.

Но Вы можете полностью использовать 64 бита глобальной переменной для хранения _любой_ информации длиной 64 бита (например, коротеньких строчек длиной 8 байт. не говоря уже о лонгах)

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Столкнулся со следующей проблемой. После перезапуска терминала индикатор возвращает "странные" значения с другова тайм фрейма при вызове из советника.
Советник стоит на М2, данные индикатора берутся с М3.
1) в логах перезапуск терминала в 14:40:
PE 0 14:39:50.524 Terminal stopped
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
советник выписывает полученные значения индикатора на последнем и предпоследнем баре:
OF 0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) Значение индикатора ТФ1: -1.#QNAN -1.#QNAN
уже на следующем баре данные верные:
NJ 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) Значение индикатора ТФ1: -0.02798411604597126 -0.04893498839583753
2) второй перезапуск в 19:55:
CO 0 19:55:06.918 Terminal stopped
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
опять та же песня:
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) Значение индикатора ТФ1: -1.#QNAN -1.#QNAN

вот только дальше нормально работать он не начинает, все время так:

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Значение индикатора ТФ1: -1.#QNAN -1.#QNAN


График М3 при этом открыт, и на нем нанесен индикатор, который все показывает корректно:
(разница во времени терминала и логов 5 часов, скриншот относится ко второму перезапуску)
Файлы:
 
OBJ_LABEL похоже не поддерживает UNICODE в МТ4? Менял значение и программно, и из диалога свойств Label-а: символ вставляется, в самом диалоге виден правильно, но на графике отображается вопросиком (?). Шрифт выбран юникодный, и в диалоге свойств метки он правильно выбран в выпадающем списке со шрифтами.
 
stringo:

Почитайте здесь https://www.mql5.com/ru/docs/basis/types/casting параграф "Приведение данных типа простых структур"

Как раз Ваш случай. У даблов гораздо ниже точность в _количестве_ знаков, чем у лонгов. Поэтому вы и получаете такой результат при простом присваивании.

Но Вы можете полностью использовать 64 бита глобальной переменной для хранения _любой_ информации длиной 64 бита (например, коротеньких строчек длиной 8 байт. не говоря уже о лонгах)

Да, почитал, спасибо.
Причина обращения: