mql4编程:当前k线收盘倒计时器
1我们大家都知道,无论是股票、期货,还是外汇,各种行情交易软件的行情图表,都有系统默认的几种时间周期,比如:5分钟图表、15分钟图表、小时图、日线图……等等;不同时间周期的行情图表上,一根k线代表的时长是不一样的,也就是说,同样的一根k线,在5分钟图上要5分钟才能走完;在15分钟图上则要15分钟才能走完 ;……依此类推2如果在不同的图表上都能看到当前k线还有多长时间收盘,无疑对我们的操作和时间安排是有一定好处的;下面,我们就在电脑上双击“mql语言编辑器”,打开“metaeditor 4”,来做一做这个小功能;3进入“mql语言编辑器”后,在工作界面的左上方点击“新建”程序的图标,然后选择“ea交易(模板)”;在随后出现的界面中给我们的例程取名“k-clock”;接下来全部采用默认设置;最后,可以看到“k-clock.mq4”模板文件已经建立;3本页面非法爬取自百度经验4我们首先要明确,由于时间周期的跨度不同,各周期所包含的时间量采取什么标准进行统一度量是一个关键问题。比如小时线、日线、月线,这直接关系到倒计时的准确性,尤其是时间跨度大的长周期图表!因此,我们采用mql4预先内置的时间周期枚举变量作为统一计算的标准;在采用分钟作为计量标准的基础上,我们进一步将它精确到”秒“,也就是将系统预先设置的”value“值都”*60“。5有了统一计算的标准,接下来,我们在例程主函数 ontick()中输入下列语句: switch(period()) { case 1: { int a=60-seconds(); comment(a); break; } case 5: { int a=period()*60-minute()%5*60-seconds(); comment(a/60,":",a%60); break; } case 15: { int a=period()*60-minute()%15*60-seconds(); comment(a/60,":",a%60); break; } case 30: { int a=period()*60-minute()%30*60-seconds(); comment(a/60,":",a%60); break; } case 60: { int a=period()*60-minute()*60-seconds(); comment(a/60,":",a%60); break; } case 240: { int a=period()*60-hour()%4*3600-minute()*60-seconds(); comment(a/3600,":",a%3600/60,":",a%3600%60); break; } case 1440: { int a=period()*60-hour()*3600-minute()*60-seconds(); comment(a/3600,":",a%3600/60,":",a%60); break; } case 10080: { int a=period()*60-timedayofweek(timecurrent())*1440*60-hour()*3600-minute()*60-seconds(); comment(a/86400,":",a%86400/3600,":",a%86400%3600/60,":",a%86400%3600%60); break; } case 43200: { int a=period()*60-timeday(timecurrent())*1440*60-hour()*3600-minute()*60-seconds(); comment(a/86400,":",a%86400/3600,":",a%86400%3600/60,":",a%86400%3600%60); break; } default: { string c="failed!!!"; comment(c); break; } }6输入完毕后,检查确认无误,在工作区上方点击“编译运行”按钮,然后“确定”,检查目标功能是否实现;可以看到,针对工作区左边中上部的“市场报价”时间,各个周期的行情图表左上角都显示了本周期图表当前k线的收盘倒计时时间。7从编译调试的结果可以看到,我们预先要求的目标功能已经实现,你做到了吗?end 20210311