最近炒股是买什么就跌,一直是亏损哎,哭转存失败重新上传取消,作为学过python的人来讲怎么能容忍,之前也炒过股票觉得用阳包阴这样的k线来选出来的股票还不错。于是说做就做,我可以用python来写一个选股的程序。
好!有了idea是第一步,要怎么实现呢,网上找了资料,大部分都是用tushare库来获取股票数据的。于是动起来
写了一个直接通过接口获取数据的程序,从3504只股票里面选取出来我需要的股票,执行时间居然需要二十多分钟,
太慢!差评!同样不能容忍。
因此,我想到了数据库。我就想能不能将所有的A股数据添加进数据库里面,我每次执行的时候直接从数据库里面去取数据,
这样会大大加快了我的执行速度
于是说干就干,先理清楚思路。
1.需要获取到所有股票的代码跟名称等。于是有了write_allstock这个文件
2.需要从所有的股票里面找出阳包阴的股票,以及计算出它们的收益率的话,我需要所有股票的一段时间的行情
于是有了creat_everydatebase
3.有了这一段时间的数据,但是这些数据时死了,不会每天给我自动更新,因此我需要每天定时的将当天的数据加
进去。所以写了write_everyday
4.好了,所有的股票数据一段时间的行情而且会每天定时更新都存在我的数据库里面了,就需要去统计今天有哪些股票满足
阳包阴的情况于是产生了find_stock
5.虽然找到了当天满足阳包阴的股票了,但是我心里还是没有谱,我想对比一下这个股票之前出现这种情况的时候如果
第二天买入的话到底有多少收益,所以有了win_rates
6.好了整体框架和思路都出来了,那么有两个文件需要每个交易日都执行的,所以将它们绑在一起,而且每天的报告出来
之后也不一定都有时间打开电脑去看,所以加入了通过邮件自动发送当天报告到邮箱的功能。就有了run_all
至于其它的几个文件,打开看看下面都有解释和注释
目前我的选股条件是阳包阴,而且当天要涨停。
下面送上代码。执行代码的前提是,需要有python,需要安装本地mysql数据库,还需要导入mysql、tushare、pandas、lxml、bs4等需要支持的python库。
另外:完整项目也可以访问我的github,地址:https://github.com/cat-steel/stock_pick
整个架构就是这样子
write_allstock.py
import mysql.connector
import tushare as ts
#将所有的股票名称和股票代码、行业、地区写入到名为allstock的表中,这个文件只需要执行一次
#通过tushare库获取所有的A股列表
stock_info = ts.get_stock_basics()
#连接数据库
conn = mysql.connector.connect(user='root',password='password',database='test')
cursor = conn.cursor()
codes = stock_info.index
names = stock_info.name
industrys = stock_info.industry
areas = stock_info.area
#通过for循环遍历所有股票,然后拆分获取到需要的列,将数据写入到数据库中
a=0
for i in range(0,len(stock_info)):
cursor.execute('insert into allstock (code,name,industry,area) values (%s,%s,%s,%s)',(codes[i],names[i],industrys[i],areas[i]))
a += 1
#统计所有A股数量
print('共获取到%d支股票'%a)
conn.commit()
cursor.close()
conn.close()
creat_everydatebase.py
import tushare as ts
import mysql.connector
import re,time
#创建所有股票的表格以及插入每支股票的近段时间的行情,这个文件只需要执行一次!!!
#想要写入哪一段时间的数据只需要修改starttime,endtime的时间就可以了
def everdate(starttime,endtime):
#获取所有有股票
stock_info = ts.get_stock_basics()
#连接数据库
conn = mysql.connector.connec