我使用一下的代码读取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线数量。
我的代码如下:
Set Formula1 = marketdata.STKINDI(sCode,sMarket,"MACD",0,iPeriod)
Diff=Formula1.GetBufData("DIFF",Formula1.DataSize-1)
DEA=Formula1.GetBufData("DEA",Formula1.DataSize-1)
1、可以使用Application.ActiveFramWithCode方法自动打开框架
2、Formula1.DataSize-2和Formula1.DataSize-3,是对应前1分钟以及前2分钟的值
3、使用MarketData.Stkinid的最后一个参数,可以限制读入的数据个数
对于第一个问题,是否如果图表显示了其他品种的,这个输出值就会不正确?
对于第三点,是否把语句修改为下面这样?
Set Formula1 = marketdata.STKINDI(sCode,sMarket,"MACD",0,iPeriod,0,60)
以下是引用guotx2010在2015/8/13 10:10:29的发言:
不是的,只要你今天打开过,换成别的品种,不影响的
如果没打开过,就是以本地历史数据最后一条1分钟K线作为计算依据?
如果我的程序里面是跑两个或者多个品种,就需要在行情窗口里面先设置好,比如在框架中打开,再在程序中使用
Application.ActiveFramWithCode 进行打开。是这样吗?
1,你直接自己建个框架,里面包含这2个品种!然后直接打开这个框架不就行了!