路路发智能交易研发中心

 找回密码
 立即注册
查看: 3330|回复: 0

MT4智能交易编程教程-绘画风格

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2014-3-27 08:08:42 | 显示全部楼层 |阅读模式
MT4智能交易编程教程-绘画风格
当创建一个自定义指标,可以指定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中的指标图解系列的名称. When working with complex graphical styles requiring several indicator buffers for display, the names for each buffer can be specified using ";" as a separator. Sample code is shown in DRAW_CANDLES
string

在自定义指标中,有5种类型可以使用绘画线条,他们只在或者厚度时是有效的
ENUM_LINE_STYLE
ID
描述
STYLE_SOLID
实线
STYLE_DASH
折线
STYLE_DOT
虚线
STYLE_DASHDOT
折点线
STYLE_DASHDOTDOT
双折点线


为了建立线条画类型和描绘类型,可以使用 PlotIndexSetInteger() 函数,使用函数 ObjectSetInteger() 可以标明斐波纳契引申厚度和描绘水平类型。
示例:
  1. #property indicator_chart_window
  2. #property indicator_buffers 1
  3. #property indicator_plots   1
  4. //--- 指标缓冲区
  5. double         MABuffer[];
  6. //+------------------------------------------------------------------+
  7. //| 自定义指标初始化函数                                                |
  8. //+------------------------------------------------------------------+
  9. void OnInit()
  10.   {
  11. //--- 绑定数组和指数为0的指标缓冲区
  12.    SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
  13. //--- 设置画线
  14.    PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
  15. //--- 设置线型
  16.    PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
  17. //--- 设置线颜色
  18.    PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
  19. //--- 设置线粗细
  20.    PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
  21. //--- 为线设置标签
  22.    PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
  23. //---
  24.   }
  25. //+------------------------------------------------------------------+
  26. //| 自定义指标重复函数                                                 |
  27. //+------------------------------------------------------------------+
  28. int OnCalculate(const int rates_total,
  29.                  const int prev_calculated,
  30.                  const datetime &time[],
  31.                  const double &open[],
  32.                  const double &high[],
  33.                  const double &low[],
  34.                  const double &close[],
  35.                  const long &tick_volume[],
  36.                  const long &volume[],
  37.                  const int &spread[])
  38.   {
  39. //---
  40.    for(int i=prev_calculated;i<rates_total;i++)
  41.      {
  42.       MABuffer[i]=close[i];
  43.      }
  44. //--- 为下次调用返回prev_calculated值
  45.    return(rates_total);
  46.   }
复制代码




外汇智能交易,成就财富梦想!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2024-9-20 00:47 , Processed in 0.153328 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表