请教版主,我想在VBA程序中,在上根K线(如1分钟周期)走完,跳到下根K线的瞬间,以最快速度读取上根K线的收盘价和开盘价,以便判断上根K线是阴线还是阳线,据此作为开平仓的依据,我采用了以下一种方法,我请教的问题是:1、三种方法的取得数据是否是使用的一套历史数据数组(或数据库),即金字塔随行情不断动态刷新的历史数据是否是一套? 2、采用哪种方法取得上K线的开盘价和收盘价的数据速度最快?谢谢!
方法1:Call Application.ActivateFrameWithCode("Technic",“IF01”,“ZJ”,0)
Set Grid = Technic.GetGridByName("Main")
Set History = Grid.GetHistoryData()
LastOpen=History.Open(History.Count-2)
LastClose=History.Close(History.Count-2)
方法2:Set History = marketdata.GetHistoryData(“IF01”,"ZJ",0)
LastOpen=History.Open(History.Count-2)
LastClose=History.Close(History.Count-2)
方法3:采用后台自动化预警,并设置分笔速率扫描,将监控品种设为“IF01”
EXTGBDATASET('LastOpen',REF(OPEN,1);
EXTGBDATASET('LastClose',REF(Close,1);
然后在VBA中:
LastOpen=Document.GetExtData('LastOpen')
LastClose=Document.GetExtData('LastClose')
如果你在VBA执行监控计算时,需要同步打开图表监控,那么第一种是最好的方案.因为直接可以利用到图表的数据
如果你在后台执行的VBA, 应该尽可能少的调用历史数据.这样可以提高读取数据加载的速度
http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=49537 参考这里.
比如Count参数设为5
谢谢管理员。只不过还是没有完全明白,我个人觉得在VBA中使用Set History = marketdata.GetHistoryData(“IF01”,"ZJ",0)取得历史数据,可能比从图表监控取得的历史数据会快一些,我认为图表监控必须等到一根K线刷新后,才会成为历史数据,是不是这样?
另外请教管理员,如果在后台采用Set History = marketdata.GetHistoryData(“IF01”,"ZJ",0,5)调用历史数据,其中的5是不是表示动态缓存区中只保留最新5周期的历史数据,还是从硬盘读取最新5周期数据到缓存区?
管理员,我试验了一下,Set History = marketdata.GetHistoryData(“IF01”,"ZJ",0,5),取到的历史数据是静态数据,只有不断的执行Set History = marketdata.GetHistoryData(“IF01”,"ZJ",0,5)语句,即不断从硬盘装载历史数据,才能取到最新的历史数据。而通过Set History = Grid.GetHistoryData()取到的历史数据是因为图表K线不断刷新,所以取到的历史数据永远是最新的,是这样的吗?如是这样,那么应该用Set History = Grid.GetHistoryData()从图表取历史数据应该要快,且不耗费系统资源,是吗?