绘画风格

当创建一个自定义指标,可以指定18字节的图解测绘中任意一种(显示在基本图表窗口或者图表子窗口),其价格指定在ENUM_DRAW_TYPE 计算式中。

在一个自定义指标中,可以使用任意指标新建/绘画风格,为存储必要数据,每个建筑风格要求5种全局数组数组中的一个。通过使用SetIndexBuffer()函数可使这些数据数组与指标缓冲区绑定在一起,ENUM_INDEXBUFFER_TYPE数据类型是每个缓冲区指定的。

依据绘图风格,需要1-4个缓冲区(显示为INDICATOR_DATA)。如果该风格承认兼容的动态交替颜色(所有包含在颜色中的名称),就需要更多颜色的缓冲区(指示类型INDICATOR_COLOR_INDEX)。在价值缓冲区与风格相一致时,颜色缓冲区会受到限制。

ENUM_DRAW_TYPE

ID

描述

数据缓冲

颜色缓冲

DRAW_NONE

没有画线

1

0

DRAW_LINE

画线

1

0

DRAW_SECTION

线条

1

0

DRAW_HISTOGRAM

从0位线画柱状图

1

0

DRAW_HISTOGRAM2

两个指标命令的柱状图

2

0

DRAW_ARROW

画箭头

1

0

DRAW_ZIGZAG

之字设计允许垂直界面

2

0

DRAW_FILLING

两层间的颜色

2

0

DRAW_BARS

以字符序列展示

4

0

DRAW_CANDLES

以蜡烛台序列展示

4

0

DRAW_COLOR_LINE

多色线

1

1

DRAW_COLOR_SECTION

多色分段

1

1

DRAW_COLOR_HISTOGRAM

从0线开始的多色直方图

1

1

DRAW_COLOR_HISTOGRAM2

两个指标缓冲区的多色直方图

2

1

DRAW_COLOR_ARROW

描绘多色箭头

1

1

DRAW_COLOR_ZIGZAG

多色之字形

2

1

DRAW_COLOR_BARS

多色字节

4

1

DRAW_COLOR_CANDLES

多色蜡烛台

4

1

 

提取所选描绘类型标识符,ENUM_PLOT_PROPERTY列表列出函数 PlotIndexSetInteger()PlotIndexGetInteger()

ENUM_PLOT_PROPERTY_INTEGER

ID

描述

属性类型

PLOT_ARROW

DRAW_ARROW类型箭头代码

uchar

PLOT_ARROW_SHIFT

DRAW_ARROW类型垂直箭头转换

int

PLOT_DRAW_BEGIN

在DataWindow中没有描绘和值的原始字节数量

int

PLOT_DRAW_TYPE

图解建筑类型

ENUM_DRAW_TYPE

PLOT_SHOW_DATA

在DataWindow中显示建筑值标志

bool

PLOT_SHIFT

在字节中与时间轴一起描绘的指标转换

int

PLOT_LINE_STYLE

画线类型

ENUM_LINE_STYLE

PLOT_LINE_WIDTH

画线层次

int

PLOT_COLOR_INDEXES

颜色数量

int

PLOT_LINE_COLOR

包含绘画颜色的缓冲区指标

颜色 修饰符 = 颜色数量指标

 

函数 PlotIndexSetDouble()

ENUM_PLOT_PROPERTY_DOUBLE

ID

描述

属性类型

PLOT_EMPTY_VALUE

测绘空值,没有绘图

double

函数 PlotIndexSetString()

ENUM_PLOT_PROPERTY_STRING

ID

描述

属性类型

PLOT_LABEL

显示在DataWindow中的指标图解系列的名称. 当使用复杂的需要多个指标缓冲区来显示的图形风格时,可以使用","作为分隔符来指定每个缓冲区的名称。示例代码显示在 DRAW_CANDLES

string

在自定义指标中,有5种类型可以使用绘画线条,他们只在或者厚度时是有效的

ENUM_LINE_STYLE

ID

描述

STYLE_SOLID

实线

STYLE_DASH

折线

STYLE_DOT

虚线

STYLE_DASHDOT

折点线

STYLE_DASHDOTDOT

双折点线

 

为了建立线条画类型和描绘类型,可以使用 PlotIndexSetInteger() 函数,使用函数 ObjectSetInteger() 可以标明斐波纳契引申厚度和描绘水平类型。

示例:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- 指标缓冲区
double         MABuffer[];
//+------------------------------------------------------------------+
//| 自定义指标初始化函数                                                |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- 绑定数组和指数为0的指标缓冲区
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
//--- 设置画线
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
//--- 设置线型
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
//--- 设置线颜色
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
//--- 设置线粗细
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
//--- 为线设置标签
   PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
//---
  }
//+------------------------------------------------------------------+
//| 自定义指标重复函数                                                 |
//+------------------------------------------------------------------+
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[])
  {
//--- 
   for(int i=prev_calculated;i<rates_total;i++)
     {
      MABuffer[i]=close[i];
     }
//--- 为下次调用返回prev_calculated值
   return(rates_total);
  }