错误、漏洞、问题 - 页 2733

 
Geess:

只传递Uchar数组而不是字符串数组。这样做更简单。
例如,你可以这样转换。

它对MQL4和MQL5的工作方式是一样的。

你需要从dll返回值到MQL,在任何情况下,在MQL方面你需要准备一个缓冲区来接收数据。

总而言之,这是一个很长的解释,我已经做了一切,我只是想问几个问题。

谢谢你

 
MT5(build 2402)在命名空间中调用重载函数的优先级问题。
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();
}
 

日安!

我有一个狙击手专家顾问,它在MT4 Alpari的新版本中不工作,有什么办法可以解决吗?它甚至没有安装在图表上。它在1090版本上工作。

我已经注册了我的MT4,但它没有连接到互联网,它显示 "旧版本"。

 
valera_nur:

日安!

我有一个狙击手专家顾问,它在MT4 Alpari的新版本中不工作,有什么办法可以解决吗?它甚至没有安装在图表上。它在1090版本上工作。

但是MT4终端在1090版本上无法连接到互联网,它显示 "旧版本"。

如果你有专家顾问的源文件,请向自由职业者申请。他们会帮助你。

当然,最好的办法是直接与专家顾问的作者联系。

 

我为MQL5编写了一个dll,在.Net上的WinForms窗口中创建了一个图形表。 我把代码移植到了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) Cycle 0 time = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Cycle 1 time = 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: Time Frame 1 = 69219 ms

2020.05.05 22:49:09.332 tbl_tst EURUSD,H1: Öècle 0 time = 67062 ms


dll代码99%是相同的,我使用文章https://www.mql5.com/ru/articles/249 中的例子在MQL4下移植了它。


在我看来,这是个很大的区别。

附加的文件:
tst_winforms.jpg  239 kb
 
附上您的库代码+完整的MQL代码,以便您可以检查和100%重现。
 
Renat Fatkhullin:
附上你的图书馆代码+完整的MQL代码,这样你就可以检查和100%重现了。

这里是测试脚本

原则上,我可以将项目 和VS发送给PM

 

上面的测试运行在。

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 终端 Windows 10 build 18363, Intel Core i3 M 380 @ 2.53GHz, 0 / 2 Gb内存, 149 / 237 Gb磁盘, IE 11, UAC, GMT+4

我的笔记本电脑上仍然有终端 没有更新

2020.05.05 23:37:15.336 终端 MetaTrader 5 - FXOpen x64build 2280 开始 (FXOpen Investments Inc.)

2020.05.05 23:37:15.338 终端 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) Cycle 0 time = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Cycle 1 time = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Cycle 2 time = 69000 ms

 
Igor Makanu:

上面的测试就是在这个基础上进行的。

我的笔记本电脑上仍有一个未更新的终端

在旧版本上运行了我所附的代码,得到了一个更好的测试时间。

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Cycle 0 time = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Cycle 1 time = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Cycle 2 time = 69000 ms

我的2404的速度与MT4相同。

 
Geess:

我在2404上的速度和MT4上的速度一样。

我隐约觉得MT5对电脑资源的要求越来越高,我明天会在我的电脑上检查,我的笔记本电脑很弱(()

是的,这里还有一件事,被新构建中的PC配置行所迷惑--在我的帖子上面,出于某种原因,新构建中写到了笔记本内存。

0 / 2Gb内存

启动条件相同,只有ME和一个终端在运行。

ZS: 但WinForm上的刷新率低于1ms ....不料;)