MQL は非常に単純なスクリプト言語です。. MQL をデバッグ, 残念なことに, 全然簡単ではないです。. MetaQuotes 供給 MetaEditor コンパイラは単に高度なツールを使用するほとんどのプログラマが慣れてを含まない.
MQL のデバッグの問題
洗練された Ide の visual Studio およびその他 (統合開発環境) 多くのプログラマはそれ中コードをデバッグしやすく機能を含む. これの最大の例は、ブレーク ・ ポイント. ブレークポイントは、コード内のポイント コンパイラがコードの特定の行に到着したとき、プログラムの実行を停止するコンピューターに指示.
たとえばないセットがどこ、トレーリング ストップ新しい停止正しく. 視覚的に、専門家のアドバイザーを実行することほとんどのプログラマのための自然な本能 backtester, 末尾の停止の計算の直後後のコード行にブレークポイントを挿入します。. ブレークポイント停止コード, それが時に思ったしてソフトウェアの脳の内部ピアにプログラマを許可する決定をしました。. Visual Studio の重要な利点はすべての変数の値が明確に表示されています。. 順を追ってプログラムを歩くことは. たびに、手順のいずれか希望のルールに従っていません。, 必要な変更は通常明白であります。. MetaQuotes で mql5 をブレーク ・ ポイントをありがたいことに含まれて. MQL4 で利用いただけません.
Intellisense サポートの欠如以上の何も私のプログラミングの速度に影響を与える. Intellisense は、順のような予約語の使用を検出します。() または ObjectGet(). MetaEditor には初歩的な intellisense が含まれています, しかしそれは Visual Studio がとても便利なので、細かい詳細を欠いています。.
プログラミング c# 第 1 を入力可能で変数またはクラスの数文字に慣れてください。, IDE は、残りの部分を入力し、. 私のタイプ “Mes” c# およびスペース バーを押し, 私はメッセージ ボックス オプションが表示されることを知っています。 (適切な名前空間を宣言したと仮定すると). MetaEditor 予約語の候補者のリストを提供します。. プログラマにし選択するかマウスを押しますオプションを入力する必要があります。.
私を押すことを要求する些細なことだ知っているスペース バーの代わりに入力してください, しかし、どのように多くの時間 resuses をコードは、同じ予約語や変数について考える. 余分なキーの押下は本当に不要な入力動の多く追加を行う. 手根管の痛み手首の支柱を既に着ているを 30 歳の二倍に本当であります。.
MetaEditor の最大の弱点は、変数名が検出されないこと. 私たちはしばしば数千行のコードを含む専門家のアドバイザーを書く. 独自の課題が万に変数名を追跡. ときコーダーの繰り返し同じ変数名のセットの種類, それは単に最初の 3 文字を入力し、上の移動にいいだろう. コピーと貼り付けは、まともな代替を提供可能性があります。. 問題は、変数は、一緒にしてグループ化通常. 保つことができません。 5 別のコピーと貼り付けアイテム入手.
MetaEditor により無効な型を返す関数. として宣言された関数は、文字列を返すことができます。, 整数またはすべてでは何も. MQL4 コンパイラはこれらが有効かどうかを追跡しません. それは実質の時間のテスト中に無効な型を発見するプログラマに任せて. この監督は誤って間違った型を返します無意識のプログラマにとっては悪夢.
二重の機能が誤って整数変数に返されると、これは二倍に本当. MQL4 は int キャストに違法な二重を妨げない. さらに悪いこと, 専門家アドバイザーの実行が継続、 0 例外やエラー メッセージをスローする代わりに整数の値. 私は無駄な変数の追跡どのように多くの時間を数えることができません。, 不適切なデータ型を宣言することを実現するため. これは通常、私は自動操縦で発生します。, コードをドキドキ. 髪を引っ張る欲求不満のいくつかの時間のコスト通常時に効率的に思えるもの.
MQL のデバッグ技術
、 MQL プログラマ ここのスタッフには通常次の方法のいずれかに訴える. 組み合わせでそれらを使用して向上さらにデバッグ プロセスがあります。.
コンパイラ エラーをデバッグします。
この 1 つは、最もイライラすることができます。. MetaEditor コードのどの行は、コンパイル エラーを発生を示唆しようとしています。. それが誤ってよりも頻繁にそれが右のそれを取得するための試みと言う. 何も完全に合法的なコンパイラ フラグとして問題のあるコード行を見てするよりも刺激があります。.
私はほとんど常にエラーが消えるまで、ますます大規模なコード セクションをコメント アウト リゾートします。. 1 行のコードをコメント アウトし始めます. 動作しないかどうか, 10 行をコメントし、. 動作しないかどうか, 全体関数またはコードのセクションをコメントさせてもらいます. 場合、コンパイラが最後に正しく動作, あなたはコメント アウト コードの最後のセクションにバグが含まれていることを知っています。.
次, あなたがバック トラックします。. エラーが再現されるまで問題のあるコメント アウト セクションを小さく作り始める. 今のところ, 最後にゼロの使用上に問題の実際の原因.
リアルタイムで、または、backtester でデバッグします。
デバッグの私の好ましい方法は、コメントを画面上に関連する意思決定情報のほとんど, 行われているコメントを使用して() 関数. Visual backtester を実行します。, データが視覚情報に関連してどのように動作するかを見てください。.
画面にコメントが本質的に応急ブレーク ・ ポイントです。. プログラマは問題を明らかにするコードをステップ実行することができます彼らが表示する方法とタイミングを制御します。. 唯一の違いは、コメントできない強制的ようにコードの実行. 表示されるテキストは非常に小さい. それはさておき, それがとても強いことが本当に好き. コメント機能が常に滞りなく動作します。, コードのデバッグは、プログラマの最良の友となってください。.
次のレベルは、このスクリーン ショットを撮る. ときに顧客なぜ専門家アドバイザー行儀特定の方法について質問します。, 最も簡単な答えは、スクリーン ショットが付属します。. 模倣の休憩ポイントは通常防弾答えを提供コメント – プログラマと顧客見ることができる文字通り EA が決定をした時に思った. MQL4 は、WindowScreenShot を提供しています。() これを行う関数.
常に重要なアクション中にスクリーン ショットを取るのプログラム私たちが EAs, 貿易を入力または終了条件の調整など. 目標の動作について質問に答える将来を視野に入れて、すべての意思決定の視覚的な記録を提供することです。.
私たちのデフォルトのテンプレートは WriteScreenshots と呼ばれる真/偽変数を含む. トレーダーは、このデバッグ機能かどうか気にするかどうかを制御します。. 唯一の欠点は、すべての記録されたアクションが約 50 kb のハード ドライブの空き容量を食べること.
ログ ファイル 最後のデバッグ オプションを表す. 主な欠点は、そう醜いと読みにくいが. 私はほとんど常にこの理由でスクリーン ショットを好む.
それにもかかわらず, ログ ファイル その場所を持ってください. それらを使用する主な方法は、エラーのキャッチャーとして. プロセスがいずれかのメタト レーダー自体やブローカー取引問題のためゆがんで行くたびに, それをキャッチする最も簡単な場所はログ ファイルです。.
MQL ファイルのデバッグを学ぶ時間がかかるスキルは、します。. プログラマの処分でツールがより高いレベルの言語に利用できる多くの異なる. 一度あなたは MetaEditor、メタト レーダーではるかに簡単なツールの操作に慣れる, プロセスを通常クリアのバグをより簡単に取得します.