屏幕标注

楼主  收藏   举报   帖子创建时间:  2019-05-05 12:51 回复:0 关注量:589
在我学习编写程序的时候, 有位老师曾经说: 做界面是衡量程序员水平的一项重要指标。MQL4 语言不提供丰富的、方便的界面编写指令自有道理,但毕竟它不是 C 语言,编写出能按照策略执行交易的程序才是关键。正因为如此,在信息显示、程序调试方面显得十分“低能” ,例如不提供属性丰富的界面对象编辑,对于调试,不提供断点调试,不提供中间变量的查询等等。


将屏幕显示知识作为独立一章来介绍实在是深感必要。


第一, 我们在调试程序的时候常常要获取中间变量值,来判断逻辑是否合理。


第二,操盘的每一个动作都可以通过屏幕显示观察。


第三,需要将订单的开仓与平仓价位连线(甚至是动态连线)以便直观分析。


第四,指标编写中存在大量画线需求,例如画出高低区间。第五,用色块覆盖某些特定的区域。


MQL4 其实提供了大量的信息显示命令语句以及方法,只是在帮助文件中分布凌乱,而且从来都没有一个专门的文章来系统介绍。 总结编程经验, 我将 MQL4 屏显功能分为三个类型:


第一类是直接显示。

即用“Print”命令在“日志”中显示相关的变量数据。随着新价格不断的到来,在“终端”窗口的“日志”标签栏中会不停地给出以文本方式显示的结果。


第二类是屏幕定位显示。

即以屏幕像素为坐标,在主图或者副图固定位置显示信息。

第三类是 k 线定位显示。

即以 k 线数据(时间和价格)为坐标,在主图或者副图固定位置显示信息。


其实还有一类,那就是指标曲线,本章不做讨论。

直接显示

用最经典的“显示九九表”做练习,先看源码,程序命名为“test.mq4” 。

  1. #property copyright "Copyright 2012, laoyee"
  2. #property link "http://www.docin.com"
  3. //新价格到达时运行一次
  4. int start()
  5. {
  6. return(0);
  7. }
  8. //程序加载时运行一次
  9. int init()
  10. {
  11. string myResult; //定义九九表结果变量
  12. int i=1,j=1; //定义九九表循环变量
  13. for (i=1;i<=9;i++)
  14. {
  15. for (j=i;j<=9;j++)
  16. {
  17. myResult=myResult+" "+i+"*"+j+"="+(i*j); //九九表结果变量赋值
  18. }
  19. Print(myResult); //在"智能交易"栏显示结果
  20. myResult=""; //结果变量清空
  21. }
  22. return(0);
  23. }
  24. //程序卸载时运行一次
  25. int deinit()
  26. {
  27. return(0);
  28. }
打赏