聚宽提供了基础的数据,但如何可以直观的观测某天某个品种其会员持仓的龙虎榜数据呢,就像下图这样:
M1909合约,20190419的成交、多头持仓、空头持仓龙虎榜。
本研究基于聚宽提供的数据,重现了这一龙虎榜,为后续研究提供支撑,为主观交易提供了参考:
(以下截图仅为部分)
经比较可以看出,与东财网站上是一样的。
需要注意的是:
在计算净多头、净空头龙虎榜时,东财采用了只要是上榜会员直接相减的方法。
比如,华泰期货仅上了多头持仓龙虎榜,没有上空头持仓龙虎榜,但在计算净持仓时,东财把华泰的空头持仓当0处理,这是不合理的。
本算法在计算净多头持仓与净空头持仓时,只计算同时上多头持仓龙虎榜,以及上空头持仓龙虎榜的会员单位,所以在净多龙虎榜与净空龙虎榜方面与东财的不一样:
from jqdata import finance
def get_menber_vol_opid(day,code):
"""
输入日期、代码
输出9张龙虎榜数据
"""
import pandas as pd
#获取数据
q=query(finance.FUT_MEMBER_POSITION_RANK.day,
finance.FUT_MEMBER_POSITION_RANK.code,
finance.FUT_MEMBER_POSITION_RANK.rank_type,
finance.FUT_MEMBER_POSITION_RANK.rank,
finance.FUT_MEMBER_POSITION_RANK.member_name,
finance.FUT_MEMBER_POSITION_RANK.indicator,
finance.FUT_MEMBER_POSITION_RANK.indicator_increase).\
filter(finance.FUT_MEMBER_POSITION_RANK.code==code,
finance.FUT_MEMBER_POSITION_RANK.day==day)
df=finance.run_query(q)
#数据分离,得3张表
df1 = df[df['rank_type']=='成交量排名'][['rank','member_name','indicator','indicator_increase']]
df2 = df[df['rank_type']=='持买单量排名'][['rank','member_name','indicator','indicator_increase']]
df3 = df[df['rank_type']=='持卖单量排名'][['rank','member_name','indicator','indicator_increase']]
#-------------------------------------基础龙虎榜数据
#成交量龙虎榜
df1.columns = ['名次','会员简称','成交量','增减']
sum1a = sum(df1['成交量'])
sum1b = sum(df1['增减'])
df1 = df1.append(pd.DataFrame(['成交量','本日合计',sum1a,sum1b],index=['名次','会员简称','成交量','增减']).T,sort=False)
df1 = df1.reset_index(drop=True)
#多头持仓龙虎榜
df2.columns = ['名次','会员简称','多单量','增减']
sum2a = sum(df2['多单量'])
sum2b = sum(df2['增减'])
df2 = df2.append(pd.DataFrame(['多头','本日合计',sum2a,sum2b],index=['名次','会员简称','多单量','增减']).T,sort=False)
df2 = df2.reset_index(drop=True)
#空头持仓龙虎榜
df3.columns = ['名次','会员简称','空单量','增减']
sum3a = sum(df3['空单量'])
sum3b = sum(df3['增减'])
df3 = df3.append(pd.DataFrame(['空头','本日合计',sum3a,sum3b],index=['名次','会员简称','空单量','增减']).T,sort=False)
df3 = df3.reset_index(drop=True)
#-----------------------------------计算持仓龙虎榜
#持仓数据
temp1 = df2[['会员简称','多单量']].set_index('会员简称')
temp1.columns = ['持仓']
temp2 = df3[['会员简称','空单量']].set_index('会员简称')
temp2.columns = ['持仓']
opid = temp1.iloc[:-1,:]-temp2.iloc[:-1,:] #最后一行的本日合计不参与
#增减数据
temp3 = df2[['会员简称','增减']].set_index('会员简称')
temp4 = df3[['会员简称','增减']].set_index('会员简称')
opid_inc = temp3.iloc[:-1,:]-temp4.iloc[:-1,:]
#合并持仓、增减
#注意东方财富的结果不对(如果多头持仓龙虎榜中有,而空头持仓龙虎榜中没有,东财直接把多持仓龙虎榜中持仓当作净持仓)
opid_result = pd.concat([opid,opid_inc],axis=1).sort_values(by='持仓',ascending=False)
#---------净多头龙虎榜
df4 = opid_result[opid_result['持仓']>0]
temp1 = sum(df4['持仓'])
temp2 = sum(df4['增减'])
df4 = df4.reset_index()
df4['名次']=range(1,len(df4)+1)
df4 = df4[['名次','会员简称','持仓','增减']]
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','持仓','增减'])
for i in range(20-len(df4)):
df4=df4.append(insert_row,ignore_index=True)
df4 = df4.append(pd.DataFrame(['净多','本日合计',temp1,temp2],index=['名次','会员简称','持仓','增减']).T,sort=False)
df4 = df4.reset_index(drop=True)
df4.columns=['名次','会员简称','净多量','增减']
#---------净空头龙虎榜
df7 = opid_result[opid_result['持仓']<0]
df7 = 0-df7
df7 = df7.sort_values(by='持仓',ascending=False)
temp1 = sum(df7['持仓'])
temp2 = sum(df7['增减'])
df7 = df7.reset_index()
df7['名次']=range(1,len(df7)+1)
df7 = df7[['名次','会员简称','持仓','增减']]
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','持仓','增减'])
for i in range(20-len(df7)):
df7=df7.append(insert_row,ignore_index=True)
df7 = df7.append(pd.DataFrame(['净空','本日合计',temp1,temp2],index=['名次','会员简称','持仓','增减']).T,sort=False)
df7 = df7.reset_index(drop=True)
df7.columns=['名次','会员简称','净空量','增减']
#----------------多头增减仓龙虎榜
import warnings
warnings.filterwarnings('ignore')
#多头增仓龙虎榜
temp = df2.iloc[:-1,:].sort_values(by='增减',ascending=False)
df5 = temp[temp['增减']>0]
temp1 = sum(df5['多单量'])
temp2 = sum(df5['增减'])
df5.loc[:,'名次']=range(1,len(df5)+1)
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','多单量','增减'])
for i in range(20-len(df5)):
df5=df5.append(insert_row,ignore_index=True)
df5 = df5.append(pd.DataFrame(['多增','本日合计',temp1,temp2],index=['名次','会员简称','多单量','增减']).T,sort=False)
df5 = df5.reset_index(drop=True)
df5 = df5[['名次','会员简称','增减','多单量']]
#多头减仓龙虎榜
temp = df2.iloc[:-1,:].sort_values(by='增减')
df6 = temp[temp['增减']<0]
temp1 = sum(df6['多单量'])
temp2 = sum(df6['增减'])
df6.loc[:,'名次']=range(1,len(df6)+1)
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','多单量','增减'])
for i in range(20-len(df6)):
df6=df6.append(insert_row,ignore_index=True)
df6 = df6.append(pd.DataFrame(['多减','本日合计',temp1,temp2],index=['名次','会员简称','多单量','增减']).T,sort=False)
df6 = df6.reset_index(drop=True)
df6 = df6[['名次','会员简称','增减','多单量']]
#---------------空头增减仓龙虎榜
#空头增仓龙虎榜
temp = df3.iloc[:-1,:].sort_values(by='增减',ascending=False)
df8 = temp[temp['增减']>0]
temp1 = sum(df8['空单量'])
temp2 = sum(df8['增减'])
df8.loc[:,'名次']=range(1,len(df8)+1)
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','空单量','增减'])
for i in range(20-len(df8)):
df8=df8.append(insert_row,ignore_index=True)
df8 = df8.append(pd.DataFrame(['空增','本日合计',temp1,temp2],index=['名次','会员简称','空单量','增减']).T,sort=False)
df8 = df8.reset_index(drop=True)
df8 = df8[['名次','会员简称','增减','空单量']]
#空头减仓龙虎榜
temp = df3.iloc[:-1,:].sort_values(by='增减')
df9 = temp[temp['增减']<0]
temp1 = sum(df9['空单量'])
temp2 = sum(df9['增减'])
df9.loc[:,'名次']=range(1,len(df9)+1)
#插入空行
insert_row=pd.DataFrame([[' ',' ',' ',' ']],columns=['名次','会员简称','空单量','增减'])
for i in range(20-len(df9)):
df9=df9.append(insert_row,ignore_index=True)
df9 = df9.append(pd.DataFrame(['空减','本日合计',temp1,temp2],index=['名次','会员简称','空单量','增减']).T,sort=False)
df9 = df9.reset_index(drop=True)
df9 = df9[['名次','会员简称','增减','空单量']]
#-------------------------合并9个龙虎榜
all_data = pd.concat([df1,df2,df3,df4,df5,df6,df7,df8,df9],axis=1)
columns1 = all_data.columns
all_data=pd.DataFrame(all_data.values,columns=[['成交量龙虎榜']*4+\
['多头持仓龙虎榜']*4+\
['空头持仓龙虎榜']*4+\
['净多头龙虎榜']*4+\
['多头增仓龙虎榜']*4+\
['多头减仓龙虎榜']*4+\
['净空头龙虎榜']*4+\
['空头增仓龙虎榜']*4+\
['空头减仓龙虎榜']*4,columns1])
filename = day+'日'+code+'会员成交持仓龙虎榜数据.xlsx'
all_data.to_excel(filename)
return all_data
def test1():
#大连品种
code = 'M1909.XDCE'
day = '2019-04-19'
all_data = get_menber_vol_opid(day,code)
return all_data
def test2():
code = 'RB1905.XSGE'
day = '2019-02-13'
all_data = get_menber_vol_opid(day,code)
return all_data
if __name__=='__main__':
all_data = test1()
#all_data2 = test2()
all_data
成交量龙虎榜 | 多头持仓龙虎榜 | 空头持仓龙虎榜 | 净多头龙虎榜 | 多头增仓龙虎榜 | 多头减仓龙虎榜 | 净空头龙虎榜 | 空头增仓龙虎榜 | 空头减仓龙虎榜 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
名次 | 会员简称 | 成交量 | 增减 | 名次 | 会员简称 | 多单量 | 增减 | 名次 | 会员简称 | 空单量 | 增减 | 名次 | 会员简称 | 净多量 | 增减 | 名次 | 会员简称 | 增减 | 多单量 | 名次 | 会员简称 | 增减 | 多单量 | 名次 | 会员简称 | 净空量 | 增减 | 名次 | 会员简称 | 增减 | 空单量 | 名次 | 会员简称 | 增减 | 空单量 | |
0 | 1 | 东证期货 | 167963 | -28903 | 1 | 中粮期货 | 51671 | -2720 | 1 | 中粮期货 | 126984 | -966 | 1 | 银河期货 | 15259 | -4606 | 1 | 申银万国 | 2756 | 30427 | 1 | 一德期货 | -4864 | 22861 | 1 | 中粮期货 | 75313 | 1754 | 1 | 方正中期 | 2828 | 18371 | 1 | 中信期货 | -3570 | 32697 |
1 | 2 | 海通期货 | 70455 | -27962 | 2 | 永安期货 | 49276 | 1333 | 2 | 国投安信 | 93509 | -1645 | 2 | 方正中期 | 4792 | -3409 | 2 | 国投安信 | 2542 | 22041 | 2 | 国泰君安 | -3245 | 19410 | 2 | 国投安信 | 71468 | -4187 | 2 | 银河期货 | 2384 | 28726 | 2 | 北京首创 | -2114 | 36222 |
2 | 3 | 国富期货 | 60993 | -18690 | 3 | 银河期货 | 43985 | -2222 | 3 | 永安期货 | 73670 | 2376 | 3 | 光大期货 | 382 | -6 | 3 | 永安期货 | 1333 | 49276 | 3 | 中粮期货 | -2720 | 51671 | 3 | 永安期货 | 24394 | 1043 | 3 | 永安期货 | 2376 | 73670 | 3 | 南华期货 | -1949 | 45790 |
3 | 4 | 国泰君安 | 37877 | -15788 | 4 | 南华期货 | 41838 | -1202 | 4 | 申银万国 | 54067 | -466 | 4 | 浙商期货 | 938 | 16218 | 4 | 银河期货 | -2222 | 43985 | 4 | 申银万国 | 23640 | -3222 | 4 | 东证期货 | 629 | 35969 | 4 | 摩根大通 | -1738 | 42481 | ||||
4 | 5 | 徽商期货 | 36064 | -15174 | 5 | 中信期货 | 31587 | -437 | 5 | 南华期货 | 45790 | -1949 | 5 | 徽商期货 | 784 | 21010 | 5 | 南华期货 | -1202 | 41838 | 5 | 国泰君安 | 12491 | 2727 | 5 | 光大期货 | 352 | 23261 | 5 | 国投安信 | -1645 | 93509 | ||||
5 | 6 | 兴证期货 | 30143 | -19621 | 6 | 申银万国 | 30427 | 2756 | 6 | 摩根大通 | 42481 | -1738 | 6 | 中信建投 | 513 | 21174 | 6 | 广发期货 | -951 | 23590 | 6 | 东证期货 | 9544 | 969 | 6 | 信达期货 | 157 | 26995 | 6 | 五矿经易 | -1126 | 23954 | ||||
6 | 7 | 南华期货 | 29217 | -6258 | 7 | 华泰期货 | 29725 | -904 | 7 | 北京首创 | 36222 | -2114 | 7 | 长江期货 | 352 | 20424 | 7 | 华泰期货 | -904 | 29725 | 7 | 浙商期货 | 7824 | -1017 | 7 | 北京金鹏 | 156 | 17623 | 7 | 中粮期货 | -966 | 126984 | ||||
7 | 8 | 中信期货 | 28637 | -17078 | 8 | 东证期货 | 26425 | -340 | 8 | 东证期货 | 35969 | 629 | 8 | 光大期货 | 346 | 23643 | 8 | 方正中期 | -581 | 23163 | 8 | 一德期货 | 7531 | 4639 | 8 | 国泰君安 | -518 | 31901 | ||||||||
8 | 9 | 方正中期 | 27759 | -10930 | 9 | 光大期货 | 23643 | 346 | 9 | 中信期货 | 32697 | -3570 | 9 | 中信期货 | -437 | 31587 | 9 | 南华期货 | 3952 | -747 | 9 | 申银万国 | -466 | 54067 | ||||||||||||
9 | 10 | 鲁证期货 | 24098 | -3076 | 10 | 广发期货 | 23590 | -951 | 10 | 国泰君安 | 31901 | -518 | 10 | 五矿经易 | -416 | 21868 | 10 | 五矿经易 | 2086 | -710 | 10 | 中国国际 | -240 | 28752 | ||||||||||||
10 | 11 | 华安期货 | 21630 | -1772 | 11 | 方正中期 | 23163 | -581 | 11 | 一德期货 | 30392 | -225 | 11 | 东证期货 | -340 | 26425 | 11 | 中信期货 | 1110 | -3133 | 11 | 一德期货 | -225 | 30392 | ||||||||||||
11 | 12 | 中信建投 | 21322 | -14182 | 12 | 一德期货 | 22861 | -4864 | 12 | 中国国际 | 28752 | -240 | 12 | 新湖期货 | -8 | 21107 | 12 | 中融汇信 | -100 | 19705 | ||||||||||||||||
12 | 13 | 银河期货 | 20512 | -5124 | 13 | 国投安信 | 22041 | 2542 | 13 | 银河期货 | 28726 | 2384 | 13 | 浙商期货 | -79 | 24042 | ||||||||||||||||||||
13 | 14 | 永安期货 | 19911 | -22506 | 14 | 五矿经易 | 21868 | -416 | 14 | 信达期货 | 26995 | 157 | ||||||||||||||||||||||||
14 | 15 | 华泰期货 | 19607 | -1826 | 15 | 中信建投 | 21174 | 513 | 15 | 浙商期货 | 24042 | -79 | ||||||||||||||||||||||||
15 | 16 | 光大期货 | 19548 | -8228 | 16 | 新湖期货 | 21107 | -8 | 16 | 五矿经易 | 23954 | -1126 | ||||||||||||||||||||||||
16 | 17 | 东方财富 | 16779 | -7289 | 17 | 徽商期货 | 21010 | 784 | 17 | 光大期货 | 23261 | 352 | ||||||||||||||||||||||||
17 | 18 | 一德期货 | 15217 | 140 | 18 | 长江期货 | 20424 | 352 | 18 | 中融汇信 | 19705 | -100 | ||||||||||||||||||||||||
18 | 19 | 上海大陆 | 14985 | 7046 | 19 | 国泰君安 | 19410 | -3245 | 19 | 方正中期 | 18371 | 2828 | ||||||||||||||||||||||||
19 | 20 | 长江期货 | 14078 | -5016 | 20 | 浙商期货 | 16218 | 938 | 20 | 北京金鹏 | 17623 | 156 | ||||||||||||||||||||||||
20 | 成交量 | 本日合计 | 696795 | -222237 | 多头 | 本日合计 | 561443 | -8326 | 空头 | 本日合计 | 815111 | -5854 | 净多 | 本日合计 | 20433 | -8021 | 多增 | 本日合计 | 9564 | 204213 | 多减 | 本日合计 | -17890 | 357230 | 净空 | 本日合计 | 239353 | -1884 | 空增 | 本日合计 | 8882 | 224615 | 空减 | 本日合计 | -14736 | 590496 |
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
移动端课程