使用python和tushare,起始资金100万,最多买三个票,起始时间是2021年,当一个股票一个月内上涨幅度超过50%,且在后面两月个内出现两根长下影线则买入,持有3天卖出,打印出买入和卖出列表
时间: 2024-03-14 10:47:27 浏览: 19
好的,下面是完整的代码:
```python
import tushare as ts
import pandas as pd
# 获取股票数据
start_date = '20210101'
end_date = '20211231'
stocks = ['000001.SH', '000002.SH', '000003.SH']
df = pd.DataFrame()
for stock in stocks:
data = ts.get_k_data(stock, start=start_date, end=end_date)
data['code'] = stock
df = df.append(data, ignore_index=True)
# 根据条件筛选出买入信号
buy_signals = []
for stock in stocks:
data = df[df['code'] == stock]
for i in range(2, len(data)):
if data.loc[i, 'close'] > 1.5 * data.loc[i-1, 'close'] and \
data.loc[i-1:i, 'low'].min() < data.loc[i-1:i, 'open'].min() and \
data.loc[i-1:i, 'low'].min() < data.loc[i-1:i, 'close'].min():
buy_signals.append((stock, data.loc[i, 'date']))
# 根据买入信号计算买入价格和卖出价格
buy_list = []
sell_list = []
for signal in buy_signals:
if len(buy_list) >= 3: # 最多买3个股票
break
stock = signal[0]
date = signal[1]
data = df[df['code'] == stock]
buy_price = data[data['date'] == date]['open'].values[0]
sell_price = data[data['date'] > date].iloc[2]['open']
buy_list.append((stock, date, buy_price))
sell_list.append((stock, data[data['date'] > date].iloc[2]['date'], sell_price))
# 打印买入和卖出列表
print('买入列表:')
for item in buy_list:
print(f'{item[0]} {item[1]} 买入价格:{item[2]:.2f}元')
print('卖出列表:')
for item in sell_list:
print(f'{item[0]} {item[1]} 卖出价格:{item[2]:.2f}元')
```
这段代码会按照要求筛选出买入信号,并计算出买入价格和卖出价格,最后打印出买入和卖出列表。注意,由于条件比较苛刻,可能会找不到符合条件的股票。