Возможность есть. На форуме много такого предлагалось.
//================================================================================================================================================= // 4.7. Функции для управления обновлением графика. //================================================================================================================================================= // 4.7.1. Функция запускает обновление всех графиков с указанным периодом. Если обновление уже запущено, то функция меняет период обновления графиков. // Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика. void ServiceRefreshAllCharts(int nPeriodMilliSec); // Период обновления графика в миллисекундах. //================================================================================================================================================= // 4.7.2. Функция запускает обновление всех графиков однократно. Вызов функции при работающих других режимах останавливает обновление всех графиков. void ServiceRefreshAllOnceCharts(); //================================================================================================================================================= // 4.7.3. Функция запускает обновление указанного графика с указанным периодом. Если обновление уже запущено, то функция меняет только период обновления графика. // Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика. void ServiceRefreshChart(int hwndChart, // Системный дескриптор обновляемого графика. int nPeriodMilliSec); // Период обновления графика в миллисекундах. //================================================================================================================================================= // 4.7.4. Функция останавливает обновление указанного графика. void ServiceStopRefreshChart(int hwndChart); // Системный дескриптор графика, на котором останавливается обновление. //================================================================================================================================================= // 4.7.5. Функция корректно останавливает обновление всех графиков при bTerminate = FALSE, иначе функция завершает обновление аварийно. void ServiceStopRefreshAllCharts(int bTerminate); // Флаг аварийной остановки потоков обновления графиков. // FALSE - потоки останавливаются корректно, TRUE - потоки останавливаются аварийно. //================================================================================================================================================= // 4.7.6. Функция эммулирует тик для эксперта на указанном графике. void ServiceTickExpert(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для эксперта. //================================================================================================================================================= // 4.7.7. Функция эммулирует тик для индикаторов на указанном графике. void ServiceTickIndicators(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для индикаторов. //=================================================================================================================================================
У меня та же проблема. Полегче решения есть?
//+------------------------------------------------------------------+ //| iTicks.mq4 | //| Copyright © 2009, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #import "user32.dll" int RegisterWindowMessageA(string lpstring); int PostMessageA(int hWnd,int Msg,int wParam,string lParam); #import extern int delay_MSecond = 500; #define WM_COMMAND 0x0111 //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { //---- while(!IsStopped()){ PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0); PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1); Sleep(delay_MSecond); } //---- return(0); } //+------------------------------------------------------------------+
Никто не сказал "Спасибо"...
Спасибо, Рустам. Как всегда - кратко и безупречно.
Никто не сказал "Спасибо"...
Спасибо, Рустам. Как всегда - кратко и безупречно.
Алексей, это ты Рустама подкалываешь или и искренне веришь, что 4 строки кода лаконичнее одной? :-))
На всякий случай, если кто не понял. Функции из той библиотеки, кроме последних двух, управляют автономным обновления графика. Т.е. не нужны никакие эксперты и скрипты. Один раз запустил из любой MQL4-программы и это будет работать пока сам не остановишь или до выгрузки терминала.
Последние две это аналог кода, что привёл Рустам.
Никто не сказал "Спасибо"...
Спасибо, Рустам. Как всегда - кратко и безупречно.
и без лишних понтов
А как такие решения прикрутить к 100 графикам (см. 1-ый пост ТС)?
Библиотека у Вадима хорошая! И из всего набора, задействовав только две, получается "обновлятель" (в архиве).
P.S. Всё ИМХО: сколько голов - столько мнений. :)
P.P.S. При большом количестве открытых графиков, я бы не злоупотреблял периодом обновления. ;)
Кстати, проверьте, это только у меня на новом билде ВСЕ графики обновляет вместо одного, или это новая фича такая ?
ЗЫ. Не надо мне "спасиба", обычно на этом форуме это выливается в меряние письками и свару... как нибудь обойдусь.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет !
У меня есть МТ4 с большим кол-вом одновременно открытых графиков (около 100) , в результате при запуске МТ4 очень многие графики не обновляются автоматически(это или баг терминала, или баг брокера). Никакие ухищрения не помогают обновлять графики, единственный вариант который работает - на каждом не обновленном графике жмакать правую кнопку мыши и кликать на пункт меню - "обновить". Внимание, вопрос - Есть-ли возможность прицепить на график какой-то скрип или советник, который программным образом эмулировал-бы команду "обновить" на графике ?
Спасибо !
Александр