使用python和tushare,起始资金100万,最多买三个票,起始时间是2021年,当一个股票上涨幅度超过50%,且在后面两月个内出现两根长下影线则买入,持有3天卖出,打印出买入和卖出列表
时间: 2024-03-14 18:47:07 浏览: 40
好的,让我来解答这个问题。
首先,我们需要导入需要的库,并且设置起始资金:
```python
import tushare as ts
import datetime
# 设置起始资金为100万
capital = 1000000
```
然后,我们需要获取股票数据和计算涨幅:
```python
# 获取股票数据
pro = ts.pro_api()
start_date = '20210101'
end_date = datetime.datetime.now().strftime('%Y%m%d')
df = pro.index_daily(ts_code='000001.SH', start_date=start_date, end_date=end_date)
# 计算涨幅
df['pct_change'] = df['close'].pct_change() * 100
```
接下来,我们需要编写一个函数来判断是否符合买入条件:
```python
def check_buy_condition(df):
# 判断涨幅是否超过50%
if df['pct_change'] > 50:
# 判断后面两个月是否出现两根长下影线
for i in range(1, 3):
if df['high'].iloc[-i] - df['low'].iloc[-i] > 2 * (df['close'].iloc[-i] - df['open'].iloc[-i]):
for j in range(1, 4):
if df['open'].iloc[-j] < df['close'].iloc[-j]:
return True
return False
```
最后,我们需要编写主程序,遍历股票数据,判断是否符合买入条件,并且记录买入和卖出的列表:
```python
# 初始化股票数量和持仓天数
stock_num = 0
hold_days = 0
# 记录买入和卖出的列表
buy_list = []
sell_list = []
# 遍历股票数据
for index, row in df.iterrows():
# 判断是否符合买入条件
if check_buy_condition(row):
# 计算可以购买的股票数量
buy_num = min(3, int(capital / row['open'] / 100) * 100)
if buy_num > 0:
# 更新持仓天数和股票数量
stock_num += buy_num
hold_days = 3
capital -= buy_num * row['open']
buy_list.append({'date': row['trade_date'], 'price': row['open'], 'num': buy_num})
# 判断是否需要卖出
if stock_num > 0 and hold_days == 0:
capital += stock_num * row['close']
sell_list.append({'date': row['trade_date'], 'price': row['close'], 'num': stock_num})
stock_num = 0
# 更新持仓天数
if hold_days > 0:
hold_days -= 1
# 打印出买入和卖出列表
print('买入列表:')
for item in buy_list:
print('日期:{},价格:{},数量:{}'.format(item['date'], item['price'], item['num']))
print('卖出列表:')
for item in sell_list:
print('日期:{},价格:{},数量:{}'.format(item['date'], item['price'], item['num']))
```
完整代码如下:
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)