mql5怎么表示最新k、前k?

 

MqlRates rt[2

rt[0].open指的是下面哪一个?


最新k,没有收盘,

前k已收盘

 

如果你想很方便的表达最新K线,前K,

最好使用动态数组,而不是静态数组,因为静态数组无法序列化。

把动态数组序列化之后,下标0就表示当下K线。

示范:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlRates rt[];  //动态数组
   ArraySetAsSeries(rt,true);//数组序列化,使得下标0表示当下K线
   CopyRates(Symbol(),0,0,2,rt);   
   Print(rt[0].open,"  ",rt[1].open);  //分别是当下K线和前一K线  
   
  }
//+------------------------------------------------------------------+
 

再看静态数组,如果元素多用起来就不是很方便。


//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlRates rt[2];  //静态态数组
   ArraySetAsSeries(rt,true);//数组序列化--对静态数组执行序列化无效
   CopyRates(Symbol(),0,0,2,rt);   
   Print(rt[0].open,"  ",rt[1].open);  //分别是前一K线 与 当下K线  
   
  }
//+------------------------------------------------------------------+
 
Ziheng Zhuang:

如果你想很方便的表达最新K线,前K,

最好使用动态数组,而不是静态数组,因为静态数组无法序列化。

把动态数组序列化之后,下标0就表示当下K线。

示范:

谢谢,
原因: