-- 作者:NaturalLaw
-- 发布时间:2017/3/27 19:18:30
-- [求助]vba编程为什么多小时线和节气线没数据?
\'多小时线和节气线的数据都下载到了本地了,多小时是系统默认的2小时线
Sub SHSL() Dim Grid \'窗格引用对象变量 Dim iStockName \'与窗格关联的证券名称 Dim iStockLabel \'与窗格关联的证券代码 Dim iMarket \'与窗格关联的市场代码 \'参数Cyctype 的周期类型:0 1分钟 1 5分钟 2 15分钟 3 30分钟 4 60分钟 5日线 6周线 7月线 8年线 9多日线 \'10分笔成交 11多小时线 12多秒线 13多分钟线 14季度线 15半年线 16节气线 17 3分钟 18 10分钟 19 多笔线 \'不同周期数据的对象引用变量 Dim DataMinute1,DataMinute5,DataMinute15,DataMinute30,DataHour,DataDay,DataWeek,DataMonth,DataYear,DataDays Dim DataBill,DataHours,DataSeconds,DataMinutes,DataQuarter,DataHalfYear,DataSolarTerms,DataMinute3,DataMinute10,DataBills \'用于数组的循环变量 Dim iMinute1,iMinute5,iMinute15,iMinute30,iHour,iDay,iWeek,iMonth,iYear,iDays Dim iBill,iHours,iSeconds,iMinutes,iQuarter,iHalfYear,iSolarTerms,iMinute3,iMinute10,iBills Dim i \'以下动态数组里的每列数据从左到右依次是:序号、时间、0、H、L、C、成交量、成交额、持仓量等八种数据 Dim arrMinute1(),arrMinute5(),arrMinute15(),arrMinute30(),arrHour(),arrDay(),arrWeek(),arrMonth(),arrYear(),arrDays() Dim arrBill(),arrHours(),arrSeconds(),arrMinutes(),arrQuarter(),arrHalfYear(),arrSolarTerms(),arrMinute3(),arrMinute10(),arrBills() MarketData.HistoryDataMode = 1 \'不同周期品种为独立的缓冲区 Set Grid = Technic.GetGridByName("Main") \'从图表上得到框架名称为"Technic"、窗格名称为"Main"的窗格对象——K线分析图 iStockName = Grid.StockName \'与窗格关联的证券名称 iStockLabel = Grid.StockLabel \'与窗格关联的证券代码 iMarket = Grid.Market \'与窗格关联的市场代码 \'以下得到图表关联品种的各周期类型数据 \'读取多小时线数据 Set DataHours = MarketData.GetHistoryData(iStockLabel,iMarket,11) \'设置引用对象 iHours = DataHours.Count - 1 \'因为下标从0开始所以引用对象数据量减1 ReDim Preserve arrHours(iHours,8) \'重置动态二维数组维度 For i = 0 To iHours \'给动态数组写入以下值 arrHours(iHours,0) = i+1 \'序号 arrHours(iHours,1) = DataHours.Date(i) \'时间 arrHours(iHours,2) = DataHours.Open(i) \'开盘 arrHours(iHours,3) = DataHours.High(i) \'最高 arrHours(iHours,4) = DataHours.Low(i) \'最低 arrHours(iHours,5) = DataHours.Close(i) \'收盘 arrHours(iHours,6) = DataHours.Volume(i) \'成交量 arrHours(iHours,7) = DataHours.Amount(i) \'成交额 arrHours(iHours,8) = DataHours.Openint(i) \'持仓量 Next MsgBox "参数Cyctype为11即多小时"& arrHours(iHours - 3,5) \'显示数据用于检查
\'读取节气线数据 Set DataSolarTerms = MarketData.GetHistoryData(iStockLabel,iMarket,16) \'设置引用对象 iSolarTerms = DataSolarTerms.Count - 1 \'因为下标从0开始所以引用对象数据量减1 ReDim Preserve arrSolarTerms(iSolarTerms,8) \'重置动态二维数组维度 For i = 0 To iSolarTerms \'给动态数组写入以下值 arrSolarTerms(iSolarTerms,0) = i+1 \'序号 arrSolarTerms(iSolarTerms,1) = DataSolarTerms.Date(i) \'时间 arrSolarTerms(iSolarTerms,2) = DataSolarTerms.Open(i) \'开盘 arrSolarTerms(iSolarTerms,3) = DataSolarTerms.High(i) \'最高 arrSolarTerms(iSolarTerms,4) = DataSolarTerms.Low(i) \'最低 arrSolarTerms(iSolarTerms,5) = DataSolarTerms.Close(i) \'收盘 arrSolarTerms(iSolarTerms,6) = DataSolarTerms.Volume(i) \'成交量 arrSolarTerms(iSolarTerms,7) = DataSolarTerms.Amount(i) \'成交额 arrSolarTerms(iSolarTerms,8) = DataSolarTerms.Openint(i) \'持仓量 Next MsgBox "参数Cyctype为16即节气线"& arrSolarTerms(iSolarTerms - 3,5) \'显示数据用于检查 MarketData.DestroyHistoryData \'数据处理完毕后,清理缓冲区 End Sub
|