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

 
Lilita Bogachkova #:

Пока работает функция Step() 

Может изменится: History Select(0, INT_MAX);  и  HistoryOrdersTotal()-1;

Не может. Она вызывается только один раз перед тернарным оператором и в последствии полученный индекс не меняется.

Странно только то, что если перед History Select(0, INT_MAX);  и  HistoryOrdersTotal()-1; не удалять один ордер функцией Step(),

   return(Step() && HistorySelect(0, INT_MAX) ? HistoryOrdersTotal()-1 : 0);

то всё работает как ожидалось.

 
Было бы хорошо в версии вообще с минимальным интерфейсом/ без него.// Включением дополнительно. Интерфейс потребляет графич. Память.
 
Aleksey Nikolayev #:

Ну, вроде была обещана поддержка формата ONNX, что даёт доступ к практически любым моделям МО. Так что вряд ли будут заморачиваться с  ALGLIB.

А вот преобразование из вектора в динамический массив и обратно не помешает.

Преобразования vector<>array будут позже

На данный момент, для копирования массива в вектор можно использовать следующий код:

namespace VectorInitalizer
{
//--- init double vector from double array
void FromArray(vector &v,double &arr[])
  {
   for(uint n=0; n<v.Size(); n++)
      v[n]=arr[n];
  }
//--- init double vector from file (!!! W/O reading checks)
void FromFile(vector &v,int file)
  {
   for(uint n=0; n<v.Size(); n++)
      v[n]=FileReadDouble(file);
  }  
}

void OnStart()
  {
   double arr[]={0,1,2,3,4,5,6,7,8,9};
   vector v(arr.Size(),VectorInitalizer::FromArray,arr);
   Print(v);
  }
 

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

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

fxsaber, 2022.01.25 23:25

Просьба на несколько суток повесить на VPS такой советник.

// Ловим баг CopyTicks*.

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);
}

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

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

2022.01.27 00:15:27.073 Research (USDSEK,M2)    Alert: 2022.01.26 23:55:00
2022.01.27 00:15:27.075 Research (USDSEK,M2)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.27 00:15:27.075 Research (USDSEK,M2)    [0] 2022.01.26 16:14:55 9.24961 9.25260 0.0000        0 1643213695281       6       0.00000

2022.01.27 00:15:32.213 Research (USDSEK,M1)    Alert: 2022.01.26 23:55:00
2022.01.27 00:15:32.214 Research (USDSEK,M1)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.27 00:15:32.214 Research (USDSEK,M1)    [0] 2022.01.26 16:14:55 9.24961 9.25260 0.0000        0 1643213695281       6       0.00000

......

2022.01.27 00:19:22.603 Research (USDSEK,M1)    Alert: 2022.01.26 23:55:00
2022.01.27 00:19:22.603 Research (USDSEK,M1)                     [time]   [bid]   [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2022.01.27 00:19:22.603 Research (USDSEK,M1)    [0] 2022.01.26 16:14:55 9.24961 9.25260 0.0000        0 1643213695281       6       0.00000

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

 
void OnStart()
{
  int Array[5];
  
  Print(Array.Size());
  Print(ArraySize(Array));
}

Есть ли разница в производительности? И какие еще новшества языка не были объявлены?


 
Не срабатывает точка останова.
void OnStart()
{
  int a = 1;
  
  switch(a)
  {
  case 1:
    a = 2; // На этой строке не срабатывает точка останова.
    
    break;
  }
}
 

build 3160

Загружен текущий профиль графиков. Переключаюсь на другой профиль - из предыдущего профиля терминал начисто удаляет все графики.

Пожалуйста запретите терминалу удалять мои графики из моих профилей.


 

Ошибка в механизме ввода входных параметров.

#property script_show_inputs

input string Str = NULL;
input double Num = DBL_MAX;

void OnStart() {}

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

 
fxsaber #:
Не срабатывает точка останова.

Похоже на оптимизацию компилятора. Можно попробовать снять галочки в настройках.

 
Vladimir Karputov #:

build 3160

Загружен текущий профиль графиков. Переключаюсь на другой профиль - из предыдущего профиля терминал начисто удаляет все графики.

Пожалуйста запретите терминалу удалять мои графики из моих профилей.


Владимир, мы потратили на поиски несколько часов, но воспроизвести не получается. Нужен архив профилей - с которого переключается и на какой он переключается.

Также уточнить:

1. работают ли в момент переключения экспреты, скрипты и т.п.

2. Используются ли открепленные окна.

Просьба упаковать и передать мне в личку.