以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请教关于Formula读取数值的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=83224)

--  作者:gzcoolfire
--  发布时间:2015/8/13 9:10:44
--  请教关于Formula读取数值的问题
我使用一下的代码读取IF09对应的MACD值,但运行过程中有以下几个疑问需要请教一下:
1、我的VBA程序默认启动金字塔就运行,这个时候没有打开图表窗口,但发现输出的MACD值不正确,需要在图表中打开IF09的1分钟图才是正确的输出。我要如何设置才能在打开金字塔的时候就能直接读取到正确的值?
这个是否是marketdata对象不正确的问题?
2、Diff和DEA通过这个方法获取的话,是否是最新的1分钟MACD值,这个值会随行情最新价格变动?如果是Formula1.DataSize-2和Formula1.DataSize-3,是否就对应前1分钟以及前2分钟的值?
3、如果要打开图表的话,程序会很卡,如何可以在一打开的时候就设置为”只显示60根K线“,否则程序会提示加载了过多的K线数量。

我的代码如下:
sCode="IF09"
sMarket="ZJ"
Set Formula1 = marketdata.STKINDI(sCode,sMarket,"MACD",0,iPeriod)  
Diff=Formula1.GetBufData("DIFF",Formula1.DataSize-1)
DEA=Formula1.GetBufData("DEA",Formula1.DataSize-1)

--  作者:guotx2010
--  发布时间:2015/8/13 9:17:51
--  

1、可以使用Application.ActiveFramWithCode方法自动打开框架

2、Formula1.DataSize-2和Formula1.DataSize-3,是对应前1分钟以及前2分钟的值

3、使用MarketData.Stkinid的最后一个参数,可以限制读入的数据个数

 


--  作者:gzcoolfire
--  发布时间:2015/8/13 9:32:58
--  
对于第一个问题,是否如果图表显示了其他品种的,这个输出值就会不正确?
--  作者:gzcoolfire
--  发布时间:2015/8/13 9:37:56
--  
对于第三点,是否把语句修改为下面这样?
Set Formula1 = marketdata.STKINDI(sCode,sMarket,"MACD",0,iPeriod,0,60)  

--  作者:guotx2010
--  发布时间:2015/8/13 10:10:29
--  
不是的,只要你今天打开过,换成别的品种,不影响的
--  作者:gzcoolfire
--  发布时间:2015/8/13 12:06:36
--  
以下是引用guotx2010在2015/8/13 10:10:29的发言:
不是的,只要你今天打开过,换成别的品种,不影响的


如果没打开过,就是以本地历史数据最后一条1分钟K线作为计算依据?
--  作者:FexTel
--  发布时间:2015/8/13 14:25:44
--  
1,是的,打开图表软件会自动推送给你最近的数据
--  作者:gzcoolfire
--  发布时间:2015/8/13 14:31:45
--  
如果我的程序里面是跑两个或者多个品种,就需要在行情窗口里面先设置好,比如在框架中打开,再在程序中使用Application.ActiveFramWithCode 进行打开。
是这样吗?

--  作者:FexTel
--  发布时间:2015/8/13 16:56:04
--  
1,你直接自己建个框架,里面包含这2个品种!然后直接打开这个框架不就行了!