跳至内容

自定义指标属性

自定义指标属性

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