Программное управление сжатием графика по горизонтали - страница 2

 
To Slawa

Спасибо, все получилось.

Все переменные static и все переменные, объявленные на глобальном уровне MQL4-программы при переключении периода графика принудительно обнуляются ( заново инициализируются ) ?

Методы сохранения значений таких переменных перед переключением периода графика:
- запись в виде глобальных переменных клиентского терминала
- запись на диск ?

Какие прцессы происходят при обновлении графика ? Каким образом увеличить скорость обновления графика ?

Много вопросов, но очень хочу все знать !!!
 
Это элементарно проверяется в тестовом советнике.

Статические переменные и переменные, объявленные на глобальном уровне, не переинициализируются. Если в функции init не задать явное присвоение таких переменных, то они содержат значение, полученное при инициализации, либо при последнем присвоении. Эти переменные переинициализируются только при перекомпиляции эксперта. Но этот факт Вы можете определить в функции deinit, после и в init, используя функцию UninitializeReason

Знание процессов при обновлении графика никак не поможет увеличить скорость обновления графика. Если график обновляется слишком медленно, просто уменьшите размер исторических данных.

Читайте документацию, ходите на mql4.com - там эти вопросы обсуждаются
 
Поиск по ключевому слову PostMessageA.

Вкратце смысл исследования заключался в том, что человек последовательно перебирал параметры сообщений и фиксировал результаты. Эти результаты были опубликованы на этом форуме.


Slawa, я искал по этому ключевому слову - и здесь, и на mql4.com. Ничего существенного пока не нашел. А на результаты было бы очень интересно посмотреть. Может быть, это исследование скрыто за каким-нибудь несоответствующим названием темы, не имеющим к ней прямого отношения? Спасибо.
 
Slawa, я искал по этому ключевому слову - и здесь, и на mql4.com. Ничего существенного пока не нашел. А на результаты было бы очень интересно посмотреть. Может быть, это исследование скрыто за каким-нибудь несоответствующим названием темы, не имеющим к ней прямого отношения? Спасибо.

Если бы я сам нашёл ту тему, я бы явно указал ссылку. Возможно, там нужно другое ключевое слово. Возможно, автор потёр свою тему. Не смог я найти, может быть Вы удачливее будете. Помнится, там была такая фраза "не все коды идут по порядку". Я отвечал, что "так как эти коды недокументированы, они могут быть в любой момент изменены". Автор предупреждал, что скрипт надо запускать в совершенно отдельном клиентском терминале на демо.
 
Через форумы альпари нашёл http://forum.alpari-idc.ru/showthread.php?t=29115&page=4&highlight=PostMessageA

Вот ссылка на наш форум "Подскажите как сменить таймфрейм"
 
Я тоже искал, причем помню, что занимался этим Роман. Про Альпари забыл.
 
To Slawa

Подскажите, пожалуйста, как при помощи PostMessageA изменить период текущего графика и символ ? На форуме mql4 ответа не нашла. Спасибо.
 
Символ - никак.
Период - посмотрие сообщение Романа в обсуждении "Подскажите как сменить таймфрейм"
 
Slawa 11.05.07 14:10

Спасибо за ссылку.
 
При смене периода или символа скрипт выгружается (ау, разработчики - а зачем так сделано? весьма неудобно). Так что если вывелась панель "вы действительно хотите..." - вероятно, команда сработала верно, и при нажатии "да" - ТФ должно все же поменять.

Есть, конечно, вероятность (небольшая), что коды устарели. Скачайте программу Winspector, натравите ее на МТ (включив отображение Messages) и поводите мышкой по пунктам меню "графики-период" - выдаст нужные коды (немного более подробно обсуждалось на "MetaTrader4_Internal_Message: вопрос для ув.Slawa и разработчиков" )

А символ можно поменять с помощью панели быстрой навигации. Да и таймфрейм. Как-то так:

int hwnd = WindowHandle(...);
pressKey(VK_RETURN,hwnd);
int hwnd_child = GetWindow(hwnd,GW_CHILD);
SetWindowTextA(hwnd_child,"USDJPY");
pressKey(VK_RETURN,hwnd_child);



(В код добавить проверок по вкусу. Панель навигации - дочернее окно, поэтому и делаем GW_CHILD)

Но это не решит проблему с выгрузкой. Только некий извращенный вариант - комбинация советника и скрипта (советник обнаруживает смену ТФ и перегружает скрипт) - или исключительно советником.

Причина обращения: