自定义指标属性

用在自定义指标中的指标缓冲区的数量是受限的,使用SetIndexBuffer()函数可以设计成自定义缓冲区,因为要存储,所有指定数据类型是有必要的,也可能是ENUM_INDEXBUFFER_TYPE其中一个值。

ENUM_INDEXBUFFER_TYPE

ID 描述
INDICATOR_DATA 描绘数据
INDICATOR_COLOR_INDEX 颜色
INDICATOR_CALCULATIONS 媒介运算的辅助缓冲区

自定义指标提供许多设置提供方便演绎,这些设置通过使用IndicatorSetDouble(),IndicatorSetInteger()IndicatorSetString() 函数来分别相应指标性质,指标属性的标识符列表在ENUM_CUSTOMIND_PROPERTY中。

ENUM_CUSTOMIND_PROPERTY_INTEGER

ID 描述 属性类型
INDICATOR_DIGITS 描绘指标值的精确度 int
INDICATOR_HEIGHT 修正指标窗口的高度(预处理命令 #property indicator_height) int
INDICATOR_LEVELS 指标窗口中的水平数量 int
INDICATOR_LEVELCOLOR 水平线颜色 color               修饰符 = 层号
INDICATOR_LEVELSTYLE 水平线类型 ENUM_LINE_STYLE  修饰符 = 层号
INDICATOR_LEVELWIDTH 水平线厚度 int                修饰符 = 层号
INDICATOR_FIXED_MINIMUM 修正指标窗口最小值。该属性只能通过IndicatorSetInteger()函数写入 bool
INDICATOR_FIXED_MAXIMUM 修正指标窗口最大值。该属性只能通过IndicatorSetInteger()函数写入 bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

ID 描述 属性类型
INDICATOR_MINIMUM 指标窗口最小化 double
INDICATOR_MAXIMUM 指标窗口最大化 double
INDICATOR_LEVELVALUE 水平值 double            修饰符 = 层号

ENUM_CUSTOMIND_PROPERTY_STRING

ID 描述 属性类型
INDICATOR_SHORTNAME 短指标名称 string
INDICATOR_LEVELTEXT 水平描述 string     修饰符=层号

示例:

//--- 指标设置

#property indicator_separate_window

#property indicator_buffers 4

#property indicator_plots   2

#property indicator_type1   DRAW_LINE

#property indicator_type2   DRAW_LINE

#property indicator_color1  clrLightSeaGreen

#property indicator_color2  clrRed

//--- 输入参量

extern int KPeriod=5;

extern int DPeriod=3;

extern int Slowing=3;

//--- 指标缓冲区

double MainBuffer[];

double SignalBuffer[];

double HighesBuffer[];

double LowesBuffer[];

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

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

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

void OnInit()

  {

//--- 指标缓冲区绘图

   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);

   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);

   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);

   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);

//--- 设置精确性

   IndicatorSetInteger(INDICATOR_DIGITS,2);

//--- 设置水平

   IndicatorSetInteger(INDICATOR_LEVELS,2);

   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);

   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);

//--- 为子窗口设置最大最小值 

   IndicatorSetDouble(INDICATOR_MINIMUM,0);

   IndicatorSetDouble(INDICATOR_MAXIMUM,100);

//--- 设置第一条画指数的柱

   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);

   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);

//--- 为第二行设置STYLE_DOT类型

   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);

//--- 为DataWindow和指标子窗口标签命名

   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");

   PlotIndexSetString(0,PLOT_LABEL,"Main");

   PlotIndexSetString(1,PLOT_LABEL,"Signal");

//--- 设置画线空值

   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);

   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);

//--- 完成初始化

  }