以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- VBA运行一次需要7秒左右,导致金字塔tick数据接收存在很大延时的情况。 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=95757) |
-- 作者:bage -- 发布时间:2016/4/1 16:33:59 -- VBA运行一次需要7秒左右,导致金字塔tick数据接收存在很大延时的情况。 VBA中,每一次定时器轮询,连续调用19个品种的公式计算,这个公式计算的时间有点长,19个品种大概需要7秒左右的时间。 现在发现,当公式长时间计算时,品种的tick数据接收就会比其他的金字塔tick数据慢,存在的延时比较大。导致下单延时特别严重 数据接收和公式计算怎么不分开在不同的线程中运行? 而且金字塔一直是在用一个cpu在运算,当公式计算比较复杂而且品种多的时候,金字塔完全顶不住,延时太长了,有将近10秒的时间。 有没有计划解决这些问题呢。 多线程协同运行,这个是未来方向啊。单靠一个cpu,瓶颈太严重了。 后台多核的方式,存在着有时候开、平仓不对的情况,后来也没检查出来情况。结果导致只能用vba的单核情况。
|
-- 作者:admin -- 发布时间:2016/4/1 16:46:39 -- 不清楚你的VBA代码是如何编写调用的,建议你贴出代码以便我们给出一个对你来说合理性的优化方案 |
-- 作者:bage -- 发布时间:2016/4/5 9:08:51 -- 这个完全就能测试出来的啊。 就是写一个公式,这个公式执行完需要1秒的时间,然后在vba的定时器中循环10个品种,都调用这个公式。 然后观察其中任意一个品种的tick接收。 |
-- 作者:bage -- 发布时间: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 -- 发布时间:2016/4/5 20:57:47 -- 你描述的情况是无法解决的,并且你的这种工作模式也完全体现不了VBA的优势,你可以尝试将STKINDI参数中的加载公式数量做一下限定,然后看看运行效果能否改善 |