雲を描く

MetaTrader のインジケータでは、メインチャートウィンドウ内で SetIndexStyle 時に DRAW_HISTOGRAM を指定すると、一目均衡標のような雲を描くことができます。このチャートウィンドウ内でのDRAW_HISTOGRAM の使用方法は特殊な仕様になっており、バッファ番号が 0-1 , 2-3 , 4-5 , 6-7 という 連続した { 偶数-奇数 } のペアを1セットとして使うべし… と、この辺りに説明されています。


それだけではよく分からないので、試しに、2本の移動平均の間に雲を描いてみます。

上図は、バッファ番号0,1 に iMA で移動平均を描いただけのものです。
これに対して

   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,ExtMapBuffer4);

して、

   for(int i=limit;i>=0;i--){
      ExtMapBuffer1[i]=iMA(NULL,0,ShortMA,0,MAMethod,MAPrice,i);
      ExtMapBuffer2[i]=iMA(NULL,0,LongMA ,0,MAMethod,MAPrice,i);
      ExtMapBuffer3[i]=ExtMapBuffer1[i];
      ExtMapBuffer4[i]=ExtMapBuffer2[i];
   }

で、バッファ番号2-3のペアで雲を描いたのが下図です。

これで分かったのは、ペアになったバッファの間に縦ラインが引かれ、バッファの数値の上下関係が変わると色を変えられる ということです。色を変えたくない場合は、2本の DRAW_HISTOGRAM のバッファを同じ色にすればOKです。
サンプルコードは、こちらからダウンロードできますので、参考にしたい人はどうぞ。


ちなみに、DRAW_HISTOGRAM のペアだけでは上図のようになって、境界部分がいまいち判りにくくなります。
…となると、DRAW_LINE 2本と、DRAW_HISTOGRAM 2本で 4本のバッファを使う必要があるので、MT4ではリソース的に勿体無い(?)機能のように思います。^^;




元々の依頼は、http://www.forex-tsd.com/general-discussion/157-ichimoku-20.html で公開されている、MTF_Ichimoku_v1SSSP[cw].mq4 に雲をつけて欲しいというものだったのですが、このインジケータは既にバッファを最大8個使用していたので、雲専用のインジケータを別途こちらに作りました。iCustom で、 MTF_Ichimoku_v1SSSP[cw].ex4 を呼び出すので、元のインジケータが必要です。
(iCustomで雲を作りたい人には参考になる...かな。

MTF_Ichimoku_v1SSSP[cw].mq4 のみ
MTF_Ichimoku_v1SSSP[cw].mq4 + MTF_Ichimoku_v1SSSP[cw]_KUMO.mq4

見やすくなっているのかは微妙です。MTF_Ichimoku_v1SSSP 自体が普通の一目とは異なる独自の世界に逝ってしまっている感があるので、実用性もさっぱり不明です。