PublicStructure stockDayRecordStructure stockDayRecord '保存一门股票的日数据信息 Dim stockdate AsDate Dim openor AsSingle Dim hightor AsSingle Dim lowor AsSingle Dim endor AsSingle Dim changor AsInteger Dim id AsInteger Dim VbP AsInteger End Structure
PublicFunction getRealPrice()Function getRealPrice(ByVal formerPrice AsLong) AsLong'注意移植此函数是要把公共变量NumBase预NumUnit移动移植 Dim i AsInteger For i =1To4'该函数可返回32元人民币以下对于的准确价格 If formerPrice < NumBase(i) Then getRealPrice = (Val((formerPrice - NumBase(i -1)) &"000") / NumUnit(i -1)) + NumUnitPrice(i -1) ExitFor' & 000 相当于 * 1000,以‰为单位 EndIf Next i End Function
读取模块
Function LoadDayData()Function LoadDayData(ByVal filename AsString, ByRef dr() As stockDayRecord, ByVal t AsShort) AsLong '股票读取接口,第一个参数为装载股票数据的结构体 Dim fs As FileStream = File.OpenRead(filename) Dim br AsNew BinaryReader(fs) Dim n AsInteger Dim i AsInteger, j AsInteger SelectCase t Case1'中天 Case2'通达信 暂时不用 n = (fs.Length -4) /32 LoadDayData = n ReDim dr(n) br.ReadInt32() '文件头到底是什么,另外是头天顺序颠放到了某个地方 For i =1To n Dim d AsInteger= br.ReadInt32() dr(i).stockdate =DateSerial(d /10000, (d Mod10000) /100, d Mod100) dr(i).openor = getRealPrice(br.ReadInt32) /1000 dr(i).hightor = getRealPrice(br.ReadInt32) /1000 dr(i).lowor = getRealPrice(br.ReadInt32) /1000 dr(i).endor = getRealPrice(br.ReadInt32) /1000 br.ReadInt32() dr(i).changor = br.ReadInt32 dr(i).id = i If (dr(i).hightor <> dr(i).lowor) Then dr(i).VbP = dr(i).changor / ((dr(i).hightor - dr(i).lowor) *1000) br.ReadInt32() Next EndSelect fs.Dispose() LoadDayData = j End Function