欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 为什么使用marketdata.StkindiByData的效率低

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2590人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
microsoft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:236 积分:0 威望:0 精华:0 注册:2014/5/24 15:42:20
为什么使用marketdata.StkindiByData的效率低  发帖心情 Post By:2016/9/20 14:15:53 [只看该作者]

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);

这是为什么呢?

 回到顶部
帅哥哟,离线,有人找我吗?
马良
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2016/9/20 17:37:16 [只看该作者]

如果是逐k线模式,这么运行等于巨大的计算量,建议你理清思路,我们不知道你的算法需求没法具体帮你

 回到顶部