请问下, VBA中的指标函数marketdata.STKINDI,测试中发现必须要打开对应品种的行情窗口,数据才能实时同步,怎样能让所有品种不打开窗口自动实时同步啊,比如国内期货所有的主力合约?
多谢。是这样的,我打开金字塔后,保持连接状态,手动同步补充后,过了一两个小时又不同步了,想问一下,能不能在我打开金字塔以后,自动补充全历史数据,同时
接收实时行情?
你所谓的不同步是指怎么不同步,自己输出下barpos的k数量看下是不是后台运行的数量和图表上不一致
把工具-选项-维护
这里内存保留数量写0全部调用
前提条件:
1. 金字塔已经启动,并连接上了期货行情服务器,并始终保持连接状态;
预期结果:
1. 所有的期货实时数据会推送过来,不用为每一个品种单独打开行情窗口数据才能推送过来;
问题现象:
1. 假如上次补充完数据,数据最新时间是到上午9点,然后关闭行情窗口;11点的时候,我再打开这个
品种的行情窗口,它的行情最新数据是上次补充完的9点数据,而不是我预期的11点的最新数据
vba重新停止后再次启动,然后卡输出的数值是多少。
你要实时最新的话,要把建立的Formula放大计时器中,而不是放在外面
1. 在上面的例子中,VBA的值也是上午9点,而不是实时11点的数据,所有就导致我不能用VBA实时监控。
2. 要怎样把Formula放到计算器里面啊? 现在我的做法是这样的,但是有问题:必须点开品种的行情窗口,实时数据才是正确的
Sub APPLICATION_Timer(ID)
Set Formula1 = marketdata.STKINDI(Report1.Label,Report1.MarketName,"MACD(26,12,9)",0,4)
mDIFF2 = Formula1.GetBufData("DIFF", Formula1.DataSize-1)
mDEA2 = Formula1.GetBufData("DEA", Formula1.DataSize-1)
mDIFF3 = Formula1.GetBufData("DIFF", Formula1.DataSize-2)
mDEA3 = Formula1.GetBufData("DEA", Formula1.DataSize-2)
If (mDIFF3 < mDEA3) And (mDIFF2 > mDEA2) Then
crossDic.add Report1.StockName & ","& Report1.Label, “金叉"
End If
If (mDIFF3 > mDEA3) And (mDIFF2 < mDEA2) Then
crossDic.add Report1.StockName & ","& Report1.Label, "死叉"
End If
End Sub