Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Узнай, как установить MetaTrader на Linux
Forex Trader
114375
Forex Trader 2005.09.26 16:51 
В свое время используя скрипт Period_Converter я сделал эксперта, который вешается,
к примеру, на график М1, пишет историю тиков в файл и отображает ее в другом окне в реале.
Сейчас попытался разделить этого эксперта на два: один пишет историю из окна графика М1,
другой цепляется к окну тикового графика и обновляет его с помощью команды
PostMessageA(hwnd,WM_COMMAND,33324,0);



Этот вариант, однако, не работает. История-то пишется, но эксперт на тиковом графике
ничего не обновляет. Впечатление такое, что процедура start() вообще не исполняется.

Может кто-нибудь объяснить почему ? Что неправильно ?

Forex Trader
114375
Forex Trader 2005.09.26 17:37  
чтобы эксперт запустился, в окно графика надо послать другую команду. и эта команда каждый раз может быть разной, потому что это "регистрируемый месседж".
проще повесить скрипта, работающего в бесконечном цикле и отслеживающего приходящие изменения
Forex Trader
114375
Forex Trader 2005.09.26 18:04  
чтобы эксперт запустился, в окно графика надо послать другую команду. и эта команда каждый раз может быть разной, потому что это "регистрируемый месседж".
проще повесить скрипта, работающего в бесконечном цикле и отслеживающего приходящие изменения


Вообще я рассчитывал, что процедура start() эксперта будет запускаться всякий раз, когда приходят новые котровки. Котировки ведь приходят независимо от окна ? Но похоже я что-то неправильно понимаю.

Я не очень понял Ваше объяснение. Чем эта ситуация отличается от той, когда PostMessageA() выполнялся в эксперте в другом окне ? Означает ли все это что из эксперта, висящего в данном окне, вообще невозможно воспользоваться командой PostMessageA() для обновления этого окна ?

Что касается скрипта, то этот вариант мне не очень нравится, поскольку прийдется просто обновлять окно через равные промежутки времени, а это неэффективно. Котировки ведь приходят через очень разные промежутки. Это как раз задача для эксперта.
Forex Trader
114375
Forex Trader 2005.09.26 18:22  
всё правильно, start запускается с каждой новой котировкой. однако сообщение 33324 не имеет ничего общего с приходом новых котировок. это - всего лишь обновление данных графика. приходящие котировки дают о себе знать другим способом. и только этот самый "другой" способ не только обновляет данные, но и запускает экспертов.
Forex Trader
114375
Forex Trader 2005.09.26 19:53  
всё правильно, start запускается с каждой новой котировкой. однако сообщение 33324 не имеет ничего общего с приходом новых котировок. это - всего лишь обновление данных графика. приходящие котировки дают о себе знать другим способом. и только этот самый "другой" способ не только обновляет данные, но и запускает экспертов.


С этим понятно, спасибо. Непонятно только могу ли я использовать эксперта и команду PostMessageA()
для обновления данных на тиковом графике, если эксперт привязан к этому графику, а не к другому.

Ведь этот график сам по себе не обновляется. Так может и на привязанного к нему эксперта этот
"другой" способ не распространяется ? Может именно поэтому процедуры init(), deinit() отрабатывают
нормально, а start() вообще не запускается и эксперт висит, ничего не делает ?
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий