我对股票不感兴趣,我感兴趣的是技术。
股票数据来源自开源社区tushare,建议自己注册一个token使用,内置的token是我的,超过使用量会被限制,token注册地址:https://tushare.pro/register?reg=591167
使用方法:运行 app.py 文件,在浏览器中访问:http://127.0.0.1:8888/ 即可使用。【文末获取下载地址】
交易日期分为开始日期和结束日期,传入的日期格式为:%Y%m%d,例如:20230808
开始日期如果选择的有则使用传入数据,否则更改为默认值:365天前的日期,核心代码:
# 判断传入的时间,如果为空替换为默认值
if start_time:
start_time = start_time.split("T")[0].replace("-", "")
else:
start_time = datetime.strftime(datetime.now() - timedelta(365), "%Y%m%d")
结束日期如果选择的有则使用传入数据,否则更改为默认值:昨天的日期,核心代码:
if end_time:
end_time = end_time.split("T")[0].replace("-", "")
else:
end_time = datetime.strftime(datetime.now() - timedelta(1), "%Y%m%d")
这里有一个问题还未解决,输入股票代码必须加上后缀,比如: 000001.SZ、600000.SH。目前还未想好如何修改。
股票代码为必填值,不填无法绘制k线图和展示、下载数据。
获取股票代码:
import tushare as ts
ts.set_token(ts_token)
pro = ts.pro_api()
df = pro.daily(ts_code=code, start_date=start_date, end_date=end_date).sort_values(by="trade_date")
交易日期和股票代码填写完成后,就可以点击保存数据。数据默认保存在代码【app.exe】同一级下的名为【股票数据】的文件夹里。
保存数据关键代码:
file_name = f"{code}_{start_date}_{end_date}_数据.csv"
file_path = path.join(path.abspath(path.dirname(getcwd())), "股票数据")
if not path.exists(file_path):
mkdir(file_path)
csv_file_path = path.join(file_path, file_name)
df2.to_csv(csv_file_path, index=False)
修改TOKEN:使用自己在tushare上注册的TOKEN,注册地址:https://tushare.pro/register?reg=591167 ,将token复制并粘贴进去即可。
重置TOKEN:token填写有误,或者无法查询数据,可以使用重置token,使用工具自带的token查询数据。【建议修改为自己注册的token】
修改TOKEN关键代码:
token_file = path.join(current_dir, "token.txt")
with open(token_file, "r", encoding="utf-8") as f:
ts_token = f.read()
目前只支持查询股票代码的K线图,主要数据有:收盘点位、开盘点位、最高点位、最低点位、MA5、MA10、MA20、MA30。以及在交易时间内的最高收盘点位和最低收盘点位。后续考虑添加其他数据图表。
移动平均值的计算方法:
{
"MA5": df2["收盘价"].rolling(4).mean().map(lambda x: round(x, 3)).fillna("-").tolist(),
"MA10": df2["收盘价"].rolling(9).mean().map(lambda x: round(x, 3)).fillna("-").tolist(),
"MA20": df2["收盘价"].rolling(19).mean().map(lambda x: round(x, 3)).fillna("-").tolist(),
"MA30": df2["收盘价"].rolling(29).mean().map(lambda x: round(x, 3)).fillna("-").tolist(),
}
主要展示数据为:股票代码、交易日期、开盘价、最高价、最低价、收盘价、昨收价(前复权)、涨跌额、涨跌幅、成交量 (手)、成交额 (千元)
主要使用的技术有:
flask搭建后端接口,主要接口有:
element搭建前端页面,vue用于前后端数据交互。
使用pyinstaller将代码打包为可执行的软件,打包命令如下:
pyinstaller -F --add-data="static;static" --add-data="templates;templates" --add-data="token.txt;." app.py
源码地址:https://pan.baidu.com/s/1hMJWW2bwsEDXsYJ4WZadUQ?pwd=ihfa