所謂跌久必漲, 事不過三, 只要不是垃圾股, 持續(xù)跌, 就大概率會(huì)漲起來
會(huì)用到的財(cái)經(jīng)數(shù)據(jù)接口, 1, tushare, https://waditu.com/, 注冊(cè)獲取自己的token,

WX20220301-135616@2x.png
2, 現(xiàn)在tushare好多接口都提高權(quán)限了, 所以需要第2個(gè),baostock, http://baostock.com/baostock/index.php/%E9%A6%96%E9%A1%B5, 當(dāng)然還有第3個(gè)可選, 聚寬,https://www.joinquant.com/:
首先, 獲取交易日, 確保n天里沒有非交易日:

WX20220301-141406@2x.png
有了交易日, 我們就可以獲取這些天全部下跌的股票了,獲取n天里每個(gè)交易日下跌的股票, 考慮到韭菜資金少, 你可以選擇自己能買得起的股票價(jià)格區(qū)間, 土豪默認(rèn)全部:

WX20220301-155413@2x.png
取每天的交集, 最后輸出dataframe:

WX20220301-155505@2x.png
#找到連跌n天的股票
import tushare as ts
ts.set_token('4880ea14a96548a小星星5410c6230c4de11622188')
pro=ts.pro_api()
import baostock as bs
# tushare通用沒有-, baostock通用有-
todaydate = time.strftime('%Y-%m-%d',time.localtime(time.time()))
def get_tradedate(aimdate,n,start_date):
'''
獲取交易日
aimdate: 目標(biāo)交易日 如, 2022-03-01, 默認(rèn)今天
n: 從今天算獲取今天之前的幾天, 默認(rèn)5
start_date: 開始日期, 默認(rèn)2022-02-01
'''
# aimdate,n,start_date='2022-02-27',5,'2022-02-01'
lg = bs.login()
rs = bs.query_trade_dates(start_date=start_date, end_date=aimdate)
data_list = []
while (rs.error_code == '0') & rs.next():
# 獲取一條記錄,將記錄合并在一起
data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
result=result[result['is_trading_day']=='1']
trade_list=list(result['calendar_date'])
# 獲取目標(biāo)日前n個(gè)交易日
trade_list=trade_list[len(trade_list)-n:]
trade_list=[i.replace('-','') for i in trade_list]
return trade_list
def get_ticket(trade_list,high_p,low_p):
'''
根據(jù)交易天數(shù), 獲取全部下跌的
'''
l_ts0=get_day_tickets(trade_list[0].replace('-',''),high_p=9999,low_p=0.1)
for trade_date in trade_list[1:]:
trade_date=trade_date.replace('-','')# tushare通用沒有-, baostock通用有-
l_ts=get_day_tickets(trade_date,high_p,low_p)
l_ts0=list(set(l_ts0).intersection(l_ts))# 交集
l_ts0=[(i.split('.')[0]) for i in l_ts0]
# 代碼和名稱對(duì)應(yīng)
#查詢當(dāng)天的全部正常交易的股票
stock_rs = bs.query_all_stock(trade_list[0])
stock_df = stock_rs.get_data()
stock_df['code'] = stock_df['code'].apply(lambda i:i.split('.')[1])
df=pd.DataFrame({'code':l_ts0})
df=df.merge(stock_df,how='left',on='code')
return df
def get_day_tickets(trade_date,high_p,low_p):
'''獲取該交易日的下跌股票'''
# trade_date=trade_list[0]
df = pro.daily(trade_date=trade_date)
df=df[df['change']<0]
# 獲取1元~100元的
df=df[(df['close']<high_p)&(df['close']>low_p)]
# 除去創(chuàng)業(yè)板和科創(chuàng)板, 大部分韭菜只能買滬深主板的
df['is_cyb']=df['ts_code'].apply(lambda i:0 if i.startswith('3') or i.startswith('688') or i.startswith('4') or i.startswith('8') else 1)
df=df[df['is_cyb']==1]
l_ts=list(df['ts_code'])
return l_ts
def run(aimdate=todaydate,high_p=9999,low_p=0.1,n=5):
start_date='2022-02-01'
trade_list=get_tradedate(aimdate,n,start_date)
l_ts0=get_ticket(trade_list,high_p,low_p)
return l_ts0
if __name__=='__main__':
aimdate=None
l_ts0=run()
試試看

WX20220301-162123@2x.png

WX20220301-162232@2x.png
本文純屬娛樂, 如依據(jù)此文投資虧損, 后果自負(fù)哈哈哈