九龙坡做网站,网站建设问一问公司,有服务器有域名怎么做网站,做网站卖资料本文介绍如何使用 akshare 下载国内期货、股票和指数的历史行情数据。
Akshare 是一个丰富的金融数据查询的 Python 库#xff0c;提供了大量的金融数据接口。本文将详细介绍如何使用 Akshare 下载期货、股票和指数数据#xff0c;并提供完整的代码示例#xff0c;以求大家…本文介绍如何使用 akshare 下载国内期货、股票和指数的历史行情数据。
Akshare 是一个丰富的金融数据查询的 Python 库提供了大量的金融数据接口。本文将详细介绍如何使用 Akshare 下载期货、股票和指数数据并提供完整的代码示例以求大家能快速拿到数据少走弯路。
期货合约主要是主力连续合约的历史行情数据下载并于进行回测分析使用。
安装 Akshare
请确保已安装 Akshare如下命令安装
pip install akshare了解它的更多数据可查看它的文档akshare documentation
下载期货数据
我使用 akshare 的重要原因就是它提供了下载期货的主力或连续合约的历史数据。开始我想 tushare 实现映射每天的主力合约并对应获取其历史数据和拼接这个过程本身就比较繁琐。再就是 tushare 的频率限制严重测试几次就没有额度了。
akshare 中的主力和连续合约的数据是从新浪财经下载的它的 symbol 名称与标准的是不一致的不过可以通过函数 futures_display_main_sina 拿到映射关系。具体我不演示了我搞了一份表格便于我平时查看。
如需查看可访问 新浪期货名称关系表格。
有了主力和连续合约的 symbol 名称就可以使用 futures_main_sina 函数下载历史数据。
data aks.futures_main_sina(symbolC0,start_date20230101
)如上的 C0 表示的是玉米主力合约。
我们可以定义一个函数参数接受 symbol 名称和长度输出结果其转换为易读的格式。
def future_history_bar(symbol, length100):start_date datetime.now() - timedelta(dayslength * 2)data aks.futures_main_sina(symbolsymbol, start_datestart_date.strftime(%Y%m%d))data data.rename(columns{日期: date,开盘价: open,最高价: high,最低价: low,收盘价: close,成交量: volume,持仓量: open_interest,动态结算价: settle_price,})data[open] data[open].astype(float)data[high] data[high].astype(float)data[low] data[low].astype(float)data[close] data[close].astype(float)return data.iloc[-length:]上面的参数和输出的定义看个人习惯我比较习惯这样的使用方式便于我计算指标。
下载股票数据
A 股股票数据可使用 stock_zh_a_hist 下载它的输入参数包括股票代码、周期、复权方式和起始日期等参数。
data aks.stock_zh_a_hist(symbol000001,perioddaily,adjustqfq,start_date20230101
)我们的习惯一般默认前复权即可。
为了使用方便同样可定义一个函数易于使用
def stock_history_bar(symbol, length100):start_date datetime.now() - timedelta(dayslength * 2)data aks.stock_zh_a_hist(symbolsymbol,perioddaily,adjustqfq,start_datestart_date.strftime(%Y%m%d),)return data.rename(columns{日期: date,股票代码: symbol,开盘: open,最高: high,最低: low,收盘: close,成交量: volume,})[[date,symbol,open,high,low,close,volume,]].iloc[-length:]我们可以定义一个函数下载特定指数的历史数据并将其转换为更易读的格式
下载指数数据
A 股指数数据可通过 index_zh_a_hist 函数实现。输入参数包括指数代码、周期和起始日期等参数。
data aks.index_zh_a_hist(symbol000001,perioddaily,start_date20230101,end_date20231231
)将其实现为 history_bar 函数的形式便于我的使用。如下所示
def index_history_bar(symbol, length100):start_date (datetime.now() - timedelta(dayslength * 2)).strftime(%Y%m%d)end_date datetime.now().strftime(%Y%m%d)data aks.index_zh_a_hist(symbolsymbol,perioddaily,start_datestart_date,end_dateend_date,)return data.rename(columns{日期: date,开盘: open,最高: high,最低: low,收盘: close,成交量: volume,})[[date,open,high,low,close,volume,]].iloc[-length:]现在我们就已经有了三种不同交易品种的历史数据获取方法。
主函数
最后还可以定义一个主函数根据输入的类型下载相应的历史数据
def history_bar(symbol, length100, equity_typestock):if equity_type stock:return stock_history_bar(symbol, lengthlength)elif equity_type future:return future_history_bar(symbol, lengthlength)elif equity_type index:return index_history_bar(symbol, lengthlength)else:raise ValueError(fUnsupported equity type: {equity_type})现在是不是使用起来就非常方便了。
示例使用
通过以下示例演示如何调用这些函数来获取不同品种的历史行情数据
获取上证数据数据
symbol 000001 # 上证指数
length 100
equity_type index
data history_bar(symbol, length, equity_type)
print(data)获取平安银行数据
symbol 000001 # 平安银行
length 100
equity_type stock
data history_bar(symbol, length, equity_type)
print(data)获取甲醇行情数据
symbol MA0 # 甲醇主连
length 100
equity_type stock
data history_bar(symbol, length, equity_type)
print(data)通过以上代码现在就有了轻松下载股票、指数和期货历史数据的能力。这为数据分析提供了有力的支持。
完成代码请查看 hist_data.py。
希望本文对您有所帮助。如果有任何问题或建议欢迎随时联系我。