Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 645
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тарас, а можно такую нормализацию графика сделать для смены фрейма нажатием мыши?
Иногда по привычке нажимаю когда курсор рядом с кнопкой, а результат действия совсем не нравится.
В списке обработки событий я ничего подходящего не нашел, есть только CHARTEVENT_CHART_CHANGE без конкретного описания. Можно попробовать привязать нажатие кнопки мыши, но насколько я понимаю работать с системным меню пользователю нельзя, только если свои кнопки создавать. Есть ли какое-нибудь простое решение?
Тарас, а можно такую нормализацию графика сделать для смены фрейма нажатием мыши?
Иногда по привычке нажимаю когда курсор рядом с кнопкой, а результат действия совсем не нравится.
В списке обработки событий я ничего подходящего не нашел, есть только CHARTEVENT_CHART_CHANGE без конкретного описания. Можно попробовать привязать нажатие кнопки мыши, но насколько я понимаю работать с системным меню пользователю нельзя, только если свои кнопки создавать. Есть ли какое-нибудь простое решение?
То есть чтобы мышью щелкать по неким "тап-зонам" на чарте?
Можно, нужно отслеживать координаты курсора и клик по кнопкам мыши.
CHARTEVENT_MOUSE_MOVE
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Taras Slobodyanik, 2018.10.04 09:37
То есть чтобы мышью щелкать по неким "тап-зонам" на чарте?
Можно, нужно отслеживать координаты курсора и клик по кнопкам мыши.
запоминаем текущий символ-период, а при "CHARTEVENT_CHART_CHANGE" проверяем изменения и делаем что нужно
Скажите пожалуйста почему одна и та же функция из тела советника OnTick() не работает (вернее, работает, но со сбоями не на всех графиках корректно)
, а из процедуры OnInit() прекрасно работает и из обычного скрипта тоже. Советник установлен сразу на 80 графиках (20 валют у каждой 4 окна W1 D1 H4 H1) может просто комп не справляется ? Подскажите пожалуйста. Задача робота - выдавать сообщения MessageBox на экран, если обнаружен сигнал на одном из графиков. Может комп тормозит в момент запуска этих сообщений ?У меня почему-то не получается запоминать период перед обработкой события, в каком месте это нужно делать?
Решил отслеживать по сообщениям, оказалось что CHARTEVENT_CHART_CHANGE обрабатывается 2 раза за один клик, переменная ctime обнуляется.
#property strict
#property indicator_chart_window
int ctime;
void OnInit()
{
Print(" OnInit------------1 ", ChartPeriod(0));
Print("OnInit ctime = ", ctime);
// ctime=ChartPeriod(0);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
ctime=ChartPeriod(0);
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CHART_CHANGE)
{
Print("CHARTEVENT_CHART_CHANGE is started ctime=", ctime);
if(ctime!=ChartPeriod(0))
{
Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!! ", ctime);
}
}
}
Добавление индикатора на часовике, затем переключение на дневку
2018.10.05 01:04:45.171 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE is started ctime=1440
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: 1440 CHANGED!!!!!!!!!!!!!!! 0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE is started ctime=0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: initialized
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit ctime = 0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit------------1 1440
2018.10.05 01:04:45.156 _t1 CADJPY,H1: uninit reason 3
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE is started ctime=60
2018.10.05 01:02:02.000 _t1 CADJPY,H1: 60 CHANGED!!!!!!!!!!!!!!! 0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE is started ctime=0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: initialized
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit ctime = 0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit------------1 60
2018.10.05 01:02:01.078 Custom indicator _t1 CADJPY,H1: loaded successfully
У меня почему-то не получается запоминать период перед обработкой события, в каком месте это нужно делать?
Решил отслеживать по сообщениям, оказалось что CHARTEVENT_CHART_CHANGE обрабатывается 2 раза за один клик, переменная ctime обнуляется.
Вставляйте правильно код в сообщение! Очень сложно читать в таком виде. Надо вот так.
Индикатор при изменении параметров чарта принудительно перезагружается почитайте доку на предмет причины деинициализации и её переменная reason.
Для сохранения необходимых параметров можно использовать глобальные переменные терминала.
Вставляйте правильно код в сообщение! Очень сложно читать в таком виде. Надо вот так.
Индикатор при изменении параметров чарта принудительно перезагружается почитайте доку на предмет причины деинициализации и её переменная reason.
Для сохранения необходимых параметров можно использовать глобальные переменные терминала.
Да, нужно сохранять значения в GlobalVariable, и потом, при старте проверять их существование.
То есть нужно сохранять номер чарта, символ, период.
Ну и удалять потом лишние переменные, или же делать их изначально временными глобальными переменными.
пс. еще можно хранить информацию в объектах на графике - пока чарт существует - существуют объекты
Я думал все будет гораздо проще :-)
Тогда совсем детский вопрос - у меня код не подразумевает ни торговлю, ни графику, какой тип программ лучше использовать?
Скрипты одноразовые, но мб их можно в цикле запускать? Я объявил пользовательский индикатор чисто по инерции, тк советниками никогда не пользовался. Но тут выяснилось что он самостоятельно перезагружается, это нужно учитывать, что мне совсем ни к чему. В общем посоветуйте.
пс
Объекты могут быть нулевого размера, чтобы визуально не мешались?