【MQL4定数】描画の種類の定数(DRAW)

【辞書】MQLリファレンス

描画の種類の定数(DRAW)

描画の種類の定数は、インジケータ用のSetIndexStyle関数の引数として使用します。

SetIndexStyle関数は、インジケータで描画する線や点の種類を設定する関数です。

線や点の種類を設定をするために、描画の種類の定数を使うと良いでしょう。

例えば、DRAW_LINEを設定することで、線を描画することができるようになります。

 

それぞれ、SetIndexStyle関数のtype引数の入力値として、描画の種類の定数を使うことができます。

 

描画の種類の定数(DRAW)

定数説明
DRAW_LINE連続的な点を線で描画する(滑らかな線)
DRAW_SECTION非連続的な点を線で描画する(カクカクな線)
DRAW_HISTOGRAMヒストグラムを描画する
DRAW_ARROW矢印を描画する
DRAW_ZIGZAG2つのバッファの点を線で描画する
DRAW_NONE描画しない

 

描画の種類の定数(DRAW)の使い方

インジケータ用のSetIndexStyle関数の引数として使用します。

それぞれ、SetIndexStyle関数のtype引数の入力値として、描画の種類の定数を使うことができます。

上記の定数を入力しましょう。

すると、その定数に対応した線や点の種類を設定することができます。

例えば、以下のように使用します。

  //SetIndexStyle関数
  //0番目のバッファを線で描画する
   SetIndexStyle(0, DRAW_LINE);

 

描画の種類の定数(DRAW)を使ったプログラム例

以下は、描画の種類の定数を使って移動平均線を描画するシンプルなカスタムインジケータのプログラム例です。

//+------------------------------------------------------------------+
//| 描画の種類の定数を使ったインジケータ例                            |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red

//--- インジケータバッファ
double LineBuffer[];
double ArrowBuffer[];

//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数                                    |
//+------------------------------------------------------------------+
int init()
  {
   //--- 0番目のバッファを線(DRAW_LINE)で描画する
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
   SetIndexBuffer(0, LineBuffer);
   SetIndexLabel(0, "MA Line");

   //--- 1番目のバッファを矢印(DRAW_ARROW)で描画する
   SetIndexStyle(1, DRAW_ARROW);
   SetIndexArrow(1, 233);
   SetIndexBuffer(1, ArrowBuffer);
   SetIndexLabel(1, "Signal Arrow");

   return(0);
  }

//+------------------------------------------------------------------+
//| カスタムインジケータ計算関数                                      |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars = IndicatorCounted();
   int limit = Bars - counted_bars - 1;

   for(int i = limit; i >= 0; i--)
     {
      //--- 10期間の単純移動平均を計算して線で描画
      LineBuffer[i] = iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, i);

      //--- 終値がMAを上抜けた場合に矢印を描画
      if(Close[i] > LineBuffer[i] && Close[i + 1] <= iMA(NULL, 0, 10, 0, MODE_SMA, PRICE_CLOSE, i + 1))
        {
         ArrowBuffer[i] = Low[i] - 10 * Point;
        }
      else
        {
         ArrowBuffer[i] = EMPTY_VALUE;
        }
     }

   return(0);
  }
//+------------------------------------------------------------------+

 

上記のプログラム例では、DRAW_LINEを使って移動平均線を描画し、DRAW_ARROWを使って売買シグナルの矢印を描画しています。

このように、描画の種類の定数を使い分けることで、インジケータにさまざまな描画表現を持たせることができます。