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

 
elugovoy:

Merhaba, hangi MT5 terminal sürümünü kullanıyorsunuz?

MT5 terminalinin hangi sürümünü kullanıyorsunuz?

Lütfen buraya eklenmiş olan MQLMySQL kütüphanelerinin en son güncellemesini deneyin.

MT4'ün en son sürümünü kullandım, yalnızca bir çağrı kullandığımda sorun yok, ancak Gönderici veri gönderdiğinde ve alıcı veri aldığında aynı MT4 'te aynı zamanda, MT4 "Erişim ihlali 0x65D6954'e okundu" hatasını yazdırır.
 
elugovoy:

Merhaba, hangi MT5 terminal sürümünü kullanıyorsunuz?

MT5 terminalinin hangi sürümünü kullanıyorsunuz?

lütfen buraya eklenmiş olan MQLMySQL kütüphanelerinin en son güncellemesini deneyin.

mqlmysql.dll
singleton çağrısı, aynı mt4 bu dll'i çoklu çağıramaz
 

Belki de işletim sisteminizde farklı konumlarda libmysql.dll vardır.

Eğer %WINDOWS%\SYSTEM32 klasöründe libmysql.dll varsa, bunu MT4\MQL4\Experts\Libraries klasöründen silmeniz gerekir.

bu yüzden sadece bir dll kullanılmalıdır.

Bir terminal, uzman danışman farklı grafikler için kullanılsa bile kitaplığı bir kez ekler. bu yüzden sebep farklı.

MQLMySQL.dll, dahili paylaşılan verilere erişmek için muteksler kullanır, bu nedenle bu da bir neden olamaz.

Yapabilirseniz, lütfen bana böyle bir durumu yükseltmek için kullandığınız MQL kodunu ve MT4' ün yapı numarasını verin, test etmeye ve çözümü sunmaya çalışacağım.

Test etmeye ve çözümü iletmeye çalışacağım.

 
elugovoy:

Belki de işletim sisteminizde farklı konumlarda libmysql.dll vardır.

Eğer %WINDOWS%\SYSTEM32 klasöründe libmysql.dll varsa, bunu MT4\MQL4\Experts\Libraries klasöründen silmeniz gerekir.

bu yüzden sadece bir dll kullanılmalıdır.

Bir terminal, uzman danışman farklı grafikler için kullanılsa bile kitaplığı bir kez ekler. bu yüzden sebep farklı.

MQLMySQL.dll, dahili paylaşılan verilere erişmek için muteksler kullanır, bu nedenle bu da bir neden olamaz.

Yapabilirseniz, lütfen bana böyle bir durumu yükseltmek için kullandığınız MQL kodunu ve MT4'ün yapı numarasını verin, test etmeye ve çözümü sunmaya çalışacağım.

Test etmeye ve çözümü sunmaya çalışacağım.

MQL KODU mt4 verilerini mysql tablosuna topluyor, sadece bir mt4'te kullanıldığında sorun yok, iki mt4'te dört veya daha fazla kullanıldığında Access violation read yazdırıyor içinde 0x00000002'ye \MQLMySQL.dll'


Dosyalar:
sendData.mq4  11 kb
 
elugovoy:

Belki de işletim sisteminizde farklı konumlarda libmysql.dll vardır.

Eğer %WINDOWS%\SYSTEM32 klasöründe libmysql.dll varsa, bunu MT4\MQL4\Experts\Libraries klasöründen silmeniz gerekir.

bu yüzden sadece bir dll kullanılmalıdır.

Bir terminal, uzman danışman farklı grafikler için kullanılsa bile kitaplığı bir kez ekler. bu yüzden sebep farklı.

MQLMySQL.dll, dahili paylaşılan verilere erişmek için muteksler kullanır, bu nedenle bu da bir neden olamaz.

Yapabilirseniz, lütfen bana böyle bir durumu yükseltmek için kullandığınız MQL kodunu ve MT4'ün yapı numarasını verin, test etmeye ve çözümü sunmaya çalışacağım.

Test etmeye ve çözümü iletmeye çalışacağım.

Mysql hafıza tablosu kullandım, sorun bu mu? ENGINE=MEMORY
 
yukaixie:
Mysql bellek tablosunu kullandım, sorun bu mu? ENGINE=MEMORY
Tablo türü motorunu bellekten Innodb'ye değiştirdim, sorun hala devam ediyor. 2015.04.08 15:31:59.296 Erişim ihlali ' içinde 0x00000004'e okundu. .MQLMySQL.dll' içinde

 
yukaixie:

MQL KODU mt4 verilerini mysql tablosuna toplar, tek bir mt4'te kullanıldığında sorun olmaz, iki mt4'te dört veya daha fazla kullanıldığında Erişim ihlali yazdırır içinde 0x00000002'ye \MQLMySQL.dll'


MySqlDisconnect(DB);

veritabanı bağlantısının kesilmesi gerekiyor, ancak yine de sorunu çözmüyor.

 
EA/Script'inizin kaynak kodunu sağlayabilir misiniz?
 
elugovoy:
EA/Script'inizin kaynak kodunu sağlayabilir misiniz?

MQL KODU, mt4 verilerini mysql tablosuna toplar, yalnızca bir mt4'te kullanıldığında sorun olmaz, iki mt4'te dört veya daha fazla kullanıldığında, Access ihlalini yazdırır içinde 0x00000002'ye \MQLMySQL.dll'


Ek dosyalar:

senddata.mq4 11 kb

Sendata.mq4 benim yüklediğim EA kaynak kodudur.

 
elugovoy:
EA/Script'inizin kaynak kodunu sağlayabilir misiniz?
//+------------------------------------------------------------------+
//|& nbsp; Veritabanı İşlemi.mq4 |
//| Telif Hakkı 2015, MetaQuotes Software Corp.
//| & nbsp nbsp; https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Telif Hakkı 2015, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict


giriş dizesi Host = "localhost"; //Sunucu IP'si, örneğin 192.168.1.210, localhost
input string User = "root"; //mysql veritabanı oturum açma kullanıcı adı
input string Password = "root"; //Mysql Veritabanı Parolası
input string Veritabanı = "test"; //Mysql Veritabanı Adı
giriş dizesi Socket = "0"; // veritabanı kimlik bilgileri
input int Port = 3306; // mysql veritabanı bağlantı noktası numarası
input int ClientFlag = 0; // veritabanı kimlik bilgileri

int DB = 0; // veritabanı tanımlayıcısı //---
int timeSeconds = 1; // zamanlayıcı
#include <MQLMySQL.mqh

string Query; int i,Cursor,Rector

int i,Cursor,Rows; //Include <MQLMySQL.mqh> string Query.
//+------------------------------------------------------------------+
//| Uzman başlatma işlevi & nbsp; |
//+------------------------------------------------------------------+
int OnInit()
OnInit()
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Uzman başlangıçtan kaldırma işlevi |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| Uzman tik fonksiyonu & nbsp; |
//+------------------------------------------------------------------+
void OnTick()
{
if( IsExpertEnabled() && IsConnected() && AccountNumber() > 0 )
{
int hesap = HesapNumarası();
string symbol = Symbol();
//int syDB = 0; // veritabanı tanımlayıcısı//---
DB = cMySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag); //inst syDB = 0; // veritabanı tanımlayıcısı//---
//Alert(DB);
çift yayılma = (Satış - Teklif);
//Alert(sembol).
Query = "SELECT * FROM " + symbol + " where AccountNumber = " + (string)AccountNumber();
//Print(Query);
Cursor = MySqlCursorOpen(DB, Query);
if (Cursor >= 0)
{
Satırlar = MySqlCursorRows(Cursor); if (Cursor >= 0) { Satırlar = MySqlCursorRows(Cursor)
int dataRows = Rows;
//Alert(dataRows);
if( dataRows > 0 )
{
Query = "update " + symbol + " set Bid = " + (string)Bid + ", Ask = " + ( string)Sor
+ ", Spread = " + DoubleToStr(spread, Digits)
+ ", Zaman = '" + TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS ) + "' where AccountNumber = "
+ (string)account; // + "' ve Symbol = '" + symbol + "'".
MySqlExecute(DB, Sorgu);
}
else if( dataRows == 0 )
{
Query = "CREATE TABLE IF NOT EXISTS " + symbol + " (id int NOT NULL AUTO_ INCREMENT PRIMARY KEY, AccountNumber int, "
+ "Symbol char(20), Bid double, Ask double, Spread double,"
+ "Memo char(50), "
+ "Time datetime) ENGINE=MEMORY DEFAULT CHARSET=utf8 ";
MySqlExecute(DB, Sorgu);
Query = "INSERT INTO " + symbol + "(AccountNumber, Symbol, Bid, Ask, Spread. Memo, Time) VALUES ("
+ (string)account + ", '" + symbol + "', "+(string)Bid+", "+ (string)Ask + ", "
+ DoubleToStr(spread, Digits)
+ ", '" + (string)AccountCompany()
+ "', \'"+TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS)+"\')"";
if(MySqlExecute(DB, Query) ! = true )
{
//Query = "DROP TABLE IF EXISTS `data_table`";
//MySqlExecute(DB, Sorgu);
Query = "CREATE TABLE IF NOT EXISTS " + symbol + "(id int NOT NULL AUTO_INCREMENT PRIMARY KEY, AccountNumber int, "
+ "Symbol char(20), Bid double, Ask double, Spread double,"
+ "Memo char(50), "
+ "Zaman datetime) ENGINE=MEMORY DEFAULT CHARSET= utf8 ";
MySqlExecute(DB, Sorgu);
}
}
MySqlCursorClose(Cursor); // ASLA CURSOR'U KAPATMAYI UNUTMAYIN !!!!
}
}
}
//+------------------------------------------------------------------+

Üç DB bağlantısı kullandım, ancak aynı DB'yi kullandım, herhangi bir yeni veritabanı CRUD için yeni DB oluşturmam gerekiyor mu?


自动交易和策略测试
自动交易和策略测试
  • www.mql5.com
MQL5:MetaTrader 5客户端内置的交易策略语言。语言允许编写您自己的自动交易系统,技术指标,脚本和函数程序库