属性用@property装饰器装饰,进行懒运算 提高效率
取一个股票的数据
取多个股票的数据
统计学部分
14.1. 平均价 price
14.2. price均值 mean
14.3. max/min
14.4. 方差/样本方差 pvariance/variance
14.5. 标准差/样本标准差 pstdev/stdev
14.6. 调和平均数 mean_harmonic
14.7. 众数 mode
14.8. 振幅 amplitude
14.9. 偏度 skew
14.10. 峰度 kurt
14.11. 百分比变化 pct_change
14.12. 平均绝对偏差 mad
14.13. 价格差分 price_diff
QA_DataStruct具有的功能:
数据容器
数据变换 [分拆/合并/倒序] split/merge
数据透视 pivot
数据筛选 selects/select_time/select_time_with_gap/select_code/get_bar/select_month
数据复权 to_qfq/to_hfq
数据显示 show
格式变换 to_json/to_pandas/to_list/to_numpy/to_hdf
数据库式查询 query
画图 plot
计算指标 add_func
生成器 panel_gen(按时间分类的面板生成器)/security_gen(按股票分类的股票生成器)
QA_DataStruct_Stock_block
(属性)该类下的所有板块名称 block_name
查询某一只股票所在的所有板块 get_code(code)
查询某一个/多个板块下的所有股票 get_block(blockname)
展示当前类下的所有数据 show
我们可以通过
import QUANTAXIS as QA# QA.QA_fetch_stock_day_adv# QA.QA_fetch_stock_min_adv# QA.QA_fetch_index_day_adv# QA.QA_fetch_index_min_adv
day线的参数是code, start, end min线的参数是code, start, end, frequence='1min'
其中 code 可以是一个股票,也可以是一列股票(list)
QA.QA_fetch_stock_day_adv('000001','2017-01-01','2017-10-01')In [5]: QA.QA_fetch_stock_day_adv('000001','2017-01-01','2017-10-01')Out[5]: QA_DataStruct_Stock_day with 1 securities
QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-01-01','2017-10-01')In [6]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-01-01','2017-10-01')Out[6]: QA_DataStruct_Stock_day with 2 securities
In [10]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').dataOut[10]:code open high low close volume datedate code2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-202017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-212017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-222017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-252017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-262017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-272017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-282017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-292017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-202017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-212017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-222017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-252017-09-26 000002 000002 26.12 27.22 26.10 26.76 593044.0 2017-09-262017-09-27 000002 000002 27.00 27.28 26.52 26.84 367534.0 2017-09-272017-09-28 000002 000002 27.00 27.15 26.40 26.41 262347.0 2017-09-282017-09-29 000002 000002 26.56 26.80 26.00 26.25 345752.0 2017-09-29
In [5]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').highOut[5]:date code2017-09-20 000001 11.372017-09-21 000001 11.512017-09-22 000001 11.522017-09-25 000001 11.452017-09-26 000001 11.302017-09-27 000001 11.082017-09-28 000001 10.982017-09-29 000001 11.162017-09-20 000002 29.552017-09-21 000002 29.062017-09-22 000002 28.672017-09-25 000002 27.202017-09-26 000002 27.222017-09-27 000002 27.282017-09-28 000002 27.152017-09-29 000002 26.80Name: high, dtype: float64
当一个DataStruct里面存在多个证券时,可以通过拆分的方法,将其变成多个DataStruct
In [3]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').splits()Out[3]:[< QA_DataStruct_Stock_day with 1 securities >,< QA_DataStruct_Stock_day with 1 securities >]
返回的是一个DataStruct,用.data展示返回的数据的结构
其中DataStruct.if_fq的属性会改变
In [4]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').to_qfq().dataOut[4]:code open high low close volume date \date code2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-202017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-212017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-222017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-252017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-262017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-272017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-282017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-292017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-202017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-212017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-222017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-252017-09-26 000002 000002 26.12 27.22 26.10 26.76 593044.0 2017-09-262017-09-27 000002 000002 27.00 27.28 26.52 26.84 367534.0 2017-09-272017-09-28 000002 000002 27.00 27.15 26.40 26.41 262347.0 2017-09-282017-09-29 000002 000002 26.56 26.80 26.00 26.25 345752.0 2017-09-29preclose adjdate code2017-09-20 000001 NaN 1.02017-09-21 000001 11.29 1.02017-09-22 000001 11.46 1.02017-09-25 000001 11.44 1.02017-09-26 000001 11.29 1.02017-09-27 000001 11.05 1.02017-09-28 000001 10.93 1.02017-09-29 000001 10.88 1.02017-09-20 000002 NaN 1.02017-09-21 000002 28.73 1.02017-09-22 000002 28.40 1.02017-09-25 000002 27.81 1.02017-09-26 000002 26.12 1.02017-09-27 000002 26.76 1.02017-09-28 000002 26.84 1.02017-09-29 000002 26.41 1.0
In [6]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').pivot('open')Out[6]:code 000001 000002date2017-09-20 11.14 28.502017-09-21 11.26 28.502017-09-22 11.43 28.392017-09-25 11.44 27.202017-09-26 11.26 26.122017-09-27 11.01 27.002017-09-28 10.98 27.002017-09-29 10.92 26.56
In [4]: data.selects('000005','2018-06-01','2018-06-05').dataOut[4]:open high low close volume amountdate code2018-06-01 000005 3.42 3.46 3.39 3.44 47210.0 16151548.02018-06-04 000005 3.43 3.45 3.39 3.40 35039.0 11945360.02018-06-05 000005 3.39 3.42 3.38 3.42 34129.0 11609377.0
In [10]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time('2017-09-20','2017-09-25')Out[10]: QA_DataStruct_Stock_day with 2 securitiesIn [11]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time('2017-09-20','2017-09-25').dataOut[11]:code open high low close volume datedate code2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-202017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-212017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-222017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-252017-09-20 000002 000002 28.50 29.55 28.00 28.73 613095.0 2017-09-202017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-212017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-222017-09-25 000002 000002 27.20 27.20 26.10 26.12 722702.0 2017-09-25
time是你选择的时间 gap是长度 (int) methods有 '<=','lte','<','lt','eq','==','>','gt','>=','gte'的选项
In [14]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time_with_gap('2017-09-20',2,'gt')Out[14]: QA_DataStruct_Stock_day with 2 securitiesIn [15]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_time_with_gap('2017-09-20',2,'gt').dataOut[15]:code open high low close volume datedate code2017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-212017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-222017-09-21 000002 000002 28.50 29.06 27.75 28.40 536324.0 2017-09-212017-09-22 000002 000002 28.39 28.67 27.52 27.81 423093.0 2017-09-22
可以通过select_month 来选取某一个月份的数据
In [4]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_month('2017-09')Out[4]: < QA_DataStruct_Stock_day with 2 securities >
In [16]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_code('000001')Out[16]: QA_DataStruct_Stock_day with 1 securitiesIn [17]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').select_code('000001').dataOut[17]:code open high low close volume datedate code2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-202017-09-21 000001 000001 11.26 11.51 11.20 11.46 692407.0 2017-09-212017-09-22 000001 000001 11.43 11.52 11.31 11.44 593927.0 2017-09-222017-09-25 000001 000001 11.44 11.45 11.18 11.29 532391.0 2017-09-252017-09-26 000001 000001 11.26 11.30 10.96 11.05 967460.0 2017-09-262017-09-27 000001 000001 11.01 11.08 10.90 10.93 727188.0 2017-09-272017-09-28 000001 000001 10.98 10.98 10.82 10.88 517220.0 2017-09-282017-09-29 000001 000001 10.92 11.16 10.86 11.11 682280.0 2017-09-29
In [19]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').get_bar('000001','2017-09-20')Out[19]:code open high low close volume datedate code2017-09-20 000001 000001 11.14 11.37 11.05 11.29 787154.0 2017-09-20
为了统计学指标的需要, price=AVERAGE(open+high+low+close)
price是一个pd.Series
类
In [7]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').priceOut[7]:date code2017-09-20 000001 11.21252017-09-21 000001 11.35752017-09-22 000001 11.42502017-09-25 000001 11.34002017-09-26 000001 11.14252017-09-27 000001 10.98002017-09-28 000001 10.91502017-09-29 000001 11.0125dtype: float64
mean是price的均值
In [6]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').meanOut[6]: 11.173125
max/min 分别是price序列的最大值和最小值
In [8]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').maxOut[8]: 11.424999999999999In [9]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').minOut[9]: 10.915000000000001
分别是price的方差和样本方差
In [10]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').varianceOut[10]: 0.0367852678571427In [11]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').pvarianceOut[11]: 0.03218710937499986
分别是price的总体标准差和样本标准差
In [12]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').pstdevOut[12]: 0.17940766253145338In [13]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').stdevOut[13]: 0.19179485878704544
price的调和平均数
In [14]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').mean_harmonicOut[14]: 11.170242242781745
返回price的众数 (注意: price序列可能没有众数,因此可能会报错,内部处理后,返回None)
In [31]: QA.QA_fetch_stock_day_adv('000001','2017-01-20','2017-10-01').modeOut[31]: 9.1375In [31]: QA.QA_fetch_stock_day_adv('000001','2017-01-20','2017-10-01').modeOut[31]: None
返回price的振幅
In [33]: QA.QA_fetch_stock_day_adv('000001','2017-01-20','2017-10-01').amplitudeOut[33]: 3.1325000000000003
返回price的偏度
In [35]: QA.QA_fetch_stock_day_adv('000001','2017-01-20','2017-10-01').skewOut[35]: 0.70288041557825753
返回price的峰度
In [37]: QA.QA_fetch_stock_day_adv('000001','2017-01-20','2017-10-01').kurtOut[37]: -1.0703273213086726
返回price的百分比变化
In [40]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').pct_changeOut[40]:date code2017-09-20 000001 NaN2017-09-21 000001 0.0129322017-09-22 000001 0.0059432017-09-25 000001 -0.0074402017-09-26 000001 -0.0174162017-09-27 000001 -0.0145842017-09-28 000001 -0.0059202017-09-29 000001 0.008933dtype: float64
返回price的平均绝对偏差
In [41]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').madOut[41]: 0.16062499999999957
返回价格的一阶差分
In [42]: QA.QA_fetch_stock_day_adv('000001','2017-09-20','2017-10-01').price_diffOut[42]:date code2017-09-20 000001 NaN2017-09-21 000001 0.14502017-09-22 000001 0.06752017-09-25 000001 -0.08502017-09-26 000001 -0.19752017-09-27 000001 -0.16252017-09-28 000001 -0.06502017-09-29 000001 0.0975dtype: float64
如果是()空值 就会把全部的股票都画出来
In [20]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').plot()QUANTAXIS>> The Pic has been saved to your path: .\QA_stock_day_codepackage_bfq.htmlIn [21]: QA.QA_fetch_stock_day_adv(['000001','000002'],'2017-09-20','2017-10-01').plot('000001')QUANTAXIS>> The Pic has been saved to your path: .\QA_stock_day_000001_bfq.html