量化盘口买入条件——卖盘大摆单

有个玩高频的同事想实现一个可以监控卖盘中摆的大单的情况

df=pd.read_csv('E:/tick_10/sz000333.csv',encoding='gbk')
'''求每个档位平均值'''
b1_mean=np.mean(df[1:int(len(df)/2)]['挂卖量1'])

df2=df[int(len(df)/2):len(df)]
df2[df2['挂卖量1']>b1_mean*10][['挂卖价1','挂卖量1']]
logging=[]
list_log=[]
for i in range(1,90):#len(df)
    '''当前记录的信息中的所有价格'''
    plog_list=[x.get('s1p') for x in list_log]
    #print(i,plog_list)
    '''判断量,是否大单
    同一价格可能是大单,也可能不是,所以无论是否是大单,都要更新价格对应的量'''
    #是大单
    if df['挂卖量1'][i]>b1_mean:
        '''判断价格是否跟任何记录的相同'''
        #不同价格则增加新的记录
        if df['挂卖价1'][i] not in plog_list:
            big_log=dict({'s1p': df['挂卖价1'][i], 's1v': df['挂卖量1'][i]})
            list_log.append(big_log)
        #相同价格则updata量
        else:
            bigp_ind=plog_list.index(df['挂卖价1'][i])
            list_log[bigp_ind].update(s1v=df['挂卖量1'][i])
    #当不是大单
    else:
        p_tick10=df.loc[i,['挂卖价1','挂卖价2','挂卖价3','挂卖价4','挂卖价5','挂卖价6','挂卖价7','挂卖价8','挂卖价9','挂卖价10']].tolist()
        v_tick10=df.loc[i,['挂卖量1','挂卖量2','挂卖量3','挂卖量4','挂卖量5','挂卖量6','挂卖量7','挂卖量8','挂卖量9','挂卖量10']].tolist()
        #记录的价格是否在十档中
        del_list=[]
        for p in plog_list:
            #在记录的位置,要写入的位置
            plog_ind=plog_list.index(p)
            #在十档中。更新所处价格的量
            if p in p_tick10:
                #在十档的位置,取出对应的量
                ptick_ind=p_tick10.index(p)
                #更新
                list_log[plog_ind].update(s1v=v_tick10[ptick_ind])
            #不在十档中,并大于十档最大值,属于没显示,但一直存在
            elif (p not in p_tick10) & (p>max(p_tick10)):
                pass
            #不在十档中,但是没有大于十档最大值,可能是cacel单
            elif (p not in p_tick10) & (p<max(p_tick10)):
                #保存要删除的索引列表,反向遍历删除
                del_list.append(plog_ind)
                print(plog_ind)
        [list_log.pop(d) for d in del_list[::-1]]#这里的结果是弹出的
        #记录每个过程,监控
        logging.append(plog_list)
    print(i,list_log)

猜你喜欢

转载自blog.csdn.net/k284213498/article/details/80449632