"MQL5'ten (MQL4) MySQL Veritabanına Nasıl Erişilir" makalesi için tartışma - sayfa 3

 

Yazı için teşekkürler! Kaç çözüm denemediyseniz her yerde aynı şey, zahmet olmazsa loglara bakın lütfen, ben bir şey anlayamıyorum....

MySQL sunucusu:

  • Sunucu: TCP/IP üzerinden localhost
  • Sunucu sürümü: 5.6.10
  • Protokol sürümü: 10
  • Kullanıcı: root@localhost
  • MySQL kodlaması: UTF-8 Unicode (utf8 )
  • InnoDB veritabanı, UTF8-General-Ci

MT5 yapı 1035

İşletim Sistemi: Win8.1 x64

Dosyalar:
log_.txt  19 kb
 

Selamlar.

X64 işletim sisteminiz var, 64 bit sürüm için DLL'leri kullandığınızdan emin misiniz?

Bunlar tartışma yazılarından birine eklenmiştir(mqlmysql_for_mql5_x64.zip1264 kb).

Makalede sadece x86 işletim sistemleri için kütüphaneler vardı.

Bu arada, arşivdeki test örnekleri çalışıyor mu?

<<biraz sonra>>.

Bu satır kafa karıştırıcı: Test dosyası eklendi: libraries\MQLMySQL.dll. 89626 bayt yüklendi

x64 dosyasının orijinal boyutu MQLMySQL.dll = 89600 bayt, 89626 değil.

Hangi antivirüs programınız var?

 

Merhaba.

Konsepti beğendim. Çok yardımcı olacak

Ancak bazı sorunlarla karşılaştım. 64 bit nd kullanıyorum Onları indirdim ve nasıl çalıştığını görmek için bir test betiği başlattım.

ancak MySQLGetFieldAsxxxxx'te çöküyor

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) 0x000000013F8134B3 konumunda erişim ihlali 0x0000000000000001 konumuna okundu
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) +++++++++++++0
2015.01.09 21:32:09.535 testsql (AUDNZD,H1) 2 satır(lar) seçildi.
2015.01.09 21:32:09.425 testsql (AUDNZD,H1) Bağlandı
2015.01.09 21:31:18.135 testsql (AUDNZD,H1) x 0 y


Sorce:

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

//--- giriş parametreleri
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;

//+------------------------------------------------------------------+
//| Betik program başlatma işlevi|
//+------------------------------------------------------------------+
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");
    
  // query = "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);
 
  
 } 
 

Eski win32'li dizüstü bilgisayarımı çıkardım ve 32 bit sürümünü yükledim ve aynı kaynağı 32 bit kütüphane ve içeriklerle derledim.

İyi çalışıyor. Sorun 64 bit sürümde

 
ingvar_e:

Eski win32'li dizüstü bilgisayarımı çıkardım ve 32 bit sürümünü yükledim ve aynı kaynağı 32 bit kütüphane ve içeriklerle derledim.

İyi çalışıyor. Sorun 64 bit sürümde

Tamam, bunu kontrol edeceğim.

Terminal sürümü nedir? MT4/MT5? ve yapı numarası?

 
elugovoy:

Tamam, bunu kontrol edeceğim.

Terminal sürümü nedir? MT4/MT5? ve yapı numarası?

Terminal MT5 Build 1035. W7 64 çökmesi üzerinde çalışıyor

Terminal MT5 Build 1035 XP 32 üzerinde Çalışıyor Tamam

Takdir ediyorum. Şu anda bir girdi dosyası kullanan çok zamanlı, muli yöntemli (bir nevi) bir EA üzerinde çalışıyorum. Farklı girdi dosyalarını test etme esnekliği için MySQL'e dönüştürüyorum

 
ingvar_e:

Terminal MT5 Build 1035. W7 64 çökmesi üzerinde çalışıyor

Terminal MT5 Build 1035 XP 32 üzerinde Çalışıyor Tamam

Takdir ediyorum. Şu anda bir girdi dosyası kullanan çok zamanlı, muli yöntemli (bir nevi) bir EA üzerinde çalışıyorum. Farklı girdi dosyalarını test etme esnekliği için MySQL'e dönüştürüyorum

Bunu x64 OS, MT5 yapı 1035 üzerinde test ettim. Kesinlikle haklısınız.

Bazı kontroller yaptım ve DLL'ye gelen verilerin iyi çalıştığını gördüm. Sorun DLL fonksiyonlarından STRING veri tipinin alınmasında.

Ayrıca, kendi komut dosyalarımın MT5 x64'ün önceki derlemesiyle derlendiğini test ettim - iyi çalışıyor.

Ancak yapı 1035 ile yeniden derledikten sonra, aynı DLL ile aynı komut dosyası bu tür hataları getiriyor.

Son olarak, sorunun DLL veya MQLMySQL projesinde değil, MT5 x64 derleyicisinde olduğunu varsayıyorum. Bu sorun için hizmet masasında dosya açtım.

Teşekkürler,

Eugene

 
ingvar_e:

Terminal MT5 Build 1035. W7 64 çökmesi üzerinde çalışıyor

Terminal MT5 Build 1035 XP 32 üzerinde Çalışıyor Tamam

Takdir ediyorum. Şu anda bir girdi dosyası kullanan çok zamanlı, muli yöntemli (bir nevi) bir EA üzerinde çalışıyorum. Farklı girdi dosyalarını test etme esnekliği için MySQL'e dönüştürüyorum

Sadece test etmek için, dağıtım paketine dahil olan komut dosyalarımı kullanabilirsiniz.

INI dosyasındaki veritabanı kimlik bilgilerini değiştirin, ardından komut dosyalarını çalıştırın.

Onları yeniden derlemeyi ve tekrar çalıştırmayı deneyin.

İlk çalıştırmada iyi çalıştıklarını göreceksiniz, ancak yeniden derledikten sonra sizinkiyle aynı hataları getiriyorlar.

Sorun MT5 x64 b1035 terminal/derleyicide

 
elugovoy:

Sadece test etmek için, dağıtım paketine dahil olan komut dosyalarımı kullanabilirsiniz.

INI dosyasındaki veritabanı kimlik bilgilerini değiştirin, ardından komut dosyalarını çalıştırın.

Onları yeniden derlemeyi ve tekrar çalıştırmayı deneyin.

İlk çalıştırmada iyi çalıştıklarını göreceksiniz, ancak yeniden derledikten sonra sizinkiyle aynı hataları getiriyorlar.

Sorun MT5 x64 b1035 terminalinde / derleyicisinde

>Sorun MT5 x64 b1035'te

Yani sıkıştık mı?

Eski 32bit dizüstü bilgisayarım bugün pes etti. Tamamen öldü.

Acaba 64 bit bir makineye 32 bit bir pencere yükleyebilir miyim ve bunun gerçekten yardımcı olup olmayacağını merak ediyorum. Veya Windows 7 64 bit makineye bir MT5 / MQL5 32 bit yükleyin

Sonra görüşürüz:

Bunu denerken buldum.

 
ingvar_e:

>Sorun MT5 x64 b1035'te

Yani sıkıştık mı?

Eski 32bit dizüstü bilgisayarım bugün pes etti. Tamamen öldü.

Acaba 64 bit bir makineye 32 bit bir pencere yükleyebilir miyim ve bunun gerçekten yardımcı olup olmayacağını merak ediyorum. Veya Windows 7 64 bit makineye bir MT5 / MQL5 32 bit yükleyin

Sonra görüşürüz:

Bunu denerken buldum.

  • 32 bit sürümü 64 bit işletim sistemine yüklemek için yükleyiciyi /32 tuşu ile başlatmalısınız. Örneğin c:\>mt5setup.exe /32.
  • ,SYMBOL_TRADE_TICK_VALUE)

    0 döndürür;

    Belki de 32 bit MT5'i Windows 64 bit makinede çalıştırmak iyi bir fikir değildir. Başka arıza göstergeleri de var. Bir sonraki deneme, 64 bit bilgisayarıma bir Windows 32 yüklemek.

    Her zaman bu uzun sapmalar sizi ana rotanızdan çok uzaklara götürür :-(

    Görünüşe göre bu araçtan vazgeçmem ve MySQL ile temellere inmem gerekiyor. Yeni bir Windows XP yüklemek çok zahmetli ve W7 anahtarı yok