私たちのファンページに参加してください
メモリ管理が修正されたMQL4用のMySQLライブラリ - MetaTrader 4のためのライブラリ
- ビュー:
- 979
- 評価:
- パブリッシュ済み:
- 2016.01.28 08:58
- アップデート済み:
- 2016.11.22 07:34
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
元のファイルはこちら: https://www.mql5.com/ja/code/11114。共著者に感謝します(この商品がRussellによって開発され、vedroidとlukins / Sergeyによって改善された)。
元のmql4-mysql.mqh ライブラリはメモリ管理に関する問題がありました。ある人はもうその問題について述べました。詳細はこちら: https://www.mql5.com/en/forum/28941
個人的なプロジェクトのためにこのライブラリを使用したいので、システムクラッシュにつながる記憶増強は望ましくないと思います。コードをチェックした後、データベースからデータを読み取って配列に格納するfetchArray()関数に関するバグを見つけました。メモリがちゃんと解放されなかったので、潜在的なメモリーリークから守るために、コードをちょっと書き直しました。
更新されたライブラリのテスト結果からわかるように、メモリ消費は持続可能です。このテストには多くの時間がかかり、最小値のメモリ増設で数千の接続を行いました。以前のテスト実行の結果では、元のライブラリがコードベースからデータを幾つかしか読み取れません。起動後5分で、システムがクラッシュしました。ティックごとに動作するEAを使って、このテストを実行しました。
注意: 元のライブラリの説明も読んでください!
int dbConnectId = 0;
グローバル変数のお代わりにローカル変数として宣言されています。インジケータやEAと共に使用する場合、ローカル宣言が必要になります。それは、反復処理のたびに記憶域の変数が変わる、またはメモリがちゃんと解放されるためです。
特定タスクによって別の接続がオープンされます。 1 つの接続で複数の要求を実現することをおすすめしません。例: データベースから幾つかの文字列を読み取り、配列に格納したいとしましょう。この処理は関数内で宣言されています。関数が呼び出されたとき、 接続が確立しています。データが読み取られた後に、接続が閉じられます。接続が短期間で実行されます。
deinit_MySQL関数により接続を閉じるようにご注意ください。そうしないと、接続の数が増加し、最大値にまで達する可能性があります。システムがクラッシュします。
取引管理は、2つ以上接続があってもOKになります。データ読み取り中にエラーが発生することは、EのA操作の障害になります。
MySQLデータベースがあるウェブサーバはこちら(無料):
簡単なデータベースや管理ツールをお探しの方に非常におすすめです。 : https://www.apachefriends.org/index.html
どうやってデータベースを保護すべきかについてはこちら: http://robsnotebook.com/xampp-builtin-security
このライブラリのテストとフィードバックをお願いします。商品を改善するたった1つの方法です。
概要:
フォーラムでこのライブラリに関する説明を掲載できたかもしれません。
深いテーマですね。それで、詳しく説明が必要ならば、後で書きます。ご興味をお持ちの方は、どうぞご連絡ください。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/13712
注文を管理する超簡単な方法です。
Support Resistance - Tools1キーを押すことで簡単に水平線を作成させます。また、サポートラインとレジスタンスラインの色を変更することができます。価格が線と交差する場合、インディケータは自動的に色を変えます。その場合、アラートの送信の設定も可能です。サポートライン・レジスタンスライン突破の履歴も表示可能。