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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → VBA运行一次需要7秒左右,导致金字塔tick数据接收存在很大延时的情况。

   

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


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

主题:VBA运行一次需要7秒左右,导致金字塔tick数据接收存在很大延时的情况。

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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/12/10 13:37:45
VBA运行一次需要7秒左右,导致金字塔tick数据接收存在很大延时的情况。  发帖心情 Post By:2016/4/1 16:33:59 [只看该作者]

VBA中,每一次定时器轮询,连续调用19个品种的公式计算,这个公式计算的时间有点长,19个品种大概需要7秒左右的时间。

现在发现,当公式长时间计算时,品种的tick数据接收就会比其他的金字塔tick数据慢,存在的延时比较大。导致下单延时特别严重


数据接收和公式计算怎么不分开在不同的线程中运行? 
而且金字塔一直是在用一个cpu在运算,当公式计算比较复杂而且品种多的时候,金字塔完全顶不住,延时太长了,有将近10秒的时间。 有没有计划解决这些问题呢。
多线程协同运行,这个是未来方向啊。单靠一个cpu,瓶颈太严重了。

后台多核的方式,存在着有时候开、平仓不对的情况,后来也没检查出来情况。结果导致只能用vba的单核情况。

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/4/1 16:46:39 [只看该作者]

不清楚你的VBA代码是如何编写调用的,建议你贴出代码以便我们给出一个对你来说合理性的优化方案

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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/12/10 13:37:45
  发帖心情 Post By:2016/4/5 9:08:51 [只看该作者]

这个完全就能测试出来的啊。

就是写一个公式,这个公式执行完需要1秒的时间,然后在vba的定时器中循环10个品种,都调用这个公式。

然后观察其中任意一个品种的tick接收。


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


加好友 发短信
等级:新手上路 帖子:46 积分:0 威望:0 精华:0 注册:2015/12/10 13:37:45
  发帖心情 Post By:2016/4/5 9:11:12 [只看该作者]

这个完全就能测试出来的啊。

就是写一个公式,这个公式执行完需要1秒的时间,然后在vba的定时器中循环10个品种,都调用这个公式。

然后观察其中任意一个品种的tick接收。
调用过程很简单的,就是类似于

for i=1 to iCodeCount
'循环code,调用公式
Set Formula = marketdata.STKINDI(sCode,sMarket,sPolicy,0,iPeriod) '取策略 
nVol=Formula.GetBufData(sHoldingZhibiao,Formula.DataSize-1) '取指标的返回值
.....
next

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


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2016/4/5 20:57:47 [只看该作者]

你描述的情况是无法解决的,并且你的这种工作模式也完全体现不了VBA的优势,你可以尝试将STKINDI参数中的加载公式数量做一下限定,然后看看运行效果能否改善


 回到顶部