ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

当ブログは衰退しました。

2009-11-28

Comment関数を追記可能にする方法。

EAやインジケータの開発時の原始的なデバッグ方法として、MT4 では Print または Comment で、変数の値に何が入っているのかを表示させる手法があります。(こういう手法を 俗に Printデバッグ と呼びます。)


Print は、ログファイルにも残るので、気合をいれてデバッグする時は不可欠なのですが、小規模なEAやインジケータの作成では、 Comment だけでも十分だったりします。 Comment の方が画面内でリアルタイムに確認できる利点もあります。


ところが、Comment は、プログラム内で最後に実行した内容のみが表示されるので、ソースコードのこの部分で Comment して、あの部分で Comment して…という柔軟な使い方ができずに不便に感じている人もいらっしゃる...と思います。そこで、今日は、もう少し Comment を扱いやすくする方法を紹介します。


具体的なやり方は、まず、以下のような CommentEX という関数を定義します。

void CommentEX(string msg = "")
{
   static string msgall = "";
   if(msg ==""){
      msgall= "";
   }else{
      msgall = msgall + msg +"\n";
   }
   Comment(msgall);
   Print(msg);
}

次に、従来 Comment で書いていた部分を CommentEX を使うようにします。

Comment(a,b,c);

CommentEX(a+b+c);

Comment()関数は、引数を複数とれますが、CommentEX()関数は、引数を1つしか取れないので、文字列を足し合わせるか、StringConcatenate で結合させてください。CommentEX()関数は、プログラム内の複数の場所で使えるので、試してもらえばメリットが実感できると思います。


実際に CommentEX()関数を利用したサンプル画面が下図で、

f:id:fai_fx:20091120221855p:image

22:12 に EA stopped... コメントを追加後、さらに、22:15 に EA started... コメントが追記されています。

一昨日の記事に書いたとおり、Comment は文字数制限を気にしなくて良さそうなので、この調子で延々と記録することができます。


プログラム内からコメントをクリアしたい時は、引数なしで、 CommentEX(); を呼べばOKです。

実用的に CommentEX()関数 を使いたい場合は、CommentEX() 内をもう少し工夫して、例えば、20回実行されたら(=20行書かれたら) msgall をクリアするなどの改造が必要ですが、その辺りはプログラマな人たちの自由な発想に任せたいと思います..。

じぃじぃ 2009/11/28 01:03 faiさん、こんばんは。いつも大変為になる記事をありがとうございます。
私レベルでは理解できないものもありますが、とても楽しみに拝見させて頂いています。
今日はお願いがあってコメントを書きました。
現在、RSIなどseparate_windowに表示するタイプのインディケータにトレンドラインを手動で引いています。
chart_windowの方には自動でトレンドラインを引いてくれる物が幾つかあるようですが、separate_windowに引くものは見つかりませんでした。separate_windowに引く場合はRSIなどとセットでインディケータを作らないといけないと思うのですが。。。
お時間がある時で結構ですので作って頂けると嬉しいです。
わがままを言えば、RSIの式の部分をストキャスなどの式に書き換えれば使えるようにして頂ければ最高です。
よろしくお願いします m(_ _)m

fai_fxfai_fx 2009/11/28 02:17 じぃさん、こんばんは。
具体的にどんな風にトレンドラインを手動で引いていらっしゃるのか何枚か画面キャプチャをみせてもらえるとありがたいです。
何処かにアップしてもらって良いですし、メールで送ってもらってもOKです。

CorgiCorgi 2009/11/28 04:51 プリントでバッグ?・・・。

faiさん、こんばんはw

CommentFXというEAが発売されたと聞いてやってきました。

このような方法を模索していて、諦めたことがあったので
とても参考になります。ありがとうございます。

FXDDの件、秘密機関情報ありがとうございました^^

fai_fxfai_fx 2009/11/29 02:58 ……。

Corgiさん、こんばんは。

CommentFX は、コメントばかりしていて、トレードしないとのクレームが殺到して発売中止になりました...。

オプションの CommentEX は、引き続き無料で使用できますので、末永く活用頂ければ幸いです。(笑

karasumakarasuma 2010/03/24 22:25 古い記事にレスするのは自重すべきかと思いますが(自分)
プリントデバッグできるじゃない!と思ったらやっぱり常識でしたか
恥ずかしい限りですが、この記事を見て大分為になったので
お礼をひとつと思った次第にございます

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20091128/1259334669