Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появились структуры?
Forex Trader
114252
Forex Trader 2007.01.06 12:56 
При попытке использовать WindowScreenShot в режиме фиксированного масштаба случаются довольно неожиданные вещи. Допустим, мы решили распечатать 20 пятиминутных графиков 320х200, отображающих дни января 2005 года. Ожидается, что будут сохранены соответствующие графики в соответствующем масштабе. На деле получаем куски пустого графика с совершенно невразумительными вертикальными шкалами (от минус 2 до 5 или от -80 до -300). После окончания работы скрипта наблюдаем полностью съехавшую вертиальную шкалу графика.

Если же мы решили напечатать несколько сотен таких графиков - то MT просто виснет(!).

Хотелось бы исправления подобной ситуации.


P.S. Судя по описанию нового релиза, ошибка в StringGetChar с выводом отрицательных кодов пока не исправлена?
Forex Trader
114252
Forex Trader 2007.01.08 16:09  
1. Не могли бы Вы по шагам описать Ваши действия? Мы не можем воспроизвести проблему.
Проблема именно в массовом выводе? Или в масштабе отображения?
Откуда вызывается WindowScreenShot: из эксперта, скрипта или индикатора?

2. StringGetChar теперь не возвращает отрицательных значений.
Forex Trader
114252
Forex Trader 2007.01.09 11:49  
За StringGetChar - большое спасибо (хотя в документации, насколько я вижу, пока еще по-прежнему в примере StringGetChar("abcdefgh", 3) = "с").

Что касается WindowScreenShot - вот тестовый скрипт.

int start() {
	datetime dt_start = D'2005.01.01';
	for (int i=0; i<100; i++) {
		datetime dt = dt_start + i*60*60*24;
		int b = iBarShift(NULL,0,dt,false);		
		WindowScreenShot("screenshots\\test_" + i + ".gif",400,200,b);
	}
  return(0);
}



Возьмем, к примеру, минутки фунта в максимально сжатом виде (хотя тот же результат получаем и в других таймфреймах и валютах). Этот скрипт успешно отрабатывает в автомасштабируемом режиме, и выдает 100 скриншотов кусочков соответствующих дней. Однако, если мы в свойствах графика установим "Фиксировать масштаб 1:1", то MT виснет, успев выдать 18 изображений.

Посмотрев на сгенерированное, обнаруживаем



Проанализировав все 18 изображений, отмечаем дополнительно, что наблюдается нечто вроде раскачки: чем дальше, тем больше в отрицательную область уходит шкала (последние изображения - в районе минус миллиона). Возможно, дело в переполнении. Так или иначе, картина загадочная )). Надеюсь на помощь в данном вопросе.

Кстати, по поводу вообще масштабирования - после добавления давно необходимого WindowPriceMin/Max нет ли возможности добавить функции установки данных значений? т.е. SetWindowPriceMin/Max. То же - и касательно FirstVisibleBar. На сегодняшний день, чтобы спозиционировать окно по горизонтали, приходится эмулировать нажатие VK_RETURN, вызывать "быструю навигацию", искать дочернее окно едитбокса... winapi-тягомотина без гарантированного результата, ибо позиционируется окно по центру (точнее, по нижнему треугольнику-маркеру), и нужно дополнительно вычислять дельту и пр. А отпозиционировать окно по вертикали вообще малореально.

В то время как управление окном, насколько я себе это представляю, добавляется крайне несложно (поскольку функциональность уже есть, пусть и привязанная к WM_MOUSEMOVE). Пара-тройка таких MT-шных функций крайне облегчит работу с "тремя экранами" и пр., где требуется координированное управление многими окнами.

Forex Trader
114252
Forex Trader 2007.01.09 15:13  
Зависание устранили. Спасибо.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий