使用python和tushare,选取前三年内的任意一天,如果当日上涨家数小于1700家且跌幅超过5%则买入,打印买入列表

时间: 2024-03-23 21:40:26 浏览: 21
好的,我了解了你的问题。在回答你的问题之前,需要先安装tushare库,你可以使用以下命令进行安装: ``` pip install tushare ``` 接下来,你可以使用以下代码来实现你的需求: ```python import tushare as ts # 设置tushare pro的token ts.set_token('your_token') # 初始化pro接口 pro = ts.pro_api() # 获取前三年的数据 df = pro.daily(trade_date='20200819', start_date='20170101', end_date='20191231') # 筛选符合条件的股票 buy_list = df[(df['pct_chg'] < -5) & (df['pct_chg'] != -100)].groupby('trade_date').count() buy_list = buy_list[buy_list['ts_code'] < 1700].index.tolist() # 打印买入列表 print('买入列表:', buy_list) ``` 需要注意的是,上述代码中的日期是设置为2020年8月19日,你可以将其修改为任意一个你需要的日期。此外,tushare的数据是需要token的,你需要去tushare官网获取自己的token并替换代码中的`your_token`。
相关问题

使用python和tushare,选取前三年内的任意一天,如果当日上涨家数小于1700家,买入当日前3个月内最高点比最低点超过100%的,起始资金1000万,每次最多买5只,从今天开始回测三年,打印出结果和收益曲线

好的,我可以帮您回答这个问题,但是在此之前,我需要先确认您是否已经安装了tushare库和其他必要的库。如果您还没有安装,请先安装。另外,由于我无法获取实时数据,所以我们只能使用历史数据进行回测。 以下是解决方案: ```python import tushare as ts import datetime as dt # 获取三年前的日期 start_date = (dt.date.today() - dt.timedelta(days=3*365)).strftime('%Y-%m-%d') # 获取当日涨跌幅数据 data = ts.get_today_all() up_num = len(data[data.changepercent > 0]) # 如果当日上涨家数小于1700家,则进行操作 if up_num < 1700: # 获取前3个月内最高点比最低点超过100%的股票数据 end_date = dt.date.today().strftime('%Y-%m-%d') start_date_3m = (dt.date.today() - dt.timedelta(days=3*30)).strftime('%Y-%m-%d') data = ts.pro_bar(ts_code='', adj='qfq', start_date=start_date_3m, end_date=end_date) data = data[data['trade_date'] >= start_date] data['high_low_ratio'] = (data['high'] - data['low']) / data['low'] data = data[data['high_low_ratio'] > 1] # 对数据按最高点比最低点从大到小排序 data = data.sort_values(by='high_low_ratio', ascending=False) data = data.head(5) # 最多买5只 # 计算每只股票的买入数量 total_money = 10000000 buy_num = [int(total_money / 5 / p) for p in data['close']] buy_num = [min(n, 100000 // p) for n, p in zip(buy_num, data['close'])] # 最多买100000元 # 计算收益率曲线 buy_price = data['close'] * buy_num buy_price_total = buy_price.sum() sell_price_total = ((data['close'] + data['pct_chg'] / 100) * buy_num).sum() profit = sell_price_total - buy_price_total result = '买入股票的代码为:{}\n'.format(data['ts_code'].tolist()) result += '买入每只股票的数量为:{}\n'.format(buy_num) result += '买入每只股票的价格为:{}\n'.format(data['close'].tolist()) result += '总买入金额为:{}元\n'.format(buy_price_total) result += '总卖出金额为:{}元\n'.format(sell_price_total) result += '总收益为:{}元\n'.format(profit) print(result) ``` 请注意,由于我无法获取实时数据,以上代码仅供参考。在实际应用中,您需要根据实际情况进行修改。

使用python和tushare,遍历前三年,打印出上涨家数小于1700的日期

好的,我可以帮你解答这个问题。 首先,需要安装tushare库,可以在命令行中输入以下命令进行安装: ``` pip install tushare ``` 接下来,你可以使用以下代码来实现你的需求: ```python import tushare as ts # 获取前三年的日期列表 date_list = ts.trade_cal().loc[ts.trade_cal().calendarDate.apply(lambda x: int(x[:4])) >= (ts.datetime.datetime.now().year - 3)].calendarDate.tolist() # 遍历日期列表 for date in date_list: # 获取当日涨跌幅数据 data = ts.get_today_all(date=date) # 统计上涨家数 rising_count = len(data[data.changepercent > 0]) # 判断上涨家数是否小于1700 if rising_count < 1700: print(date) ``` 解释一下代码: - `ts.trade_cal()`:获取交易日历数据,包含日期和是否为交易日等信息。 - `calendarDate.apply(lambda x: int(x[:4])) >= (ts.datetime.datetime.now().year - 3)`:使用 `apply()` 方法对日期进行处理,只保留年份,并判断是否在前三年内。 - `tolist()`:将日期转为列表形式。 - `ts.get_today_all(date=date)`:获取指定日期的所有股票的涨跌幅数据。 - `data[data.changepercent > 0]`:选取涨跌幅大于0的数据。 - `len()`:统计数据数量。 - `if rising_count < 1700:`:判断上涨家数是否小于1700。 希望能够帮助到你!

相关推荐

最新推荐

recommend-type

Python实现的当前时间多加一天、一小时、一分钟操作示例

主要介绍了Python实现的当前时间多加一天、一小时、一分钟操作,结合实例形式分析了Python基于datetime模块进行日期时间操作相关使用技巧,需要的朋友可以参考下
recommend-type

python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

主要介绍了python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性,需要的朋友可以参考下
recommend-type

python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案

主要介绍了python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例

主要介绍了python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例,需要的朋友可以参考下
recommend-type

python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例

主要介绍了python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。