Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift" - Seite 3

 

Vielen Dank für den Artikel! Wie viele Lösungen haben nicht versucht, überall die gleiche Sache, wenn Sie nicht die Mühe, bitte schauen Sie sich das Protokoll, kann ich nicht verstehen, alles....

MySQL-Server:

  • Server: localhost über TCP/IP
  • Server-Version: 5.6.10
  • Protokollversion: 10
  • Benutzer: root@localhost
  • MySQL-Kodierung: UTF-8 Unicode (utf8 )
  • InnoDB-Datenbank, UTF8-General-Ci

MT5 Build 1035

Betriebssystem: Win8.1 x64

Dateien:
log_.txt  19 kb
 

Grüße.

Sie haben ein x64-Betriebssystem. Sind Sie sicher, dass Sie die DLLs für die 64-Bit-Version verwenden?

Sie sind in einem der Diskussionsbeiträge beigefügt(mqlmysql_for_mql5_x64.zip1264 kb).

In dem Artikel gab es nur Bibliotheken für x86-Betriebssysteme.

Übrigens, funktionieren die Testbeispiele aus dem Archiv ?

<<Etwas später>>.

Diese Zeile ist verwirrend: Testdatei hinzugefügt: libraries\MQLMySQL.dll. 89626 bytes loaded

Die Originalgröße der x64-Datei MQLMySQL.dll = 89600 Bytes, nicht 89626.

Welches Antivirenprogramm haben Sie?

 

Hallo.

Mir gefällt das Konzept. Sollte eine große Hilfe sein

Aber ich stoße auf ein Problem. Ich benutze 64 Bit und ich habe sie heruntergeladen und ein Testskript gestartet, um zu sehen, wie es funktioniert.

aber stürzt in MySQLGetFieldAsxxxxx ab

2015.01.09 21:32:09.535 testsql(AUDNZD,H1) 000000013F81347A 488BF2 mov rsi, rdx
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) 000000013F813476 4883EC20 sub rsp, 0x20
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) 000000013F813475 57 push rdi
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) 000000013F813470 4889742418 mov [rsp+0x18], rsi
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) Zugriffsverletzung bei 0x000000013F8134B3 gelesen auf 0x0000000000000001
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) +++++++++++++0
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) 2 Zeile(n) ausgewählt.
2015.01.09 21:32:09.425 testsql (AUDNZD,H1) Verbunden
2015.01.09 21:31:18.135 testsql (AUDNZD,H1) x 0 y


Sorce:

#include <FXCM\PairsInfo.mqh>
#include <FXCM\MQLMySQL.mqh>

//--- Eingabeparameter
input string   MySQLURL="yyyyyyyyyyyyyy";
input string   MySQLDB = "forex";
input string   MySQLParms = "tradeparms";
input string   MySQLUser="Ingvar";
input string   MySQLPW="xxxxxxxxxxxx";
input int      MySQLPort=3306;
input string   GroupID= "Groupxxx";

PairsInfo prms;

//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  string SQLString = "";
  string Q;
  string C = ",";
  StringSetCharacter(Q,0,34);
  
  string query;
  int Cursor;
  int DB;
  int rows;
  
  DB = MySqlConnect(MySQLURL, MySQLUser, MySQLPW, MySQLDB, MySQLPort, "0", 0);
  if (DB == -1) 
    {
      Print ("Connection failed! Error: "+MySqlErrorDescription); 
      return;
    }

    Print ("Connected");
    
  // Abfrage = "Select * From tradeparms";
    
  // query = "Select * FROM tradeparms WHERE TradeType = 2";
    
    query = "SELECT Pair, TradeType, SetupID FROM tradeparms WHERE TradeType = 2 AND Pair = 'USDJPY'";
     
     
   Cursor = MySqlCursorOpen(DB,query);
   if(Cursor <  0)
    {
      Print("Cursor error");
      return;
    }


   string pair= "x";
   int tradetype = 0;
   string setupid = "y";
   
   rows = MySqlCursorRows(Cursor);
   Print (rows, " row(s) selected.");
   
   for(int i=0;i<rows;i++)
    {
     if (MySqlCursorFetchRow(Cursor))  
       {
        Print("+++++++++++++" + i);
    pair = MySqlGetFieldAsString(Cursor, 0);                    << crashes here.   
   // tradetype = MySqlGetFieldAsInt(Cursor,1);
   // setupid = MySqlGetFieldAsString(Cursor,2);
       }
     }  
      
   Print(pair + "  " + DoubleToString(tradetype,0) + "  " + setupid);
   
   MySqlCursorClose(Cursor);
 
  
 } 
 

Ich habe meinen alten Laptop mit Win32 ausgegraben und die 32-Bit-Version darauf installiert und den gleichen Quellcode mit 32-Bit-Bibliothek und Includes kompiliert.

Funktioniert gut. Das Problem ist mit der 64-Bit-Version

 
ingvar_e:

Ich habe meinen alten Laptop mit Win32 ausgegraben und die 32-Bit-Version darauf installiert und den gleichen Quellcode mit 32-Bit-Bibliothek und Includes kompiliert.

Funktioniert gut. Das Problem ist mit der 64-Bit-Version

Ok, ich werde das überprüfen.

Was ist die Version von Terminal? MT4/MT5? und die Build-Nummer?

 
elugovoy:

Ok, ich werde das überprüfen.

Was ist die Version des Terminals? MT4/MT5? und Build-Nummer?

Terminal MT5 Build 1035, läuft auf W7 64 und stürzt ab.

Terminal MT5 Build 1035 läuft auf XP 32 OK

Vielen Dank. Ich arbeite an einem Multicurreny, Mulimethode (eine Art) EA, die derzeit eine Eingabedatei verwendet. Für Flexibilität beim Testen verschiedener Eingabedateien bin ich zu MySQL konvertieren

 
ingvar_e:

Terminal MT5 Build 1035 läuft auf W7 64 Absturz

Terminal MT5 Build 1035 läuft auf XP 32 OK

Schätzen Sie es. Ich arbeite an einem Multicurreny, Mulimethode (eine Art) EA, die derzeit eine Eingabedatei verwendet. Für Flexibilität beim Testen verschiedener Eingabedateien bin ich zu MySQL konvertieren

Ich habe es auf x64 OS, MT5 build 1035 getestet. Sie haben absolut Recht.

Ich habe einige Überprüfungen vorgenommen und festgestellt, dass die Daten, die in der DLL ankommen, gut funktionieren. Das Problem liegt im Empfang des Datentyps STRING von den DLL-Funktionen.

Auch habe ich getestet, meine eigenen Skripte wurde mit früheren Build von MT5 x64 kompiliert - funktioniert gut.

Aber nach der Neukompilierung mit Build 1035, das gleiche Skript mit der gleichen DLL bringt solche Fehler.

Schließlich gehe ich davon aus, dass das Problem nicht in der DLL oder MQLMySQL Projekt, sondern in MT5 x64 Compiler ist. Ich habe einen Fall im Service Desk für dieses Problem eröffnet.

Vielen Dank!

Eugene

 
ingvar_e:

Terminal MT5 Build 1035 läuft auf W7 64 Absturz

Terminal MT5 Build 1035 läuft auf XP 32 OK

Schätzen Sie es. Ich arbeite an einem Multicurreny, Mulimethode (eine Art) EA, die derzeit eine Eingabedatei verwendet. Für Flexibilität beim Testen verschiedener Eingabedateien bin ich zu MySQL konvertieren

Nur zum Testen können Sie meine Skripte verwenden, die im Distributionspaket enthalten sind.

Ändern Sie die Datenbank-Zugangsdaten in der INI-Datei, dann führen Sie die Skripte aus.

Versuchen Sie, sie neu zu kompilieren und erneut auszuführen.

Sie werden sehen, dass die Skripte beim ersten Durchlauf gut funktionieren, aber nach der Neukompilierung die gleichen Fehler wie bei Ihnen auftreten.

Das Problem liegt im MT5 x64 b1035 Terminal/Compiler

 
elugovoy:

Nur zum Testen können Sie meine Skripte verwenden, die im Verteilungspaket enthalten sind.

Ändern Sie die Datenbank-Zugangsdaten in der INI-Datei und führen Sie dann die Skripte aus.

Versuchen Sie, sie neu zu kompilieren und erneut auszuführen.

Sie werden sehen, dass die Skripte beim ersten Durchlauf gut funktionieren, aber nach der Neukompilierung die gleichen Fehler wie bei Ihnen auftreten.

Das Problem tritt im MT5 x64 b1035 Terminal/Compiler auf.

>Problem ist in MT5 x64 b1035

Wir sitzen also fest??

Mein alter 32bit Laptop hat heute den Geist aufgegeben. Völlig tot.

Ich frage mich, ob ich ein 32-Bit-Windows auf einem 64-Bit-Rechner installieren kann und ob das wirklich hilft. Oder ein MT5/MQL5 32 Bit auf einem Windows 7 64 Bit Rechner installieren

Später:

Gefunden dies Versuchen Sie es.

 
ingvar_e:

>Problem ist in MT5 x64 b1035

Wir sitzen also fest??

Mein alter 32bit Laptop hat heute den Geist aufgegeben. Völlig tot.

Ich frage mich, ob ich ein 32-Bit-Windows auf einem 64-Bit-Rechner installieren kann und ob das wirklich hilft. Oder ein MT5/MQL5 32 Bit auf einem Windows 7 64 Bit Rechner installieren

Später:

Gefunden dies Versuchen Sie es.

  • Um die 32-Bit-Version auf einem 64-Bit-Betriebssystem zu installieren, sollten Sie das Installationsprogramm mit dem Schlüssel /32 starten. Zum Beispiel c:\>mt5setup.exe /32.
  • ,SYMBOL_TRADE_TICK_VALUE)

    0 zurückgibt;

    Vielleicht ist es keine gute Idee, einen 32-Bit-MT5 auf einem 64-Bit-Windows-Rechner auszuführen. Es gibt auch andere Anzeichen für eine Fehlfunktion. Nächster Versuch ist, ein Windows 32 auf meinem 64-Bit-Computer zu installieren.

    Immer diese langen Umwege, die einen weit vom Hauptkurs abbringen :-(

    Es sieht so aus, als müsste ich dieses Tool aufgeben und mit MySQL zu den Grundlagen zurückkehren. Zu mühsam ein neues Windows XP zu installieren und keinen W7 Schlüssel zu haben