本篇為個人測試記錄,記錄爬取連續一字板的股票及當時日期。
?
import
tushare as ts
import
pandas as pd
import
time
#
篩選一字板的策略
def
gp_rules(code):
#
獲取某只股票的歷史數據
data = ts.get_hist_data(code, start=
'
2018-01-01
'
, end=
'
2019-07-26
'
)
#
排除該時間段無數據的股票
if
data
is
None:
return
#
篩選表頭【開盤價,收盤價, 漲幅】
data_2 = data.iloc[:, [0, 2, 6
]]
#
篩選出漲幅大于9%且開盤價等于收盤價的股票,即一字漲停的股票(有待優化~)
data_3 = data_2[(data_2[
'
p_change
'
] > 9) & (data_2[
'
open
'
] == data_2[
'
close
'
])]
#
去除不存在一字板的股票(即空數據)
if
data_3.index
is
None:
return
line
=
len(data_3)
f, s
= 1
, 0
#
遍歷檢查是否連續的一字板
for
n
in
range(0, line):
#
檢查是否連續的一字板
if
int(data_3[
'
open
'
][n] * (data_3[
'
p_change
'
][n]/100 + 1)) == int(data_3[
'
open
'
][n-1
]):
f
= f + 1
#
若4連或4連以上一字板則打印代碼及當時日期
if
f >= 5
and
s ==
0:
print
(code, data_3.index[n-4
])
s
= 1
else
:
f
= 1
#
篩選股票代碼
def
get_code():
# 自己獲取
TOKEN
=
'xxxx
'
pro
= ts.pro_api(token=
TOKEN)
#
篩選代碼,上市日期
get_codedata = pro.stock_basic(exchange=
''
, list_status=
'
L
'
, fields=
'
symbol, list_date
'
)
#
將list_date改為日期格式并轉為索引
get_codedata[
'
list_date
'
] = pd.to_datetime(get_codedata[
'
list_date
'
])
get_codedata
= get_codedata.set_index(
'
list_date
'
)
#
篩選2018-01-01前的數據,取code,轉為list
symbol_list = get_codedata[:
'
2018-01-01
'
][
'
symbol
'
].tolist()
return
symbol_list
#
測試運行時間
start =
time.clock()
code_list
=
get_code()
print
(
"
正在爬取符合策略的股票,請耐心等待......
"
)
for
code
in
list(code_list):
time.sleep(
1.4
)
gp_rules(code)
print
(
"
爬取篩選完成!
"
)
end
=
time.clock()
print
(
'
運行時間:%s Seconds
'
% (end-start))
?
?
如有錯誤,請及時指正,謝謝!
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
