Python数据分析与程序设计(二):Numpy数据分析实践

前言:

相应数据集我会在后续上传 以供大家参考学习 大家可以在我的主页找一找

在“Python数据分析与程序设计”系列的第一章中,我们共同探讨了数据分析的基本概念并深入了解了NumPy库;在本篇博客中,我们不仅会回顾NumPy的相关内容,还会一起编写代码,处理真实的数据集,并从中提取有价值的信息。希望通过这些实践,能够更好地理解数据分析的力量,并将这些技术应用到你自己的项目中。

以下是本篇博客处理的主要内容:数据分析实践一一股票数据分析

  1. 股票数据读取;
  2. 加权平均收盘价格统计;
  3. 最大值和最小值统计;
  4. 简单统计分析;
  5. 股票收益率分析

1.股票数据读取

np.loadtxt() 是 NumPy 库中的一个函数,它用于从文本文件中加载数据,并将其转换为 NumPy 数组

c,v = np.loadtxt('C:\\Users\\lenovo\\Downloads\\stock.csv',\
                  delimiter=',',\
                  usecols=(3,6),\
                  skiprows=1,\
                  unpack=True,\
                  comments='#')
# c记录第4列 v记录第7列 从0开始索引
# 其中第4列为收盘价 第7列为成交量

# C:\\Users\\lenovo\\Downloads\\stock.csv: 这是文件的路径,指定了要加载的CSV文件的位置。在这个示例中,文件的路径是C:\\Users\\lenovo\\Downloads\\stock.csv。
# delimiter=',: 指定了CSV文件中的分隔符。在这个示例中,分隔符是逗号,
# usecols=(3,6): 指定了要加载的列。在这个示例中,我们只加载了第4列和第7列(Python中索引是从0开始的)。
# skiprows=1: 指定了要跳过的行数。在这个示例中,我们跳过了第一行,也就是跳过了CSV文件中的标题行。
# unpack=True: 指定了是否将加载的数据进行解包。如果设置为True,则会将每列数据分配给不同的变量,如果设置为False,则加载的数据将存储在一个数组中。
# comments='#': 指定了注释符号。在这个示例中,注释符号是#,如果数据文件中包含以#开头的行,则这些行将被忽略。
# 总结:loadtxt函数可以加载CSV文件中的数据,并根据指定的参数对数据进行处理,比如选择加载的列、跳过的行、分隔符等。这些参数可以根据实际情况进行调整,以便正确加载和处理数据。

2.加权平均收盘价格统计

(1)收盘价格算术平均值

使用np.mean(ndarray_name)来计算算术平均值

# 创建一个二维数组
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 计算整个数组的平均值
mean_value = np.mean(data)
print("Mean value of the entire array:", mean_value)

# 计算每一列的平均值
mean_column = np.mean(data, axis=0)
print("Mean value of each column:\n", mean_column)

# 计算每一行的平均值
mean_row = np.mean(data, axis=1)
print("Mean value of each row:\n", mean_row)

运行结果:
Mean value of the entire array: 5.0
Mean value of each column:
 [4. 5. 6.]
Mean value of each row:
 [2. 5. 8.]
## np.mean() 算术平均值
# np.mean(c) == np.average(c)
# 注意 这里的c是第一步读取到的收盘价
def mean_test():
    print(c) # >[87.381 84.841 84.318 85.671 82.34  82.091 83.463 81.267 82.965 85.218 ...]
    print(type(c)) # > numpy.ndarray
    mean = np.mean(c) # 调用mean计算收盘价格算术平均值
    print(mean)

    print(v)
    print(type(v))
    mean_1 = np.mean(v)
    print(mean_1)

(2)成交量加权平均价格VWAP

使用np.average(array_name,weights = array_name1) 来计算加权平均价格

第一个参数表示要计算平均值的数组 第二个参数表示权重数组

def vwap_test():
    # 生成需要计算平均值的数组
    c = np.arange(1,4)
    print('c ',end='')
    print(c)

    # 生成作为权重的数组
    d = np.arange(3,0,-1)
    print('d ',end='')
    print(d)

    print('weights=d',end=' ')
    print(np.average(c,weights=d)) # 加权平均价格 
    print('weights默认',end=' ')
    print(np.average(c)) # 默认权重相同

输出结果:
c [1 2 3]
d [3 2 1]
weights=d 1.6666666666666667
weights默认 2.0
def vwap_test2():
    # 以成交量为权重的收盘价
    print('该股票的vwap',end=' ')
    print(np.average(c,weights=v))

(3)时间加权平均价格 TWAP

TWAP属于另一种平均价格的指标。近期的价格给以较高的权重。

数据是按照时间 递增 的顺序排列的,即,最新的数据在最后一行;

由此分析,也可以使用np.average()函数,并以时间为权重

def twap_test():
    t = np.arange(len(c))
    twap = np.average(c,weights=t)
    print(twap)

3.最大值和最小值统计

借助np.max() 和 np.min()函数 可以获取一个ndarray数组的最大值和最小值

def maxmin_test():
    # 获取最高价列 和 最低价列
    high,low = np.loadtxt('C:\\Users\\lenovo\\Downloads\\stock.csv',delimiter=',',usecols=(4,5),skiprows=1,unpack=True,comments='#') 

    highest = np.max(high) # np.max() np.min()
    lowest = np.min(low)

    print(high)
    print(highest)
    print(lowest)

4.计算收盘价中位数和方差

借助np.median() 和 np.variance()函数 可以获取ndarray数组的中位数和方差

def median_test():
    median = np.median(c)
    print('median',end=' ')
    print(median)

def variance_test():
    variance = np.var(c)
    print('variance',end=' ')
    print(variance)

5.股票收益率分析

(1) 简单收益率

简单收益率指的是相邻两个价格的变化率。

即:第2天的价格减去第1天的价格,再除以第1天的价格;

(2) 简单收益率的标准差

标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。

def Simple_Rate_test():
    returns = np.diff(c)/c[:-1] 
    # c[:-1] 从第一个 到 最后一个的前一个
    # np.diff(c) np.diff可以计算数组中每个元素与其前一个元素之间的差值。
    print('returns:',end=' ')
    print(returns)
    # 用std函数计算标准差
    std_deviation = np.std(returns)
    print('std_deviation:',end=' ')
    print(std_deviation)

(3) 对数收益率

对数收益率是两个时期资产价值 取对数后的 差额,即资产多个时期的对数收益率等于其各时期对数收益率之和。

def logreturns_test():
    logreturns = np.diff(np.log(c))
    print('logreturns:',end=' ')
    print(logreturns)

# 补充:为什么计算"对数收益率"?
# 因为常用的时间序列分析的模型,都要求随机变量是二阶矩平稳,
# 很明显价格序列通常是I(1)过程,或者是广义维纳过程。
# 这一类过程二阶矩不平稳,很多模型不适用,所以要进行对数转换,变成平稳的序列。

# 对数收益率的时序可加性能够使用另外两个利器:中心极限定理和大数定律。
# 假设初始资金X_0(假设等于1),In(X_T)=In(X_T/X_0)就是整个T期的对数收益率。
# 对数收益率的最大好处是可加性,把单期的对数收益率相加就得到整体的对数收益率。

(4) 波动率

波动率在投资学中,用来描述价格的变化;常用的有年波动率、月波动率;波动率的计算依赖对数收益率;

def voatility_test():
    logreturns = np.diff(np.log(c))
    # 年波动率
    annual_volatility = np.std(logreturns)/np.mean(logreturns)
    annual_volatility = annual_volatility/np.sqrt(1./252.) # 再除以交易日倒数的平方根

    # 月波动率
    monthly_volatility = annual_volatility*np.sqrt(1./12.)

    print('annual_volatility',end=' ')
    print(annual_volatility)
    print('monthly_volatility',end=' ')
    print(monthly_volatility)

总结

大体的思路就是:从数据集中获取所需数值列->根据数学理论调用对应np方法->输出分析结果

拓展 :if __name__ == '__main__': 

同时,本篇中大多步骤都使用函数封装了起来,只需要在if __name__ == '__main__': 调用对应函数即可,类似于C语言中的main函数

if __name__ == '__main__':
    print('——————————numpy实践——————————')
    # mean_test()
    # vwap_test()
    # vwap_test2()
    # twap_test()
    # maxmin_test()
    # median_test()
    # variance_test()
    # Simple_Rate_test()
    # logreturns_test()
    voatility_test()

当然,if __name__ == '__main__': 作为一个常见的代码片段,它的作用远不于此;

它用于判断当前运行的是直接执行的脚本还是被导入到其他脚本中作为模块使用。

解释这个概念需要理解 Python 程序的运行机制。当你直接运行一个 Python 脚本时,Python 解释器会将内置的特殊变量 __name__ 设置为 '__main__'。但是,如果这个脚本被另一个脚本通过 import 语句导入,__name__ 将被设置为该脚本的模块名,而不是 '__main__'

这个机制允许我们编写既能作为脚本直接执行,又能作为模块被其他脚本导入使用的代码。通过检查 __name__ 变量的值,我们可以决定哪些代码应该只在脚本直接运行时执行,而不影响其他导入该脚本的模块。

当然这种模仿main函数的方法不是最佳的,目前本人觉得更便捷的方法是在vscode中安装Jupyter插件,有机会我也会为Jupyter的基本使用做一个总结

以上即是全部内容,下篇系列文章我会介绍Pandas库。如果对你有帮助,欢迎点赞收藏关注!

适用于“大智慧新一代 Level-2 V3.03.08.0801 ”的版本。 附件:数据表结构   ◎代码数据(cndm)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char ◎行情数据(cnfqhq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date kp 开盘 num zg 最高 num zd 最低 num sp 收盘 num sl 成交数量 num je 成交金额 num yz 复权因子 num ◎除权数据(cncq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date fh 分红 num sgbl 送股比例 num pgbl 配股比例 num pgjg 配股价格 num ◎股本数据(cngb)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date zgb 总股本 num ltg 流通A股 num bg B股 num hg H股 num ◎财务指标(cncw)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date eps 每股收益(全面摊薄) num eps1 每股收益(加权平均) num naps 每股净资产 num roe 净资产收益率(全面摊薄) num roe1 净资产收益率(加权平均) num ◎财务报表(cncwbb)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date bsdqtzje 短期投资净额 num bsyszkje 应收帐款净额 num bschje 存货净额 num bsldzc 流动资产 num bscqtzje 长期投资净额 num bsgdzc 固定资产 num bswxzc 无形及其他资产 num bszzc 总资产 num bsdqjk 短期借款 num bsyfzk 应付帐款 num bsldfz 流动负债 num bscqfz 长期负债 num bsfz 负债合计 num bsgb 股本 num bsssgdqy 少数股东权益 num bsgdqy 股东权益 num bszbgj 资本公积 num bsyygj 盈余公积 num iszysr 主营业务收入净额 num iszycb 主营业务成本 num iszylr 主营业务利润 num isqtlr 其它业务利润 num isyyfy 营业费用 num isglfy 管理费用 num iscwfy 财务费用 num istzsy 投资收益 num islrze 利润总额 num issds 所得税 num isjlr 净利润 num iskchjlr 扣除经常性损益后的净利润 num iswfplr 未分配利润 num cfjyhdxjlr 经营活动现金流入 num cfjyhdxjlc 经营活动现金流出 num cfjyhdxjje 经营活动现金净额 num cftzxjlr 投资现金流入 num cftzxjlc 投资现金流出 num cftzxjje 投资现金净额 num cfczxjlr 筹措现金流入 num cfczxjlc 筹措现金流出 num cfczxjje 筹措现金净额 num cfxjjze 现金及现金等价物净增额 num cfxsspxj 销售商品收到的现金 num mgsy 每股收益 num mgjzc 每股净资产 num tzmgjzc 调整后每股净资产 num mgzbgjj 每股资本公积金 num mgwfplr 每股未分配利润 num mgjyxjllje 每股经营活动产生的现金流量净额 num mgxjzjje 每股现金及现金等价物增加净额 num mll 毛利率 num zyywlrl 主营业务利润率 num jll 净利率 num zzcbcl 总资产报酬率 num jzcsyl 净资产收益率 num xsxjzb 销售商品收到的现金占主营收入比例 num yszczzl 应收帐款周转率 num chzzl 存货周转率 num gdzczzl 固定资产周转率 num zyywzzl 主营业务增长率 num jlrzzl 净利润增长率 num zzczzl 总资产增长率 num jzczzl 净资产增长率 num ldbl 流动比率 num sdbl 速动比率 num zcfzbl 资产负债比率 num fzbl 负债比率 num gdqybl 股东权益比率 num gdzcbl 固定资产比率 num kchmgjlr 扣除经常性损益后每股净利润 num ◎交易日期(cnrq)结构 字段名 含义 类型 备注 rq 交易日期 date ◎板块数据(cnbk)结构 字段名 含义 类型 备注 lb 类别 char bk 板块 char dm 代码 char zz 创建者 char ◎存款利率(cnll)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char rq 变动日期 date ll 利率 num ◎港股代码(hkdm)结构 字段名 含义 类型 备注 dm 代码 char jc 简称 char ◎港股行情(hkhq)结构 字段名 含义 类型 备注 dm 代码 char rq 日期 date kp 开盘 num zg 最高 num zd 最低 num sp 收盘 num sl 成交数量 num je 成交金额 num FxjData2FinData程序有上千行 调用方法: /************************************************************************************* 使用说明: 1)调用格式:FxjData2FinData(Market,DataType,FinDataLib) 其中, Market:市场代码,SH为沪市,SZ为深市,BK为板块指数,如果有其它市场数据,可有其它市场代码如HK等. DataType:数据类型,dm,cq,cw0,hq0,hq,等等,含义见下面注释 FinDataLib:目标逻辑库,如果给定的目标逻辑库不存在,则将设为Work 2)如果数据文件已经被分析家等软件占用导致无法打开时,将自动复制一份该文件,并从该备份文件中读取数据. 3)程序将自动补充数据,即如果目标表不存在,则建立并添加数据,如果目标表已存在,则判断表中每只证券的最新 数据,然后只添加数据表中所缺少的数据. ***************************************************************************************/ /*请修改以下的参数*/ %let FxjPath=C:\fxj\;/*分析家安装目录*/ /*HqmbFilesToRead=分笔成交读取文件数.若为1则只读取report.dat, 若为值n,则除了读取Report.dat外还将读取(n-1)个最新.PRP历史分笔成交数据文件*/ %let HqmbFilesToRead=2; /*请确认要转换的数据,在下面语句的%后加*变为注释取消转换*/ /*沪市*/ %FxjData2FinData(sh,dm,FinData); /*dm--证券代码,原数据集将保存为xxDM_bak*/ %FxjData2FinData(sh,cq,FinData); /*cq--除权数据*/ %FxjData2FinData(sh,cw0,FinData); /*cw0--最新财务数据*/ %FxjData2FinData(sh,hq0,FinData); /*hq0--最新行情*/ %FxjData2FinData(sh,hq,FinData); /*hq--每日行情*/ %FxjData2FinData(sh,hqmb,FinData); /*hqmb--每笔成交*/ %FxjData2FinData(sh,hq5,FinData);/*hq5--5分钟行情*/ %FxjData2FinData(sh,fp,FinData);/*fp--分红送配(专业财务数据)*/ %FxjData2FinData(sh,gb,FinData);/*gb--股本结构(专业财务数据)*/ %FxjData2FinData(sh,cw,FinData);/*cw--财务数据(专业财务数据)*/ %FxjData2FinData(sh,gd,FinData);/*gd--十大股东(专业财务数据)*/ %FxjData2FinData(sh,jjjz,FinData);/*jjjz--基金净值(专业财务数据)*/ %FxjData2FinData(sh,jjzh,FinData);/*jjzh--基金投资组合(专业财务数据)*/ /*深市*/ %FxjData2FinData(sz,dm,FinData); %FxjData2FinData(sz,cq,FinData); %FxjData2FinData(sz,cw0,FinData); %FxjData2FinData(sz,hq0,FinData); %FxjData2FinData(sz,hq,FinData); %FxjData2FinData(sz,hqmb,FinData); %FxjData2FinData(sz,hq5,FinData); %FxjData2FinData(sz,fp,FinData); %FxjData2FinData(sz,gb,FinData); %FxjData2FinData(sz,cw,FinData); %FxjData2FinData(sz,gd,FinData); %FxjData2FinData(sz,jjjz,FinData); %FxjData2FinData(sz,jjzh,FinData); /*板块及板块指数*/ %FxjData2FinData(bk,zh,FinData);/*板块数据:Market=bk,DataType=zh,...*/ %FxjData2FinData(bk,dm,FinData); %FxjData2FinData(bk,hq0,FinData); %FxjData2FinData(bk,hq,FinData); %FxjData2FinData(bk,hqmb,FinData); %FxjData2FinData(bk,hq5,FinData); /*香港市场*/ %*FxjData2FinData(hk,dm,FinData); %*FxjData2FinData(hk,hq0,FinData); %*FxjData2FinData(hk,hq,FinData); %*FxjData2FinData(hk,hqmb,FinData); %*FxjData2FinData(hk,hq5,FinData); 大智慧新一代 2.08.07.0907 数据格式 作者:root 日期:2007-12-12 字体大小: 小 中 大 备忘 日线数据文件day.dat case DataTypes.hq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,";    数据格式几乎分析家相同 起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 文件标志 int 04 - 07 00 06 00 00 未知 int 08 - 0B 00 00 00 00 保留 int 0C - 0F 97 04 00 00 证券总数 int 10 - 13 00 18 00 00 未知 int需添加之起始块号 14 - 17 DB 17 00 00 未知 int当前最后空块号 18 - 21 31 41 30 30 30...FF 证券代码 byte[10] 22 - 25 B0 09 00 00 日线记录数 int 26 - 57 00 00 25 04...FF FF 记录块号 char[25] ...... 记录块开始于0x41000 41000 - 41003 80 47 B2 2B 日期 int 41004 - 41007 B9 1E 25 41 开盘价 float 41008 - 4100B CD CC 4C 41 最高价 float 4100C - 4100F EC 51 18 41 最低价 float 41010 - 41013 9A 99 41 41 收盘价 float 41014 - 41017 80 06 B2 47 成交量 float 41018 - 4101B 40 1C BC 4C 成交金额 float 4101C - 4101D 00 00 上涨家数 char 4101E - 4101F 00 00 下跌家数 char 注:    1)起止地址、数据内容为十六进制,数据类型为 Delphi 下之定义。    2)从18h开始至40017h每64byte为一条股票数据分配记录,含义如上表18h - 57h所示;    3)从41000h开始每8KB为一股票数据存储块,每个股票数据存储块共存储256条日线记录,     每一条记录的长度为32 byte(含义如上表;上涨家数及下跌家数只对指数有效);    4)从41000h开始的8KB为第0号数据存储块,以后类推;    5)系统对每个股票日线数据存储以存储块为单位进行分配。    6)具体应用实例分析家数据管理程序。    7) 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);     即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数。 有关块号计算方法,请参见分笔成交数据格式 日期字段的意义为:实际日期 = StrToDate(^1970-01-01^)+(日期字段 div 86400);  即“日期字段”除以86400所得数为实际日期距1970年01月01日的天数 1分钟数据文件min1.dat case DataTypes.hq1: fileName = "MIN1.DAT"; startAddress = 0x41000; blockSize = 12288;//8192 recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; 5分钟数据文件min.dat case DataTypes.hq5: fileName = "MIN.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;" + "je,成交金额,single,4,7,24,"; 最新行情STKINFO60.dat case DataTypes.hq0: fileName = "STKINFO60.DAT"; startAddress = 0x68A8A6; blockSize = 0; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "rq,更新时间,datetime,4,5,60,;" + "zs,昨收,single,4,7,68,;" + "kp,今开,single,4,8,72,;" + "zg,最高,single,4,9,76,;" + "zd,最低,single,4,10,80,;" + "sp,最新,single,4,11,84,;" + "sl,总手数,single,4,12,88,;" + "je,金额,single,4,13,92,;" + "xss,现手数,single,4,14,96,;" + "ztj,涨停价,single,4,27,184,;" + "dtj,跌停价,single,4,28,188,;" + "np,内盘,single,4,27,192,;" + "wp,外盘,single,4,28,196,;" + "mrjg1,买一价,single,4,15,100,;" + "mrsl1,买一量,single,4,18,120,;" + "mrjg2,买价,single,4,16,104,;" + "mrsl2,买量,single,4,19,124,;" + "mrjg3,买三价,single,4,17,108,;" + "mrsl3,买三量,single,4,20,128,;" + "mrjg4,买四价,single,4,32,112,;" + "mrsl4,买四量,single,4,34,132,;" + "mrjg5,买五价,single,4,33,116,;" + "mrsl5,买五量,single,4,35,136,;" + "mcjg1,卖一价,single,4,21,140,;" + "mcsl1,卖一量,single,4,24,160,;" + "mcjg2,卖价,single,4,22,144,;" + "mcsl2,卖量,single,4,25,164,;" + "mcjg3,卖三价,single,4,23,148,;" + "mcsl3,卖三量,single,4,26,168,;" + "mcjg4,卖四价,single,4,36,152,;" + "mcsl4,卖四量,single,4,38,172,;" + "mcjg5,卖五价,single,4,37,156,;" + "mcsl5,卖五量,single,4,39,176,"; //"jd,精度,int,4,3,52,;" + //"scbz,删除标志,int,4,4,56,"; //"unknown,(未知),int,4,31,164,;" + //",(未知),,48,40,200,;" 分笔成交数据文件report.dat(结构同day.dat,但其中一些数据不是直接保存) case DataTypes.hqmb: fileName = "REPORT.DAT"; startAddress = 0x41000; blockSize = 12272; recordSize = 52; codeIsLong = false; isIndexDataStruct = false;//不完全等同于day.dat结构,因此单独处理 fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,0,0,;" + "zjcj,最近成交价,single,4,1,4,;" + "zss,总手数,single,4,2,8,calc;" + "je,金额,single,4,3,12,;" + "xss,现手数,single,4,2,8,;" + "mm,内外盘,string,2,16,21,;" + "mr1jg,买一价,single,1,10,42,;" + "mr1sl,买一量,single,2,4,22,;" + "mr2jg,买价,single,1,11,43,;" + "mr2sl,买量,single,2,5,24,;" + "mr3jg,买三价,single,1,12,44,;" + "mr3sl,买三量,single,2,6,26,;" + "mr4jg,买四价,single,1,12,45,;" + "mr4sl,买四量,single,2,6,28,;" + "mr5jg,买五价,single,1,12,46,;" + "mr5sl,买五量,single,2,6,30,;" + "mc1jg,卖一价,single,1,13,47,;" + "mc1sl,卖一量,single,2,7,32,;" + "mc2jg,卖价,single,1,14,48,;" + "mc2sl,卖量,single,2,8,34,;" + "mc3jg,卖三价,single,1,15,49,;" + "mc3sl,卖三量,single,2,9,36,;"+ "mc4jg,卖四价,single,1,14,50,;" + "mc4sl,卖四量,single,2,8,38,;" + "mc5jg,卖五价,single,1,14,51,;" + "mc5sl,卖五量,single,2,8,40,;" + "bs,总笔数,int,2,0,16," ; //以上数据类型不是存储类型,程序中不直接用实际数据类型:买/卖X量为short,买/卖X价为byte //现手数通过当总手数计算而得,应该放在总手数后面 大智慧新一代Level-2 分笔成交数据格式 起止地址 数据内容 数据含义 数据类型 00 - 03 F4 9B 13 FC 日线文件标志 int 04 - 07 10 02 00 00 未知 int 08 - 0B 00 43 DF 46 1970.01.01 00:00:00始的秒数 int 0C - 0F 5D 05 00 00 证券总数 int 10 - 13 ED 20 00 00 未知 int 14 - 17 ED 20 00 00 未知 int 18 - 21 30 30 30 30 30 31 00 00 证券代码 byte[10] 22 - 25 9C 12 00 00 日分笔记录数 int 26 - 57 00 00 BA 03...FF FF 记录块号 char[25] 00041000 记录页起始点, 每记录长: 0x34 = 52 每页记录数: 0xEC = 236 每页长: 每记录长0x34 * 每页记录数0xEC = 0x2FF0 = 12272 地 址 数据内容 数据含义 数据类型 41000 - 41003 35 FA DF 46 1970.01.01 00:00:00 始的秒数 int 41004 - 41007 00 00 18 41 最新价 float 41008 - 4100B 00 80 B4 43 累计成交量 float 4100C - 4100F 80 46 A7 48 累计成交金额 float 41010 - 41011 51 9C 累计成交笔数 char 41012 - 41013 00 00 未知 char 41014 10 累计成交笔数的溢出标志(00|10) byte 41015 80 买入,卖出标识(80|E0买入,C0|A0卖出) byte 41016 - 41017 23 01 委买量1 char 41018 - 41019 8E 5B 委买量2 char 4101A - 4101B 80 27 委买量3 char 4101C - 4101D 8E 5B 委买量4 char 4101E - 4101F B8 40 委买量5 char 41020 - 41021 23 01 委卖量1 char 41022 - 41023 8E 5B 委卖量2 char 41024 - 41025 80 27 委卖量3 char 41026 - 41027 8E 5B 委卖量4 char 41028 - 41029 B8 40 委卖量5 char 4102A 16 委买价1 成交价的差 byte 4102B 9A 委买价2 成交价的差 byte 4102C 80 委买价3 成交价的差 byte 4102D 40 委卖价4 成交价的差 byte 4102E 30 委卖价5 成交价的差 byte 4102F 57 委卖价1 成交价的差 byte 41030 68 委卖价2 成交价的差 byte 41031 69 委卖价3 成交价的差 byte 41032 7A 委卖价4 成交价的差 byte 41033 81 委卖价5 成交价的差 byte 注意: 1、如有疑问请 QQ 8588711 联系,愿您共同挖掘股票成交数据。 2、数据类型为JAVA数据类型定义,实际读数据时应该将数据十六进制取反,如:41000 - 41003的数据为 35 FA DF 46,实际应该读成:   0x46DFFA35 = 1189083701, 这个1189083701值就是距1970.01.01 00:00:00 始的实际秒数。其他int,float,char都是这样取反的。 3、委买卖成交价的差,是小数点后的整数差,如果买卖标识为80或C0,成交价小数点后是两位(股票),如果买卖标识为E0或A0,   成交价小数点后是三位(权证等) 4、累计成交笔数如果溢出,则41014位上的值不为00,而是10或者20,30等,成交笔数计算方法应为:41014位上的值反转,   10转为01,20转为02。。。 再41010 - 41011位上的值合并成一个16进制串。 5、记录块号计算方法:char[0] = 0x00 第一个记录块起始地址为:41000h + 0x0000 * 0x2FF0 = 41000h,char[1] = 0x03BA   则第个记录块起始地址为:41000h + 0x03BA * 0x2FF0 = 0x00077F78 标签: 财经 近日发现Level-2的逐笔成交数据是缓存在dzh2\data\sh\TEMP目录下,文件名以证券代码为名,后辍是.L2D,如果重启大智慧, L2D文件会全部被删除,而且临时文件只有在浏览过该证券的逐笔成交后才会生成,不过花的时间也不算太多。也许以后会要研究 逐笔成交数据了,这样的数据更有意义,读数据不是问题,最主要的是分析方法,当得到盘口异动数据后,还需要结合信息面来操作, 这样的成功几率非常大,我已经初尝胜果。后面,还要通过数据来分析大盘走势,还有通过行业数据异动,发现基金等大资金的中短期 目标,这点也非常之重要。这个十一假期,过得不会很闲,还有很多东西要做、、、 现在也不想接受QQ加好友请求,真正做数据盘口 分析的,发现数据格式,马上就已经投入战斗了,而且一看就会明了。在这个市场,每个人都有自己的方式生存,没有拿手绝活,那 是不要随便来玩的。逐笔成交数据格式,大概也会在不久后弄个明白。 财务数据(简单)STKINFO60.dat case DataTypes.cw0: fileName = "STKINFO60.DAT"; startAddress = 0x4c2a; blockSize = 2227; recordSize = 273;//196 codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,报告期,date,4,0,4,;" + "gxrq,更新日期,date,4,0,0,;" + "ssrq,上市日期,date,4,0,8,;" + "col1,每股收益,single,4,0,12,;" + "col2,每股净资产,single,4,0,16,;" + "col3,净资产收益率,single,4,0,20,;" + "col4,每股经营现金,single,4,0,24,;" + "col5,每股公积金,single,4,0,28,;" + "col6,每股未分配,single,4,0,32,;" + "col7,股东权益比,single,4,0,36,;" + "col8,净利润同比,single,4,0,40,;" + "col9,主营收入同比,single,4,0,44,;" + "col10,销售毛利率,single,4,0,48,;" + "col11,调整每股净资产,single,4,0,52,;" + "col12,总资产,single,4,0,56,;" + "col13,流动资产,single,4,0,60,;" + "col14,固定资产,single,4,0,64,;" + "col15,无形资产,single,4,0,68,;" + "col16,流动负债,single,4,0,72,;" + "col17,长期负债,single,4,0,76,;" + "col18,总负债,single,4,0,80,;" + "col19,股东权益,single,4,0,84,;" + "col20,资本公积金,single,4,0,88,;" + "col21,经营现金流量,single,4,0,92,;" + "col22,投资现金流量,single,4,0,96,;" + "col23,筹资现金流量,single,4,0,100,;" + "col24,现金增加额,single,4,0,104,;" + "col25,主营收入,single,4,0,108,;" + "col26,主营利润,single,4,0,112,;" + "col27,营业利润,single,4,0,116,;" + "col28,投资收益,single,4,0,120,;" + "col29,营业外收支,single,4,0,124,;" + "col30,利润总额,single,4,0,128,;" + "col31,净利润,single,4,0,132,;" + "col32,未分配利润,single,4,0,136,;" + "col33,总股本,single,4,0,140,;" + "col34,无限售股合计,single,4,0,144,;" + "col35,A股,single,4,0,148,;" + "col36,B股,single,4,0,152,;" + "col37,境外上市股,single,4,0,156,;" + "col38,其他流通股,single,4,0,160,;" + "col39,限售股合计,single,4,0,164,;" + "col40,国家持股,single,4,0,168,;" + "col41,国有法人股,single,4,0,172,;" + "col42,境内法人股,single,4,0,176,;" + "col43,境内自然人股,single,4,0,180,;" + "col44,其他发起人股,single,4,0,184,;" + "col45,募集法人股,single,4,0,188,;" + "col46,境外法人股,single,4,0,192,;" + "col47,境外自然人股,single,4,0,196,;" + "col48,优先股或其他,single,4,0,200,"; 分红送配STKINFO60.dat case DataTypes.cq: fileName = "STKINFO60.DAT"; startAddress = 0x44aa; blockSize = 2227; recordSize = 20; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,0,0,;" + "sgbl,送股比例,single,4,1,4,;" + "pgbl,配股比例,single,4,2,8,;" + "pgjg,配股价格,single,4,3,12,;" + "fh,分红,single,4,4,16,"; 代码表STKINFO60.dat case DataTypes.dm: fileName = "STKINFO60.DAT"; startAddress = 0x68A8A6; blockSize = 0; recordSize = 273;//fxj248 codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,"; struct fileStruct { public string fileName;//文件名 public int startAddress,blockSize,recordSize;//起始地址,每块长度,记录长度 public bool codeIsLong, isIndexDataStruct; //codeIsLong索引中的代码包含有市场代码SH、SZ等;isIndexDataStruct象Day.Dat那样的结构即由索引+数据组成; public string[,] fields;//字段 public fileStruct(DataTypes fileType) { fileName = ""; startAddress = 0; blockSize = 0; recordSize = 0; codeIsLong = false; isIndexDataStruct = true; string fieldString = ""; //字段名,字段标签,类型,长度字段,存储顺序,偏移量 switch (fileType) { #region 代码表STKINFO60.DAT//代码的拼音是乱码,有可能拼音简写未存盘,而是由大智慧软件另行计算。 case DataTypes.dm: fileName = "STKINFO60.DAT"; //startAddress = 0x845898; startAddress = 0x6d0226; //startAddress = 0x68A8A6; blockSize = 0; //recordSize = 248;//原分析家 recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "py,拼音,string,10,2,42,"; break; #endregion #region 分红送配STKINFO60.DAT//除权数据//OK case DataTypes.cq: fileName = "STKINFO60.DAT"; startAddress = 0x44aa; blockSize = 2227; recordSize = 20; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,0,0,;" + "sgbl,送股比例,single,4,1,4,;" + "pgbl,配股比例,single,4,2,8,;" + "pgjg,配股价格,single,4,3,12,;" + "fh,分红,single,4,4,16,"; break; #endregion #region 财务数据(简单)STKINFO60.DAT//OK case DataTypes.cw0: fileName = "STKINFO60.DAT"; startAddress = 0x4c2a; blockSize = 2227; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,报告期,date,4,0,4,;" + "gxrq,更新日期,date,4,0,0,;" + "ssrq,上市日期,date,4,0,8,;" + "col1,每股收益,single,4,0,12,;" + "col2,每股净资产,single,4,0,16,;" + "col3,净资产收益率,single,4,0,20,;" + "col4,每股经营现金,single,4,0,24,;" + "col5,每股公积金,single,4,0,28,;" + "col6,每股未分配,single,4,0,32,;" + "col7,股东权益比,single,4,0,36,;" + "col8,净利润同比,single,4,0,40,;" + "col9,主营收入同比,single,4,0,44,;" + "col10,销售毛利率,single,4,0,48,;" + "col11,调整每股净资产,single,4,0,52,;" + "col12,总资产,single,4,0,56,;" + "col13,流动资产,single,4,0,60,;" + "col14,固定资产,single,4,0,64,;" + "col15,无形资产,single,4,0,68,;" + "col16,流动负债,single,4,0,72,;" + "col17,长期负债,single,4,0,76,;" + "col18,总负债,single,4,0,80,;" + "col19,股东权益,single,4,0,84,;" + "col20,资本公积金,single,4,0,88,;" + "col21,经营现金流量,single,4,0,92,;" + "col22,投资现金流量,single,4,0,96,;" + "col23,筹资现金流量,single,4,0,100,;" + "col24,现金增加额,single,4,0,104,;" + "col25,主营收入,single,4,0,108,;" + "col26,主营利润,single,4,0,112,;" + "col27,营业利润,single,4,0,116,;" + "col28,投资收益,single,4,0,120,;" + "col29,营业外收支,single,4,0,124,;" + "col30,利润总额,single,4,0,128,;" + "col31,净利润,single,4,0,132,;" + "col32,未分配利润,single,4,0,136,;" + "col33,总股本,single,4,0,140,;" + "col34,无限售股合计,single,4,0,144,;" + "col35,A股,single,4,0,148,;" + "col36,B股,single,4,0,152,;" + "col37,境外上市股,single,4,0,156,;" + "col38,其他流通股,single,4,0,160,;" + "col39,限售股合计,single,4,0,164,;" + "col40,国家持股,single,4,0,168,;" + "col41,国有法人股,single,4,0,172,;" + "col42,境内法人股,single,4,0,176,;" + "col43,境内自然人股,single,4,0,180,;" + "col44,其他发起人股,single,4,0,184,;" + "col45,募集法人股,single,4,0,188,;" + "col46,境外法人股,single,4,0,192,;" + "col47,境外自然人股,single,4,0,196,;" + "col48,优先股或其他,single,4,0,200,"; break; #endregion #region 最新行情STKINFO60.DAT//OK case DataTypes.hq0: fileName = "STKINFO60.DAT"; startAddress = 0x6D0226; blockSize = 0; recordSize = 273; codeIsLong = false; isIndexDataStruct = false; fieldString = "dm,代码,code,10,0,0,;" + "jc,简称,string,32,1,10,;" + "rq,更新时间,datetime,4,5,60,;" + "zs,昨收,single,4,7,68,;" + "kp,今开,single,4,8,72,;" + "zg,最高,single,4,9,76,;" + "zd,最低,single,4,10,80,;" + "sp,最新,single,4,11,84,;" + "sl,总手数,single,4,12,88,;" + "je,金额,single,4,13,92,;" + "xss,现手数,single,4,14,96,;" + "ztj,涨停价,single,4,27,184,;" + "dtj,跌停价,single,4,28,188,;" + "np,内盘,single,4,27,192,;" + "wp,外盘,single,4,28,196,;" + "mrjg1,买一价,single,4,15,100,;" + "mrsl1,买一量,single,4,18,120,;" + "mrjg2,买价,single,4,16,104,;" + "mrsl2,买量,single,4,19,124,;" + "mrjg3,买三价,single,4,17,108,;" + "mrsl3,买三量,single,4,20,128,;" + "mrjg4,买四价,single,4,32,112,;" + "mrsl4,买四量,single,4,34,132,;" + "mrjg5,买五价,single,4,33,116,;" + "mrsl5,买五量,single,4,35,136,;" + "mcjg1,卖一价,single,4,21,140,;" + "mcsl1,卖一量,single,4,24,160,;" + "mcjg2,卖价,single,4,22,144,;" + "mcsl2,卖量,single,4,25,164,;" + "mcjg3,卖三价,single,4,23,148,;" + "mcsl3,卖三量,single,4,26,168,;" + "mcjg4,卖四价,single,4,36,152,;" + "mcsl4,卖四量,single,4,38,172,;" + "mcjg5,卖五价,single,4,37,156,;" + "mcsl5,卖五量,single,4,39,176,"; //"jd,精度,int,4,3,52,;" + //"scbz,删除标志,int,4,4,56,"; //"unknown,(未知),int,4,31,164,;" + //",(未知),,48,40,200,;" break; #endregion #region 分笔成交数据文件report.dat(结构同day.dat,但其中一些数据不是直接保存)//OK case DataTypes.hqmb: fileName = "REPORT.DAT"; //fileName = "20080926.PRP"; startAddress = 0x41000; blockSize = 12272;//52*236=12272 recordSize = 52; codeIsLong = false; isIndexDataStruct = false;//不完全等同于day.dat结构,因此单独处理 fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,0,0,;" + "zjcj,最近成交价,single,4,1,4,;" + "zss,总手数,single,4,2,8,calc;" + "je,金额,single,4,3,12,;" + "xss,现手数,single,4,2,8,;" + "mm,内外盘,string,2,16,21,;" + "mr1jg,买一价,single,1,10,42,;" + "mr1sl,买一量,single,2,4,22,;" + "mr2jg,买价,single,1,11,43,;" + "mr2sl,买量,single,2,5,24,;" + "mr3jg,买三价,single,1,12,44,;" + "mr3sl,买三量,single,2,6,26,;" + "mr4jg,买四价,single,1,12,45,;" + "mr4sl,买四量,single,2,6,28,;" + "mr5jg,买五价,single,1,12,46,;" + "mr5sl,买五量,single,2,6,30,;" + "mc1jg,卖一价,single,1,13,47,;" + "mc1sl,卖一量,single,2,7,32,;" + "mc2jg,卖价,single,1,14,48,;" + "mc2sl,卖量,single,2,8,34,;" + "mc3jg,卖三价,single,1,15,49,;" + "mc3sl,卖三量,single,2,9,36,;" + "mc4jg,卖四价,single,1,14,50,;" + "mc4sl,卖四量,single,2,8,38,;" + "mc5jg,卖五价,single,1,14,51,;" + "mc5sl,卖五量,single,2,8,40,;" + "bs,总笔数,int,2,0,16," ; //以上数据类型不是存储类型,程序中不直接用实际数据类型:买/卖X量为short,买/卖X价为byte //现手数通过当总手数计算而得,应该放在总手数后面 break; #endregion #region 日线数据文件day.dat//OK case DataTypes.hq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 1分钟数据文件min1.dat case DataTypes.hq1: fileName = "MIN1.DAT"; startAddress = 0x41000; blockSize = 16384;//块大小为:/32=;原分析家是 recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 5分钟数据文件min.dat//OK case DataTypes.hq5: fileName = "MIN.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,datetime,4,1,0,;" + "kp,开盘,single,4,2,4,B;" + "zg,最高,single,4,3,8,B;" + "zd,最低,single,4,4,12,B;" + "sp,收盘,single,4,5,16,B;" + "sl,成交数量,single,4,6,20,A;"+ "je,成交金额,single,4,7,24,"; break; #endregion #region 分红送配数据文件exprof.fdt case DataTypes.fp: fileName = "EXPROF.FDT"; startAddress = 0x41000; blockSize = 3776; recordSize = 236; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "cqrq,除权日期,date,4,23,176,;" + "sgbl,送股比例,double,8,1,12,;" + "sgdjr,送股股权登记日,date,4,2,20,;"+ "sgcqr,送股除权日,date,4,3,24,;"+ "sgssr,红股上市日,date,4,4,28,;"+ "zzbl,转增比例,double,8,5,32,;"+ "zzdjr,转增股权登记日,date,4,6,40,;"+ "zzcqr,转增除权日,date,4,7,44,;"+ "zzssr,转增上市日,date,4,8,48,;"+ "fhbl,分红比例,double,8,9,52,;"+ "fhdjr,分红股权登记日,date,4,10,60,;" + "fhcxr,分红除息日,date,4,11,64,;" + "fhpxr,分红派息日,date,4,12,68,;" + "pgbl,配股比例,double,8,13,72,;"+ "pgdjr,配股股权登记日,date,4,14,80,;"+ "pgcqr,配股除权基准日,date,4,15,84,;"+ "pgjkqsr,配股缴款起始日,date,4,16,88,;"+ "pgjkzzr,配股缴款终止日,date,4,17,92,;"+ "pgssr,配股可流通上市日,date,4,18,96,;"+ "pgjg,配股价格,single,4,19,100,;"+ "frgpgbl,公众股受让法人股配股比例,double,8,20,104,;"+ "frgmgzrf,认购法人股配股每股转让费,single,4,21,112,;"+ "pgzcxs,配股主承销商,string,60,22,116,;"+ "bgrq,报告日期,date,4,24,180,;"+ "dshrq,董事会日期,date,4,25,184,;"+ "gdhrq,股东会日期,date,4,26,188,;"+ "fhggrq,分红公告日期,date,4,27,192,;"+ "zgbjs,总股本基数,double,8,28,196,;"+ "sgsl,送股数量,double,8,29,204,;"+ "zzsl,转增数量,double,8,30,212,;"+ "sjpgs,实际配股总数,double,8,31,220,;"+ "cqhzgb,除权后总股本,double,8,32,228"; break; #endregion #region 股本结构STKCapital.fdt case DataTypes.gb: fileName = "STKCAPITAL.FDT"; startAddress = 0x41000; blockSize = 3488; recordSize = 218; codeIsLong = true; fieldString = "dm,代码,code,12,0,0;" + "rq,日期,date,4,17,214;"+ "zgb,总股本,double,8,1,12;" + "gjg,国家股,double,8,2,20;" + "fqrg,发起人股,double,8,3,28;" + "frg,法人股,double,8,4,36;" + "ybfrps,一般法人配售,double,8,5,44;" + "zgg,内部职工股,double,8,6,52;" + "a,流通A股,double,8,7,60;" + "zltzag,战略投资A股,double,8,8,68;" + "zpg,转配股,double,8,9,76;" + "jjps,基金配售,double,8,10,84;" + "h,H股,double,8,11,92;" + "b,B股,double,8,12,100;" + "yxg,优先股,double,8,13,108;" + "ggcg,高级管理人员持股,double,8,14,116;" + "gbbdyy,股本变动原因,string,56,15,124;" + "gbbdyylb,股本变动原因类别,string,34,16,180"; break; #endregion #region 财务数据STKFinance.fdt case DataTypes.cw: fileName = "STKFINANCE.FDT"; startAddress = 0x41000; blockSize = 14848; recordSize = 464; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,,460,;"+ "bsdqtzje,短期投资净额,double,8,1,12,;"+ "bsyszkje,应收帐款净额,double,8,2,20,;"+ "bschje,存货净额,double,8,3,28,;"+ "bsldzc,流动资产,double,8,4,36,;"+ "bscqtzje,长期投资净额,double,8,5,44,;"+ "bsgdzc,固定资产,double,8,6,52,;"+ "bswxzc,无形及其他资产,double,8,7,60,;"+ "bszzc,总资产,double,8,8,68,;"+ "bsdqjk,短期借款,double,8,9,76,;"+ "bsyfzk,应付帐款,double,8,10,84,;"+ "bsldfz,流动负债,double,8,11,92,;"+ "bscqfz,长期负债,double,8,12,100,;"+ "bsfz,负债合计,double,8,13,108,;"+ "bsgb,股本,double,8,14,116,;"+ "bsssgdqy,少数股东权益,double,8,15,124,;"+ "bsgdqy,股东权益,double,8,16,132,;"+ "bszbgj,资本公积,double,8,17,140,;"+ "bsyygj,盈余公积,double,8,18,148,;"+ "iszysr,主营业务收入净额,double,8,1,156,;"+ "iszycb,主营业务成本,double,8,2,164,;"+ "iszylr,主营业务利润,double,8,3,172,;"+ "isqtlr,其它业务利润,double,8,4,180,;"+ "isyyfy,营业费用,double,8,5,188,;"+ "isglfy,管理费用,double,8,6,196,;"+ "iscwfy,财务费用,double,8,7,204,;"+ "istzsy,投资收益,double,8,8,212,;"+ "islrze,利润总额,double,8,9,220,;"+ "issds,所得税,double,8,10,228,;"+ "isjlr,净利润,double,8,11,236,;"+ "iskchjlr,扣除经常性损益后的净利润,double,8,12,244,;"+ "iswfplr,未分配利润,double,8,13,252,;"+ "cfjyhdxjlr,经营活动现金流入,double,8,1,260,;"+ "cfjyhdxjlc,经营活动现金流出,double,8,2,268,;"+ "cfjyhdxjje,经营活动现金净额,double,8,3,276,;"+ "cftzxjlr,投资现金流入,double,8,4,284,;"+ "cftzxjlc,投资现金流出,double,8,5,292,;"+ "cftzxjje,投资现金净额,double,8,6,300,;"+ "cfczxjlr,筹措现金流入,double,8,7,308,;"+ "cfczxjlc,筹措现金流出,double,8,8,316,;"+ "cfczxjje,筹措现金净额,double,8,9,324,;"+ "cfxjjze,现金及现金等价物净增额,double,8,10,332,;"+ "cfxsspxj,销售商品收到的现金,double,8,11,340,;"+ "mgsy,每股收益,single,4,1,348,;"+ "mgjzc,每股净资产,single,4,2,352,;"+ "tzmgjzc,调整后每股净资产,single,4,3,356,;"+ "mgzbgjj,每股资本公积金,single,4,4,360,;"+ "mgwfplr,每股未分配利润,single,4,5,364,;"+ "mgjyxjllje,每股经营活动产生的现金流量净额,single,4,6,368,;"+ "mgxjzjje,每股现金及现金等价物增加净额,single,4,7,372,;"+ "mll,毛利率,single,4,8,376,;"+ "zyywlrl,主营业务利润率,single,4,9,380,;"+ "jll,净利率,single,4,10,384,;"+ "zzcbcl,总资产报酬率,single,4,11,388,;"+ "jzcsyl,净资产收益率,single,4,12,392,;"+ "xsxjzb,销售商品收到的现金占主营收入比例,single,4,13,396,;"+ "yszczzl,应收帐款周转率,single,4,14,400,;"+ "chzzl,存货周转率,single,4,15,404,;"+ "gdzczzl,固定资产周转率,single,4,16,408,;"+ "zyywzzl,主营业务增长率,single,4,17,412,;"+ "jlrzzl,净利润增长率,single,4,18,416,;"+ "zzczzl,总资产增长率,single,4,19,420,;"+ "jzczzl,净资产增长率,single,4,20,424,;"+ "ldbl,流动比率,single,4,21,428,;"+ "sdbl,速动比率,single,4,22,432,;"+ "zcfzbl,资产负债比率,single,4,23,436,;"+ "fzbl,负债比率,single,4,24,440,;"+ "gdqybl,股东权益比率,single,4,25,444,;"+ "gdzcbl,固定资产比率,single,4,26,448,;"+ "kchmgjlr,扣除经常性损益后每股净利润,single,4,27,452,"; break; #endregion #region 十大股东stkhold.fdt case DataTypes.gd: fileName = "STKHOLD.FDT"; startAddress = 0x41000; blockSize = 17568; recordSize = 2196; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,66,2192,;" + "gd1mc,股东名称,string,160,1,12,;"+ "gd1cgsl,股东持股数量,double,8,2,172,;"+ "gd1cgbl,股东持股比例,single,4,3,180,;"+ "gd1bz,股东备注,string,20,4,184,;"+ "gd1fr,股东法人,string,8,5,204,;"+ "gd1jyfw,股东经营范围,string,16,6,212,;"+ "gd2mc,股东名称,string,160,7,228,;"+ "gd2cgsl,股东持股数量,double,8,8,388,;"+ "gd2cgbl,股东持股比例,single,4,9,396,;"+ "gd2bz,股东备注,string,20,10,400,;"+ "gd2fr,股东法人,string,8,11,420,;"+ "gd2jyfw,股东经营范围,string,16,12,428,;"+ "gd3mc,股东名称,string,160,13,444,;"+ "gd3cgsl,股东持股数量,double,8,14,604,;"+ "gd3cgbl,股东持股比例,single,4,15,612,;"+ "gd3bz,股东备注,string,20,16,616,;"+ "gd3fr,股东法人,string,8,17,636,;"+ "gd3jyfw,股东经营范围,string,16,18,644,;"+ "gd4mc,股东名称,string,160,19,660,;"+ "gd4cgsl,股东持股数量,double,8,20,820,;"+ "gd4cgbl,股东持股比例,single,4,21,828,;"+ "gd4bz,股东备注,string,20,22,832,;"+ "gd4fr,股东法人,string,8,23,852,;"+ "gd4jyfw,股东经营范围,string,16,24,860,;"+ "gd5mc,股东名称,string,160,25,876,;"+ "gd5cgsl,股东持股数量,double,8,26,1036,;"+ "gd5cgbl,股东持股比例,single,4,27,1044,;"+ "gd5bz,股东备注,string,20,28,1048,;"+ "gd5fr,股东法人,string,8,29,1068,;"+ "gd5jyfw,股东经营范围,string,16,30,1076,;"+ "gd6mc,股东名称,string,160,31,1092,;"+ "gd6cgsl,股东持股数量,double,8,32,1252,;"+ "gd6cgbl,股东持股比例,single,4,33,1260,;"+ "gd6bz,股东备注,string,20,34,1264,;"+ "gd6fr,股东法人,string,8,35,1284,;"+ "gd6jyfw,股东经营范围,string,16,36,1292,;"+ "gd7mc,股东名称,string,160,37,1308,;"+ "gd7cgsl,股东持股数量,double,8,38,1468,;"+ "gd7cgbl,股东持股比例,single,4,39,1476,;"+ "gd7bz,股东备注,string,20,40,1480,;"+ "gd7fr,股东法人,string,8,41,1500,;"+ "gd7jyfw,股东经营范围,string,16,42,1508,;"+ "gd8mc,股东名称,string,160,43,1524,;"+ "gd8cgsl,股东持股数量,double,8,44,1684,;"+ "gd8cgbl,股东持股比例,single,4,45,1692,;"+ "gd8bz,股东备注,string,20,46,1696,;"+ "gd8fr,股东法人,string,8,47,1716,;"+ "gd8jyfw,股东经营范围,string,16,48,1724,;"+ "gd9mc,股东名称,string,160,49,1740,;"+ "gd9cgsl,股东持股数量,double,8,50,1900,;"+ "gd9cgbl,股东持股比例,single,4,51,1908,;"+ "gd9bz,股东备注,string,20,52,1912,;"+ "gd9fr,股东法人,string,8,53,1932,;"+ "gd9jyfw,股东经营范围,string,16,54,1940,;"+ "gd10mc,股东名称,string,160,55,1956,;"+ "gd10cgsl,股东持股数量,double,8,56,2116,;"+ "gd10cgbl,股东持股比例,single,4,57,2124,;"+ "gd10bz,股东备注,string,20,58,2128,;"+ "gd10fr,股东法人,string,8,59,2148,;"+ "gd10jyfw,股东经营范围,string,16,60,2156,;"+ "gdzs,股东总数,int,4,61,2172,;"+ "gjgfrggds,国家股法人股股东数,int,4,62,2176,;"+ "aggds,流通股A股股东数,int,4,63,2180,;"+ "bggds,流通股B股股东数,int,4,64,2184,"; break; #endregion #region 基金周报fundweek.fdt case DataTypes.jjjz: //fileName = "FUNDWEEK.FDT"; fileName = "FUNDINFO.fdt"; startAddress = 0x41000; blockSize = 12032; recordSize = 188; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;"+ "rq,日期,date,4,13,184,;"+ "dwjz,基金单位净值,single,4,6,152,;" + "jjze,基金净值总额,double,8,5,144,;" + "gm,基金规模,double,8,4,136,;" + "dwcz,基金单位初值,single,4,7,156,;"+ "tzhjz,基金调整后净值,single,4,8,160,;"+ "tzhcz,基金调整后初值,single,4,9,164,;"+ "zzl,基金增长率(%),double,8,10,168,;"+ "ljjz,基金累计净值,single,4,11,176,;"+ "slrq,基金设立日期,date,4,1,12,;"+ "glr,基金管理人,string,60,2,16,;"+ "tgr,基金托管人,string,60,3,76," ;//12为保留字段 break; #endregion #region 基金投资组合funddiv.fdt case DataTypes.jjzh: fileName = "FUNDDIV.FDT"; fileName = "FUNDINVEST.fdt"; startAddress = 0x41000; blockSize = 8320; recordSize = 260; codeIsLong = true; fieldString = "dm,代码,code,12,0,0,;" + "bgrq,报告日期,date,4,31,252,;" + "zzrq,截止日期,date,4,32,256,;" + "dm1,证券代码,string,12,1,12,;" + "sz1,证券市值,double,8,2,24,;" + "bl1,证券占净值比例(%),single,4,3,32,;" + "dm2,证券代码,string,12,4,36,;" + "sz2,证券市值,double,8,5,48,;" + "bl2,证券占净值比例(%),single,4,6,56,;" + "dm3,证券代码,string,12,7,60,;" + "sz3,证券市值,double,8,8,72,;" + "bl3,证券占净值比例(%),single,4,9,80,;" + "dm4,证券代码,string,12,10,84,;" + "sz4,证券市值,double,8,11,96,;" + "bl4,证券占净值比例(%),single,4,12,104,;" + "dm5,证券代码,string,12,13,108,;" + "sz5,证券市值,double,8,14,120,;" + "bl5,证券占净值比例(%),single,4,15,128,;" + "dm6,证券代码,string,12,16,132,;" + "sz6,证券市值,double,8,17,144,;" + "bl6,证券占净值比例(%),single,4,18,152,;" + "dm7,证券代码,string,12,19,156,;" + "sz7,证券市值,double,8,20,168,;" + "bl7,证券占净值比例(%),single,4,21,176,;" + "dm8,证券代码,string,12,22,180,;" + "sz8,证券市值,double,8,23,192,;" + "bl8,证券占净值比例(%),single,4,24,200,;" + "dm9,证券代码,string,12,25,204,;" + "sz9,证券市值,double,8,26,216,;" + "bl9,证券占净值比例(%),single,4,27,224,;" + "dm10,证券代码,string,12,28,228,;" + "sz10,证券市值,double,8,29,240,;" + "bl10,证券占净值比例(%),single,4,30,248,"; break; #endregion #region 板块userdata\block case DataTypes.bk: fileName = "BLOCK.DEF"; startAddress = 0; blockSize = 0; recordSize = 248; codeIsLong = false; isIndexDataStruct = false; fieldString = "lb,类别,string,20,0,0,;" + "bk,板块,string,20,1,10,;" + "dm,证券代码,string,10,2,42,"; break; #endregion #region 评级 case DataTypes.pj: fileName = "评级.str"; //fileName = "SIMU.DAT"; startAddress = 0; blockSize = 256; recordSize = 256; codeIsLong = true; isIndexDataStruct = false; fieldString = "dm,证券代码,string,12,0,0,;" + "pj,评级,string,2,2,0,;" + "sm,说明,string,244,2,0,"; break; #endregion #region 复权行情,计算而得 case DataTypes.hqfq: fileName = "DAY.DAT"; startAddress = 0x41000; blockSize = 8192; recordSize = 32; codeIsLong = false; fieldString = "dm,代码,code,10,0,0,;" + "rq,日期,date,4,1,0,;" + "kp,开盘复权价,single,4,2,4,B;" + "zg,最高复权价,single,4,3,8,B;" + "zd,最低复权价,single,4,4,12,B;" + "sp,收盘复权价,single,4,5,16,B;" + "sl,复权成交数量,single,4,6,20,A;" + "je,成交金额,single,4,7,24,;"+ "spsyl,收盘收益率,single,4,0,0,"; break; #endregion } string[] fieldLine = fieldString.Split(new char[] { ';' }); fields = new string[fieldLine.Length, 7]; for (int i = 0; i < fieldLine.Length; i++) { string[] field = fieldLine[i].Split(new char[]{','} ,7 ); for(int j=0;j<field.Length;j++) { fields[i,j]=field[j]; } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值