Пытаюсь организовать тик для эксперта, - нихрена не выходит. Выходные врасплох застали. Как его правильно организовывать? Вот например имеем следующий элементарный эксперт:
- как сэмулировать тики и запустить таймер?
Я понимаю, что выходные, но на рынке расписание праздников не совпадает с теми же по РФ, да и работать-таки надо...
//=================================================================================================================================================// 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. Функция запускает обновление автономных графиков с указанным периодом. Если обновление уже запущено, то функция меняет период обновления графиков.// Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика.void ServiceRefreshOfflineCharts(int nPeriodMilliSec); // Период обновления графика в миллисекундах.//=================================================================================================================================================// 4.7.5. Функция запускает обновление online-графиков с указанным периодом. Если обновление уже запущено, то функция меняет период обновления графиков.// Останавливается обновление функциями "ServiceStopRefreshChart()" или "ServiceStopRefreshAllCharts()" или закрытием графика.void ServiceRefreshOnlineCharts(int nPeriodMilliSec); // Период обновления графика в миллисекундах.//=================================================================================================================================================// 4.7.6. Функция останавливает обновление указанного графика.void ServiceStopRefreshChart(int hwndChart); // Системный дескриптор графика, на котором останавливается обновление.//=================================================================================================================================================// 4.7.7. Функция корректно останавливает обновление всех графиков при bTerminate = FALSE, иначе функция завершает обновление аварийно.void ServiceStopRefreshAllCharts(int bTerminate); // Флаг аварийной остановки потоков обновления графиков.// FALSE - потоки останавливаются корректно, TRUE - потоки останавливаются аварийно.//=================================================================================================================================================// 4.7.8. Функция эммулирует тик для эксперта на указанном графике.void ServiceTickExpert(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для эксперта.//=================================================================================================================================================// 4.7.9. Функция эммулирует тик для индикаторов на указанном графике.void ServiceTickIndicators(int hwndChart); // Системный дескриптор окна графика, для эмуляции тика для индикаторов.//=================================================================================================================================================
Делаем так и запредельные значения испаряются, а проблема остается.
Думается мне, проблема в этой строке:
R_time = Seconds() * Minute() * Hour();
Все значения на одно и то же время умножаются - текущее время сервера, а точнее - последнее известное время.
А также в обьявлении переменных типа bool там где он должны быть double, ну и пара других мелких косяков. Букварь ещё не скурен до конца, как я понимаю )))
Все значения на одно и то же время умножаются - текущее время сервера, а точнее - последнее известное время.
А также в обьявлении переменных типа bool там где он должны быть double, ну и пара других мелких косяков. Букварь ещё не скурен до конца, как я понимаю )))
Ох, спасибо! Мне понятны ошибки и залеты. Вообще не представляю, как я такое мог набрать? :)
Заметил, что индикатор рисует картины, которые я себе даже не представлял. Немного поработал над "телом" кода.
Уже больше похоже на то, что я себе представлял. Но "временные волны" полностью гасят "ценовые волны". Усиливаем "ценовые волны" и ослабляем "временные волны".
Именно ServiceTickExpert() я пытался использовать перед тем, как обратиться на форум. Попытался сейчас запустить тестовый эксперт
- но тишина.
Это нерабочий код. Может, всё же, в скрипт с примерами загляните?
Есть 3 способа обновлять график.
1. Самому организовать бесконечный цикл в старте эксперта. Необходим однократный запуск эксперта из инита или удалённой программы. 2. Запустить обновление из другого потока. Тогда любой эксперт, не зависимо от его кода, будет исполняться.
В библиотеке первые 2 реализованы. То, что у Вас в коде, требует самостоятельной организации цикла обновления графика или зацикленности эксперта. В первом случае требуется зацикленный скрипт. Во втором случае надо один раз стартануть эксперт.
Первые 7 функций из того раздела (4.7) организуют обновление и управляют независимым обновлением графика в отдельном потоке. Можно один раз запустить и выгрузить программу. Графики будут продолжать обновляться без MQL-программ.
Ох, спасибо! Мне понятны ошибки и залеты. Вообще не представляю, как я такое мог набрать? :)
Заметил, что индикатор рисует картины, которые я себе даже не представлял. Немного поработал над "телом" кода. Уже больше похоже на то, что я себе представлял. Но "временные волны" полностью гасят "ценовые волны". Усиливаем "ценовые волны" и ослабляем "временные волны".
Zhunko: Может, всё же, в скрипт с примерами загляните? Это нерабочий код.
Но... но я именно по вашему скрипту и модифицировал сначала известный скрипт iTicks! Вот, сейчас опять запустил, сначала тестовый эксперт (код его на предыдущей странице, не на этой), затем iTicks следующей модификации:
#include <ServicesMT4.mqh>
externint delay_MSecond = 2000;
int start(){
while(!IsStopped()){
string _symbol = Symbol(); int _period = Period();
int hWnd = WindowHandle(_symbol, _period);
ServiceTickExpert(hWnd);
Sleep(delay_MSecond);
}
return(0);
}
по образцу кода из Check_ServicesMT4.dll.mq4
if (TickExpert) while (!IsStopped()) {ServiceTickExpert(hwndChart); Sleep(1000);}
На чарте без изменений
Галочка "разрешить вызов dll" стоит...
Добавлено
Zhunko:
Есть 3 способа обновлять график.
Я отвечал на старую версию сообщения, прошу пардону, щас буду разбираться...
и так далее, которое при запуске было константой (2013.12.31 18:59:59). Вот так невнимательность и подводит... Прошу прощения за беспокойство, теперь всё понятно.
Пытаюсь организовать тик для эксперта, - нихрена не выходит. Выходные врасплох застали. Как его правильно организовывать? Вот например имеем следующий элементарный эксперт:
- как сэмулировать тики и запустить таймер?
Я понимаю, что выходные, но на рынке расписание праздников не совпадает с теми же по РФ, да и работать-таки надо...
Библиотека.
Библиотека.
Именно ServiceTickExpert() я пытался использовать перед тем, как обратиться на форум. Попытался сейчас запустить тестовый эксперт
- но тишина.
Главное - что бы они отображались. :)
Делаем так и запредельные значения испаряются, а проблема остается.
Думается мне, проблема в этой строке:
Все значения на одно и то же время умножаются - текущее время сервера, а точнее - последнее известное время.
А также в обьявлении переменных типа bool там где он должны быть double, ну и пара других мелких косяков. Букварь ещё не скурен до конца, как я понимаю )))
Думается мне, проблема в этой строке:
Все значения на одно и то же время умножаются - текущее время сервера, а точнее - последнее известное время.
А также в обьявлении переменных типа bool там где он должны быть double, ну и пара других мелких косяков. Букварь ещё не скурен до конца, как я понимаю )))
Ох, спасибо!
Мне понятны ошибки и залеты.
Вообще не представляю, как я такое мог набрать? :)
Заметил, что индикатор рисует картины, которые я себе даже не представлял.
Немного поработал над "телом" кода.
Уже больше похоже на то, что я себе представлял.
Но "временные волны" полностью гасят "ценовые волны". Усиливаем "ценовые волны" и ослабляем "временные волны".
Именно ServiceTickExpert() я пытался использовать перед тем, как обратиться на форум. Попытался сейчас запустить тестовый эксперт
- но тишина.
Это нерабочий код. Может, всё же, в скрипт с примерами загляните?
Есть 3 способа обновлять график.
1. Самому организовать бесконечный цикл в старте эксперта. Необходим однократный запуск эксперта из инита или удалённой программы.
2. Запустить обновление из другого потока. Тогда любой эксперт, не зависимо от его кода, будет исполняться.
3. Похоже на п. 2, всё тоже, но с помощью системного таймера.
В библиотеке первые 2 реализованы. То, что у Вас в коде, требует самостоятельной организации цикла обновления графика или зацикленности эксперта. В первом случае требуется зацикленный скрипт. Во втором случае надо один раз стартануть эксперт.
Первые 7 функций из того раздела (4.7) организуют обновление и управляют независимым обновлением графика в отдельном потоке. Можно один раз запустить и выгрузить программу. Графики будут продолжать обновляться без MQL-программ.
Ох, спасибо!
Мне понятны ошибки и залеты.
Вообще не представляю, как я такое мог набрать? :)
Заметил, что индикатор рисует картины, которые я себе даже не представлял.
Немного поработал над "телом" кода.
Уже больше похоже на то, что я себе представлял.
Но "временные волны" полностью гасят "ценовые волны". Усиливаем "ценовые волны" и ослабляем "временные волны".
Можно узнать что это такое страшное
Может, всё же, в скрипт с примерами загляните? Это нерабочий код.
Но... но я именно по вашему скрипту и модифицировал сначала известный скрипт iTicks! Вот, сейчас опять запустил, сначала тестовый эксперт (код его на предыдущей странице, не на этой), затем iTicks следующей модификации:
по образцу кода из Check_ServicesMT4.dll.mq4
На чарте без изменений
Галочка "разрешить вызов dll" стоит...
Добавлено
Есть 3 способа обновлять график.
gyfto, пример в тестовом скрипт сделан для обновления графика, на который настроился. Можно настроить на удалённый (чужой) график.
Это же очевидно, что обновлять график для скрипта бессмысленно.
Настройте его на график с Вашим экспертом. Эксперт будет работать.
Блин, вот я дурак. Я понял свою ошибку. Ключевое слово
А у меня было
и так далее, которое при запуске было константой (2013.12.31 18:59:59). Вот так невнимательность и подводит... Прошу прощения за беспокойство, теперь всё понятно.
Вот этот код действительно рабочий:
Естественно, он только для выходных. Ещё раз прошу прощения за беспокойство.
Так неприлично. Надо так: