デバッグの仕方



MT4にはデバッグ機能が備わっています。前は無かったのですがBuild 600から実装されました。

 

デバッグ時の通貨ペアと時間足の変更

デフォルトの状態で、デバッグをすると気配値表示ウィンドウに表示されている一番上の通貨ペアで1時間足になります。

 

ツールからオプションを選択します。

 

「デバッグ中」のタブを選択します。

「指定した設定を使用」にチェックを付けます。

「シンボル:」 通貨ペアを入力します。
※例えば、気配値表示ウィンドウに「USDJPY-cd」のように表示されていた場合は、シンボルに「USDJPY-cd」と通貨ペアの後ろの文字も付けて入力してください。

「期間:」 時間足を選択します。

「日付:」「約定」「デポジット」は、現状ではヒストリーデータでデバッグできないため、意味がないようです。(Version:5.00 build 1601)

 


ブレークポイント

メタエディターではブレークポイントを設定して変数の中を確認することが出来ます。

ブレークポイントを設定したい行の赤枠部分をダブルクリックします。

 

ダブルクリックするとブレークポイントのマークがつきます。

赤枠のデバッグのスタートを押して、デバッグを開始します。

 

ブレークポイントに処理が来ると、ここで処理が停止します。

 

変数の確認

ブレークポイントで処理が停止している状態で、赤枠をダブルクリックして変数名を入力します。

 

変数名を入力してエンターキーを押すと変数の中の値が表示されます。画像ではStopPriceは初期値の0が表示されています。

 

上の赤枠のステップインを押すと1行処理が進みます。
この時点ではまだStopPriceは初期値の0です。

 

もう一度ステップインを押すとStopPriceに計算式の値が代入されて106.971に変わっています。

このようにブレークポイントを設定する事で変数の中を確認することが出来ます。

 


デバッグの注意点

MT4は、ヒストリーデータでのデバッグが出来ないようです。

デバッグ中にエントリーや決済の処理をすると、デバッグをしているMT4の口座で実際にエントリーや決済をしてしまうので注意が必要です。デバッグは必ずデモ口座を使うようにしましょう。

 


コンパイル時のエラーの探し方

コンパイルをするとエラーが出てコンパイルが通らないことがあります。この時にどこにエラーがあるのかを探す方法を説明します。

画像では、宣言した変数「StopPrice」を131行目で間違った名前の「StopPric」(eが抜けています。)にしています。

このように、間違った変数名でコンパイルすると、ツールボックスのエラータブにエラーの内容とエラーの出ている行と列が表示されます。

 

ツールボックスの赤枠の中をダブルクリックするとエラーが出ている行にエラーのマークがついて、カーソルがエラーの出ている場所に移動します。

 

行の終わりにセミコロンをつけ忘れた場合は複数のエラーメッセージが出たりします。

 

大体は、セミコロンをつけ忘れた下の行がエラーになっていることが多いようです。

ツールボックスのエラーをダブルクリックして、エラーが出ているところの上の行を確認すれば、ゼミコロンのつけ忘れのエラーは大体気づくことが出来ると思います。

 

一番厄介なのは、赤枠の「}」が無い時なのではないでしょうか?

赤枠の「}」を消してコンパイルしてみます。

108行目の「}」を消したことによるエラーなのですが、ツールボックスのエラーには124行目と83行目がエラーになっています。

このようにエラーの場所がわからない場合は、コメントアウトしながらエラーを絞り込んでいくのが良いと思います。

 

コメントにしたい行を選択して、ツールバーのコメント行のボタンを押すと一括でコメントにすることが出来ます。

コメント行のボタンの右側にあるのはコメントを外すボタンで、一括でコメント行を外すことが出来ます。

この2つのボタンは初期状態では表示されていないので、ツールバーを右クリックしてカスタマイズから追加する必要があります。詳しくは「メタエディターの使い方」をご覧ください。

画像では88行目から100行目の3つのif文を選択しています。

 

3つのif文をコメントにしてコンパイルすると同じエラーが出ているので、コメントアウトしたところにはエラーは無いということになります。

 

次に101行目から109行目をコメントアウトしてコンパイルしてみます。

ここでエラーが消えているので、101行目から109行目にエラーがあることが判明します。

さらにエラーがどこにあるかを絞り込むためには、コメント行を少しづつ外してコンパイルしていきます。

このようにコメントアウトをうまく使えば、エラーがどこにあるのかを見つけることが出来ると思います。


おすすめ記事

リアル口座のトレード収支結果です。   EA名:KonohaUSDJPY 通貨ペア:USDJPY 使用FX業者:OANDA JAPAN(東京サーバー) バージョン:1.00 パラメーター:すべて初期値 約定日時…

EAの長期間のバックテストをするにはMT4にヒストリカルデータを入れる必要があります。 今回は、一番簡単にできるMetaQuotes社のヒストリカルデータの入れ方と、FXDDのヒストリカルデータをダウンロードしてインポー…

関連記事

前回の「全決済ボタンのEAに通貨ペアとマジックナンバーの処理を追加する」で説明した全決済ボタンのEAに、売りボタンと買いボタンをつけてみます。 売り注文や買い注文は、MT4の標準機能で出来るので、ボタンを作る意味はあまり…

今回は、マジックナンバー別の口座履歴をcsvファイルに出力させるスクリプトの作り方を説明します。   目次 スクリプトのテンプレートの作り方口座履歴を出力するスクリプトの作り方今回説明するスクリプトの仕様ファイ…

今回は、「全決済ボタンをEAで作ってみる」で説明したEAに、通貨ペアとマジックナンバーの処理を追加します。   目次 通貨ペアの処理を追加するマジックナンバーの処理を追加するパラメーターの追加マジックナンバーの…

今回は、EAにボタン、テキストボックス、ラベルの配置方法と使い方を説明します。   目次 ボタンの配置方法テキストボックスの配置方法ラベルの配置方法オブジェクトの削除ボタン、テキストボックス、ラベルの使い方全コ…

MT4の標準機能では、複数のボジションを一度に全部決済することが出来ないようです。ないものは作れば良いというのがMT4の最大の特徴ではないでしょうか? 今回は、チャート上にボタンを配置して、そのボタンを押すと保有している…