利用tushare一个选股的思路。

利用tushare一个选股的思路。,第1张

Tushare是一个免费提供各类金融数据 , 助力智能投资与创新型投资的平台。在这个平台上可以免费获得股票、期货和外汇的各种数据。(Tushare ID:488134)

Tushare安装

1.使用tushare的前提是部署好Python环境,然后与安装其他python模块一样使用pip命令安装tushare模块。

pip install tushare -i https://pypi.douban.com/simple


1、Tushare注册链接https://tushare.pro/register?reg=488134,注册完成之后进入个人主页
2、完善个人信息
完善好个人资料可以获得20积分,加上注册送的100积分,可以用股票的行情数据,对于练手来说,够用了。如果你是学生的话,还可以进行学生认证,一般的接口数据都可以使用。

3、TOKEN获取
点击接口TOKEN(复制自己的TOKEN,之后介绍TOKEN如何使用,注意:这个TOKEN是你自己的,不要外传) 

 

找到了一个程序,按照自己的想法改了改,仅供参考,别根据这个选股啊哈哈哈

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts
from pyecharts.charts import Line, Scatter
from pyecharts import options as opts
import re

pd.set_option('expand_frame_repr', False)  # 当列太多时不换行
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['axes.unicode_minus'] = False

# 获取正常上市的所有股票代码
def get_allstock_code(exchange='', list_status='L', fields='ts_code'):
    data = pro.stock_basic(exchange=exchange, list_status=list_status, fields=fields)
    return data


# 获取股票数据
def get_stock_data(code, start, end):
    stock_df = pro.daily(ts_code=code, start_date=start, end_date=end)
    stock_df.index = pd.to_datetime(stock_df.trade_date)
    stock_df = stock_df.sort_index()
    return stock_df



token = 'b40a758f8f7e194d6fa42c066c5593607ad20bb317d1c97a67dfd0d2'
pro = ts.pro_api(token)

start = '20220309'
end = '20220417'
# code = '603712.SH'
fee_rate = 0.0003
tax_rate = 0.001

df_code = get_allstock_code(exchange='', list_status='L', fields='ts_code, name')
# 不玩创业板和科创板
df_code = df_code[df_code.ts_code.str.startswith(('60', '00'))]
chose_df = pd.DataFrame()
# # 计算均线的周期尽量多
start = '20211122'
end = '20220416'
aga_code = []
for code in df_code.ts_code:
    df = get_stock_data(code, start, end)
    df = df[['ts_code', 'open', 'close', 'pct_chg', 'vol']]
    if len(df) > 60:
        df['30ma'] = df['close'].rolling(30).mean()
        df['60ma'] = df['close'].rolling(60).mean()
        df.dropna(inplace=True)
        print(code)
        date_list = list(df.index)
        df1 = pd.DataFrame()
        for date in date_list[:-10]:
            location = date_list.index(date)
            next_date = date_list[location + 9]
            if df.loc[date, 'pct_chg'] > 9.94:
                open = df.loc[date, 'open']
                close = df.loc[date, 'close']
                vol = df.loc[date, 'vol']
                ma_30 = df.loc[next_date, '30ma']
                ma_60 = df.loc[next_date, '60ma']
                df1 = df[date:next_date]
                max_close = df1.close.max()
                min_close = df1.close.min()
                # avg_close = df1.close.mean()
                max_vol = df1.vol.max()
                min_vol = df1.vol.min()
                if max_close < close * 1.10 and min_close > open*1.03 \
                   and max_vol < vol * 1.5 and min_close > ma_60 \
                   and min_close*1.02 > ma_30 > ma_60:
                    stock_code = df.loc[date, 'ts_code']
                    aga_code.append(stock_code)
print(aga_code)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存