インジケータラインの設定 SetIndexStyle 関数

関数

カスタムインジケータ関数

SetIndexStyle 関数

 この関数は、指定したインジケータラインのタイプ、スタイル、線幅、色を設定します。

データ型と構成・戻り値

void SetIndexStyle(①, ②, ③, ④, ⑤);

 戻り値は無し。

引数 [5]

 SetIndexStyle関数は  5個の引数で構成されます。


引数名データ型単位初期値説明
indexintインジケータラインのインデックス。0~7で設定。
typeintインジケータラインの形状スタイル。
描画スタイルから選択。
styleintEMPTYインジケータラインの描画スタイル。初期値の「EMPTY」は変更しないことを意味します。
ENUM_LINE_STYLE 列挙値から選択。④の線幅が 0 または 1の時に設定できます。
widthintEMPTYインジケータラインの線幅。1~5で設定。初期値の「EMPTY」は変更しないことを意味します。
clrcolorclrNONEインジケータラインの。初期値の「clrNONE」は変更しないことを意味します。
※初期値があるものは省略可。但し、省略した引数以降は省略しなければなりません。

※引数①の番号付けは 0から始まりますが、「#property」を使ってコードの最初に設定する場合の番号付けは 1から始まりますでご注意ください。

使用例

SetIndexStyle関数によるインジケータラインの設定

 SetIndexStyle関数を使って、インジケータでプロットするラインの設定を変更します。

 次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。

コード

// SetIndexStyle関数によるインジケータラインの設定
#property strict

#property indicator_chart_window       // チャートウィンドウに表示
#property indicator_buffers 2          // インジケータバッファの数

#property indicator_color1 clrRed      // ①線の色(インジケータライン)
#property indicator_width1 1           // ①線の太さ
#property indicator_style1 STYLE_SOLID // ①線の種類

#property indicator_color2 clrRed      // ②線の色(インジケータライン)
#property indicator_width2 1           // ②線の太さ
#property indicator_style2 STYLE_SOLID // ②線の種類

double Buf1[], Buf2[];                 // インジケータバッファの配列

int OnInit() {

   SetIndexBuffer(0, Buf1);            // 1次元動的配列をインジケータバッファへ関連付け
   SetIndexBuffer(1, Buf2);

   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrYellow); // インジケータライン①
   SetIndexStyle(1, DRAW_ARROW);                           // インジケータライン②

   return(INIT_SUCCEEDED);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i;
   for(i=0;i<rates_total; i++) {
      Buf1[i]=iMA(Symbol(), 0, 10, 0, MODE_SMA, PRICE_CLOSE, i); // 10期間移動平均
      Buf2[i]=iMA(Symbol(), 0, 50, 0, MODE_SMA, PRICE_CLOSE, i); // 50期間移動平均
   }

return(rates_total);
}

インジケータ用コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

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