happy 气球
2024-11-29 04:04:22
最佳回答
1首先,在电脑上打开任意一款mt4交易**;然后点击上方工具栏的“metaeditor”按钮,打开mql编辑器;2在“mql编辑器”中选择“文件”中的“新建”;在随后出现的“mql向导”中选择“ea模板”,然后给自己的ea程序取一个名字,如“d**play_demo”,然后一路选择默认选项;全部完成后,ea模板文件就建立了;3在mt4交易**上,当我们提交订单时,系统会为每个订单生成一个“订单号”,它是唯一的;想对具体的订单进行操作,比如计算某个持仓订单的盈亏,当然得先“拿到”具体的订单。因此,拿到订单号,我们就可以对订单进行我们想要的操作了;这是第一步,也是较为关键的一步;4在mql中,orderticket()函数可以获取具体交易单的“订单号”;但在使用这个函数前,必须先使用“选择交易单函数”orderselect()选定具体的订单;因此,我们要先弄清楚“选择交易单函数”orderselect()的用法;5从mql自带的帮助文件可以看出,orderselect()函数的用法有些复杂,因此,我们还是用“笨办法”——试用,看看这个函数究竟会给我们些什么?在我们的ea程序“d**play_demo"中的ontick()函数中输入下列语句:if(orderselect(0,select_by_pos)==true) comment(orderticket());然后编译执行;6这时,我们再变动一下参数,在ontick()函数中输入下列语句:if(orderselect(3,select_by_pos)==true) comment(orderticket());然后编译执行;从运行结果来看,在mt4交易**上,我们的交易订单会按照”成交时间“的先后依次排列,并且起始索引号为0!7知道了”select_by_pos“这个参数是指定在持仓订单中选择订单后,我们再将ontick()函数中的语句改为:if(orderselect(49391790,select_by_ticket)==true) comment(orderticket());然后编译执行;从运行结果来看,”select_by_ticket“这个参数需要在持仓订单中指明具体订单的订单号,然后才能返回这个订单的相关信息,我个人认为这个参数在ea交易程序中的意义不大!8在明白了orderselect()函数的用法后,我们在ontick()函数中输入下列语句,完成”显示mt4交易**持仓订单号“的目标功能:static int num[20]; int index; for(index=0;index<orderstotal();index++) { if(orderselect(index,select_by_pos)==true) num[index]=orderticket(); else comment("failed!"); } comment(num[0],"\n",num[1],"\n",num[2],"\n",num[3],"\n", num[4],"\n",num[5],"\n",num[6],"\n",num[7],"\n", num[8],"\n",num[9],"\n",num[10],"\n",num[11],"\n", num[12],"\n",num[13],"\n",num[14],"\n",num[15],"\n", num[16],"\n",num[17],"\n",num[18],"\n",num[19],"\n");检查无误后编译执行;从运行结果来看,目标功能成功实现!也就是说,我们完全可以将持仓订单进行”遍历“,这样,我们就可以对其中任意的订单进行操作了………^o^……end 20210311