就是把终端中收到的报价信息复制到数组中,数组索引为0的是最老的数据,后面的越来越新。
很多函数包括CopyTicks,在手册或者网站的帮助中都有例子代码,你可以做个最简单的空白EA,再用其中的例子代码替换一下,编译运行测试程序,就很好理解了。
例如:
//+------------------------------------------------------------------+ //| TestEA1.mq5 | //| Copyright 2016, Forex2Start.com | //| http://www.forex2start.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Forex2Start.com" #property link "http://www.forex2start.com" #property version "1.00" //--- input parameters input int ticks=10; // the number of requested ticks //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- the array that receives ticks MqlTick tick_array[]; //--- requesting ticks int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,ticks); //--- if ticks are received, show the Bid and Ask values on the chart if(copied>0) { string comment="# Time Bid Ask\r\n"; //--- generate the comment contents for(int i=0;i<copied;i++) { MqlTick tick=tick_array[i]; string tick_string=StringFormat("%d: %s %G %G", i, TimeToString(tick.time,TIME_MINUTES|TIME_SECONDS), tick.bid, tick.ask); comment=comment+tick_string+"\r\n"; } //--- show a comment on the chart Comment(comment); } else // report an error that occurred when receiving ticks { Comment("Ticks could not be loaded. GetLastError()=",GetLastError()); } } //+------------------------------------------------------------------+
这就是替换过的EA代码。
而结果是:
你就可以看到数组中数据,时间和数组索引的关系了。
Jian Chen:
嗯!谢谢!
就是把终端中收到的报价信息复制到数组中,数组索引为0的是最老的数据,后面的越来越新。
很多函数包括CopyTicks,在手册或者网站的帮助中都有例子代码,你可以做个最简单的空白EA,再用其中的例子代码替换一下,编译运行测试程序,就很好理解了。
例如:
这就是替换过的EA代码。
而结果是:
你就可以看到数组中数据,时间和数组索引的关系了。
该函数接收程序端为当前工作期积累的报价并将它们编写入ticks_array。请注意编入的订单应该从过去到现在,也就是说编号0的报价是数组中最古老的。
有懂得这个函数的前辈给我解释一下,谢谢