mirror of
https://github.com/dupenf/stock-vit.git
synced 2024-11-25 16:35:10 +08:00
121 lines
3.7 KiB
Python
121 lines
3.7 KiB
Python
import baostock as bs
|
||
import pandas as pd
|
||
|
||
#### 登陆系统 ####
|
||
# lg = bs.login()
|
||
# 显示登陆返回信息
|
||
# print("login respond error_code:" + lg.error_code)
|
||
# print("login respond error_msg:" + lg.error_msg)
|
||
|
||
|
||
|
||
|
||
def get_all_codes(save_path="./datasets"):
|
||
# s = bs.query_all_stock()
|
||
# s_df = s.get_data()
|
||
# s_df.to_csv("./datasets/all_codes.csv", encoding="utf-8", index=False)
|
||
#### 登陆系统 ####
|
||
lg = bs.login()
|
||
# 显示登陆返回信息
|
||
print("login respond error_code:" + lg.error_code)
|
||
print("login respond error_msg:" + lg.error_msg)
|
||
|
||
#### 获取证券信息 ####
|
||
rs = bs.query_all_stock(day="2024-06-20")
|
||
print("query_all_stock respond error_code:" + rs.error_code)
|
||
print("query_all_stock respond error_msg:" + rs.error_msg)
|
||
|
||
#### 打印结果集 ####
|
||
data_list = []
|
||
while (rs.error_code == "0") & rs.next():
|
||
# 获取一条记录,将记录合并在一起
|
||
data_list.append(rs.get_row_data())
|
||
result = pd.DataFrame(data_list, columns=rs.fields)
|
||
|
||
#### 结果集输出到csv文件 ####
|
||
result.to_csv(save_path+"/all_codes.csv", encoding="utf-8", index=False)
|
||
print(result)
|
||
|
||
#### 登出系统 ####
|
||
bs.logout()
|
||
|
||
|
||
def download_code_hist(
|
||
save_path="./datasets/origins",
|
||
code="sh.600000",
|
||
start_date="1999-09-01",
|
||
end_date="2024-06-30",
|
||
freq="d",
|
||
adjustflag="1"
|
||
):
|
||
|
||
#### 获取沪深A股历史K线数据 ####
|
||
# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
|
||
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
|
||
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
|
||
fields = "date,time,code,open,high,low,close,volume,adjustflag",
|
||
if freq == "d":
|
||
fields = "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST"
|
||
rs = bs.query_history_k_data_plus(
|
||
code,
|
||
# "date,time,code,open,high,low,close,volume,adjustflag",
|
||
# "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,isST",
|
||
fields=fields,
|
||
start_date=start_date,
|
||
end_date=end_date,
|
||
frequency=freq,
|
||
adjustflag=adjustflag, # hfq
|
||
)
|
||
|
||
#### 打印结果集 ####
|
||
data_list = []
|
||
while (rs.error_code == "0") & rs.next():
|
||
# 获取一条记录,将记录合并在一起
|
||
data_list.append(rs.get_row_data())
|
||
result = pd.DataFrame(data_list, columns=rs.fields)
|
||
|
||
# print(result)
|
||
|
||
#### 结果集输出到csv文件 ####
|
||
filename = save_path + "/" + code + ".csv"
|
||
result.to_csv(filename, index=True)
|
||
# print(result)
|
||
|
||
|
||
def download_codes(save_path="./datasets/origins", filters=[],freq="d",adjustflag="1"):
|
||
codes = pd.read_csv("./datasets/all_codes.csv")
|
||
codes = codes["code"].tolist()
|
||
|
||
lg = bs.login()
|
||
# 显示登陆返回信息
|
||
print("login respond error_code:" + lg.error_code)
|
||
print("login respond error_msg:" + lg.error_msg)
|
||
|
||
for code in codes:
|
||
ignore = True
|
||
for f in filters:
|
||
if code.startswith(f):
|
||
ignore = False
|
||
if ignore:
|
||
continue
|
||
|
||
print(code)
|
||
# if code < "sz.300138":
|
||
# continue
|
||
|
||
download_code_hist(save_path=save_path ,code=code,freq=freq,adjustflag=adjustflag)
|
||
### 登出系统 ####
|
||
bs.logout()
|
||
|
||
|
||
# get_all_codes(save_path="./datasets")
|
||
download_codes(
|
||
save_path="./datasets/cyday",
|
||
filters=["sh.68","sz.3"],
|
||
# filters=["sz.301"]
|
||
freq="d",
|
||
adjustflag="1" # hfq
|
||
)
|
||
|
||
|