在VBA里如何调用系统的函数?比如ma(c,5)取五日均线函数。或者 MACD:="MACD"(26,12,9);
就是说在系统公式里可以直接用的语句,在VBA里可以直接调用吗?
我的意思是在VBA里调用系统函数,不是在系统里调用VBA函数。是我没理解你的话吗?
是,在公式里面,将这些MA的数值,使用自定义函数传到VBA后台,VBA后台用变量来获取这些值。
能够给举个例子?意思听明白了,但是自定义函数的值如何能保证是最新的实时数据?定义个自定义函数系统能自动运行吗?如果不运行,在VBA 里调用变量得到的是实时的数据吗?
Set Formula = marketdata.STKINDI("m01","dq","ma(5,10,20,60)",0,0) '调用大连期货豆粕 M1201合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
userform2_textbox2.text=Formula.GetBufData("ma1",60) '显示第60根k线上的MA1指标线数值
userform2_textbox3.text=Formula.GetBufData("ma2",60) '显示第60根k线上的MA2指标线数值
userform2_textbox4.text=Formula.GetBufData("ma3",60) '显示第60根k线上的MA3指标线数值
userform2_textbox5.text=Formula.GetBufData("ma4",60) '显示第60根k线上的MA4指标线数值
得到的结果分别为
3284.4
3284.4
3285
3282.583
但是实际上我觉得应该是2011-06-23日的十点整数据吧?
我想得到的数据应该是
3291.8
3292
3292.85
9294.417
能否告诉我错在哪了?
[此贴子已经被作者于2011-6-23 22:11:52编辑过]
要想取开盘以后运行了多少分钟必须这么取吗?这样就必须给主窗口设置成程序监测的板块,有更好的解决办法吗?就是说可以不必手动修改主窗口的内容,直接取各个市场的开盘时间。
Set Grid = Technic.GetGridByName("Main")
set Market = grid.GetMarketinfo()
userform3_textbox1.text=int(Market.OpenSeconds(TIME)/60)
问题1. 应该是用STKINDI取公式数据与你在图形上显示的数据数量不同导致,虽然都是从开始第60个K线,但是日期不同.建义你用DataSize输出看看公式数据有多少跟K线与K线图对比.或者在工具->选项->维护中将 图形显示和内存保留都设到0这样就同步了. 再此提醒用户使用公式数据不要用周期来定位,应该使用日期,这样才不会有问题.
问题2.MarketData对象的 GetMarketInfo 方法
日期如何定位? Set Formula = marketdata.STKINDI("m01","dq","ma(5,10,20,60)",0,0) '调用大连期货豆粕 M1201合约的1分钟的MA移动平均线指标,参数依次是5,10,20,60
Co 为坐标轴类型 0交易日坐标 1自然日 2交易交易时间 是改这个参数吗?给改成1,自然日,然后 2011-06-23 ?还是怎么改?