IndicatorSetDouble

この関数は、対応するインジケータープロパティの値を設定します。インジケータープロパティはdouble型である必要があります。この関数には2つのバリアントがあります。

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

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

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

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

パラメーター

prop_id

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

prop_modifier

[in]指定されたプロパティの修飾子。レベルプロパティのみに修飾子が必要です。レベルの番号付けは0から始まります。2番目のレベルのプロパティを設定するには、1を指定する必要があります(コンパイラディレクティブを使用する場合よりも1少ない)。

prop_value

[in]プロパティの値。

戻り値

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

注意

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

たとえば、別のサブウィンドウのインジケーターの第1レベルの値は、次の2つの方法で設定できます。

  • property indicator_level  50-値1はレベル番号の指定に使用されます。
  • IndicatorSetDouble(INDICATOR_LEVELVALUE、、50) – 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 two horizontal levels in a separate indicator window
#property indicator_level1 25
#property indicator_level2 75
//— set thickness of horizontal levels
#property indicator_levelwidth 1
//— set style of horizontal levels
#property indicator_levelstyle STYLE_DOT
//+——————————————————————+
//| Custom indicator initialization function                         |
//+——————————————————————+
int OnInit()
  {
//— two levels 
   IndicatorSetInteger(INDICATOR_LEVELS,2);
//— set descriptions of horizontal levels
   IndicatorSetString(INDICATOR_LEVELTEXT,0,“First Level (index 0)”);
   IndicatorSetString(INDICATOR_LEVELTEXT,1,“Second Level (index 1)”);
//— set the short name for indicator
   IndicatorSetString(INDICATOR_SHORTNAME,“IndicatorSetDouble() Demo”);
//— set clrBlue color for all levels
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
//—
   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;
   static double level1=25,level2=75;
   static int delta=1;
//— calculate ticks
   tick_counter+=delta;
//— check ranges
   if(tick_counter<0) delta=5;
   if(tick_counter>25) delta=-5;
//— calculate new values
   level1+=delta;
   level2-=delta;
//— set new values for levels
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
//— return value of prev_calculated for next call
   return(rates_total);
  }

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="">