python这是个很强大的第三方库,原理是解析通达信的.dat底层数据。没错,我说的就是老少皆宜,平时看盘下单的通达信软件。现在只需要在python里面安装第三方库,就可以获取到原始交易数据了。获取行情数据的代码是这样的,返回数据可以是list格式,也可以是dataframe格式。frompytdx.hqimportTdxHq_APIapi=TdxHq_API#数据获取接口一般返回list结构,如果需要转化为pandasDataframe接口,可以使用api.to_df进行转化withapi.connect:#返回普通listdata=api.get_security_barsprint#返回DataFramedata=api.to_df)print返回数据如下:
获取数据的网址是这个:http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_dayqfq¶m=sz000001,day,,,50,qfq&r=0.5643184591626897其中需要输入几个参数,股票代码,数据的周期fromurllib.requestimporturlopenimportjsonfromrandomimportrandintimportpandasaspdpd.set_optionpd.set_option#=====创建随机数的函数def_random:"""创建一个n位的随机整数:paramn::return:"""start=10**end=-1returnstr)stock_code="sz000001"type="day"#day,week,month分别对用日线、周线、月线num=640#股票最多不能超过640,指数、etf等没有限制#构建urlurl="http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_%sqfq¶m=%s,%s,,,%s,qfq&r=0.%s"url=url%)content=urlopen.read.decodecontent=content.split[-1]content=json.loadsdata=content["data"][stock_code]iftypeindata:data=data[type]elif"qfq"+typeindata:#qfq是前复权的缩写data=data["qfq"+type]else:raiseValueErrordf=pd.DataFrameprint运行代码后获得的数据如下:
其中0:"candle_end_time",1:"open",2:"close",3:"high",4:"low",5:"amount"复权处理上面两种方法得到的数据都是未经过复权处理的,那么我们怎样得到复权的数据呢?我们可以通过计算复权因子来得到复权数据,具体方法如下代码。importpandasaspdpd.set_optionpd.set_option#导入数据path="D:/sz00000csv"df=pd.read_csv#计算复权涨跌幅df["涨跌幅"]=df["收盘价"]/df["前收盘价"]-1#计算复权因子df["复权因子"]=.cumprod#计算前复权价df["收盘价_复权"]=df["复权因子"]*#计算后复权价df["收盘价_复权"]=df["复权因子"]*#计算复权后的开盘价、最高价、最低价df["开盘价_复权"]=df["开盘价"]/df["收盘价"]*df["收盘价_复权"]df["最高价_复权"]=df["最高价"]/df["收盘价"]*df["收盘价_复权"]df["最低价_复权"]=df["最低价"]/df["收盘价"]*df["收盘价_复权"]
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点