| | |
| | | @classmethod |
| | | def statistic_big_sell_data(cls, code, fdatas): |
| | | """ |
| | | 统计大卖单 |
| | | 统计大卖单(299w以上) |
| | | @param code: |
| | | @param fdatas: [(数据本身, 是否主动买, 是否涨停, 总成交额, 不含ms时间,含ms时间)] |
| | | @return: 返回数据里面成交的大单 |
| | | """ |
| | | big_sell_datas = [] |
| | | # 正在成交的卖单 |
| | | dealing_order_info = cls.__dealing_order_info_dict.get(code) |
| | | for data in fdatas: |
| | | if not data[2]: |
| | | # 只计算板上成交 |
| | |
| | | # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'], |
| | | # data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'], |
| | | # data['SellNo'], data['ExecType'])) |
| | | if code not in cls.__dealing_order_info_dict: |
| | | if dealing_order_info is None: |
| | | # 数据格式[订单号,总股数,成交金额] |
| | | cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money] |
| | | if cls.__dealing_order_info_dict[code][0] == data[0][7]: |
| | | # 成交同一个订单号 |
| | | cls.__dealing_order_info_dict[code][1] += data[0][2] |
| | | cls.__dealing_order_info_dict[code][2] += money |
| | | dealing_order_info = [data[0][7], data[0][2], money] |
| | | else: |
| | | # 保存上一条数据 |
| | | l2_log.info(code, hx_logger_l2_transaction_desc, f"{code}#{cls.__dealing_order_info_dict[code]}") |
| | | # 设置最近成交完成的一条数据 |
| | | deal_info = cls.__dealing_order_info_dict[code] |
| | | # 是否为大买单 |
| | | if deal_info[2] >= 2990000: |
| | | big_sell_datas.append(deal_info) |
| | | # 初始化本条数据 |
| | | cls.__dealing_order_info_dict[code] = [data[0][7], data[0][2], money] |
| | | if dealing_order_info[0] == data[0][7]: |
| | | # 成交同一个订单号 |
| | | dealing_order_info[1] += data[0][2] |
| | | dealing_order_info[2] += money |
| | | else: |
| | | # 保存上一条数据 |
| | | # 设置最近成交完成的一条数据 |
| | | deal_info = dealing_order_info |
| | | # 保存上一条数据 |
| | | if deal_info[2] >= 2990000: |
| | | # 是否为大买单 |
| | | l2_log.info(code, hx_logger_l2_transaction_desc, |
| | | f"{code}#{deal_info}") |
| | | big_sell_datas.append(deal_info) |
| | | # 初始化本条数据 |
| | | dealing_order_info = [data[0][7], data[0][2], money] |
| | | # 保存最后一条数据的状态 |
| | | cls.__dealing_order_info_dict[code] = dealing_order_info |
| | | return big_sell_datas |
| | | |
| | | # 统计所有的成交量 |
| | |
| | | use_time_list.append(("处理涨停卖", use_time)) |
| | | for d in fdatas: |
| | | # 获取当前是否为主动买 |
| | | if d[1]: |
| | | # 主动买 |
| | | continue |
| | | try: |
| | | if d[1]: |
| | | # 主动买 |
| | | continue |
| | | if d[2]: |
| | | # 涨停主动卖 |
| | | L2TradeSingleDataProcessor.add_active_limit_up_sell_data(d[0]) |