2015年11月5日木曜日

[MT4プログラミング]テンプレートクラスを作ってみた。

ちょっと、MT4の世界でテンプレートクラスまで持ち出すシチュエーションを今ぱっと思いつきませんが、 まぁ実装されたということは要望があったということで。

 テンプレートクラスは、型宣言の一部をテンプレートとして宣言することで、実際使うときの動作を置き換えることができる仕組みです。 

サンプルでは、超適当な配列クラスをテンプレートクラスとして宣言して、実際に使うときにはint型の配列を扱いますよと形で宣言しています。

 一般的には、このように型は違うけど扱いは同じになる配列系のクラスでよく使われる仕組みとなります。 あとビジネスロジックのフレームワークとかで使われることがあるのですが、MT4でビジネスロジック????って感じですので、やっぱり主に配列系での使用になるのかと。 

MFCのCArray系や.Net Frameworkのジェネリックコレクションなど、業務プログラマではなじみの技術です。

たくさんEAやインジケータを開発する際、ソースコードの部品化を進めていく中では覚えておくとソースコード量が減るかもしれませんね。 ハッシュテーブルを自力実装している方などは、テンプレートクラスに置き換えると一挙にコード量が減るかも?

■予告
予測移動平均ボリンジャーバンドに改善のご要望がありましたので、来週アップデートいたします。
アラート機能を追加予定です。

ブログランキングにご協力よろしくお願いいたしますm(_ _ )m
にほんブログ村 為替ブログへ
にほんブログ村


 ソースコードはこちらから。
赤字になっている部分がテンプレートクラス特有の部分です。クラス宣言内ではTという形で仮の実装が行われており、使用時にintやdoubleといった型を指定してします。このように使用時に型を切り替えることができるのがテンプレートクラスの特徴です。

2015年11月4日水曜日



MT4をBuild902にアップデートしてみました。
MT4は自動アップデートを採用していて、起動時にアップデートを行います。
気軽にアップデート!と行きたいところですが、割とトラブルがあったりしますので、しばらく待ってからアップデートを行いました。

Windowsを使っていると、MT4起動時に「次のプログラムに変更を許可しますか?」というダイアログがでてきますので、いいえを押すとアップデートせずにMT4を起動可能です。
1週間ほど様子をみて、ネット上のトラブル報告も特になさそうでしたのでアップデートです。

変更点はMQL4のフォーラムにアップされていました。

https://www.mql5.com/ja/forum/65747/page1

MQLプログラマからすると、クラステンプレートの採用が一番大きなトピックとなります。
クラステンプレートは扱う型をあとから指定することで、コード量を減らすテクニックです。

ま・・・それ以前にポインタ参照が遅すぎる問題を解決してほしいです。

おしらせ
 今週金曜日(11/6)~来週月曜日(11/9)はブログの更新およびFX-ONでのメッセージ返信はお休みいたします。

ブログランキングにご協力よろしくお願いいたしますm(_ _ )m
にほんブログ村 為替ブログへ
にほんブログ村

2015年11月2日月曜日

[MT4プログラミング] チャート上に価格を出す。フラクタルに価格をつけてみた。


インジケータ作成の練習がてらなのですが、フラクタルに価格をつけてみました。
横になると重なってしまうことがあるため、回転させて縦に表示しています。

前回のチャートに合わせて移動しないラベルの場合は、XY座標をピクセル値として指定しましたが、価格と合わせて動くテキストの場合、時間と価格を指定します。こんな感じです。

   if( !ObjectCreate(chartId, objectName, OBJ_TEXT, 0, time, price) )
   {
      return false;
   }


色の設定等は、ObjectSetXXXXX系の関数で行います。

フラクタルを表す矢印と重なってしまうため、ラベルの表示位置を微調整する工夫をしてみました。

縦位置のピクセルでのオフセットがないのがとっても大変です・・。BITMAPならあるのに・・・。
このように矢印と価格を同時に出そうとすると、小手先のテクニックが必要そうな雰囲気です。もしかしたらもう少しスマートな手法があるかもしれません。


ブログランキングにご協力よろしくお願いいたしますm(_ _ )m
にほんブログ村 為替ブログへ
にほんブログ村



プログラムはこちらから