EATC

 找回密码
 立即注册
查看: 1034|回复: 1

MQL4窗口数据处理函数(二)

[复制链接]

196

主题

1168

帖子

8003

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8003
发表于 2022-9-9 11:47:54 | 显示全部楼层 |阅读模式
  • HideTestIndicators() – 隐藏测试指标
  • Period() – 获取图表时段
  • RefreshRates() – 刷新数据
  • Symbol() – 获取图表货币对名称
  • WindowBarsPerChart() – 获取图表中柱体总数
  • WindowExpertName() – 获取图表上程序名称
  • WindowFind() – 搜索图表上指标
  • WindowFirstVisibleBar() – 获取图表上第一个显示的柱体
  • WindowHandle() – 获取图表句柄
  • WindowIsVisible() – 图表是否可见
  • WindowOnDropped() – 获取窗口索引
  • WindowPriceMax() – 获取窗口纵坐标刻度最大值
  • WindowPriceMin() – 获取窗口纵坐标刻度最小值
  • WindowPriceOnDropped() – 获取下滑价格
  • WindowRedraw() – 重绘当前图表
  • WindowScreenShot() – 窗口图表快照
  • WindowTimeOnDropped() – 价格下滑时间
  • WindowsTotal() – 获取指标窗口数
  • WindowXOnDropped() – x轴下滑像素值
  • WindowYOnDropped() – y轴下滑像素值

WindowOnDropped() – 获取窗口索引int WindowOnDropped()

返回应用了智能交易、自定义指标和脚本的窗口索引。只有智能交易、自定义指标或脚本被鼠标拖到窗口上,这个值才是有效的。

注:对于那些被初始化函数调用的自定义指标(通过init()函数调用),此索引没有被定义。

返回的索引就是运行自定义指标的窗口编号(0一图表主菜单,指标子窗口从1开始编号)。在自定义指标运行期间,它可以自己创建新的子窗口,并且这个子窗口的编号和那些真正用鼠标把指标拖过去应用的窗口是不同的。

参见 WindowXOnDropped(),  WindowYOnDropped()

示例:

if(WindowOnDropped()!=0)  {   Print("指标'MyIndicator'必须应用到主图表窗口!");   return(false);  }WindowPriceMax() – 获取窗口纵坐标刻度最大值double WindowPriceMax(void index)

返回当前图表指定的子窗口纵坐标刻度的最大值(0-图表主窗口,指标子窗口编号从1开始)。如果子窗口索引没有指定,将返回主图表窗口价格刻度的最大值。

参见WindowPriceMin(), WindowFirstVisibleBar(), WindowBarsPerChart()。

参数:

index - 图表子窗口索引(0-图表主窗口)。

示例:

double   top=WindowPriceMax();double   bottom=WindowPriceMin();datetime left=Time[WindowFirstVisibleBar()];int      right_bound=WindowFirstVisibleBar()-WindowBarsPerChart();if(right_bound<0) right_bound=0;datetime right=Time[right_bound]+Period()*60;//----ObjectCreate("Padding_rect",OBJ_RECTANGLE,0,left,top,right,bottom);ObjectSet("Padding_rect",OBJPROP_BACK,true);ObjectSet("Padding_rect",OBJPROP_COLOR,Blue);WindowRedraw();WindowPriceMin() – 获取窗口纵坐标刻度最小值double WindowPriceMin(void index)

返回当前图表指定的子窗口纵坐标刻度的最小值(0-图表主窗口,指标子窗口编号从1开始)。如果子窗口索引没有指定,将返回主图表窗口价格刻度的最小值。

参见 WindowPriceMax(), WindowFirstVisibleBar(), WindowBarsPerChart()。

参数:

index - 图表子窗口索引(0-图表主窗口)。

示例:

double   top=WindowPriceMax();double   bottom=WindowPriceMin();datetime left=Time[WindowFirstVisibleBar()];int      right_bound=WindowFirstVisibleBar()-WindowBarsPerChart();if(right_bound<0) right_bound=0;datetime right=Time[right_bound]+Period()*60;//----ObjectCreate("Padding_rect",OBJ_RECTANGLE,0,left,top,right,bottom);ObjectSet("Padding_rect",OBJPROP_BACK,true);ObjectSet("Padding_rect",OBJPROP_COLOR,Blue);WindowRedraw();WindowPriceOnDropped() – 获取下滑价格double WindowPriceOnDropped()

返回图表点的智能交易或脚本价格下滑价格。只有智能交易、自定义指标或脚本被鼠标拖到窗口上,这个值才是有效的。

注:对于自定义指标,这个值是不确定的。

示例:

  double   drop_price=WindowPriceOnDropped();  datetime drop_time=WindowTimeOnDropped();  //---- 可能未指定 (zero)  if(drop_time>0)    {     ObjectCreate("价格下滑水平", OBJ_HLINE, 0, drop_price);     ObjectCreate("下滑时间", OBJ_VLINE, 0, drop_time);    }WindowRedraw() – 重绘当前图表void WindowRedraw()

强制重画当前图表。在货币对属性改变之后,通常会应用本函数。

示例:

  //---- 设置货币对新属性  ObjectMove(object_name1, 0, Time[index], price);  ObjectSet(object_name1, OBJPROP_ANGLE, angle*2);  ObjectSet(object_name1, OBJPROP_FONTSIZE, fontsize);  ObjectSet(line_name, OBJPROP_TIME2, time2);  ObjectSet(line_name, OBJPROP_ANGLE, line_angle);  //---- 现在重画  WindowRedraw();WindowScreenShot() – 窗口图表快照bool WindowScreenShot(string filename, int size_x,                       int size_y, void start_bar,                       void chart_scale, void chart_mode)

以GIF文件形式保存当前图表图像。如果失败,返回FALSE,想要得到详细的错误信息,请调用 GetLastError() 函数。

屏幕快照保存在terminal_dir/experts/files (terminal_dir/tester/files 测试情况下)目录或其子目录中。

参数:

filename    - 保存屏幕快照的文件名称。 size_x      - 屏幕宽度(像素)。 size_y      - 屏幕高度(像素)。 start_bar   - 屏幕快照中第一个可见柱子。如果价格值设定为0,当前第个可见柱子将被除去。如果价格值未设置或为负值,图表尾部图像将会生成。 chart_scale - 屏幕快照图表的水平刻度。范围可以从0到5,如果没有值或设为负值,将直接使用当前图表刻度。 chart_mode  - 图表显示模式。可以采用下列值:              CHART_BAR   (以柱体形式显示)              CHART_CANDLE (以K线形式显示)              CHART_LINE   (以收盘价线显示)。                如果没有值或设为负值,图表会以当前模式显示。

示例:

  int lasterror=0;  //----测试模式下平仓  if(IsTesting() && ExtTradesCounter<TradesTotal())    {     //---- 使用 WindowScreenShot 进行检测     if(!WindowScreenShot("shots//tester"+ExtShotsCounter+".gif",640,480))        lasterror=GetLastError();     else ExtShotsCounter++;     ExtTradesCounter=TradesTotal();    }WindowTimeOnDropped() – 价格下滑时间datetime WindowTimeOnDropped()

返回图表点的智能交易或脚本价格下滑时间部分。只有智能交易、自定义指标或脚本被鼠标拖到窗口上,这个值才是有效的。

注:对于自定义指标,这个值是不确定的。

示例:

  double   drop_price=WindowPriceOnDropped();  datetime drop_time=WindowTimeOnDropped();  //---- 可能未指定 (zero)  if(drop_time>0)    {     ObjectCreate("Dropped price line", OBJ_HLINE, 0, drop_price);     ObjectCreate("Dropped time line", OBJ_VLINE, 0, drop_time);    }WindowsTotal() – 获取指标窗口数int WindowsTotal()

返回在图表中指标窗口数(包括主图表)。

示例:

Print("窗口数 = ", WindowsTotal()); WindowXOnDropped() – x轴下滑像素值int WindowXOnDropped()

在图表窗口的客户区域点,应用了智能交易或脚本,当鼠标拖动时,返回X轴上的下滑点像素值。当以映像点x轴智能交易或脚本下滑时,返回价格值。

只有在智能交易或脚本应用鼠标技术(”拖曳”)的情况下,这个值是准确的。

参见WindowYOnDropped(), WindowOnDropped()

示例:

Print("智能交易下滑点 x=",WindowXOnDropped()," y=",WindowYOnDropped());WindowYOnDropped() – y轴下滑像素值int WindowYOnDropped()

在图表窗口的客户区域点,应用了智能交易或脚本,当鼠标拖动时,返回Y轴上的下滑点像素值。当以映像点Y轴智能交易或脚本下滑时,返回价格值。

只有在智能交易或脚本应用鼠标技术(”拖曳”)的情况下,这个值是准确的。

参见 WindowXOnDropped(), WindowPriceOnDropped(), WindowOnDropped()

示例:

Print("智能交易下滑点 x=",WindowXOnDropped()," y=",WindowYOnDropped());
回复

使用道具 举报

2588

主题

4807

帖子

3万

积分

交易元老

Rank: 8Rank: 8

积分
32217
发表于 2022-10-19 12:03:20 | 显示全部楼层
88888888
回复

使用道具 举报

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

本版积分规则

收藏本站|法律声明|Archiver|小黑屋|support@ea198.com|EATC ( 桂ICP备2022005787号 )

风险提示与免责声明:擅自从事外汇保证金交易的双方不受法律保护!社区内展示内容,均为网友自发分享,不构成投资建议,社区无法全面监控由第三方上传至社区的资源,因此不保证资源的合法性、安全性、完整性、真实性或品质等。您下载时,同意自行判断并承担所有风险。社区内的资源,仅限用于学习和研究目的,不得将用于商业或者非法用途,否则,一切后果请用户自负。社区信息来自网络,版权争议与社区无关,您下载后须在24个小时之内进行删除。如果您喜欢该内容,请支持正版。如有侵权请邮件与我们联系处理。