【移植#106】ブレークポイントで値を追う — PT Multistation記事からMT5デバッガへ¶

この記事の3行まとめ
- 2010年の記事は、MQL4互換のPT Multistationでブレークポイント停止とステップ実行、変数確認を試しています。
- 現在のMetaEditorにはMQLプログラム用デバッガがあり、停止中にウォッチ式・コールスタック・一段ずつの実行を確認できます。
- 配布EAは合成整数だけを計算します。チャート画像は計算結果の確認用で、実際のデバッガ停止画面ではありません。
元記事で試していたこと¶
2010年6月11日の記事「MQL4互換プラットフォーム PT Multistation でMQL4デバッグ?」は、別の取引プラットフォーム上でMQL4を扱う PTL Builder を試しています。紹介された流れは、MACD Sampleを開いてコンパイルし、ブレークポイントを置いて実行を止め、ステップ実行とツールチップで変数を確かめる、というものでした。記事の作者は、製品の使い勝手と互換性に疑問を示し、積極的には勧めていません。
当時の公式ダウンロード元や保守状況は今回確認できず、製品を入手して動かす検証はしていません。そこで題材を「別製品をインストールすること」ではなく、「実行を止め、途中の値を追うこと」に絞り、現在のMetaEditorで同じ学習目的を試す形に置き換えます。
MetaEditorで止めて、値を見る¶
MetaEditorのデバッガでは、MQL5プログラムにブレークポイントを設定し、一時停止中の値やコールスタックを確認できます。公式ヘルプには、実データ上でのデバッグと、ストラテジーテスターを使う履歴データ上でのデバッグの両方が説明されています。
- 配布EAをMetaEditorで開き、
OnTimer()内のsubtotalを計算する行にブレークポイントを置きます(F9)。 - F5で実データ上のデバッグを開始します。履歴データで確認する場合は Ctrl+F5 を使います。
- 停止したら
InpLeft、InpRightをウォッチへ追加し、入力値を確認します。 - F11で
AddValues()の中へ入り、F10で関数の中へ入らず一行進めます。F10の後はsubtotal、続いてscaledをウォッチで確認します。 - 必要なら Shift+F11 で現在の関数から戻り、F5で実行を再開、Shift+F5でデバッグを終了します。
ショートカットはMetaEditorの現行ヘルプに記載されたものです。設定や画面配置によってボタン位置は変わりますが、Debugメニューから同じ操作を選べます。
練習用EAの計算¶
EAは注文を出さず、入力値だけで次の計算を行います。
- 左の値: 7
- 右の値: 5
AddValues(7, 5): 12MultiplyValue(12, 4): 48- 3を引いた結果: 45
画面には入力値、途中値、最終値、別の式で計算した照合結果を表示します。デフォルト入力では照合がPASSになります。入力を変更しても各ラベルは入力値から組み立て直すため、表示だけが初期値のまま残ることはありません。
チャート画像と端末ログでは計算結果が期待値と一致することを確認しました。ただし、これはEAを通常実行した結果です。MetaEditor上でブレークポイントを止めてウォッチ値を追う操作自体を自動撮影したものではありません。デバッガの操作は、記事内の手順に沿ってMetaEditorで確かめてください。
使うときの注意¶
- 実データデバッグでは、プログラムを実チャート相当の環境で実行します。注文処理のあるEAを使う場合は、ブレークポイントで停止させてもイベントが発生し得ることを考慮し、取引しない練習コードから始めてください。
- 履歴デバッグはストラテジーテスターで動きます。実データと履歴データでは、得られるイベントや周辺環境が同じとは限りません。
- ウォッチに表示された一時点の値だけで、プログラム全体の正しさが証明されるわけではありません。入力、停止位置、呼び出し順を変えて確認します。
- この練習EAはデバッグ操作の題材です。相場分析、売買判断、収益性の検証はしません。
参考資料¶
- 原記事: MQL4互換プラットフォーム PT Multistation でMQL4デバッグ?
- MetaEditor公式ヘルプ: Code debugging
- MetaEditor公式ヘルプ: Debug menu
あわせて読みたい記事¶
前後の記事¶
前: 【移植#105】同じ高値が並んだら — iHighestの同値選択を実測する
次: 【移植#107】DLLの許可状態を点検する — MT5の端末設定とプログラム設定を分けて見る