打印本文打印本文 关闭窗口关闭窗口

为什么使用marketdata.StkindiByData的效率低

作者:金字塔 来源:cxh99.com 发布时间:2016年12月22日
  • 咨询内容: Function getEMALen02(Formula,lenP)   getEMALen02 = -1   Set HistoryData = Formula.ParentGrid.GetHistoryData()      for n1 = 5 to 300 step 5      rtnV = getEMALen03(Formula,HistoryData,n1,lenP)      if rtnV > 0 then         getEMALen02 = rtnV         exit for      end if   next
    End Function
    Function getEMALen03(Formula,HistoryData,lenP1,lenP2)   str = "emac1(" & cstr(lenP1) & ")"    Set Formula1 = marketdata.StkindiByData( str ,HistoryData)      emaArr = Formula1.VARDATA( "e1" )   emaDis3Arr = Formula1.VARDATA( "dis3_ref" )   emaDis4Arr = Formula1.VARDATA( "dis4_ref" )   emaDis3 = emaDis3Arr(Formula.IndexData)   emaDis4 = emaDis4Arr(Formula.IndexData)

       getEMALen03 = emaArr(Formula.IndexData)
       marketdata.DestroyHistoryDataEnd Function

    这样的代码很慢,盘中根本运行不了如果直接写成下边那样(一共60行),又运行很流畅
    ema5 : ema(close,5);ema10 : ema(close,10);ema15 : ema(close,15);ema20 : ema(close,20);ema25 : ema(close,25);ema30 : ema(close,30);ema35 : ema(close,35);。。。ema295 : ema(close,295);ema300 : ema(close,300);
    这是为什么呢?

     

  • 金字塔客服: 如果是逐k线模式,这么运行等于巨大的计算量,建议你理清思路,我们不知道你的算法需求没法具体帮你
打印本文打印本文 关闭窗口关闭窗口