はじめに
EAを作成した際、コンパイルはエラー無くできたのにいざEAを動かしてみると『1回もエントリーしない、思った通りのエントリーをしない』といったことが起きた事はないでしょうか?今回はこの問題についてに解説していきたいと思います。
今回はリアルタイムで動いている(フォワードテスト中)データを使って確認していく方法になります。
バックテストでは使えない機能なので、もしバックテストでのデバッグをしたい場合は、以下の記事を参考にしてみてください。
機能概要
まず、今回の(デバッグ)機能について解説します。
本来MT4のチャート上で値動きが発生するとコンパイルされた実行ファイル(ex4ファイル)に処理がまわてEAが動くというのが基本の仕組みですが、今回のデバッグ機能というのは実行ファイル側ではなくメタエディター側に処理が回ってくるようになります。そうすることでプログラムでEAが動く様子を1行ずつ確認できるという機能になります。
プログラミング用語的にはこういった確認方法を
『デバッグ』
と言います。
どう動くのか
デバッグのやり方は後述していますので、まずはその動きを見てみましょう。処理が回ってくるとこんな感じで、赤枠の所に黄色➡が出てきます。
処理は今ここで止まっているという目印です。この状態で「F11」キーを押します。
IF文の中に黄色➡が移動したのがわかります。「F11」キーを押すとワンステップ実行といって、黄色➡の部分の処理を実行します。黄色➡の部分は『if(int_a == 0)』で、true(int_aは0)だったのでIF文の中に入ってきたという感じです。
もし『if(int_a == 0)』で、false(int_aは0じゃない)だった場合はこんな動きになります。
IF文の中には入らず、一気にIF文を抜けた所に黄色➡が来ました。こういった感じでIF文がtrueなのかfalseなのかも簡単に確認できます。
以上のことから、『IF文がちゃんと作れて分岐できているかとかどうか』や、『注文をちゃんとするか』等、色々な場面で使えます。
デバッグを開始する前にやること
それでは、デバッグのやり方を解説・・・という前にまずデバッグをする前にやる事が2つあるのでご紹介します。
1.デバッグする通貨の設定
デバッグは、リアルデータを元に実行されますが初期通貨が「USDCHF」の1時間足のリアルデータとなります。別にこれでもデバッグはできるのですが、一応自分が狙っている通貨に設定しておいた方が親近感というかイメージしやすいと思うので初期通貨と時間足は設定しておきましょう。
まず、『ツール』→『オプション』をクリックします。
そうすると、以下の画面が出てくるので設定していきます。
指定した設定を使用にチェックをいれ、以下のような感じに設定します。
デバッグする通貨の初期設定は以上です。
2.停止状態の設定
デバッグを開始する前にもう一つやっておくことあります。それは、デバッグ中に自分が見ているプログラム上ここで止めたいといった部分の行(行数の所)をダブルクリックして、停止状態『■』にしておくことです。※主にIF文とかの条件分岐になるかな?
こんな感じに停止状態『■』をいくつか作ってデバッグ時に止まってくれる場所を作っておきます。もし1つも作っていない場合は黄色➡が出てこず止まってくれませんので注意が必要です。
デバッグのやり方
それでは、実際にデバッグをやってきましょう。
デバッグのやり方は簡単で、メタエディターで『デバッグ』をクリックして『リアルデータでスタート』という項目をクリックする事でできます。
リアルデータの方で値動きがあると、メタエディター側に処理が渡ってきて以下のように黄色➡が表示されます。
こんな感じで止まったら、あとはキーボードの「F11」キーを押せば1行ずつ実行していきます。
※「F10」のステップオーバーのような機能もありますがまずは「F11」だけでデバッグに慣れましょう
変数の中身を確認したい場合
1行ずつステップ実行していると、変数の値が何になっているのか知りたくなる場合が出てきます。
そんな時は、値が知りたい変数をダブルクリックし選択状態にし右クリックしてから、『ウォッチ式の追加』をクリックします。
そうすると、画面右下に先ほど選んだ変数が表示されるので「値」の項目を見ると、現在は「3」になっている事がわかります。
なので、IF文に使われている変数等を一通り見れる状態にしておくとデバッグ中わかりやすいです。
さいごに
以上が、『EAを動かしながらソースコードを1行ずつ確認する方法』です。
プログラム初心者のうちは、どこが間違っているのかを探し出すのにかなり苦労すると思います。大体、コンパイルが通っているのにうまくエントリーされないのはif文やfor文絡みの事が多いので、まずはそこを疑うようにしてみてください。
※ EAのサンプルソースを一覧表にまとめました
※オンラインレッスンやってます
コメント