下载MetaTrader 5

CopyTicks这个函数是什么意思的

要添加评论,请登录注册
使用MQL5.community搜索。很简单!
uino
118
uino 2016.06.16 17:20 

该函数接收程序端为当前工作期积累的报价并将它们编写入ticks_array。请注意编入的订单应该从过去到现在,也就是说编号0的报价是数组中最古老的。

有懂得这个函数的前辈给我解释一下,谢谢

Jian Chen
版主
3620
Jian Chen 2016.06.17 04:26  

就是把终端中收到的报价信息复制到数组中,数组索引为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代码。

而结果是:

CopyTicks测试 

你就可以看到数组中数据,时间和数组索引的关系了。 

uino
118
uino 2016.06.20 17:04  
Jian Chen:

就是把终端中收到的报价信息复制到数组中,数组索引为0的是最老的数据,后面的越来越新。

很多函数包括CopyTicks,在手册或者网站的帮助中都有例子代码,你可以做个最简单的空白EA,再用其中的例子代码替换一下,编译运行测试程序,就很好理解了。

例如:

 这就是替换过的EA代码。

而结果是:

 

你就可以看到数组中数据,时间和数组索引的关系了。 

嗯!谢谢!
要添加评论,请登录注册