前回の続編です。
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を下回った
ためにそれを結ぶ線は青になるということです。
最後に全体のコードです。


コメント