利用tushare择时选股

‘’‘读取股票文件,分别刷选特定时间内 ’季度报表业绩为正,股价位于历史底部,趋势反转,排雷‘过后的优秀股票
1.业绩报表分档 每股收益(——0.2,0.2——0.5,0.5——0.7,0.7——1,1——);毛利率(——10%,10——30%,30——)
2.股价位于历史底部分档 30%-40%, 50%—70% , 80%-100%, 100%-
3.排雷指标:无诉讼案件,无股票质押,
‘’’

pro = ts.pro_api(‘xxxxxxxxxxxxxxxxxxxxxxx’)
stock_code=[]#符合精选条件的股票池
stock_code1=[]#符合净利润大于一千万条件的股票池
stock_code2=[]#符合防守反击条件的股票池
start_data =20190630 # input(‘请输入(年月日)开始时间’)
end_date =20210930# input(‘请输入(年月日)结束时间’)
end_time = 20211231#回测时间终点,为上市公司业绩报表之后的6个月
buy_time_list = []
sall_time_list = []
charge = 0.0016 #买卖的手续费,在卖出的时候一次性结算。
hand = 0
pro_count = 0# 统计盈利大于0的次数
max_interest = 0#最大盈利
max_loss = 0#最大回撤
intereat_list = [] #所有利润

for i in range(len(stock_code2)):
#获取上市公司发出公告后的收盘价
company_code = stock_code2[i]
print(‘-----------------------------------------------------------------’)
print(company_code)
df = pro.daily(ts_code=company_code,start_date=end_date, end_date=end_time,fields=‘close,trade_date’)
df = df.reindex(index=df.index[::-1])
df[‘trade_date’] = pd.to_datetime(df[‘trade_date’])
df.set_index(‘trade_date’, inplace=True)
#直接买
money = 100000
account = money
#买入点价格
price =df.iloc[0,0]
#账户资金最多买多少手股票
hand = money//(price100)
hand_count=hand
100
money = money - hand_count * price # 买进股票后钱包还剩多少钱
# 卖出时账户的资金
sall_price= df.iloc[-1,-1]
money = money + hand_count * df.iloc[-1,-1] - hand_count * df.iloc[-1,-1] * charge # 卖出后当前账户总额
interest = money-account
hand = 0 # 全仓卖
buy_time = df.index[0]
sall_time = df.index[-1]
buy_time_list.append(buy_time)
sall_time_list.append(sall_time)
intereat_list.append(interest)
if interest>0:
pro_count+=1

print('买入价格',price)
print( '卖出价格',sall_price)
print('交易收益',interest)

max_interest =max(intereat_list)
max_loss=min(intereat_list)
max_interest_ratio=max(intereat_list)/account
max_loss_ratio=min(intereat_list)/account
print(‘最大收益’, max_interest)
print(‘最大损失’, max_loss)

print(‘最大收益率{:.2%}’.format(max_interest_ratio))
print(‘最大损失率{:.2%}’.format(max_loss_ratio))
print(‘策略准确率{:.2%}’.format(pro_count/len(intereat_list)))

‘’’
# 可视化操作
plt.rcParams[‘font.sans-serif’] = [‘KaiTi’] # 解决中文乱码问题
# plt.figure(figsize=(8,10))

fig, ax = plt.subplots(1, 1)
ax.plot(df['2018':'2022']['open'], label='股价')
plt.plot(ema_5['2018':'2022'], label='5日均线')
plt.plot(ema_10['2018':'2022'], label='10日均线')
ax.scatter(buy_time, list_buy, c='r', s=10, label='买点')
ax.scatter(sall_time, list_sall, c='k', s=10, label='卖点')
# ax.plot(df['2019':'2020']['open'],label='股价')
plt.legend()  # 显示标签
fig1, ax1 = plt.subplots(1, 1)
plt.bar(sall_time, pro, label='收益值')
ax1.xaxis.set_major_locator(ticker.MultipleLocator(base=6))
plt.legend()  # 显示标签
fig2, ax2 = plt.subplots(1, 1)
plt.plot(sall_time, pro_list, label='收益率')
ax2.xaxis.set_major_locator(ticker.MultipleLocator(base=6))
plt.legend()  # 显示标签
ax.xaxis.set_major_locator(ticker.MultipleLocator(base=150))
plt.show()

‘’’

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值