インジケーターの色や線種などは、あらかじめプログラム上で指定するのが通常ですが、やり方としては、大きく分けて2つあります。
Ⅰ.プリプロセッサ命令で指定する方法
Ⅱ.SetIndexStyle()関数で指定する方法
両者の違いや関係はどうなっているのだろう、というのが今回のテーマです。
まずは、プリプロセッサ命令だけで指定してみました。
①インジケーターをチャートに挿入しようとすると、
上の画像のように、プロパティ画面が現れ、プリプロセッサ命令で指定した内容がデフォルトとして表示されます。
②これを実行すると、
上の画像のようなグラフになります。
③再度プロパティ画面を出して、色などを変更してみましょう。
上のように変更しました。
④これを実行すると、
上の画像のように変更されました。
ここで、
⑤時間足を変えたり、MT4を再起動すると、
変更されたままで、デフォルトへは戻りません。
今度は、SetIndexStyle()関数だけで色などを指定してみます。
①インジケーターをチャートに挿入しようとすると、
なんと、SetIndexStyle()関数での指定が無視されました。
②これを実行すると、
あれま~、SetIndexStyle()関数がちゃんと実行されました。
③再度プロパティ画面を出して、
④色などを変更してみましょう。
上の画像のようになるので、
⑤時間足を変えたり、MT4を再起動すると、
デフォルトへ戻ってしまいます。
では、プリプロセッサ命令とSetIndexStyle()関数の両方で指定すると、どうなるんでしょうか。
①インジケーターをチャートに挿入しようとすると、
プロパティ画面には指定した内容が反映され、
②これを実行すると、
プロパティ画面通りに表示され、
③再度プロパティ画面を出して、
④色などを変更してみると、
そのように変更されますが、
⑤時間足を変えたり、MT4を再起動すると、
デフォルトへ戻ってしまいます。
最後に、プリプロセッサ命令でもSetIndexStyle()関数でも色などを指定しないと、
①インジケーターをチャートに挿入しようとすると、
上のようなプロパティ画面が出て、
②これを実行すると、
プロパティ画面通りに表示され(色が黒なので事実上見えませんが)、
③再度プロパティ画面を出して、
④色などを変更してみると、
そのように変更され、
⑤時間足を変えたり、MT4を再起動しても、
デフォルトへは戻りません。
以上をまとめると、
①プリプロセッサ命令での指定は、デフォルトを任意に指定するという役割を担い、デフォルトの変更には継続性がある。
②SetIndexStyle()関数での指定は、デフォルトとは異なる特別指定としての役割を担い、特別指定の変更には継続性がない。
ということのようですね。
コメントをお書きください