Ошибки, баги, вопросы - страница 2733

 
Geess:

Передавайте вместо массива string только uchar массив. Так проще.
Например, можно так преобразовывать:

Работает одинаково для MQL4 и MQL5

нужно из dll в MQL возвращать значения, в любом случае на стороне MQL нужно готовить буфер для приема данных

в общем долго обьяснять, все сделал уже, просто решил проконсультироваться

спасибо

 
Баги МТ5 (build 2402) проблемы с приоритетом вызовом перегруженных в namespace функций:
1) когда перегружена функция из глобального пространства имен;
2) когда перегружена системная функция.

void func(){
   printf("1");
}
      
namespace A{
   void func(){
      printf("2");
   }
   bool OrderSend(const MqlTradeRequest &trader_request, MqlTradeResult &trade_result){
      printf("2");
      return true;
   }
      
   class B{
      public:      
      void test(){
         func();                             // PRINT: 1   Expected result: 2
         
         MqlTradeRequest request;
         MqlTradeResult result;
         OrderSend(request, result);         // Compile Error: 'OrderSend' - override system function. Expected result: 2
      }
   };
};

void OnStart(){    
   A::B b;
   b.test();
}
 

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

Подскажите пожалуйста, есть эксперт Снайпер, он на новом билде не работает в МТ4 Альпари, можно как то исправить? Он даже на график не устанавливается. На билде 1090 работает.

Но терминал  МТ4 на 1090 билде не подключается к инету, пишет "Старая версия".

 
valera_nur:

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

Подскажите пожалуйста, есть эксперт Снайпер, он на новом билде не работает в МТ4 Альпари, можно как то исправить? Он даже на график не устанавливается. На билде 1090 работает.

Но терминал  МТ4 на 1090 билде не подключается к инету, пишет "Старая версия".

Если есть исходный файл эксперта - обратитесь во фриланс. Там помогут.

Лучше всего, конечно, обратиться непосредственно к автору эксперта.

 

написал dll для MQL5 которая в WinForms на .Net создает в окошке графическую таблицу, портировал код под под нативные вызовы для MQL4

замерил скорость, чтобы оценить скорость обновления графики 5 столбцов и 5 строк таблицы

  for(int j = 0; j < 3; j++)
   {
      uint start = GetTickCount();
      for(int i = 0; i < 100000; i++)
      {
         string s = (string)(i) + ";" + (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" +  (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n" +
                    (string)(i) + ";" +  (string)(i + 1) + ";" + (string)(i + 2) + ";" + (string)(i + 3) + ";" + (string)(i + 4) + "\n";
         TBL_FillAllTable(htbl, s);
      }
      uint time = GetTickCount() - start;
      PrintFormat("Цикл  %d время = %d ms", j, time);
   }

.....
void TBL_FillAllTable(int handle, string data, string  ColSeparator = ";", string RowSeparator = "\n")
{
#ifdef __MQL4__   refreshalldata(handle,data,ColSeparator,RowSeparator); #endif
#ifdef __MQL5__   SHARPTABLE::refreshalldata(handle, data,ColSeparator, RowSeparator); #endif
}
//+------------------------------------------------------------------+

MQL5:

2020.05.05 22:55:33.220 tbl_tst (EURUSD,H1) Цикл  0 время = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Цикл  1 время = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Цикл  2 время = 143750 ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: Öèêë  2 âðåìÿ = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: Öèêë  1 âðåìÿ = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: Öèêë  0 âðåìÿ = 67062 ms


код dll на 99% один в один, портировал под MQL4 примерами из статьи https://www.mql5.com/ru/articles/249


по моему очень большая разница 

Файлы:
tst_winforms.jpg  239 kb
 
Приложите код своей библиотеки + полный MQL код, чтобы можно было проверить и 100% воспроизвести.
 
Renat Fatkhullin:
Приложите код своей библиотеки + полный MQL код, чтобы можно было проверить и 100% воспроизвести.

вот приатачил этот тестовый скрипт

могу, в принципе проекты и VS отправить в ЛС

 

тест выше запускал на:

2020.05.05 23:46:03.512 Terminal MetaTrader 5 x64 build 2402 started for MetaQuotes Software Corp.

2020.05.05 23:46:03.515 Terminal Windows 10 build 18363, Intel Core i3  M 380 @ 2.53GHz, 0 / 2 Gb memory, 149 / 237 Gb disk, IE 11, UAC, GMT+4

есть еще у меня на ноуте не обновленный терминал:

2020.05.05 23:37:15.336 Terminal MetaTrader 5 - FXOpen x64 build 2280 started (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 Terminal Windows 10 (build 18363) x64, IE 11, UAC, Intel Core i3  M 380 @ 2.53GHz, Memory: 1071 / 2804 Mb, Disk: 149 / 237 Gb, GMT+4

запустил на старом билде  код который приатачил, получил лучше время теста:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Цикл  0 время = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Цикл  1 время = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Цикл  2 время = 69000 ms

 
Igor Makanu:

тест выше запускал на:

есть еще у меня на ноуте не обновленный терминал:

запустил на старом билде  код который приатачил, получил лучше время теста:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Цикл  0 время = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Цикл  1 время = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Цикл  2 время = 69000 ms

у меня на 2404 скорость такая же, как и в MT4.

 
Geess:

у меня на 2404 скорость такая же, как и в MT4.

есть подохрение, что МТ5 стал более требовательным к ресурсам ПК, завтра на ПК еще проверю, ноут слабоват (((

да, вот еще, смущает строка конфигурации ПК в новом билде - выше мой пост, почему то новый билд написал про память ноута:

0 / 2 Gb memory

условия запуска были одинаковые, запущены только МЕ и один терминал

ЗЫ: зато скорость обновления данных на WinForm менее 1 ms .... неожиданно ;)