IndicatorSetInteger

この関数は、対応するインジケータープロパティの値を設定します。インジケータープロパティは、intまたはcolorタイプでなければなりません。この関数には2つのバリアントがあります。

プロパティ識別子を指定して呼び出します。

bool  IndicatorSetInteger(
   int  prop_id,           // identifier
   int  prop_value         // value to be set
   );

プロパティ識別子と修飾子を指定して呼び出します。

bool  IndicatorSetInteger(
   int  prop_id,           // identifier
   int  prop_modifier,     // modifier
   int  prop_value         // value to be set
   )

パラメーター

prop_id

[in]インジケータープロパティの識別子。値は、ENUM_CUSTOMIND_PROPERTY_INTEGER列挙の値のいずれかです。

prop_modifier

[in]指定されたプロパティの修飾子。レベルプロパティのみに修飾子が必要です。

prop_value

[in]プロパティの値。

戻り値

正常に実行された場合はtrue、それ以外の場合はfalseを返します。

注意

#propertyディレクティブを使用する場合、プロパティ(修飾子)の番号付けは1(1)から始まり、関数は0(ゼロ)からの番号付けを使用します。レベル番号が正しく設定されていない場合、インジケータの表示が意図したものと異なる場合があります。

たとえば、最初の水平線の太さを設定するには、ゼロ番目のインデックスを使用します。

  • IndicatorSetInteger(INDICATOR_LEVELWIDTH、0、5 )-インデックス0は、最初のレベルの厚さを設定するために使用されます。

 

例:水平線が配置されるレベルの値を上下逆さまにするインジケーター。

Example of using the IndicatorSetDouble() function

#property indicator_separate_window
//— set the maximum and minimum values for the indicator window
#property indicator_minimum 0
#property indicator_maximum 100
//— display three horizontal levels in a separate indicator window
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
//— set thickness of horizontal levels
#property indicator_levelwidth 5
//— set color of horizontal levels
#property indicator_levelcolor clrAliceBlue
//— set style of horizontal levels
#property indicator_levelstyle STYLE_DOT
//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int OnInit()
  {
//— set descriptions of horizontal levels
   IndicatorSetString(INDICATOR_LEVELTEXT,0,“First Level (index 0)”);
   IndicatorSetString(INDICATOR_LEVELTEXT,1,“Second Level (index 1)”);
   IndicatorSetString(INDICATOR_LEVELTEXT,2,“Third Level (index 2)”);
//— set the short name for indicator
   IndicatorSetString(INDICATOR_SHORTNAME,“IndicatorSetInteger() Demo”);
   return(INIT_SUCCEEDED);
  }
//+——————————————————————+
//| Custom indicator iteration function                              |
//+——————————————————————+
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[])
  {
   static int tick_counter=0;
//— calculate ticks
   tick_counter++;
//— and calculate colors of horizontal levels depending on the tick counter
   ChangeLevelsColor(tick_counter,3,6,10); // three last parameters are switching the color
//— modify style of horizontal levels
   ChangeLevelStyle(tick_counter);
//— get width as the remainder of integer division of the ticks number by 5
   int width=tick_counter%5;
//— iterate over all horizontal levels and set thickness
   IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,width+1);
//— return value of prev_calculated for next call
   return(rates_total);
  }
//+——————————————————————+
//| Set color of horizontal line in the separate indicator window    |
//+——————————————————————+
void ChangeLevelsColor(int tick_number,// dividend, number to get the remainder of division
                       int f_trigger,  // first divisor of color switching
                       int s_trigger,  // second divisor of color switching
                       int t_trigger)  // third divisor of color switching
  {
   static color colors[3]={clrRed,clrBlue,clrGreen};
//— index of color from the colors[] array
   int index=-1;
//— calculate the number of color from the colors[] array to paint horizontal line
   if(tick_number%f_trigger==0)
      index=0;   // if tick_number divides by f_trigger without the remainder
   if(tick_number%s_trigger==0)
      index=1;   // if tick_number divides by s_trigger without the remainder
   if(tick_number%t_trigger==0)
      index=2;   // if tick_number divides by t_trigger without the remainder
//— if color is defined, set it          
   if(index!=-1)
      IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,colors[index]);
//—
  }
//+——————————————————————+
//| Set style of horizontal line in the separate indicator window    |
//+——————————————————————+
void ChangeLevelStyle(int tick_number) // number to get the remainder of division
  {
//— array to store styles
   static ENUM_LINE_STYLE styles[5]=
     {STYLE_SOLID,STYLE_DASH,STYLE_DOT,STYLE_DASHDOT,STYLE_DASHDOTDOT};
//— index of style from the styles[] array
   int index=-1;
//— calculate the number from the styles[] array to set style of horizontal line
   if(tick_number%50==0)
      index=5;   // if tick_number divides by 50 without the remainder, then style is STYLE_DASHDOTDOT
   if(tick_number%40==0)
      index=4;   // … STYLE_DASHDOT
   if(tick_number%30==0)
      index=3;   // … STYLE_DOT
   if(tick_number%20==0)
      index=2;   // … STYLE_DASH
   if(tick_number%10==0)
      index=1;   // … STYLE_SOLID
//— if style is defined, set it      
   if(index!=-1)
      IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,styles[index]);
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">