EAを動かしながらソースコードを1行ずつ確認する方法

EA
スポンサーリンク

はじめに

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時間足のリアルデータです。別にこれでもデバッグはできるのですが、一応自分が狙っている通貨に設定しておいた方が親近感というかイメージしやすいと思うので初期通貨と時間足は設定しておきましょう。

まず、『ツール』→『オプション』をクリックします。

そうすると、以下の画面が出てくるので設定していきます。

指定した設定を使用にチェックをいれ、以下のような感じに設定します。

※私は米ドル/円の5分足とかでよく見ています

デバッグする通貨の初期設定は以上です。

2.停止状態の設定

デバッグを開始する前にもう一つやっておくことあります。それは、デバッグ中に自分が見ているプログラム上ここで止めたいといった部分の行(行数の所)をダブルクリックして、停止状態『■』にしておくことです。※主にIF文とかの条件分岐になるかな?

こんな感じに停止状態『■』をいくつか作ってデバッグ時に止まってくれる場所を作っておきます。もし1つも作っていない場合は黄色➡が出てこず止まってくれませんので注意が必要です。

デバッグのやり方

それでは、実際にデバッグをやってきましょう。

デバッグのやり方は簡単で、メタエディターで『デバッグ』をクリックして『リアルデータでスタート』という項目をクリックする事でできます。

リアルデータの方で値動きがあると、メタエディター側に処理が渡ってきて以下のように黄色➡が表示されます。

こんな感じで止まったら、あとはキーボードの「F11」キーを押せば1行ずつ実行していきます。
※「F10」のステップオーバーのような機能もありますがまずは「F11」だけでデバッグに慣れましょう

変数の中身を確認したい場合

1行ずつステップ実行していると、変数の値が何になっているのか知りたくなる場合が出てきます。

そんな時は、値が知りたい変数をダブルクリックし選択状態にし右クリックしてから、『ウォッチ式の追加』をクリックします。

そうすると、画面右下に先ほど選んだ変数が表示されるので「値」の項目を見ると、現在は「3」になっている事がわかります。

なので、IF文に使われている変数等を一通り見れる状態にしておくとデバッグ中わかりやすいです。

さいごに

以上が、『EAを動かしながらソースコードを1行ずつ確認する方法』です。

プログラム初心者のうちは、どこが間違っているのかを探し出すのにかなり苦労すると思います。大体、コンパイルが通っているのにうまくエントリーされないのはif文やfor文絡みの事が多いので、まずはそこを疑うようにしてみてください。

 

※ MT4・EAが使えるFX会社のおすすめ

※ EAのサンプルソースを一覧表にまとめました


コメント