90 lines
2.4 KiB
Python
90 lines
2.4 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
股票数据获取示例脚本
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import tushare as ts
|
|||
|
|
import pandas as pd
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
# 设置tushare API密钥
|
|||
|
|
# 请在使用前设置您的API密钥, tushare>=1.4.25 版本 支持从环境变量中获取 TUSHARE_TOKEN。
|
|||
|
|
# ts.set_token('your_token_here')
|
|||
|
|
|
|||
|
|
# 初始化pro接口
|
|||
|
|
pro = ts.pro_api()
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_stock_list():
|
|||
|
|
"""
|
|||
|
|
获取股票列表
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
|
|||
|
|
print("股票列表获取成功:")
|
|||
|
|
print(data.head())
|
|||
|
|
return data
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"获取股票列表失败:{e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_daily_data(ts_code, start_date, end_date):
|
|||
|
|
"""
|
|||
|
|
获取股票日线数据
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
data = pro.daily(ts_code=ts_code, start_date=start_date, end_date=end_date)
|
|||
|
|
print(f"{ts_code}日线数据获取成功:")
|
|||
|
|
print(data.head())
|
|||
|
|
return data
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"获取日线数据失败:{e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_financial_data(ts_code, year, quarter):
|
|||
|
|
"""
|
|||
|
|
获取财务指标数据
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
data = pro.fina_indicator(ts_code=ts_code, year=year, quarter=quarter)
|
|||
|
|
print(f"{ts_code}财务指标数据获取成功:")
|
|||
|
|
print(data.head())
|
|||
|
|
return data
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"获取财务指标数据失败:{e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
"""
|
|||
|
|
主函数
|
|||
|
|
"""
|
|||
|
|
print("===== tushare 股票数据获取示例 =====")
|
|||
|
|
|
|||
|
|
# 获取股票列表
|
|||
|
|
stock_list = get_stock_list()
|
|||
|
|
|
|||
|
|
if stock_list is not None:
|
|||
|
|
# 获取第一只股票的代码
|
|||
|
|
ts_code = stock_list['ts_code'].iloc[0]
|
|||
|
|
print(f"\n使用股票代码:{ts_code}")
|
|||
|
|
|
|||
|
|
# 获取日线数据(最近30天)
|
|||
|
|
import datetime
|
|||
|
|
end_date = datetime.datetime.now().strftime('%Y%m%d')
|
|||
|
|
start_date = (datetime.datetime.now() - datetime.timedelta(days=30)).strftime('%Y%m%d')
|
|||
|
|
print(f"\n获取日线数据:{start_date} 至 {end_date}")
|
|||
|
|
get_daily_data(ts_code, start_date, end_date)
|
|||
|
|
|
|||
|
|
# 获取财务数据(最近一年)
|
|||
|
|
current_year = datetime.datetime.now().year
|
|||
|
|
print(f"\n获取财务数据:{current_year-1}年 第4季度")
|
|||
|
|
get_financial_data(ts_code, current_year-1, 4)
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|