возврат значения отличных от нуля из этой функции говорит о том что она выполняется
Документация говорит совсем другое:
возвращает true, если данное свойство поддерживается и значение было помещено в переменную long_var, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().
- www.mql5.com
Отмечу еще, я пробовал использовать WinApi функцию, чтобы узнать высоту чарта в пикселях:
GetWindowRect(handle,r);
Проверял ею параллельно, в результате все тоже самое, как и с помощью функции MQL.
Такая штука происходит не всегда, т.е. может пройти 3-4 перезагрузки ВПС сервера и проблем не будет
окно может быть:
- развернуто в полный размер терминала
- развернуто не в полный размер
- свернуто
- создано, но еще не рассчитаны размеры.
Проблема не с тем в каком состоянии окно, с этим проблем абсолютно никаких нет (свернуто, развернуто, закрыто или создается), а с тем что функция может вернуть неверное значение. Окно развернуто в полный размер терминала, удаленно запрашиваю график, вижу он корявый, вижу что по высоте размер выдает меньше на пикселей 20, захожу на ВПС сервер и затем выхожу и после данной магии функция выдает адекватные значения.
Добавлю, что у меня на ВПС сервере и у клиентов кто этим пользуется может стоять множество терминалов и если такая проблема с неверным возвратом размера окна по высоте возникает, то возникает абсолютно на всех терминалах данного ВПС сервера. Заходишь на ВПС и все решается автоматом.
Проблема не с тем в каком состоянии окно, с этим проблем абсолютно никаких нет (свернуто, развернуто, закрыто или создается), а с тем что функция может вернуть неверное значение. Окно развернуто в полный размер терминала, удаленно запрашиваю график, вижу он корявый, вижу что по высоте размер выдает меньше на пикселей 20, захожу на ВПС сервер и затем выхожу и после данной магии функция выдает адекватные значения.
Добавлю, что у меня на ВПС сервере и у клиентов кто этим пользуется может стоять множество терминалов и если такая проблема с неверным возвратом размера окна по высоте возникает, то возникает абсолютно на всех терминалах данного ВПС сервера. Заходишь на ВПС и все решается автоматом.
Попробуйте запустите этот индикатор, который будет отлавливать моменты искажения информации, и оставьте его на ВПС работать.
Может это что-то прояснит
#property indicator_chart_window //+------------------------------------------------------------------+ int OnInit() { EventSetTimer(1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { return(rates_total); } //+------------------------------------------------------------------+ void OnTimer() { static long h = 0 ; long h_cur=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS); if (h!=h_cur) Print(h_cur); h=h_cur; } //+------------------------------------------------------------------+я у себя на ВПС такого не встречал.
код не предоставили, поэтому сложно судить.
По опыту - чудес не бывает, а просто косяки в коде.
Доброго времени суток, прошу подсказать с проблемой.
Возникла потребность в построение своих графиков советником, используя средства терминала, с последующим скрином графиков и переправкой их пользователям. Все работает, за исключением одного НО, для правильного "красивого" построения графиков, мне нужно получать высоту в пикселях окна чарта, простое человеческое желание выливается в нечеловеческие проблемы, т.к. оказывается, функция возвращающая высоту чарта в пикселях, возвращает произвольные значения, не соответствующие действительности. Проблема решается банальными действиями, зайти на впс сервер и выйти, развернуть терминал Метатрейдер 4 и свернуть его обратно, в самом советнике используется данная функция:
ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result)
Проблема возникает преимущественно после перезагрузки ВПС сервера (на операционке Windows server 2012), например, высота в пикселях до перезагрузки и после перезагрузки неизменна, 340 пикселей, но до перезагрузки функция возвращает 340 пикселей, а после перезагрузки 282 пикселя, зайдя на ВПС сервер после его перезагрузки, функция начинает возвращать истинные 340 пикселей.
Почему функция возвращает неправильную высоту чарта в пикселях? От чего это зависит? Можно ли добиться возврата правильного значения всегда?
340 пикселей - максимизированный график. Тот, который наверху.
282 пикселя - график в обычном состоянии (normal) не максимизированный, либо не наверху. Приколы Windows и MFC. Многократно обсуждали
PS Обращение "доброго времени суток" должно означать, что вы в теме тонкостей программирования. А нельзя сказать просто: "Здравствуйте"?
Попробуйте запустите этот индикатор, который будет отлавливать моменты искажения информации, и оставьте его на ВПС работать.
Может это что-то прояснит
код не предоставили, поэтому сложно судить.
По опыту - чудес не бывает, а просто косяки в коде.
Назвал индикатор var_36, после перезагрузки когда захожу на ВПС сервер и тыкаю в соответствующее окно где расположен индикатор, значение становится истинным, в данном случае - 476 пикселей, повторил два раза:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток, прошу подсказать с проблемой.
Возникла потребность в построение своих графиков советником, используя средства терминала, с последующим скрином графиков и переправкой их пользователям. Все работает, за исключением одного НО, для правильного "красивого" построения графиков, мне нужно получать высоту в пикселях окна чарта, простое человеческое желание выливается в нечеловеческие проблемы, т.к. оказывается, функция возвращающая высоту чарта в пикселях, возвращает произвольные значения, не соответствующие действительности. Проблема решается банальными действиями, зайти на впс сервер и выйти, развернуть терминал Метатрейдер 4 и свернуть его обратно, в самом советнике используется данная функция:
ChartGetInteger(chart_ID,CHART_HEIGHT_IN_PIXELS,sub_window,result)
Проблема возникает преимущественно после перезагрузки ВПС сервера (на операционке Windows server 2012), например, высота в пикселях до перезагрузки и после перезагрузки неизменна, 340 пикселей, но до перезагрузки функция возвращает 340 пикселей, а после перезагрузки 282 пикселя, зайдя на ВПС сервер после его перезагрузки, функция начинает возвращать истинные 340 пикселей.
Почему функция возвращает неправильную высоту чарта в пикселях? От чего это зависит? Можно ли добиться возврата правильного значения всегда?