Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления - страница 20

 
Andrey Kaunov #:

Алексей, почитайте документацию к функции Copy***, постом выше выложил скрин примечания. 

Объясните мне, некоторые люди вообще читают форум, или просто так пишут, лишь бы написать чего...

Я прочитал вас. Уже так примерно и понял. Что-ж, будем отталкиваться от реалий. Видимо там виднее, как лучше было сделать.

Это я давно читал. Но этот код

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[])
 {
//---
    ResetLastError();
    datetime ctime[];
    int b = CopyTime(_Symbol, PERIOD_CURRENT, 0, INT_MAX, ctime);;
    printf("rates_total: %d  ctime[0]: %s   ctime[rates_total-1]: %s   Error: %d", rates_total, TimeToString(ctime[0]), TimeToString(ctime[rates_total-1]), GetLastError());
  return(rates_total);
 }/*******************************************************************/

результат

2023.02.07 18:17:41.221 !!00 (EURUSD,H1)        rates_total: 5282  ctime[0]: 2022.04.04 23:00   ctime[rates_total-1]: 2023.02.07 17:00   Error: 0

Как видите никаких ошибок.

Правда если обратиться к другому периоду, то действительно получишь -1 и соответствующую ошибку. 

 

Ну да, на текущем ТФ работает, не поспоришь. Но речь то шла про функцию iTime(...)

Copy*** я не проверял, просто привёл документацию.

 
Andrey Kaunov #:

Ну да, на текущем ТФ работает, не поспоришь. Но речь то шла про функцию iTime(...)

Copy*** я не проверял, просто привёл документацию.

Вам шашечки или ехать? :)

 
Andrey Kaunov #:

То что при MAXBARS равным Unlimited все функции всё показывают, это не вызывает вопросов. Но стоит поставить какое то значение MAXBARS, не перегружая терминал, и все старые бары для iTime(...) и других становятся недоступными. В то время как индикатор и iBars(...) их считают.

Вероятно, то что такое происходит, может инициировать ошибки в индикаторах или программах, которые используют iBars(...) и iTime(...), iOpen(...), iHigh(...) и другие одновременно.

Вообще, имхо, плохая практика менять  MAXBARS, не перегружая терминал. Никогда так не делаю...

Насколько помню, то MQ добавили  iTime(...) и им подобные функции по огромной просьбе MQL4-профсоюза. И, видимо (тут догадываюсь), эти функции завязаны на тот размер буферов, которые терминал определяет, исходя из значения  MAXBARS...

А вообще, Андрей, есть замечательный раздел в Документации - "Организация доступа к данным"  ))

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Организация доступа к данным - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Вам шашечки или ехать? :)

Denis Kirichenko #:

Вообще, имхо, плохая практика менять  MAXBARS, не перегружая терминал. Никогда так не делаю...

Насколько помню, то MQ добавили  iTime(...) и им подобные функции по огромной просьбе MQL4-профсоюза. И, видимо (тут догадываюсь), эти функции завязаны на тот размер буферов, которые терминал определяет, исходя из значения  MAXBARS...

А вообще, Андрей, есть замечательный раздел в Документации - "Организация доступа к данным"  ))

Я в целом за то, чтобы всё было интуитивно понятно. А мне не понятно, почему, обращаясь к одним и тем же данным, одни функции имеют доступ, а другие нет. К примеру CopyTime имеет, а iTime не имеет, как показал Алексей. Хотя документация говорит ровно об обратном. На мой взгляд, это недоработка. А объяснения можно конечно найти, это не проблема.

 
Andrey Kaunov #:

Я в целом за то, чтобы всё было интуитивно понятно. А мне не понятно, почему, обращаясь к одним и тем же данным, одни функции имеют доступ, а другие нет. К примеру CopyTime имеет, а iTime не имеет, как показал Алексей. Хотя документация говорит ровно об обратном. На мой взгляд, это недоработка. А объяснения можно конечно найти, это не проблема.

Андрей, вот однозначный ответ на все вопросы по этому поводу

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления

Denis Kirichenko, 2023.02.07 17:17

Вообще, имхо, плохая практика менять  MAXBARS, не перегружая терминал. Никогда так не делаю...

Насколько помню, то MQ добавили  iTime(...) и им подобные функции по огромной просьбе MQL4-профсоюза. И, видимо (тут догадываюсь), эти функции завязаны на тот размер буферов, которые терминал определяет, исходя из значения  MAXBARS...

А вообще, Андрей, есть замечательный раздел в Документации - "Организация доступа к данным"  ))

А по хорошему, они как оказалось вредны для mql5
 

3577

По прежнему отсутствует метод Sort

s

'Sort' is not a member of 'vector' type TEST.mq5        
Документация по MQL5: Методы матриц и векторов / Манипуляции / Sort
Документация по MQL5: Методы матриц и векторов / Манипуляции / Sort
  • www.mql5.com
Sort - Манипуляции - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Уважаемые разработчики, нельзя ли добавить в Календарь такое событие, как "Время перехода на летнее/зимнее время" ?  Например на ForexFactory это выглядит так:


Экономический форекс календарь - публикация новостей и отчетов в реальном времени, расписание предстоящих событий мировой экономики
Экономический форекс календарь - публикация новостей и отчетов в реальном времени, расписание предстоящих событий мировой экономики
  • www.mql5.com
Экономический форекс календарь - публикация новостей и отчетов в реальном времени, расписание предстоящих событий мировой экономики. Календарь содержит наиболее важные экономические индикаторы и события от министерств и агентств различных стран. Календарь полезен трейдерам на рынке форекс, рынке акций и других финансовых рынках.
 

Уважаемые разработчики, просьба исправить нерабочий пример (в Документации):

int eig_vectors = 0;
//--- Eigen Solver
matrix_a.Eig(matrix_v, vector_e);
//--- проверим правильность A * v = lambda * v
for(ulong n = 0; n < vector_e.Size(); n++)
  {
   vector eigen_vector = matrix_v.Col(n);
   vector vector_c1   = eigen_vector * vector_e[n];
   vector vector_c2   = matrix_a.MatMul(eigen_vector);
//--- слишком много делений, потому ослабим проверку на точность до 10-го знака
   int    errors      = vector_c1.CompareByDigits(vector_c2, 10);
   if(!errors)
      eig_vectors++;
  }
Документация по MQL5: Методы матриц и векторов / Преобразования / Eig
Документация по MQL5: Методы матриц и векторов / Преобразования / Eig
  • www.mql5.com
Eig - Преобразования - Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Denis Kirichenko #:

Уважаемые разработчики, просьба исправить нерабочий пример (в Документации):

Что именнно