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

indicator

おはようございます。
ちょっと、一息が
なんだかんだ言って6月は、MT5 インディケータの作り方で終わりそうな気配です。

では、本日からAroonインディケータの解説です。

Aroonインディケータは仮想通貨の取引ソフトにも採用されていることもあります。
トゥ-シャ-・シャンデという方が開発したテクニカル指標で、一定期間中の高値・安値
の更新頻度を分析し、トレンドを見極めるものです。インディケータは2本のラインで、
AroonUP(上昇トレンド)、AroonDown(下降トレンド)を表します。

AroonUPの式は次のようになります。Aroon期間をN日とします。

AroonUP = 100 ×(N-過去N日の最高値からの経過日数)/ N

経過日数というのは日足ベースです。各時間足の本数で置き換えて下さい。

AroonDownについても同様に計算できます。

AroonDown = 100 ×(N-過去N日の最安値からの経過日数)/ N

Nを14とすると、

例えば、現在のバーで最高値をつけたとします。そうすると経過日数(本数)は
0となります。するとAroonUPは100となります。

一方、最高値をつけたのが14本前とすると、経過日数(本数)は13になります。
すると、AroonUPは1/14になります、AroonUPは約7~100で推移するということがわかります。
AroonUPは、AroonPeriod内において、期間の最初から最高値になるまでの日数が占めている
割合だといえます。AroonDownについても同じです。また、同じバーで最高値と最安値が同時
がつくこともあります。

property部分

Aroonインディケータは二本のラインです。
indicator_plotsは2であることはすぐにわかりますね。
計算に使う為の配列もないので、INDICATOR_CALCULATIONS用の配列もありません。
したがってindicator_buffersも2になります。レベルを70,50,30で指定します。

OnInit関数

ArraySetAsSeries(UpBuffer,true);
ArraySetAsSeries(DownBuffer,true);

今回初めてArraySetAsSeries関数でインデックスのふりなおしをします。第二パラメータを
trueにすることで、最新バーのインデックスが0になります。ArraySetAsSeriesはOnCalculate
内で呼び出してもいいのですが、価格が動くたびに呼び出しされることになるのは無駄なので、
OnInit内で決めてしまいます。

OnCalculateの中で記載されていますが、高値、安値配列は逆にこの中では指定できませんので、
OnCalculateで決めるものです。

OnCalculate関数

ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);

高値、安値で与えられます。しかし、OnCalculateの中でしか操作できませんので、この2つ
の配列のArraySetAsSeriesはここで行います。

if(rates_total<AroonPeriod)
return(0);

ハンドルを取得するわけではありませんが、Aroonの期間分のバーがないと計算ができませんので、
Aroonnoの期間分のバーがない場合は0で返します。

int limit;
if(prev_calculated==0)
limit=rates_total-AroonPeriod+1;
else
   limit=rates_total-prev_calculated+1;

for(int i=0;i<limit && !IsStopped();i++)(for文の中は省略)

forループの範囲を決めるlimitです。今までと違って最新バーを0として、古い方に向かって進みます。
したがって、forループの最初はi=0になります。そこで、どこまで数えるかですが、ArrayMaximum,
ArrayMimum関数の説明の後でもう一度説明します。

UpBuffer[i]=100*(AroonPeriod-(ArrayMaximum(high,i,AroonPeriod)-i))/AroonPeriod;

AroonUPの計算です。AroonUPの計算式を思い出してみましょう。

AroonUP = 100 ×(N-過去N日の最高値からの経過日数)/ N

AroonPeriodがNになっています。過去N日の最高値からの経過日数をあらわしているのが
ArrayMaximum(high,i,AroonPeriod)-iということです。

続く。

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

コメント

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