30天学会量化交易模型 Day04
tushare获取破新高的股票
股市有句话,新高后有新高。
因为新高后说明消化了前面的套牢盘。 所以这个时候的阻力很小。
下面使用一个例子来用代码获取当天创新高的股票。
使用的是tushare
可以修改 函数 is_break_high(EachStockID,60) 中的60 为破多少天内的新高。
上一篇:30天学会量化交易模型 Day03
http://www.30daydo.com/article/15
下一篇: 30天学会量化交易模型 Day05 (tushare数据写入SQLite)
http://www.30daydo.com/article/73
股市有句话,新高后有新高。
因为新高后说明消化了前面的套牢盘。 所以这个时候的阻力很小。
下面使用一个例子来用代码获取当天创新高的股票。
使用的是tushare
#-*-coding=utf-8-*-
__author__ = 'rocky'
'''
http://30daydo.com
weigesysu@qq.com
'''
#获取破指定天数内的新高 比如破60日新高
import tushare as ts
import datetime
info=ts.get_stock_basics()
def loop_all_stocks():
for EachStockID in info.index:
if is_break_high(EachStockID,60):
print "High price on",
print EachStockID,
print info.ix[EachStockID]['name'].decode('utf-8')
def is_break_high(stockID,days):
end_day=datetime.date(datetime.date.today().year,datetime.date.today().month,datetime.date.today().day)
days=days*7/5
#考虑到周六日非交易
start_day=end_day-datetime.timedelta(days)
start_day=start_day.strftime("%Y-%m-%d")
end_day=end_day.strftime("%Y-%m-%d")
df=ts.get_h_data(stockID,start=start_day,end=end_day)
period_high=df['high'].max()
#print period_high
today_high=df.iloc[0]['high']
#这里不能直接用 .values
#如果用的df【:1】 就需要用.values
#print today_high
if today_high>=period_high:
return True
else:
return False
loop_all_stocks()
可以修改 函数 is_break_high(EachStockID,60) 中的60 为破多少天内的新高。
上一篇:30天学会量化交易模型 Day03
http://www.30daydo.com/article/15
下一篇: 30天学会量化交易模型 Day05 (tushare数据写入SQLite)
http://www.30daydo.com/article/73
4 个评论
非常谢谢楼主,我复制了这段代码测试,怎么会报错呢?SyntaxError: multiple statements found while compiling a single statement。。。是我软件哪里设置不对吗?
楼主,谢谢你的分享,遇到一个问题如下,请指教一二
[Getting data:]#High price on
600119
长江投资
[Getting data:]#High price on
603128
华贸物流
[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]HTTP Error 456:
HTTP Error 456:
HTTP Error 456:
Traceback (most recent call last):
File "G:/股票新高.py", line 44, in <module>
loop_all_stocks()
File "G:/股票新高.py", line 15, in loop_all_stocks
if is_break_high(EachStockID,60):
File "G:/股票新高.py", line 31, in is_break_high
df=ts.get_h_data(stockID,start=start_day,end=end_day)
File "E:\python\lib\site-packages\tushare\stock\trading.py", line 436, in get_h_data
retry_count, pause)
File "E:\python\lib\site-packages\tushare\stock\trading.py", line 576, in _parse_fq_data
raise IOError(ct.NETWORK_URL_ERROR_MSG)
OSError: 获取失败,请检查网络.
[Getting data:]#High price on
600119
长江投资
[Getting data:]#High price on
603128
华贸物流
[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]#[Getting data:]HTTP Error 456:
HTTP Error 456:
HTTP Error 456:
Traceback (most recent call last):
File "G:/股票新高.py", line 44, in <module>
loop_all_stocks()
File "G:/股票新高.py", line 15, in loop_all_stocks
if is_break_high(EachStockID,60):
File "G:/股票新高.py", line 31, in is_break_high
df=ts.get_h_data(stockID,start=start_day,end=end_day)
File "E:\python\lib\site-packages\tushare\stock\trading.py", line 436, in get_h_data
retry_count, pause)
File "E:\python\lib\site-packages\tushare\stock\trading.py", line 576, in _parse_fq_data
raise IOError(ct.NETWORK_URL_ERROR_MSG)
OSError: 获取失败,请检查网络.