MT5 インディケータの作り方 その7

indicator

前回の続編です。

OnCalculate関数

前半はワイズチャートと同じ要領です。今回ミドルバンドは必要ないのでCopyBufferの
ところも省略されています。また、forループで使うlimitの設定もワイズチャートと同じです。

  if(BB_TLBuffer[i]!=BB_BLBuffer[i])
     IndBuffer[i]=(close[i]-BB_BLBuffer[i])/(BB_TLBuffer[i]-BB_BLBuffer[i]);
  else
     IndBuffer[i]=0;

0で割り算をしないようにしています。なお、右辺を100倍にして、レベルも100倍にすると、
%で表示することになって、ストキャスティングと同じ尺度でみることができます。

close[]は終値の配列です。始値、終値、高値、安値はあらかじめテクニカル指標関数と同じ
ようにMT5から得られます。

  if(IndBuffer[i]>0.8)
     IndColorBuffer[i]=0;
  else if(IndBuffer[i]>0.5 && IndBuffer[i]<=0.8)
     IndColorBuffer[i]=1;
  else if(IndBuffer[i]>0.2 && IndBuffer[i]<=0.5)
     IndColorBuffer[i]=2;
  else
     IndColorBuffer[i]=3;

ラインの色を決める命令になります。0.8より大きければ、IndColorBufferに0が設定されます。
これがpropertyで指定されているclrRed(赤)となります。続いて0.5より大きく0.8以下、0.2
より大きく0.5以下、最後が0.2以下となります。

OnDeinit関数
ハンドルを開放します。

コンパイルでエラーにならないことを確認して、チャートに適用してみましょう。ボリンジャー
バンド、バンドワイズチャートと一緒に表示します。

チャートの背景を黒にしている方もいらっしゃるかと思いますが、色の選び方は工夫して下さい。

さて、色分けを0.8,0.5,0.2で区切ってみましたが、図のように数値通りになって
いないじゃないかと思われるかもしれません。これは、配列は飛び飛び(整数)なのに対して、
線は連続しているために起こる現象です。色の境目は一個前の色を参考にして下さい。この図の
赤色のところは、黄緑とブルーの境目は黄緑色を参考にします。そこから次のバーで0.2を下回った
ためにそれを結ぶ線は青になるということです。

最後に全体のコードです。

ブログランキング・にほんブログ村へ

コメント

タイトルとURLをコピーしました