以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  在VBA里如何调用系统的函数?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=6968)

--  作者:xm1212
--  发布时间:2011/6/23 15:52:53
--  在VBA里如何调用系统的函数?
 在VBA里如何调用系统的函数?比如ma(c,5)取五日均线函数。或者 MACD:="MACD"(26,12,9);
就是说在系统公式里可以直接用的语句,在VBA里可以直接调用吗?

--  作者:guotx2010
--  发布时间:2011/6/23 15:59:51
--  

使用自定义函数将MA的值传入VBA后台。

 


--  作者:xm1212
--  发布时间:2011/6/23 16:41:42
--  谢谢
 我的意思是在VBA里调用系统函数,不是在系统里调用VBA函数。是我没理解你的话吗?
--  作者:guotx2010
--  发布时间:2011/6/23 16:53:33
--  

是,在公式里面,将这些MA的数值,使用自定义函数传到VBA后台,VBA后台用变量来获取这些值。

 


--  作者:xm1212
--  发布时间:2011/6/23 16:59:07
--  非常感谢
 能够给举个例子?意思听明白了,但是自定义函数的值如何能保证是最新的实时数据?定义个自定义函数系统能自动运行吗?如果不运行,在VBA 里调用变量得到的是实时的数据吗?

--  作者:王锋
--  发布时间:2011/6/23 19:15:27
--  

使用

Stkindi 方法

参考 http://www.weistock.com/bbs/dispbbs.asp?BoardID=5&ID=4917&replyID=20514&skin=1


--  作者:xm1212
--  发布时间:2011/6/23 22:10:54
--  谢谢你,很有帮助,但是还有问题。
 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编辑过]

--  作者:xm1212
--  发布时间:2011/6/24 8:40:53
--  还有个问题
要想取开盘以后运行了多少分钟必须这么取吗?这样就必须给主窗口设置成程序监测的板块,有更好的解决办法吗?就是说可以不必手动修改主窗口的内容,直接取各个市场的开盘时间。


  Set Grid = Technic.GetGridByName("Main")
 set Market = grid.GetMarketinfo()
 userform3_textbox1.text=int(Market.OpenSeconds(TIME)/60)
--  作者:王锋
--  发布时间:2011/6/24 8:52:27
--  

问题1. 应该是用STKINDI取公式数据与你在图形上显示的数据数量不同导致,虽然都是从开始第60个K线,但是日期不同.建义你用DataSize输出看看公式数据有多少跟K线与K线图对比.或者在工具->选项->维护中将 图形显示和内存保留都设到0这样就同步了. 再此提醒用户使用公式数据不要用周期来定位,应该使用日期,这样才不会有问题.

问题2.MarketData对象的 GetMarketInfo 方法


--  作者:xm1212
--  发布时间:2011/6/24 11:47:12
--  谢谢
 日期如何定位? 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 ?还是怎么改?