FXのMT4(build840)でEAを開発を試みています。
現在、コンパイルエラーもでなくなり、テスト、デバックの段階にきました。
しかし、デバッグができないのです。
ヒストリーデータをもとに、デバッグをする方法を教えてください。
開発中のEAではOnInit()の中でのブレイクポイントについては機能するのですが、やはりOnInit()内のブレークはポイントでは停止しないのです。
(補足1)
メタエディタのTools→Options→Debugで通貨ペア、周期、期間、実行時のティック生成などは適切に設定しているつもりです。
※設定例:EURUSD,5M,2015/7/9-7/10、Normarl(またはRandom Delay)、Every tick(または他のオプション)、デポジット10000、レバレッジ1:100
(補足2)
付属のサンプルコードMoving A verageでもブレイクポイントで停止できません。OnInit()がこのサンプルコードにはないので、起動時のパネル表示・閉じるのタイミングで止めることはできません。OnTick()の冒頭行のブレイクポイントでも停止しません。
(補足3)
build840のMT4のデバックのオプションはMQL5用であり、MQL4用には対応予定なしとの情報もあるようですが、実際はどうなんでしょう。
回答1
hjm_700さん へ
>ヒストリーデータをもとに、デバッグをする方法を教えてください
FXCMのMT4を使用しています。
ヒストリデータでのデバッグは、機能にプロテクトがかかっている?ようで実行できません。
しかし、リアルデータでのデバッグ(メタエディタで、F5を押す)に関しては、OnInit()でもOnTick()でも問題無くブレークポイントで停止します。
サンプルコードMoving Averageを改造して、テストしました。
————————————————————
>(補足1)メタエディタのTools→Options→Debugで通貨ペア、周期、期間、実行時のティック生成などは適切に設定しているつもりです。
リアルデータデバッグでは、通貨ペアと周期だけが適用されるだけのようです。
————————————————————
>( $BJdB-#2!KIUB0$N%5%s%W%k%3!<%IMoving Averageでもブレイクポイントで停止できません。
ブレークポイントを設定する位置が悪いのかもしれません。
(無効なブレークポイントはデバッグをスタートすると自動で消去されます)
————————————————————
>(補足3)build840のMT4のデバックのオプションはMQL5用であり、MQL4用には対応予定なしとの情報もあるようですが、実際はどうなんでしょう。
MT5が普及しない事にシビレを切らして、強引にMT5の機能をMT4に移植したのがBuild600。このままほかっておくと、いずれMT4と言う名のMT5に徐々に改良されていく可能性が無いとは言い切れません。
しかし、残念ながら現状を個人でなんとか出来る訳ではありませんので、出来る範囲でデバッグしていくしかありません (;_;
(一昔前のMT4はデバッグ機能さえありませんでしたので、うまく動かない時は、コードとにらめっこをしたり、 対鱸銓┤で変数をログに出力させていました。それを考えると、便利になったから良いかなぁ〜と(^_^;)
—–以下プログラム抜粋—–
void OnInit()
{
int a = 10;//★ここにブレークポイント
Comment("OnInit Run.");
return;
}
void OnTick()
{
//— check for history and trading
if(Bars<100 || IsTradeAllowed()==false)//★ここにブレークポイント
return;
//— calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
//—
}
回答2
ヒント、再起動、再セットアップ
Originally posted 2019-09-09 19:25:02.