以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 为什么使用marketdata.StkindiByData的效率低 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=139793) |
-- 作者:microsoft -- 发布时间:2016/9/20 14:15:53 -- 为什么使用marketdata.StkindiByData的效率低 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.DestroyHistoryData End 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); 这是为什么呢?
|
-- 作者:马良 -- 发布时间:2016/9/20 17:37:16 -- 如果是逐k线模式,这么运行等于巨大的计算量,建议你理清思路,我们不知道你的算法需求没法具体帮你 |