龙虎榜
文件:ToolsLbhData.py
逻辑:龙虎榜
数据:龙虎榜
龙虎榜输出
getlbhyyb: 得到龙虎榜正负反馈营业部
数据来源: 东方财富
数据接口: akshare
声明
getlbhyyb(count01=5, count03=15, count06=30, count12=60, renew=True, client=DATABASE)
入口参数
- count01=5,上榜近一个月交易次数
- count03=15,上榜近三个月交易次数
- count06=30,上榜近六个月交易次数
- count12=60,上榜近十二个月交易次数
- renew=True,是否临时保存到 redis,调试的时候使用
返回:正负反馈营业部列表和低/高收益营业部列表
- DataFrame,负反馈营业部列表。用于龙虎榜营业部反馈统计。
'营业部名称', '营业部'- DataFrame,正反馈营业部列表。用于龙虎榜营业部反馈统计。
'营业部名称', '营业部'- DataFrame,低收益营业部列表。用于龙虎榜营业部跟踪。
'营业部名称', '营业部'- DataFrame,高收益营业部列表。用于龙虎榜营业部跟踪。
'营业部名称', '营业部'备注:
- 营业部名称:为东财接口返回数据,需要清洗,不能直接使用
- 营业部:清洗后的营业部名称,格式为4位券商名称+营业部名称。如:东方财富证券拉萨八一路
算法说明
- 正负反馈运算
- 正反馈数据所反应的机会仅为上榜个股交易的机会加分,并不是成功率的保证,还是需要结合当前市场风格临盘判断。
- 负反馈数据所反应的风险一定为风险,涉及到风险个股应尽可能提前回避。
- 对于正负反馈使用的阈值数据为“上榜后2天-平均涨幅”,这样更能符合次日买入,隔日卖出。
- 仅使用了上榜近一个月统计数据,3月/6月/12月数据未使用。我们认为近一月交易数据反应该营业部近期的交易风格与成功率之间的反馈,是与市场风格匹配度的提现。6月/12月的数据反应该营业部的稳定性,无法在短线中使用。
其他说明
因为取数是滚动的,所以每天数据都在变化,每次通过东财接口获取的汇总后数据无法在回测中使用。
该数据也暂未保存在数据库,临时保存在 redis 中,key: getlbhyyb
pythonfrom direct_redis import DirectRedis r = DirectRedis(host='localhost', port=6379) r.get('getlbhyyb')数据清洗
- 东方财富证券股份有限公司拉萨八一路证券营业部更新为东方财富证券股份有限公司拉萨金融城南环路证券营业部。
- 其他的一些营业部格式错误。XXXX证券 XXXX 证券营业部
TIP
如果需要准确的上榜后数据,可以通过龙虎榜明细自己运算。
saveLhb2Json: 统计龙虎榜营业部数据
数据来源:东方财富
数据接口:akshare
数据表:stock_data_lhb_day
前置条件:需要保存某日龙虎榜明细数据
声明
saveLhb2Json(end_date=None, renew=True)
入口参数
end_date: str,'2024-01-01'
返回
无
输出
- lhb.json,龙虎榜基础统计结果
- redis:stock_mins_chart,龙虎榜负反馈个股
算法说明
调用getlbhyyb得到最新的上榜近一个月交易次数统计的正/负反馈营业部。
调用load_stock_lhb_day从数据库中读取某日某股龙虎榜详细信息
跟踪特定营业部当日上榜情况:包括东财,开源,上海分公司,上塘路,桑田路,朱雀大道,中关村大街,珍珠路,太平南路,鼓楼南路。
填充 redis,key: stock_mins_chart
type: 'FX',保存可能的风险股,在竞价结束后的统计中调用。
date 填充为下一个交易日。
初始化
pythonr.set('stock_mins_chart', pd.DataFrame(columns=['code', 'date', 'type_']))
将统计结果保存为 json,供前端调用。
补充说明
- 东财龙虎榜页面"上榜近一个月交易次数"会动态变化,定时调用需进行2次,暂定为每日7点和21点。两次运算的结果会存在差异,以最新结果为准。
- 由于东财龙虎榜页面"上榜近一个月交易次数"会动态变化,本功能暂时不可回溯。
- 未来可以通过补齐数据自行运算“上榜近一个月交易次数”的数据
- 数据清洗
- 如果同时存在1日榜和3日榜,则仅使用1日榜。
数据保存
get_lhbyyb_date:得到某一日期的龙虎榜营业部统计列表
数据来源: 东方财富
数据接口: akshare
声明
get_lhbyyb_date(end_date, client=DATABASE)
入口参数
- end_date: str, 2024-01-01
返回
某一日期的龙虎榜营业部统计列表
- DataFrame
'序号', '营业部名称', '上榜日', '买入个股数', '卖出个股数', '买入总金额', '卖出总金额', '总买卖净额','买入股票', 0, 1, '营业部'备注:
- 函数主要完成取数后的营业部名称的数据清洗
- 列0, 1分别是券商简称和营业部简称,为临时过度数据
- 营业部:清洗后的营业部名称,格式为4位券商名称+营业部名称。如:东方财富证券拉萨八一路,对应getlbhyyb函数返回值中的营业部列
算法说明
- 删除取数后营业部名称中包括的'股份有限公司|有限责任公司|有限公司'和'营业部|证券营业部',并将分割后数据填入0,1两列中。
- 修订与getlbhyyb中营业部由于变更营业执照导致的数据不一致。例如:东方财富证券股份有限公司拉萨金融城南环路证券营业部与东方财富证券股份有限公司拉萨八一路证券营业部为同一营业部,在getlbhyyb中表示为东方财富证券股份有限公司拉萨八一路证券营业部。
其他说明
- 如当日营业部无买入交易,在后续统计中应不参与正反馈交易运算。
- 因为存在营业部日内T 交易行为,所以存在同一营业部在一支股票上出现买入和卖出交易。
- 正负反馈运算
- 正反馈数据所反应的机会仅为上榜个股交易的机会加分,并不是成功率的保证,还是需要结合当前市场风格临盘判断。
- 负反馈数据所反应的风险一定为风险,涉及到风险个股应尽可能提前回避。
- 该数据暂未保存在数据库,临时保存在 redis 中,key: get_lhbyyb_date
save_lhb_data_eastmoney:保存某日龙虎榜数据
数据来源: 东方财富
数据接口: akshare
声明
save_lhb_data_eastmoney(end_date=None, client=DATABASE)
入口参数
end_date:str,'2024-01-01'
返回
无
算法说明
保存当日的龙虎榜数据
save_lhb_month_eastmoney:保存某月龙虎榜列表数据
数据来源: 东方财富
数据接口: akshare
声明
save_lhb_month_eastmoney(year=2024, month=1, client=DATABASE)
入口参数
year:int,2024
month: int, 1
返回
无
算法说明
按月份保存龙虎榜数据
save_stock_lhb_stock_detail: 保存某日某股龙虎榜明细数据
数据来源: 东方财富
数据接口: akshare
数据表:stock_data_lhb_day
声明
save_stock_lhb_stock_detail(code, end_date, flag="买入", client=DATABASE)
入口参数
code:str, '000001'
end_date: str,'2024-01-01'
flag: str, '买入'/'卖出'
返回:
无
算法说明
按日期保存某个代码的龙虎榜明细数据。
save_stock_lhb_day:保存某日龙虎榜明细数据
数据来源: 东方财富
数据接口: akshare
声明
save_stock_lhb_day(end_date=None)
入口参数
end_date: str,'2024-01-01'
返回
无
算法说明
- 按日期保存当日所遇代码的龙虎榜明细数据。
- 如果当日多次上榜,仅保留一组数据。即一般当日会保存5条数据,最多会保留10条数据。
- 调用:save_stock_lhb_stock_detail,load_lhb_data_eastmoney。
补充说明
- 东方财富证券股份有限公司拉萨金融城南环路证券营业部,在龙虎榜营业部统计中为东方财富证券股份有限公司拉萨八一路证券营业部。
数据读取
load_lhb_data_eastmoney: 读取某日龙虎榜列表数据
数据来源: 本地数据库
数据表:stock_data_lhb
声明
load_lhb_data_eastmoney(end_date=None, client=DATABASE)
入口参数
end_date: str,'2024-01-01'
返回
DataFrame
['code', 'name', 'date', '解读', '龙虎榜净买额', '龙虎榜买入额', '龙虎榜卖出额', '龙虎榜成交额',
'市场总成交额', '净买额占总成交比', '成交额占总成交比', '上榜原因']算法说明
按月份保存龙虎榜数据
load_stock_lhb_day: 从数据库中读取某日某股龙虎榜详细信息
数据来源: 本地数据库
数据表:stock_data_lhb_day
声明
load_stock_lhb_day(end_date=None, code=None, tag='B', client=DATABASE)
入口参数
end_date: str,'2024-01-01'
code: list, ['000001']
tag: 'B/S'
返回
DataFrame
['yybmc', 'buy', 'brate', 'sell', 'srate', 'je', 'type_', 'code',
'date', 'tag', 0, 1, 'yyb']0/1: 为拆分的营业部信息,0:券商,1:营业部
yyb:营业部简称,一般在显示输出的时候使用。
算法说明
- 按日期、代码读取当日龙虎榜明细数据。
- 如果当日多次上榜,仅保留一组数据。即一般当日会保存5条数据,最多会保留10条数据。
- 调用:save_stock_lhb_stock_detail,load_lhb_data_eastmoney。
补充说明
- 数据清洗
- 将营业部分拆成公司和营业部两部分。
- 删除上榜类型为“严重异常期间X次出现正向异常波动的证券“。