周末睡了两天,头都大了,最近蹭网来着,不知道咋回事,上不了了。想来想去准备改mac地址,最后发现咋电脑连自己的手机wifi都连不上了,看来咋错怪那个wifi了。最后发现咋dns不对,最后改成了之前一种用的一个114.114.114.114,解决了问题。乘着下午凉快,想着解决一下股票中的复权,因为我们看股票软件的时候呐,经常是断崖式的下跌,这基本就是除权等操作,大概的意思就是说送股,意思就是说成本不变,价格变成了原来的多少倍,当然股价的变动的落脚地就是流通股的数量的变化。总之就是这么一个过程。在一般的炒股软件中都有一个复权的按钮。比如通达信的在这里不复权:
不复权的话,我们第一感觉就是这股可能是个起伏很大的股票吧。我们看看它的前复权:
复权之后,会发现这股票咋后悔没买......
反思一下问题出在哪里呐,最浅显的就是我们按照技术派的图谱去看待趋势的,但是技术派并没有将复权这样的图给画出来。也就是如果技术指标上进行不除权操作,那么技术上的指标就要凉凉。所以我们写脚本企图财务自由则必须要对数据进行除权,这是量化的第一步!
我们想着呐,我们以后只看除权之后的数据。作者下午查了一下资料,发现咋自己的系统使用的baostock居然自带了除权的功能。就是在获取数据的时候改变一下参数就可以了。想想呐好高兴呀!让我们看看吧!下图是除权之后的效果。看样子和通达信的除权效果很类似哦!
下边是baostock官网上提供的获取日k线的代码。注意这里的参数adjustflag
代码语言:javascript复制import baostock as bs
import pandas as pd
#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:' lg.error_code)
print('login respond error_msg:' lg.error_msg)
#### 获取沪深A股历史K线数据 ####
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
rs = bs.query_history_k_data_plus("sh.600000",
"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
start_date='2017-07-01', end_date='2017-12-31',
frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:' rs.error_code)
print('query_history_k_data_plus respond error_msg:' rs.error_msg)
#### 打印结果集 ####
data_list = []
while (rs.error_code == '0') & rs.next():
# 获取一条记录,将记录合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
#### 结果集输出到csv文件 ####
result.to_csv("D:\history_A_stock_k_data.csv", index=False)
print(result)
#### 登出系统 ####
bs.logout()
这里呐字可能比较模糊,作者这里抄一下哈:
adjustflag=3 表示不复权 adjustflag=1 表示后复权 adjustflag=2 表示前复权
困扰作者许久的复权问题就这么迎刃而解,其实作者连复权的计算步骤都不知道,呵呵。除此之外呐,今天还把网上流行的通达信除权的问题给解决了,所以咋明天要做的就是删库,然后重新拉数据,然后再兼容通达信,nice!