IndicatorSetDouble

函数建立了类似指标属性值,指标属性应该是双精度类型,有2个变量函数可以使用。

调用属性的指示标识符。

bool  IndicatorSetDouble(

   int     prop_id,           // 标识符

   double  prop_value         // 将被设置的值

   );

调用指示标识符和属性修饰语。

bool  IndicatorSetDouble(

   int     prop_id,           // 标识符

   int     prop_modifier,     // 修饰符 

   double  prop_value         // 将被设置的值

   )

参量

prop_id

[in] 值可以是 ENUM_CUSTOMIND_PROPERTY_DOUBLE 值中的一个。

prop_modifier

[in]  规定属性的修饰语,只有水平指示需要修饰语。水平编号从0开始。它表示若要为第二水平设置属性您需要指定1(1少于使用编译程序指令时)。

prop_value

[in]  属性值。

返回值

如果成功,返回 true,否则 - false

注意

使用#property指令时属性(修饰符)的编号从1(一)开始,而函数使用从0(零)开始编号。如果水平编号设置错误,那么指标展示可能会不同于预想。

例如,在单独子窗口的指标第一水平值可以通过两种方式设置:

  • property indicator_level1  50 - 值1用于指定水平编号,
  • IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - 0 用于指定第一水平。

例如: 颠倒指标窗口最大最小值和水平线所在水平值的指标。

#property indicator_separate_window

//--- 设置指标窗口的最大最小值

#property indicator_minimum  0

#property indicator_maximum  100

//--- 在单独指标窗口展示三条水平线

#property indicator_level1 25

#property indicator_level2 50

#property indicator_level3 75

//--- 设置水平线的粗细

#property indicator_levelwidth 1

//--- 设置水平线的样式

#property indicator_levelstyle STYLE_DOT

//+------------------------------------------------------------------+

//| 自定义指标初始化函数                                                |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- 设置水平线的描述

   IndicatorSetString(INDICATOR_LEVELTEXT,0,"First Level (index 0)");

   IndicatorSetString(INDICATOR_LEVELTEXT,1,"Second Level (index 1)");

   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Third Level (index 2)");

//--- 设置指标缩略名

   IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");

//--- 设置每个水平的颜色

   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);

   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);

   IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);

//---

   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[])

  {

   static int tick_counter=0;

   static double level1=25,level2=50,level3=75;

   static double max=100,min=0, shift=100;

//--- 计算订单号

   tick_counter++;

//--- 每10个订单号颠倒一次水平

   if(tick_counter%10==0)

     {

      //--- 水平值的颠倒符号

      level1=-level1;

      level2=-level2;

      level3=-level3;

      //--- 最大最小值的颠倒符号

      max-=shift;

      min-=shift;

      //--- 颠倒替换值

      shift=-shift;

      //--- 设置新的水平值

      IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);

      IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);

      IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);

      //--- 在指标窗口设置新的最大最小值

      Print("Set up max = ",max,",   min = ",min);

      IndicatorSetDouble(INDICATOR_MAXIMUM,max);

      IndicatorSetDouble(INDICATOR_MINIMUM,min);

     }

//--- 返回prev_calculated值以便下次调用

   return(rates_total);

  }

另见

指标类型示例, 指标属性和函数间的连接, 绘画风格