使用tushare分析股票

最近开始炒股,需要比较直观的分析行情数据,发现Tushare非常好用,分享给有需要的人,代码如下:

import tushare as ts
import csv

# 此处输入需要分析的股票代码
TsCode_list = '002594.sz,600104.sh,002352.sz,002049.sz,600660.sh,603738.sh,002138.sz,000636.sz,000733.sz,002179.sz,603160.sh'
# 输入查询的日期
search_date = 20210205
# 输出文件命名
file_name = str(search_date) + '.csv'
# 创建csv文件并打开
file = open(file_name, 'w', encoding='utf-8-sig', newline='')
csv_writer = csv.writer(file)
# 写第一行各列的名称
csv_writer.writerow(['序号', '股票代码', '股票名称', '市盈TTM', '总市值(w)', '预估利润(w)', '实际业绩(w)', '业绩差(w)', '增长比例','开盘价', '最高价', '最低价', '收盘价', '昨收价', '涨跌额', '涨跌幅(%)', '成交量(手)', '成交额(w)'])
print('序号 股票代码 股票名称 市盈率 总市值 预估利润 实际业绩 业绩差 增长比例 开盘价 最高价 最低价 收盘价 昨收价 涨跌额 涨跌幅 成交量(手) 成交额(w)')
# 设置tocken,从https://tushare.pro获取
token = 'XXXXXX'
# 初始化pro接口
pro = ts.pro_api(token)
# 获取市盈率TTM、总市值数据
get_daily_basic_data = pro.daily_basic(ts_code=TsCode_list, trade_date=str(search_date),
                                       fields='ts_code,trade_date,pe_ttm,total_mv')
# 获取日线行情
get_daily_data = pro.daily(ts_code=TsCode_list, trade_date=str(search_date))
# 计算股票个数,剔除无法获取数据的股票,比如停牌的
TsCode_list_num = get_daily_basic_data.shape[0]
# 循环一个个获取股票中文名称、市盈率、总市值、预期利润(2020年全年)、预告利润、利润差及比例
for num in range(0, TsCode_list_num):
    TsCode = get_daily_basic_data.ts_code[num]
    CodeName = pro.stock_basic(ts_code=TsCode).name[0]
    PeTtm = round(get_daily_basic_data.pe_ttm[num], 2)
    TotalValue = int(get_daily_basic_data.total_mv[num])
    if PeTtm > 0:
        profit_exp = int(get_daily_basic_data.total_mv[num] / get_daily_basic_data.pe_ttm[num])
    else:
        profit_exp = 0
    profit_fore = pro.forecast(ts_code=TsCode, period='20201231', fields='net_profit_min,net_profit_max')
    if profit_fore.net_profit_min.count() == 0 or profit_fore.net_profit_max.count() == 0:
        profit_true = 0
    else:
        profit_true = int(profit_fore.net_profit_min[0] + profit_fore.net_profit_max[0])/2
    profit_diff = profit_true - profit_exp
    if profit_exp == 0:
        grow_rate = 0
    else:
        grow_rate = '{:.1%}'.format(profit_diff/profit_exp)

    daily_open = get_daily_data.open[num]                             # 开盘价
    daily_high = get_daily_data.high[num]                             # 最高价
    daily_low = get_daily_data.low[num]                               # 最低价
    daily_close = get_daily_data.close[num]                           # 收盘价
    daily_pre_close = get_daily_data.pre_close[num]                   # 昨收价
    daily_change = get_daily_data.change[num]                         # 涨跌额
    daily_pct_chg = str(round(get_daily_data.pct_chg[num], 2)) + '%'  # 涨跌幅(未复权)
    daily_vol = int(get_daily_data.vol[num])                          # 成交量(手)
    daily_amount = int(get_daily_data.amount[num]/10)                 # 成交额(w)
    print(num, TsCode, CodeName, PeTtm, TotalValue, profit_exp, profit_true, profit_diff,
          grow_rate, daily_open, daily_high, daily_low, daily_close, daily_pre_close,
          daily_change, daily_pct_chg, daily_vol, daily_amount)
    csv_writer.writerow([num, TsCode, CodeName, PeTtm, TotalValue, profit_exp, profit_true, profit_diff,
                         grow_rate, daily_open, daily_high, daily_low, daily_close, daily_pre_close,
                         daily_change, daily_pct_chg, daily_vol, daily_amount])

注:

  1. tushare需要注册后获取token,链接:https://tushare.pro/register?reg=421774;
  2. 调用daily_basic接口需要600积分以上;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值