如果你想很方便的表达最新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线。
示范:
MqlRates rt[2];
rt[0].open指的是下面哪一个?最新k,没有收盘,
前k已收盘