Fehler, Irrtümer, Fragen - Seite 2733

 
Geess:

Übergeben Sie nur ein uchar-Array anstelle eines String-Arrays. Auf diese Weise ist es einfacher.
Sie können es zum Beispiel so umrechnen:

Es funktioniert auf die gleiche Weise für MQL4 und MQL5

Sie müssen Werte von der DLL an MQL zurückgeben, in jedem Fall müssen Sie auf der MQL-Seite einen Puffer für den Empfang von Daten vorbereiten

Alles in allem ist das eine lange Erklärung, ich habe schon alles gemacht, ich wollte nur ein paar Fragen stellen.

Dankeschön

 
Bugs MT5 (Build 2402) Probleme mit der Priorität des Aufrufs von überladenen Funktionen im Namensraum:
1) wenn eine Funktion aus dem globalen Namespace überladen wird;
2) wenn die Systemfunktion überlastet ist.

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

Guten Tag!

Können Sie mich bitte beraten, ich habe ein Sniper Expert Advisor, es funktioniert nicht in der neuen Build in MT4 Alpari, gibt es eine Möglichkeit, es zu beheben? Sie ist nicht einmal auf der Karte installiert. Es funktioniert mit dem 1090er Build.

Ich habe mein Exemplar von MT4 bereits registriert, aber es ist nicht mit dem Internet verbunden, ich erhalte ständig die Meldung "Alte Version".

 
valera_nur:

Guten Tag!

Können Sie mich bitte beraten, ich habe ein Sniper Expert Advisor, es funktioniert nicht in der neuen Build in MT4 Alpari, gibt es eine Möglichkeit, es zu beheben? Sie ist nicht einmal auf der Karte installiert. Es funktioniert mit dem 1090er Build.

Aber MT4-Terminal kann keine Verbindung zum Internet auf der 1090-Build, es sagt "Alte Version".

Wenn Sie die Expert Advisor-Quelldatei haben, wenden Sie sich an Freelance. Sie werden Ihnen helfen.

Am besten ist es natürlich, wenn Sie sich direkt an den Autor des Expert Advisors wenden.

 

Ich habe eine Dll für MQL5 geschrieben, die eine grafische Tabelle in einem Fenster in WinForms auf .Net erstellt. Ich habe den Code auf die nativen Aufrufe für MQL4 portiert

die Geschwindigkeit gemessen, um die Aktualisierungsgeschwindigkeit von 5 Spalten und 5 Zeilen in der Tabelle zu bewerten

  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) Zyklus 0 Zeit = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Zyklus 1 Zeit = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Zyklus 2 Zeit = 143750 ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: Zyklus 2 Zeit = 66813 ms

2020.05.05 22:50:18.551 tbl_tst EURUSD,H1: Zeitrahmen 1 = 69219 ms

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


der dll-Code ist zu 99% identisch, ich habe ihn unter MQL4 mit Beispielen aus dem Artikelhttps://www.mql5.com/ru/articles/249 portiert


Sieht für mich nach einem großen Unterschied aus.

Dateien:
tst_winforms.jpg  239 kb
 
Hängen Sie Ihren Bibliothekscode + den vollständigen MQL-Code an, damit Sie ihn überprüfen und zu 100 % reproduzieren können.
 
Renat Fatkhullin:
Hängen Sie Ihren Bibliothekscode und den vollständigen MQL-Code an, damit Sie ihn überprüfen und zu 100% reproduzieren können.

Hier ist das Testskript

Ich kann im Prinzip Projekte und VS an den PM schicken.

 

der obige Test lief:

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 Speicher, 149 / 237 Gb Festplatte, IE 11, UAC, GMT+4

Ich habe das Terminal auf meinem Laptop immer noch nicht aktualisiert:

2020.05.05 23:37:15.336 Terminal MetaTrader 5 - FXOpen x64 build 2280 gestartet (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, Speicher: 1071 / 2804 Mb, Festplatte: 149 / 237 Gb, GMT+4

lief auf alten Build-Code, die ich beigefügt, bekam bessere Testzeit:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Zyklus 0 Zeit = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Zyklus 1 Zeit = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Zyklus 2 Zeit = 69000 ms

 
Igor Makanu:

der obige Test durchgeführt wurde:

Ich habe immer noch ein nicht aktualisiertes Terminal auf meinem Laptop:

Ich habe den beigefügten Code auf dem alten Build ausgeführt und eine bessere Testzeit erzielt:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Zyklus 0 Zeit = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Zyklus 1 Zeit = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Zyklus 2 Zeit = 69000 ms

Ich habe auf meinem 2404 die gleiche Geschwindigkeit wie in MT4.

 
Geess:

Ich habe auf 2404 die gleiche Geschwindigkeit wie auf MT4.

Ich habe den leisen Verdacht, dass MT5 die PC-Ressourcen stärker beansprucht, ich werde es morgen auf meinem PC überprüfen, mein Laptop ist schwach (((

Ja, hier ist eine weitere Sache, verwirrt durch die PC-Konfigurationszeile in der neuen Build - über meinem Beitrag, aus irgendeinem Grund die neue Build schrieb über Laptop-Speicher:

0 / 2 Gb Speicher

Die Startbedingungen waren die gleichen, nur ME und ein Terminal liefen

ZS: aber Aktualisierungsrate auf WinForm weniger als 1 ms .... unerwartet ;)