您需要 登录 才可以下载或查看,没有帐号?注册
在我学习编写程序的时候, 有位老师曾经说: 做界面是衡量程序员水平的一项重要指标。MQL4 语言不提供丰富的、方便的界面编写指令自有道理,但毕竟它不是 C 语言,编写出能按照策略执行交易的程序才是关键。正因为如此,在信息显示、程序调试方面显得十分“低能” ,例如不提供属性丰富的界面对象编辑,对于调试,不提供断点调试,不提供中间变量的查询等等。
将屏幕显示知识作为独立一章来介绍实在是深感必要。
第一, 我们在调试程序的时候常常要获取中间变量值,来判断逻辑是否合理。
第二,操盘的每一个动作都可以通过屏幕显示观察。
第三,需要将订单的开仓与平仓价位连线(甚至是动态连线)以便直观分析。
第四,指标编写中存在大量画线需求,例如画出高低区间。第五,用色块覆盖某些特定的区域。
MQL4 其实提供了大量的信息显示命令语句以及方法,只是在帮助文件中分布凌乱,而且从来都没有一个专门的文章来系统介绍。 总结编程经验, 我将 MQL4 屏显功能分为三个类型:
第一类是直接显示。
即用“Print”命令在“日志”中显示相关的变量数据。随着新价格不断的到来,在“终端”窗口的“日志”标签栏中会不停地给出以文本方式显示的结果。
第二类是屏幕定位显示。
即以屏幕像素为坐标,在主图或者副图固定位置显示信息。
第三类是 k 线定位显示。
即以 k 线数据(时间和价格)为坐标,在主图或者副图固定位置显示信息。
其实还有一类,那就是指标曲线,本章不做讨论。
直接显示
用最经典的“显示九九表”做练习,先看源码,程序命名为“test.mq4” 。
#property copyright Copyright 2012, laoyee
#property link http://www.docin.com
//新价格到达时运行一次
int start()
{
return(0);
}
//程序加载时运行一次
int init()
{
string myResult; //定义九九表结果变量
int i=1,j=1; //定义九九表循环变量
for (i=1;i i++)
{
for (j=i;j j++)
{
myResult=myResult+ +i+ * +j+ = +(i*j); //九九表结果变量赋值
}
Print(myResult); //在 智能交易 栏显示结果
myResult= //结果变量清空
}
return(0);
}
//程序卸载时运行一次
int deinit()
{
return(0);
}复制代码
为了让九九表只显示一次结果,我们把计算代码放置在 int init()模块当中。将程序编译后加载,在“终端”窗口的“智能交易”标签栏中显示如下:
用“Print”命令显示出每一次变量 i 发生变化后的结果,该命令对换行符号”n”无效,也就是说不能实现换行显示。
我们采用 Comment 命令再试试,在“test.mq4”基础上修改代码如下。
#property copyright Copyright 2012, laoyee
#property link http://www.docin.com/yiwence
//新价格到达时运行一次
int start()
{
return(0);
}
//程序加载时运行一次
int init()
{
string myResult; //定义九九表结果变量
int i=1,j=1; //定义九九表循环变量
for (i=1;i i++)
{
for (j=i;j j++)
{
myResult=myResult+ +i+ * +j+ = +(i*j); //九九表结果变量赋值
}
myResult=myResult+ n //结果变量加上换行符号
}
Comment(myResult);
return(0);
}
//程序卸载时运行一次
int deinit()
{
return(0);
}复制代码
在结果变量赋值语句中增加了一个换行符 n ,这次在主图的左上角显示:
Comment 与 Print 命令的差异描述如下:
1、 Comment 命令将变量结果在主图左上角显示, 如果程序代码中有多处使用该命令,则后一次执行的结果将覆盖前一次结果。Print 显示在“终端”窗口的“智能交易”标签栏中,如果程序代码中有多处使用该命令,则按先后顺序全部显示。
2、 Comment 命令可以用换行符实现多信息显示,Print 命令只能一次显示一行信息。
Comment 与 Print 命令的共性描述如下:
两个命令都不能定义字体、颜色及大小,适合在程序调试时使用。
Print 命令在执行过程中产生的结果会被记录到 MT4 的日志文档中(expertslogs) ,建议调试完毕后最好对此语句加上注释或者删除, 因为日志文档有最大字节数限制, 可以防止意外错误的发生,二是避免日积月累的垃圾文档占用过多的磁盘空间,三是为了策略保密。
事实上,大多数国外的 EA 都喜欢采用 Comment 命令显示相关信息,而 Print 命令通常用于程序调试。由于我们使用中文,用 Comment 命令显示字体太小无法看清楚,即便用放大镜看, 中文字都是模糊的, 信不信由你, 反正我信, 呵呵, 而且如果左上角显示过多信息,会与 k 线重叠,既不美观也不便于技术分析。
观察主图,我们发现右边红框范围内是空白区域,正好用来显示程序相关的信息,而且箭头所指的部位可以通过鼠标左右拉动调整红框的宽度。这实在是一个很好的位置!
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!