Новая версия платформы MetaTrader 5 build 3180: Векторы и матрицы в MQL5 и повышение удобства работы - страница 12

 

Билд 3163: Кастомные символы все еще сломаны...

 

Наверно для векторов не хватает транспонирования, или MatMul не отрабатывает.
Пытаюсь получить матрицу, из двух векторов.

vector v1{3, 2, 0, -1};
vector v2{-1, 1, 0, 2};
   
Print(v1.Dot(v2));
Print(v1.MatMul(v2));

2022.01.27 21:16:47.515 Test (EURUSD,M5)        6.0
2022.01.27 21:16:47.515 Test (EURUSD,M5)        6.0

Если тип vector заменить на matrix и транспонировать одну матрицу

matrix A{{3, 2, 0, -1}};
A.Transpose();
   
matrix B{{-1, 1, 0, 2}};
   
Print(A.MatMul(B));
2022.01.27 21:27:12.616 Test (EURUSD,M5)        incorrect vector or matrix size in 'Test.mq5' (83,12)
 
fxsaber #:

На MQ-Demo был пойман баг.

После полуночи последний CopyTicks-тик оказался взят где-то в середине предыдущих суток. Рекомендую разработчикам запустить данный советник на нескольких символах одновременно и посмотреть, как он проходит полночь.

На другом торговом сервере сразу (и только) после полуночи. Терминал b3160.

2022.01.28 00:00:12.577 Research (EURUSD,M2)    Alert: 2022.01.27 23:58:56
2022.01.28 00:00:12.580 Research (EURUSD,M2)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.28 00:00:12.580 Research (EURUSD,M2)    [0] 2022.01.27 18:00:37 1.11489 1.11489 0.0000        0 1643306437223       6       0.00000

2022.01.28 00:00:17.762 Research (EURUSD,M1)    Alert: 2022.01.27 23:58:56
2022.01.28 00:00:17.762 Research (EURUSD,M1)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.28 00:00:17.762 Research (EURUSD,M1)    [0] 2022.01.27 18:00:37 1.11489 1.11489 0.0000        0 1643306437223       6       0.00000

...

2022.01.28 00:04:58.416 Research (EURUSD,M1)    Alert: 2022.01.27 23:58:56
2022.01.28 00:04:58.416 Research (EURUSD,M1)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.28 00:04:58.416 Research (EURUSD,M1)    [0] 2022.01.27 18:00:37 1.11489 1.11489 0.0000        0 1643306437223       6       0.00000

Отличный способ обнаружения CopyTicks-бага. Уверен, он сильнейшим образом проявит себя при переходе с пятницу на субботу.

Строка для поискаOshibka 037.

 

Вчера работало нормально, сегодня перестало. Возможно обновился, хотя хз. 

Версия терминала 3146.  При попытке обновить пишет, что это последняя актуальная версия, Брокер Открытие.

При запуске отладки, вместо выставленных в тестере  настроек,  подставляются настройки из кода советника.

Как починить кто нибудь знает?

 

При перетаскивании мышкой закрытой позиции на чарт идет переключение чарта на символ этой позиции. Это правильно.


Если же перед этим из Обзора рынка удалить символ закрытой позиции, то переключения чарта на символ позиции не происходит. Это правильно?

 

На MQ-Demo этот советник выкачивает историю тиков с 2011 года!

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

Новая версия платформы MetaTrader 5 build 3180: Векторы и матрицы в MQL5 и повышение удобства работы

fxsaber, 2022.01.25 23:25

void OnInit()
{
  MqlTick LastTick;
  MqlTick HistoryTick[];
  
  Sleep(5000);
  
  if (SymbolInfoTick(_Symbol, LastTick) && (CopyTicks(_Symbol, HistoryTick, COPY_TICKS_ALL, 0, 1) == 1) &&
      (LastTick.time - HistoryTick[0].time > 10))
  {
    Alert(LastTick.time);
    ArrayPrint(HistoryTick);
  }
  
  ChartSetSymbolPeriod(0, NULL, (_Period == PERIOD_M1) ? PERIOD_M2 : PERIOD_M1);
}
Почему запрос последнего исторического тика (выделил в исходнике) приводит к выкачке гигабайтов тиковой истории?! Не первый раз об этом сообщают и придумывают костыли.


Просьба начать реагировать на бег-репорты. Текущая реакция (точнее ее отсутствие), мягко говоря, странная.

 
fxsaber #:

На MQ-Demo этот советник выкачивает историю тиков с 2011 года!

Этот же советник на остается работать на чарте при штатном выходе из Терминала и включении.

 
Roman #:

Наверно для векторов не хватает транспонирования, или MatMul не отрабатывает.
Пытаюсь получить матрицу, из двух векторов.

Если тип vector заменить на matrix и транспонировать одну матрицу

Попробуйте так:

void OnStart()
  {
   vector v1{3, 2, 0, -1};
   vector v2{-1, 1, 0, 2};

   Print(v1.Dot(v2));
   Print(v1.Outer(v2));

   matrix A{{3, 2, 0, -1}};
   matrix B{{-1, 1, 0, 2}};

   Print(A.Transpose().MatMul(B));
  }
 
Roman #:

Наверно для векторов не хватает транспонирования, или MatMul не отрабатывает.
Пытаюсь получить матрицу, из двух векторов.

Если тип vector заменить на matrix и транспонировать одну матрицу

У векторов нет признака вертикальный/горизонтальный

внешнее произведение векторов предполагает, что левый вектор - вертикальный, правый вектор - горизонтальный

используйте

matrix_c=v1.Outer(v2);

 
Ilyas #:
Slava #:

Спасибо. Понял.