绘画风格
绘画风格
当创建一个自定义指标,可以指定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 | 包含绘画颜色的缓冲区指标 | 颜色 修饰符 = 颜色数量指标 |
ENUM_PLOT_PROPERTY_DOUBLE
| ID | 描述 | 属性类型 |
|---|---|---|
| PLOT_EMPTY_VALUE | 测绘空值,没有绘图 | double |
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);
}