文章目录
前言python总结前言
`这段代码的设计思路是遍历所有股票,获取它们在某一时间段内的历史行情数据,并基于收盘价计算该股票的上下轨道(阻力位与支撑位)以及均值与标准差。然后,根据最新的收盘价与上下轨道进行比较,判断是否建议买入、卖出或观望,并将结果保存到一个文本文件中。其中,为了防止频繁调用 Tushare 接口导致限制,代码还设置了计数器和时间延迟。具体来说,当循环处理了 800 个股票时,代码会休眠 60 秒,然后重置计数器,重新开始循环处理股票。
查询dqnapi接口域名:/
在这里插入图片描述
pro.stock_basic dqnapi号:100.3568/.1_v1
python
import tushare as tsimport pandas as pdfrom time import sleep# 获取 Tushare 账户 TOKENpro = ts.pro_api(token='')# 获取所有股票的基本信息stock_list = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name')count = 0 # 循环遍历每个股票for code in stock_list['ts_code']:count += 1if count >= 800:sleep(60)count = 0try:print(code)# 获取股票代码为 code 的历史行情数据df = pro.daily(ts_code=code, start_date='', end_date='0620')df = df.sort_values(by='trade_date')# 计算当前收盘价和前一天收盘价的比率,并计算均值与标准差df['close_rate'] = df['close'] / df['close'].shift(1)rolling_mean = df['close_rate'].rolling(window=20).mean()rolling_std = df['close_rate'].rolling(window=20).std()# 计算上下轨道(阻力位与支撑位),并去掉 NaN 值upper_band = rolling_mean + 2 * rolling_stdlower_band = rolling_mean - 2 * rolling_stdupper_band = upper_band.dropna()lower_band = lower_band.dropna()# 获取最新的收盘价last_price = df['close'].iloc[-1]# 判断最新的收盘价是否突破了上下轨道if last_price > upper_band.iloc[-1]:result = f"{code} 价格突破上轨道,建议买入!"elif last_price < lower_band.iloc[-1]:result = f"{code} 价格跌破下轨道,建议卖出!"else:result = f"{code} 价格未突破上下轨道,观望!"# 将结果保存到文件中with open('tupo.txt', 'a+') as f:f.write(result + '\n')except Exception as e:print(f"{code} 数据获取失败:{e}")
总结
000001.SZ 价格突破上轨道,建议买入!
000002.SZ 价格突破上轨道,建议买入!
000004.SZ 价格突破上轨道,建议买入!
000005.SZ 价格突破上轨道,建议买入!
000006.SZ 价格突破上轨道,建议买入!
000007.SZ 价格突破上轨道,建议买入!
000008.SZ 价格突破上轨道,建议买入!
000009.SZ 价格突破上轨道,建议买入!
000010.SZ 价格突破上轨道,建议买入!
000011.SZ 价格突破上轨道,建议买入!
000012.SZ 价格突破上轨道,建议买入!
…