Administrator
2023-09-14 25b5717879ed43bddf06ba35cfe6753f30fac9f5
交易端G撤优化
3个文件已修改
42 ■■■■ 已修改文件
huaxin_client/l2_client.py 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_data_manager.py 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test/test.py 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_client.py
@@ -186,8 +186,7 @@
        # try:
        print("订阅结果:", pSpecificSecurity["ExchangeID"], pSpecificSecurity["SecurityID"], pRspInfo["ErrorID"],
              pRspInfo["ErrorMsg"])
        logger_local_huaxin_l2_subscript.info(
            f"订阅结果:{pSpecificSecurity['SecurityID']} {pRspInfo['ErrorID']} {pRspInfo['ErrorMsg']}")
        async_log_util.info(logger_local_huaxin_l2_subscript, f"订阅结果:{pSpecificSecurity['SecurityID']} {pRspInfo['ErrorID']} {pRspInfo['ErrorMsg']}")
        if pRspInfo["ErrorID"] == 0:
            print("订阅成功")
            self.subscripted_codes.add(pSpecificSecurity['SecurityID'])
@@ -356,14 +355,12 @@
            else:
                self.special_code_volume_for_order_dict.pop(code)
        if not can_listen:
            if pOrderDetail['OrderStatus'] == b'D':
                transaction_big_order_nos = l2_data_manager.get_latest_transaction_order_nos(code)
                if transaction_big_order_nos and pOrderDetail['OrderNO'] in transaction_big_order_nos:
                    # 正在成交的订单撤单了
                    l2_data_manager.trading_order_canceled(code, pOrderDetail['OrderNO'])
                    async_log_util.info(logger_local_huaxin_g_cancel, f"G撤撤单:{code} - {pOrderDetail['OrderNO']}")
            min_volume, limit_up_price = self.codes_volume_and_price_dict.get(code)
            if min_volume is None:
                # 默认筛选50w
huaxin_client/l2_data_manager.py
@@ -101,9 +101,21 @@
    code = data['SecurityID']
    if code in buy_order_nos_dict:
        if data['BuyNo'] in buy_order_nos_dict[code]:
            if code not in latest_big_order_transaction_orders_dict:
                latest_big_order_transaction_orders_dict[code] = set()
            latest_big_order_transaction_orders_dict[code].add(data['BuyNo'])
            temp_list = latest_big_order_transaction_orders_dict.get(code)
            if not temp_list:
                temp_list = []
            if temp_list:
                if temp_list[-1] != data['BuyNo']:
                    temp_list.append(data['BuyNo'])
                    if len(temp_list) > 10:
                        temp_list = temp_list[-10:]
                    latest_big_order_transaction_orders_dict[code] = temp_list
            else:
                temp_list.append(data['BuyNo'])
    tmep_transaction_queue_dict[code].put((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
                                           data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
                                           data['SellNo'], data['ExecType']))
@@ -286,12 +298,14 @@
        if code not in target_codes:
            return
        # 如果最近的活动时间小于2s就不需要运行
        if code not in order_detail_upload_active_time_dict or time.time() - order_detail_upload_active_time_dict[code] > 2:
        if code not in order_detail_upload_active_time_dict or time.time() - order_detail_upload_active_time_dict[
            code] > 2:
            t = threading.Thread(target=lambda: __run_upload_order(code, l2_data_callback), daemon=True)
            t.start()
            __upload_order_threads[code] = t
        if code not in transaction_upload_active_time_dict or time.time() - transaction_upload_active_time_dict[code] > 2:
        if code not in transaction_upload_active_time_dict or time.time() - transaction_upload_active_time_dict[
            code] > 2:
            t = threading.Thread(target=lambda: __run_upload_trans(code, l2_data_callback), daemon=True)
            t.start()
            __upload_trans_threads[code] = t
@@ -327,12 +341,14 @@
                    # 目标代码加入2s之后启动守护
                    if time.time() - target_codes_add_time[code] > 2:
                        if code not in __upload_order_threads or not __upload_order_threads[code].is_alive():
                            t = threading.Thread(target=lambda: __run_upload_order(code, _l2_data_callback), daemon=True)
                            t = threading.Thread(target=lambda: __run_upload_order(code, _l2_data_callback),
                                                 daemon=True)
                            t.start()
                            __upload_order_threads[code] = t
                            logger_local_huaxin_l2_upload.info(f"重新创建L2订单上传线程:{code}")
                        if code not in __upload_trans_threads or not __upload_trans_threads[code].is_alive():
                            t = threading.Thread(target=lambda: __run_upload_trans(code, _l2_data_callback), daemon=True)
                            t = threading.Thread(target=lambda: __run_upload_trans(code, _l2_data_callback),
                                                 daemon=True)
                            t.start()
                            __upload_trans_threads[code] = t
                            logger_local_huaxin_l2_upload.info(f"重新创建L2成交上传线程:{code}")
@@ -340,6 +356,7 @@
                pass
            finally:
                time.sleep(3)
    t = threading.Thread(target=lambda: upload_daemon(), daemon=True)
    t.start()
test/test.py
@@ -15,4 +15,8 @@
if __name__ == "__main__":
    threading.Thread(target=start_thread).start()
    test1 = []
    test1.append()
    test1 = test1[0:13]
    print(test1)