MetaTrader4_Internal_Message: вопрос для ув.Slawa и разработчиков

 
Кажется, имеет смысл вынести в отдельную ветку. Ув.Rosh в соседней ветке кинул ссылку на "MQL4: Визуализация тестирования. Расширение функциональности.", где используется недокументированная, но весьма ценная возможность посылки внутреннего сообщения MetaTrader4_Internal_Message (которое нужно предварительно зарегистрировать). Поиск дает еще одну ссылку на "A question for the MQ developers - how to trigger the tick?", в которой Вы "засветились" с пояснениями ))). Собирая в кучку, получаем варианты:

Посылка MetaTrader4_Internal_Message со следующими параметрами:

WPARAM = 55, LPARAM = pos: позиционирует график на FirstVisibleBar = pos
WPARAM = 2, LPARAM = 1: эмулирует приход тика (и активизирует соответствующий эксперт)

Какие еще возможности существуют?

Огромное спасибо.
 
Это всё сильно недокументировано. То есть может поменяться в любой момент. Я недавно приводил ссылку в ветке "Программное управление сжатием графика по горизонтали" на то, как пользователь Роман проводил свои исследования.

Проведите и Вы своё исследование. На чистом терминале в отдельной папке и демо-счёте.
 
Я понимаю, что может поменяться - это неизбежный риск. За ссылку спасибо - но это довольно очевидные действия, которые были давно проделаны всеми желающими.

Догадаться, что посылка VK_ADD эквивалентна нажатию плюса - можно и без перебора. Все, что можно было отсюда выжать - выжато.
Догадаться, что посылка WM_COMMAND (wparam = идентификатор пункта меню) эквивалентна выбору этого пункта - тоже можно. Простой перебор эквивалентен нажатию всех пунктов по очереди.

Проводить исследования для этого не нужно. Все это - кусочки стандартного winapi, которые применяются всякими "script recorder"ами для эмуляции ручного управления программой.

А вот найти подобным методом параметры вашего внутреннего сообщения довольно сложно. Перебирать все сочетания WPARAM,LPARAM? Смотреть в spy++, что с какими-то целями программа шлет сама себе internal message(wparam = 0x3c) - да, вот оно, идет - но с какими целями оно туда идет?

А у вас эта информация под рукой.

Или Вас в данном вопросе ограничивает какое-то внутрикорпоративное требование о неразглашении?
 
Вообще-то, Роман нашёл, как менять таймфреймы у графиков, а это не так очевидно, как Вы пишете, так как через WM_COMMAND можно посылать любые команды, а не только те, которые есть в меню.

Да, можете считать это внутрикорпоративным требованием. Появление запрошенной Вами информации от нашего имени может стать прецедентом для следующих нежелательных запросов. Во-вторых, выпустив однажды такую информацию, мы будем вынуждены поддерживать её каким-либо образом.
 
Да, конечно, я не хочу умалять важности того, о чем писал Роман.

"Тривиальным" это выглядит только по сравнению с некоторыми другими действиями (типа программной работы с окном "Свойства графика") - от которых вполне можно поседеть до срока. Обычному трейдеру без winapi-бэкграунда разбираться в тонкостях WM_COMMAND - довольно сложно.

И это, увы, таки камень в ваш огород. Пресловутая 33324 (refreshChart) уже в десятке тем поминалась - т.е. это не заморочки одного-двух несчастных, а общая потребность. Которая сейчас функциями не реализуется. И таких случаев много. Еще чуть-чуть, и народ полезет в SoftICE и прочее, чтобы реализовать то, чего сейчас сделать функциями нельзя. Вырастите на свою голову хакеров. Не доводите до греха, расширяйте функциональность! ))))

(что же касается WM_COMMAND - в основном она все же используется именно для меню. Найденные Романом в той ветке 33NNN - это именно ItemID пунктов меню "Графики-период". Фактически, перебирать подряд эти идентификаторы не нужно - достаточно взять какой-нибудь winspector/spy++, побегать мышкой по меню и поискать, скажем, WM_DRAWITEM - Item ID покажут нужные ID (например, для "Снять все выделения" нужно послать 35462 и т.п. И конечно, лишний раз спасибо всем тем, кто в свое время упомянул о WM_COMMAND 33324 и т.п., подтолкнув мысль в соответствующем направлении)

По части "прецедентности" - понимаю ((.

Но может быть, можно как-то намекнуть))), в какой области "проводить исследования". Мне, собственно, много не нужно - но позарез нужно облегчить работу со свойствами графика, в частности - получить возможность ставить/убирать фиксированный масштаб. Вызывать для этого окно "Свойства графика", честно говоря, надоело - это имеет кучу побочных эффектов.
 
Я специально посмотрел на таблицу команд и код их использования. Безопасны только несколько команд для посылки через Internal_Message. А остальные команды сугубо внутренние, параметрические и сильно связаны с другими компонентами.


Мне, собственно, много не нужно - но позарез нужно облегчить работу со свойствами графика, в частности - получить возможность ставить/убирать фиксированный масштаб. Вызывать для этого окно "Свойства графика", честно говоря, надоело - это имеет кучу побочных эффектов.

Вообще-то такие мелкие настройки через такие командные обработчики общего цикла не ведутся. Их можно отловить только в диалоге настроек.

То есть, через Internal_Message и WM_COMMAND нельзя отловить все или большинство настроек терминала.
 
Вот это да! А я давным давно задавал вопрос про этот пресловутый WM_COMMAND. Ответа вообще никакого не последовало (а я настойчивости не проявил). Прочтя выше сказанное, теперь прекрасно понимаю, почему. Увы, "квод лицет йови нон лицед бови". Вот и весь сказ... Как бывший "системник" очень хорошо понимаю разработчиков. Как нынешний юзер МТ4... Знаете, ощущение, как у подопытной мышки. Ей сказали, где лежит сахар, но не сказали, как туда добраться. =(((
Причина обращения: