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

 
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 байт. не говоря уже о лонгах)

Да, почитал, спасибо.
 
Объясните, плиз, следующую ситуацию. Есть мультивалютный индюк, значения которого НЕ меняются в зависимости от того, на какой чарт он наброшен - он считает значения по заданным инструментам и с текущим окном никак не связан. На это индюке я вручную наношу объекты - линии поддержки и сопротивления. Теперь фокус: если в окно перетащить из обзора рынка другой инструмент, то внешний вид индюка остается прежним, а линии пропадают. Если вызвать диалог Список объектов, то там эти объекты по-прежнему числятся. Значения конечных точек (даты и значения) остаются прежними (т.е. должны быть видимы на прежних местах) - это и понятно, их никто не менял. Однако линии не видны. Если затем перетащить на окно прежний инструмент, который был там изначально, линии снова становятся видны. В чем проблема?
 
marketeer:
Объясните, плиз, следующую ситуацию. Есть мультивалютный индюк, значения которого НЕ меняются в зависимости от того, на какой чарт он наброшен - он считает значения по заданным инструментам и с текущим окном никак не связан. На это индюке я вручную наношу объекты - линии поддержки и сопротивления. Теперь фокус: если в окно перетащить из обзора рынка другой инструмент, то внешний вид индюка остается прежним, а линии пропадают. Если вызвать диалог Список объектов, то там эти объекты по-прежнему числятся. Значения конечных точек (даты и значения) остаются прежними (т.е. должны быть видимы на прежних местах) - это и понятно, их никто не менял. Однако линии не видны. Если затем перетащить на окно прежний инструмент, который был там изначально, линии снова становятся видны. В чем проблема?
Может разница цен инструментов? Линии же привязываются к координатам время/цена. Время остаётся, а вот цена меняется. Если на EURUSD линия привязана к цене 1.35, то где ж вы её увидите на USDJPY, где цена 101.35 например...