あなたがしたい場合 プログラム専門家アドバイザー, それはあなたがファイルを使用する可能性がある方法を検討することが重要です. 私は、新しい参照の最も一般的な間違い MQL プログラマ 作る彼らはメモリに過度に依存していることです. 電源障害などのイベント, エキスパートアドバイザーとの取引時にハードドライブのクラッシュまたは弱いインターネット接続が大混乱をもたらすことができます. EAは、理想的にピックアップし、あなたが正常に条件を復元することができますたびに実行することができる必要があります.
メモリの問題
問題は時々設定を変更するような日常的なものから生じます. クライアントが私たちに来たときに私はそのハードな方法を学びました ダラスオフィス 2週間の非常に複雑なEAを注文します. すべてがで完全に働きました backtester. 一晩テスト, しかし, 何かがゴチャゴチャ行く前に数時間以上続いたことはありません. 私は、設定を変更していないクライアントに指示; ちょうどそれをオンにして一人でそれを残します. 何らかの理由で, これらの命令の重要性がで沈没したことはありません. それは、彼の定義することを実現するために私に年齢を取りました “一人でそれを残します” didn’t quite mesh with mine. 彼は取引中に行われた少しの微調整は、私がメモリに保存されている設定で混乱しました.
私は特定の方法でソフトウェアを使用するようにクライアントに指示することができます. 多くの場合, 彼らはある程度の命令から外れます. It’s human nature. 私は、これらの課題から学びました, 任意のプロたいものです. 私たち プログラミング テンプレートには、特別な指示の必要性を最小限にするための構造に変更しました.
グローバル変数
グローバル変数はメモリに頼るの問題を回避するための一般的なツールです. EAをチャートから削除された場合, それが作成されたグローバル変数は、あなたのためにアクセス可能です, EAまたはその他のEAはメタトレーダーの内の任意の場所から読み取ります.
グローバル変数の使用は、洗練されたに聞こえますが, it’s actually a very simplistic approach. メタトレーダーは、変数名とそのインストールディレクトリに非表示のテキストファイルを管理, それが保存されている値と、それが最後に変更された時間. たび以上に 6 前回からの経過週 MQL グローバル変数を使用します, メタトレーダーは、自動的に削除されます.
A マルチンゲール このシステムは、単純な統計量を追跡するために、グローバル変数を使用することを選ぶかもしれません. マルチンゲール リスクへのアプローチとワイルドです, そうトレーダーは現実的に最大レベルが取引一目で知りたいことができ. グローバル変数は、その必要性から、簡単な作業を行います. 取引する次のレベルは、グローバル変数よりも大きい場合に, その後 MQLコード グローバル変数を更新する必要があります.
覚えておくべき唯一のアイテムは、グローバル変数は、6週間後に期限切れということです. EAは、その現在の値にグローバル値をリセットすることで情報をリフレッシュする必要がある場合があります. Doing so would keep the variable fresh from MetaTrader’s perspective.
代わりにそれを格納する情報を読みます
私はに頼ることを好みます MQL‘s OrderSelect() 私は必要な情報を再作成するためのコマンド. それはより複雑であるが, 利点は、EAはいつでも機能することができるということです, 任意の場所, 設計通り. ハードドライブがクラッシュした場合, it’s not a problem from a recovery perspective. あなたはダウンタイムの間にトラブルにまだあります, しかし. あなたのMT4のアカウントに同じEAをロードすることができ、それがすぐに情報を再構築しています.
上記を取ります マルチンゲール シナリオ, 私たちは、取引の開閉時間を比較することにより、取引レベルの数を再構築することができ. 貿易場合 #1 のクローズ時間を持っています 2011 12月. 5 00:00 貿易 #2 またのクローズ時間を持っています 2011 12月. 5 00:00, それは、同じ貿易グループの一部であることを教えてくれる. これまでのところ, 我々は持っています 2 取引レベル. 貿易場合 #5 で閉鎖 2011 12月. 5 00:00 しかし、何の取引はその後なかったです, その後、私たちは取引ことを知っています 5 合計レベル. EAは、すべての可能な組み合わせをループしているから、最高数を選ぶことができます.
注文履歴からの読み込みのアプローチは、この単純な例のためにやり過ぎのビットです, あなたはより多くの複雑な情報を計算する必要がある場合、それは動的に、エラーのリスクが最小限に便利です.