自定义指标属性

用在自定义指标中的指标缓冲区的数量是受限的,使用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);
//--- 完成初始化
  }