インジケータを作成する際にスタイルの指定を行う方法は二通りあり、それぞれ意味が違うので注意が必要。
①#property定義によるスタイルの指定
この方法は主にインジケーターを適用した時のデフォルト値として採用されます。
ユーザーがインジケーターの引数を変更した場合、MT4を再起動したときは引数が変更されたままの状態となります。
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
②SetIndexStyle関数によるスタイルの指定
この方法はインジケーターが動作する時の値として採用されます。(通常はOnInitだと思うので初期動作)
第3、4、5引数が指定されている場合、
ユーザーがインジケーターの引数を変更した場合、MT4を再起動したときは関数で指定した値に戻されます。
void SetIndexStyle(
int index, // line index
int type, // line type
int style=EMPTY, // line style
int width=EMPTY, // line width
color clr=clrNONE // line color
);
①のみ、②のみ、①②両方、スタイルの指定はできるが
インジケーターの引数を変更して使うことを考慮するなら
ユーザーの使い勝手としては①のみ指定の方がMT4を再起動したときに、毎回値を変更しなくて済む。