Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1283

 
MakarFX:

Как определить какую нагрузку создает советник на сервер?

На каждом тике запрашивает Ask, Bid, Spread, TICKVALUE

Если правильно понимаю профилировщик поможет. Но надо понимать что нагрузка нагрузке рознь. Это потраченное время на исполнение запроса или загрузка процессора машины. Если один советник на символе на одном окне то норм. А если 120 окон на 40 символах и так в 10 терминалах на одной машине, то возможно зависнет машина)

 
Aleksei Stepanenko:

Не знаю, можно попробовать в бою. Или возможно как вариант INT_MAX ?


Да, я так же рассчитываю:

А от даты до даты включая выходные - это что-то не то.

Пункты в секунду, да читаемо получается. И на младших ТФ скорости больше, а диапазон меньше.

_     ;qstr7_41;_;EURUSD;_TF_;1; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:25
2020.10.23 14:34:20; [i]= ;13; VTrend[i] = ;25; SumVTrend= ;97; AbsVTrend= ;341; pos= ;8;SumVTrendPos= ;339; neg= ;7; SumVTrendNeg= ;-345
2020.10.23 14:34:20; [i]= ;2; VTrend1[i] = ;272; SumVTrend1= ;17; AbsVTrend1= ;137; pos1= ;2;SumVTrendPos1= ;-84; neg1= ;2; SumVTrendNeg1= ;-84
_     ;qstr7_41;_;EURUSD;_TF_;5; Имя файла ;QstrV.csv; Локальное время ;2020.10.23 15:34:36;
 2020.10.23 14:34:31; [i]= ;15; VTrend[i] = ;414; SumVTrend= ;47; AbsVTrend= ;124; pos= ;9;SumVTrendPos= ;160; neg= ;8; SumVTrendNeg= ;-82
2020.10.23 14:34:31; [i]= ;2; VTrend1[i] = ;-32; SumVTrend1= ;63; AbsVTrend1= ;83; pos1= ;2;SumVTrendPos1= ;37; neg1= ;2; SumVTrendNeg1= ;-32
_     ;qstr7_41;_;EURUSD;_TF_;1440; Имя файла ;QstrV.csv; Локальное время ;2020.10.26 15:42:42;
2020.10.26 14:42:42; [i]= ;14; VTrend[i] = ;-26; SumVTrend= ;3; AbsVTrend= ;9; pos= ;9;SumVTrendPos= ;9; neg= ;7; SumVTrendNeg= ;-11
2020.10.26 14:42:42; [i]= ;1; VTrend1[i] = ;-7; SumVTrend1= ;-7; AbsVTrend1= ;7; pos1= ;1;SumVTrendPos1= ;0; neg1= ;2; SumVTrendNeg1= ;-7
 
Valeriy Yastremskiy:

Если правильно понимаю профилировщик поможет. Но надо понимать что нагрузка нагрузке рознь. Это потраченное время на исполнение запроса или загрузка процессора машины. Если один советник на символе на одном окне то норм. А если 120 окон на 40 символах и так в 10 терминалах на одной машине, то возможно зависнет машина)

мы же уже обсуждали с Вами стоит ли много раз обращаться к данным терминала из MQL4, тогда про OrderSelect  https://www.mql5.com/ru/forum/342989#comment_16743716

можно так же протестировать и получение текущих цен, думаю тоже по 100500 раз можно на одном тике использовать, т.к. миллионами раз в секунду будет производительность


единственное, да - чем больше символов в окне обзор рынка, тем больше будет нагружаться сам терминал, ну и соответственно если будете вызывать данные от много разных символов, тогда тоже будут лаги

т.е. если разумно использовать терминал, то ничего не зависнет - в окне обзор рынка штук десять символов, те которые используете


сколько одновременно чартов можно открыть не проверял, но думаю, что если историю ограничить 1000 баров, то скорее всего пару десятков окон чартов без проблем терминал потянет

 

Всем доброго времени суток!

Начал изучать mql5( после mql4). В четверке есть группа функция под названием Дата и время. Такая же группа есть и в пятерке. Но в пятерке в этой группе функций намного меньше чем в четверке. В пятерке нет функций возвращающих значение текущего часа, минуты ... и других функций.
Например, в четверке была функция Hour(), которая возвращала значение  текущего часа. В пятерке такой функции нет. 
ВОПРОС

Какие функции в пятерке являются аналогом  Hour() и других функций из четверошной группы функций Дата и время, которых нет в аналогичной группе в пятерке.

Спасибо за помощь.

 
Igor Makanu:

мы же уже обсуждали с Вами стоит ли много раз обращаться к данным терминала из MQL4, тогда про OrderSelect  https://www.mql5.com/ru/forum/342989#comment_16743716

можно так же протестировать и получение текущих цен, думаю тоже по 100500 раз можно на одном тике использовать, т.к. миллионами раз в секунду будет производительность


единственное, да - чем больше символов в окне обзор рынка, тем больше будет нагружаться сам терминал, ну и соответственно если будете вызывать данные от много разных символов, тогда тоже будут лаги

т.е. если разумно использовать терминал, то ничего не зависнет - в окне обзор рынка штук десять символов, те которые используете


сколько одновременно чартов можно открыть не проверял, но думаю, что если историю ограничить 1000 баров, то скорее всего пару десятков окон чартов без проблем терминал потянет

Спасибо, напомнили))) Да, многое тогда не до понимал) Я как раз и хотел сказать что при разумных запросах все должно работать.Это дешевые по стоимости (времени исполнения и загрузке проца) запросы.)

 
ANDREY:

Всем доброго времени суток!

Начал изучать mql5( после mql4). В четверке есть группа функция под названием Дата и время. Такая же группа есть и в пятерке. Но в пятерке в этой группе функций намного меньше чем в четверке. В пятерке нет функций возвращающих значение текущего часа, минуты ... и других функций.
Например, в четверке была функция Hour(), которая возвращала значение  текущего часа. В пятерке такой функции нет. 
ВОПРОС

Какие функции в пятерке являются аналогом  Hour() и других функций из четверошной группы функций Дата и время, которых нет в аналогичной группе в пятерке.

Спасибо за помощь.

используйте https://www.mql5.com/ru/docs/dateandtime/timecurrent

второй вариант вызова функции

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
в общем случае это https://www.mql5.com/ru/docs/dateandtime/timetostruct
 
Подскажите для 4ки. Координаты клика мыши на чарте как возвратить, лучше номером бара. Нахожу только координаты, куда кинули скрипт.
 
Valeriy Yastremskiy:

Спасибо, напомнили))) Да, многое тогда не до понимал) Я как раз и хотел сказать что при разумных запросах все должно работать.Это дешевые по стоимости (времени исполнения и загрузке проца) запросы.)

да

если код "грязный", то можно уделать любую систему

а если разумное использование, где обращение к цене Ask/Bid происходит, ну пусть несколько десятков раз за один тик, то это никак не повлияет на производительность ЕА (ну максимум 1-2%)

т.е. логика использования ресурсов (или вызовов системных функций / окружения терминала ) должна быть, если алгоритм подразумевает обращение к ценам Ask/Bid несколько тысяч раз за один тик, то.... скорее всего нужно пересмотреть сам алгоритм, ну или как вариант запоминать один раз значения  Ask/Bid перед вычислением алгоритма




Valeriy Yastremskiy:
Подскажите для 4ки. Координаты клика мыши на чарте как возвратить, лучше номером бара. Нахожу только координаты, куда кинули скрипт.

наверное ищите ChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

только обсуждали https://www.mql5.com/ru/forum/353726

вот еще тема тоже клики обсуждали https://www.mql5.com/ru/forum/344607

 
Igor Makanu:

если алгоритм подразумевает обращение к ценам Ask/Bid несколько тысяч раз за один тик, то.... скорее всего нужно пересмотреть сам алгоритм, ну или как вариант запоминать один раз значения  Ask/Bid перед вычислением алгоритма




наверное ищите ChartXYToTimePrice https://docs.mql4.com/ru/chart_operations/chartxytotimeprice

только обсуждали https://www.mql5.com/ru/forum/353726

вот еще тема тоже клики обсуждали https://www.mql5.com/ru/forum/344607

Вообще если мы получили на тике цены, то до окончания ОнТик если не критично, можно работать с ними. И лимитники в помощь от проскальзывания)

Не совсем то, вернее то, но готового решения ...)) придется самому в Вашем коде разбираться.  Хотел по свече кликнуть и записать в файл ее значения.

CHARTEVENT_MOUSE_MOVE

 
Valeriy Yastremskiy:

Вообще если мы получили на тике цены, то до окончания ОнТик если не критично, можно работать с ними. И лимитники в помощь от проскальзывания)

Не совсем то, вернее то, но готового решения ...)) придется самому в Вашем коде разбираться.  Хотел по свече кликнуть и записать в файл ее значения.

CHARTEVENT_MOUSE_MOVE

наверное так хотите цену и время бара определить:

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   if(id == CHARTEVENT_CLICK)
   {
      int window = 0;
      datetime time;
      double   price;
      if(ChartXYToTimePrice(0, (int)lparam, (int)dparam, window, time, price))
      {
         Print("time = ", time, " ,price = ", price);
      }
   }
}
вернее это координаты клика мышки в значениях время + цена на чарте, бар нужно определять через iBarShift()
Причина обращения: