FXのMT4(build840)でEAを開発を試みています。 現在、コンパイルエラーもでなくな…

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.

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


Translate »