Errori, bug, domande - pagina 2733

 
Geess:

Passa solo l'array uchar invece dell'array di stringhe. Così è più semplice.
Per esempio, potete convertirlo in questo modo:

Funziona allo stesso modo per MQL4 e MQL5

è necessario restituire valori da dll a MQL, in ogni caso, sul lato MQL è necessario preparare un buffer per ricevere i dati

Tutto sommato, è una spiegazione lunga, ho già fatto tutto, volevo solo fare qualche domanda.

Grazie

 
Bug MT5 (build 2402) problemi con la priorità della chiamata di funzioni sovraccaricate nello spazio dei nomi:
1) quando la funzione dallo spazio dei nomi globale è sovraccaricata;
2) quando la funzione del sistema è sovraccarica.

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

Buona giornata!

Potete per favore consigliarmi, ho un Expert Advisor Sniper, non funziona nella nuova build di MT4 Alpari, c'è un modo per risolverlo? Non è nemmeno installato sul grafico. Funziona sulla build 1090.

Ho già registrato la mia copia di MT4, ma non è collegato a Internet, dice "Vecchia versione".

 
valera_nur:

Buona giornata!

Potete per favore consigliarmi, ho un Expert Advisor Sniper, non funziona nella nuova build di MT4 Alpari, c'è un modo per risolverlo? Non è nemmeno installato sul grafico. Funziona sulla build 1090.

Ma il terminale MT4 non può connettersi a Internet sulla build 1090, dice "Vecchia versione".

Se hai il file sorgente di Expert Advisor, fai domanda a Freelance. Vi aiuteranno.

Il modo migliore, naturalmente, è quello di contattare direttamente l'autore dell'Expert Advisor.

 

Ho scritto una dll per MQL5 che crea una tabella grafica in una finestra in WinForms su .Net. Ho portato il codice alle chiamate native per MQL4

ha misurato la velocità per valutare la velocità di aggiornamento di 5 colonne e 5 righe nella tabella

  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) Ciclo 0 tempo = 143563 ms

2020.05.05 22:57:55.370 tbl_tst (EURUSD,H1) Ciclo 1 tempo = 142156 ms

2020.05.05 23:00:19.121 tbl_tst (EURUSD,H1) Cycle 2 time = 143750 ms

MQL4:

2020.05.05 22:51:25.359 tbl_tst EURUSD,H1: Tempo del ciclo 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


il codice dll è identico al 99%, l'ho portato sotto MQL4 usando gli esempi dell'articolohttps://www.mql5.com/ru/articles/249


Mi sembra una grande differenza.

File:
tst_winforms.jpg  239 kb
 
Allega il tuo codice di libreria + il codice MQL completo in modo da poter controllare e riprodurre al 100%.
 
Renat Fatkhullin:
Allega il tuo codice di libreria + il codice MQL completo, in modo da poter controllare e riprodurre al 100%.

Ecco lo script di prova

Posso, in linea di principio, inviare progetti e VS al PM

 

il test di cui sopra ha funzionato:

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

Ho ancora il terminale non aggiornato sul mio portatile:

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

ha funzionato con il vecchio codice di compilazione che ho allegato, ha ottenuto un tempo di test migliore:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Ciclo 0 tempo = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Ciclo 1 tempo = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Tempo del ciclo 2 = 69000 ms

 
Igor Makanu:

su cui è stato eseguito il test di cui sopra:

Ho ancora un terminale non aggiornato sul mio portatile:

ha eseguito il codice che ho allegato sulla vecchia build, ha ottenuto un tempo di prova migliore:

2020.05.05 23:40:09.553 tbl_tst (EURUSD,H1) Ciclo 0 tempo = 68938 ms

2020.05.05 23:41:17.911 tbl_tst (EURUSD,H1) Ciclo 1 tempo = 68343 ms

2020.05.05 23:42:26.912 tbl_tst (EURUSD,H1) Tempo del ciclo 2 = 69000 ms

Ho la stessa velocità sul mio 2404 come in MT4.

 
Geess:

Ho la stessa velocità su 2404 e su MT4.

Ho il vago sospetto che MT5 sia diventato più esigente per le risorse del PC, lo controllerò sul mio PC domani, il mio portatile è debole (((

Sì, ecco un'altra cosa, confuso dalla linea di configurazione del PC nella nuova build - sopra il mio post, per qualche ragione la nuova build ha scritto della memoria del portatile:

0 / 2 Gb di memoria

le condizioni di avvio erano le stesse, solo ME e un terminale in esecuzione

ZS: ma la frequenza di aggiornamento su WinForm meno di 1 ms .... inaspettatamente ;)