使用tushare获取股票列表数据,使用多线程计算所有股票最近3个月每日不低于开盘价3%的股票数量,写一个接口函数
时间: 2024-02-06 16:12:30 浏览: 312
好的,这是一个获取股票列表数据并使用多线程计算股票数据的问题,并且需要编写接口函数。以下是示例代码:
```python
import tushare as ts
import datetime
import threading
# 获取所有股票的代码和名称
def get_stock_list():
stock_list = ts.get_stock_basics()
return stock_list
# 定义线程函数
def calc_stock_count(code_list, start, end, result):
count = 0
for code in code_list[start:end]:
data = ts.get_hist_data(code)
if data is None:
continue
for date, row in data.iterrows():
if date < three_month_ago:
break
if row['open'] * 1.03 <= row['close'] and row['close'] != 0 and row['open'] != 0 and row['high'] != 0 and row['low'] != 0:
count += 1
result.append(count)
# 定义接口函数
def calc_stock_count_interface():
# 获取当前日期
today = datetime.datetime.now().strftime('%Y-%m-%d')
# 获取三个月前的日期
three_month_ago = (datetime.datetime.now() - datetime.timedelta(days=90)).strftime('%Y-%m-%d')
# 获取股票列表
stock_list = get_stock_list()
# 定义线程数和每个线程处理的数据量
thread_num = 4
batch_size = len(stock_list) // thread_num
# 定义结果列表和线程列表
result = []
threads = []
# 创建线程并启动
for i in range(thread_num):
start = i * batch_size
end = start + batch_size
if i == thread_num - 1:
end = len(stock_list)
t = threading.Thread(target=calc_stock_count, args=(stock_list.index[start:end], start, end, result))
threads.append(t)
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
# 计算最终结果
count = sum(result)
return count
# 调用接口函数并打印结果
count = calc_stock_count_interface()
print('最近三个月每日不低于开盘价3%的股票数量为:', count)
```
以上是一个获取股票列表数据并使用多线程计算股票数据的接口函数,我们可以在其他程序中调用该函数来获取结果。
注:以上代码仅供参考,实际使用时需要根据自己的需求进行修改。
阅读全文