記事"MQL5 (MQL4)から MySQL データベースにアクセスする方法"についてのディスカッション - ページ 6 12345678910111213...30 新しいコメント yukai xie 2015.04.02 04:55 #51 elugovoy:お使いのMT5ターミナルのバージョンは?お使いのMT5ターミナルのバージョンはどちらですか?MQLMySQLライブラリの最新アップデートをお試しください。 MT4の最新バージョンを使用していますが、1つのコールだけを使用する場合は問題ありませんが、 同じMT4で センダーがデータを送信し、 レシーバーがデータを受信 すると、MT4は "アクセス違反 "というエラーを表示します。 MT4は "アクセス違反が0x65D6954に読み込まれた "というエラーを表示します。 yukai xie 2015.04.02 05:03 #52 elugovoy:お使いのMT5ターミナルのバージョンは?お使いのMT5ターミナルのバージョンはどちらですか?MQLMySQLライブラリの最新アップデートをお試しください。mqlmysql.dllが シングルトン呼び出しで、同じmt4はこのdllをマルチコールできません。 Eugeniy Lugovoy 2015.04.02 13:30 #53 もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。から削除する必要があります。エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT 4のビルド 番号を教えてください。私はそれをテストし、解決策を提供しようとします。 yukai xie 2015.04.08 08:04 #54 elugovoy:もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。から削除する必要があります。エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT4のビルド番号を教えてください。私はそれをテストし、解決策を提供しようとします。MQLコードはmt4のデータをmysqlのテーブルに収集するもので、1つのmt4で1つだけ使用する場合は問題ありませんが、2つのmt4で4つ以上使用する場合は、Access violation readと表示されます。と表示される。\MQLMySQL.dll' ファイル: sendData.mq4 11 kb yukai xie 2015.04.08 09:02 #55 elugovoy:もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。から削除する必要があります。エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT4のビルド番号を教えてください。テストして解決策を提供するよう努力します。mysqlの メモリテーブルを 使用している のですが、それが問題なのでしょうか? ENGINE=MEMORY yukai xie 2015.04.08 09:37 #56 yukaixie: mysqlのメモリテーブルを使用したのですが、これが問題なのでしょうか? ENGINE=MEMORY テーブルタイプのエンジンをメモリからInnodbに変更したが、問題はまだ存在する。 2015.04.08 15:31:59.296 Access violation read to 0x00000004 in '..MQLMySQL.dll'で0x00000004へのアクセス違反が読み込まれました。 yukai xie 2015.04.08 09:47 #57 yukaixie:MQL CODEはmt4のデータをmysqlのテーブルに収集するもので、1つのmt4で1つだけ使用する場合は問題ないが、2つのmt4で4つ以上使用すると、Access violation readと表示される。と表示される。\MQLMySQL.dll'MySqlDisconnect(DB);データベースの切断が必要ですが、それはまだ問題を解決していない。 Eugeniy Lugovoy 2015.04.08 23:42 #58 EA/スクリプトのソースコードをいただけますか? yukai xie 2015.04.09 03:05 #59 elugovoy: EA/スクリプトのソースコードを教えてください。MQL CODEはmt4のデータをmysqlのテーブルに収集していますが、1つのmt4で1つだけ使用する場合は問題ありませんが、2つのmt4で4つ以上使用する場合は、Access violation readと表示されます。と表示される。\MQLMySQL.dll'追加ファイル:senddata.mq4 11 kbsendata.mq4は私がアップロードしたEAのソースコードです。 yukai xie 2015.04.09 05:11 #60 elugovoy: EA/スクリプトのソースコードを教えてください。//+------------------------------------------------------------------+//|&データベース操作.mq4//| Copyright 2015, MetaQuotes Software Corp.//|& nbspnbsp; https://www.mql5.com |//+------------------------------------------------------------------+#プロパティ copyright "Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version "1.00"#プロパティ strictinput string Host = "localhost"; //サーバーIP、例えば192.168.1.210, localhostinput string User = "root"; //mysqlデータベースのログインユーザー名input string Password = "root"; //Mysqlデータベースのパスワードinput string Database = "test"; //Mysqlデータベース名input string Socket = "0"; //データベースの認証情報input int Port = 3306; //mysqlデータベースのポート番号input int ClientFlag = 0; // データベースの認証情報int DB = 0; // データベース識別子int timeSeconds = 1; // タイマー#include <MQLMySQL.mqh文字列 Query; int i,Cursor,Rectorint i,Cursor,Rows; //Include <MQLMySQL.mqh> string Query.//+------------------------------------------------------------------+//| エキスパート初期化関数 //+------------------------------------------------------------------+int OnInit()OnInit()return(INIT_SUCCEEDED);}//+------------------------------------------------------------------+//| エキスパート初期化関数//+------------------------------------------------------------------+void OnDeinit(const int reason){}//+------------------------------------------------------------------+//| エキスパート・ティック関数 //+------------------------------------------------------------------+void OnTick(){if( IsExpertEnabled() && IsConnected() && AccountNumber() > 0 ){int account = AccountNumber();string symbol = Symbol();//int syDB = 0; // データベース識別子//---。DB = cMySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag); //inst syDB = 0; // データベース識別子 ///---//Alert(DB);double spread = (Ask - Bid);//アラート(シンボル).Query = "SELECT * FROM " + symbol + " where AccountNumber = " + (string)AccountNumber();//Print(Query);カーソル = MySqlCursorOpen(DB, Query);if (Cursor >= 0){行 = MySqlCursorRows(Cursor); if (Cursor >= 0) { 行 = MySqlCursorRows(Cursor)int dataRows = Rows;//Alert(dataRows);if( dataRows > 0 ){Query = "update " + symbol + " set Bid = " + (string)Bid + ", Ask = " + (文字列)アスク+ ", スプレッド = " + DoubleToStr(spread, Digits)+ ", Time = '" + TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS) + "' where AccountNumber) + "' where AccountNumber = ".+ (string)account; // + "' and Symbol = '" + symbol + "'.".MySqlExecute(DB, Query);}else if( dataRows == 0 ){Query = "CREATE TABLE IF NOT EXISTS " + symbol + " (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, AccountNumber int, "+ "シンボル char(20), Bid double, Ask double, Spread double,"+ "メモ char(50), "+ ENGINE=MEMORY DEFAULT CHARSET=utf8 ";MySqlExecute(DB, Query);Query = "INSERT INTO " + symbol + "(AccountNumber, Symbol, Bid, Ask, Spread.メモ, 時間) VALUES ("+ (string)account + ", '" + symbol + "', "+(string)Bid+", "+ (string)Ask + "、"+ DoubleToStr(スプレッド、桁)+ ", '" + (文字列)AccountCompany()+ "', ˶'+TimeToString(TimeLocal(), TIME_DATE|TIME_SECONDS)+"";)if(MySqlExecute(DB, Query) != true ){//Query = "DROP TABLE IF EXISTS `data_table`";//MySqlExecute(DB, Query);Query = "CREATE TABLE IF NOT EXISTS " + symbol + "(id intNOT NULL AUTO_INCREMENT PRIMARY KEY, AccountNumber int, "+ "シンボル char(20), Bid double, Ask double, Spreaddouble、"+ "メモ char(50), "+ ENGINE=MEMORY DEFAULT CHARSET=utf8 ";MySqlExecute(DB, Query);}}MySqlCursorClose(Cursor); // カーソルを閉じるのを忘れない !}}}//+------------------------------------------------------------------+私は3つのDB接続を使用しましたが、同じDBを使用しています。新しいデータベースのCRUDのために新しいDBを作成する必要がありますか? 自动交易和策略测试 www.mql5.com MQL5:MetaTrader 5客户端内置的交易策略语言。语言允许编写您自己的自动交易系统,技术指标,脚本和函数程序库 Discussion of article "How どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - エキスパートアドバイザー - 雑多な質問 12345678910111213...30 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
お使いのMT5ターミナルのバージョンは?
お使いのMT5ターミナルのバージョンはどちらですか?
MQLMySQLライブラリの最新アップデートをお試しください。
お使いのMT5ターミナルのバージョンは?
お使いのMT5ターミナルのバージョンはどちらですか?
MQLMySQLライブラリの最新アップデートをお試しください。
もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。
もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。
から削除する必要があります。
エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。
MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。
もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT 4のビルド 番号を教えてください。
私はそれをテストし、解決策を提供しようとします。
もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。
もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。
から削除する必要があります。
エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。
MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。
もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT4のビルド番号を教えてください。
私はそれをテストし、解決策を提供しようとします。
MQLコードはmt4のデータをmysqlのテーブルに収集するもので、1つのmt4で1つだけ使用する場合は問題ありませんが、2つのmt4で4つ以上使用する場合は、Access violation readと表示されます。と表示される。\MQLMySQL.dll'
もしかすると、libmysql.dllがオペレーティングシステムの別の場所にあるかもしれません。
もしlibmysql.dllが%WINDOWS%SYSTEM32フォルダにある場合、MT4MQL4Librariesから削除してください。
から削除する必要があります。
エキスパートアドバイザーが異なるチャートに使用する場合でも、1つのターミナルは1つのライブラリをアタッチする。
MQLMySQL.dllは内部共有データへのアクセスにミューテックスを使用しているので、これも理由にはなりません。
もし可能であれば、このような状況を発生させるために使用しているMQLコードとMT4のビルド番号を教えてください。
テストして解決策を提供するよう努力します。
mysqlのメモリテーブルを使用したのですが、これが問題なのでしょうか? ENGINE=MEMORY
MQL CODEはmt4のデータをmysqlのテーブルに収集するもので、1つのmt4で1つだけ使用する場合は問題ないが、2つのmt4で4つ以上使用すると、Access violation readと表示される。と表示される。\MQLMySQL.dll'
MySqlDisconnect(DB);
データベースの切断が必要ですが、それはまだ問題を解決していない。
EA/スクリプトのソースコードを教えてください。
MQL CODEはmt4のデータをmysqlのテーブルに収集していますが、1つのmt4で1つだけ使用する場合は問題ありませんが、2つのmt4で4つ以上使用する場合は、Access violation readと表示されます。と表示される。\MQLMySQL.dll'
senddata.mq4 11 kb
sendata.mq4は私がアップロードしたEAのソースコードです。
EA/スクリプトのソースコードを教えてください。
私は3つのDB接続を使用しましたが、同じDBを使用しています。新しいデータベースのCRUDのために新しいDBを作成する必要がありますか?