Administrator
2024-04-23 641c3fd59e11388d086aaab495b5f10cfda11d18
L2市场行情数据修改/卖代码修改
2个文件已修改
79 ■■■■ 已修改文件
huaxin_client/l2_market_client.py 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/trade_strategy.py 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_market_client.py
@@ -155,23 +155,25 @@
        # 传入:时间,现价,成交总量,买1,买2,买3,买4,买5,卖1,卖2,卖3,卖4,卖5
        try:
            d = {"dataTimeStamp": pDepthMarketData['DataTimeStamp'], "securityID": pDepthMarketData['SecurityID'],
                 "preClosePrice": pDepthMarketData['PreClosePrice'],
                 "lastPrice": pDepthMarketData['LastPrice'],
                 "totalVolumeTrade": pDepthMarketData['TotalVolumeTrade'],
                 "totalValueTrade": pDepthMarketData['TotalValueTrade'],
                 "totalBidVolume": pDepthMarketData['TotalBidVolume'],
                 "avgBidPrice": pDepthMarketData['AvgBidPrice'],
                 "totalAskVolume": pDepthMarketData['TotalAskVolume'],
                 "avgAskPrice": pDepthMarketData["AvgAskPrice"],
                 "buy": [(pDepthMarketData['BidPrice1'], pDepthMarketData['BidVolume1']),
                         (pDepthMarketData['BidPrice2'], pDepthMarketData['BidVolume2']),
                         (pDepthMarketData['BidPrice3'], pDepthMarketData['BidVolume3']),
                         (pDepthMarketData['BidPrice4'], pDepthMarketData['BidVolume4']),
                         (pDepthMarketData['BidPrice5'], pDepthMarketData['BidVolume5'])],
                 "sell": [
                     (pDepthMarketData['AskPrice1'], pDepthMarketData['AskVolume1']),
                     (pDepthMarketData['AskPrice2'], pDepthMarketData['AskVolume2']),
                     (pDepthMarketData['AskPrice3'], pDepthMarketData['AskVolume3']),
                     (pDepthMarketData['AskPrice4'], pDepthMarketData['AskVolume4']),
                     (pDepthMarketData['AskPrice5'], pDepthMarketData['AskVolume5'])
                 ]}
                 "avgAskPrice": pDepthMarketData["AvgAskPrice"]
                 # "buy": [(pDepthMarketData['BidPrice1'], pDepthMarketData['BidVolume1']),
                 #         (pDepthMarketData['BidPrice2'], pDepthMarketData['BidVolume2']),
                 #         (pDepthMarketData['BidPrice3'], pDepthMarketData['BidVolume3']),
                 #         (pDepthMarketData['BidPrice4'], pDepthMarketData['BidVolume4']),
                 #         (pDepthMarketData['BidPrice5'], pDepthMarketData['BidVolume5'])],
                 # "sell": [
                 #     (pDepthMarketData['AskPrice1'], pDepthMarketData['AskVolume1']),
                 #     (pDepthMarketData['AskPrice2'], pDepthMarketData['AskVolume2']),
                 #     (pDepthMarketData['AskPrice3'], pDepthMarketData['AskVolume3']),
                 #     (pDepthMarketData['AskPrice4'], pDepthMarketData['AskVolume4']),
                 #     (pDepthMarketData['AskPrice5'], pDepthMarketData['AskVolume5'])
                 # ]
                 }
            huaxin_l2_log.info(logger_local_huaxin_l2_market, f"{d}")
        except:
            pass
@@ -228,6 +230,9 @@
    except Exception as e:
        logger_system.exception(e)
    while True:
        if tool.trade_time_sub(tool.get_now_time_str(), "09:30:01") <= 0:
            # 只读竞价数据
            break
        time.sleep(2)
trade/trade_strategy.py
@@ -270,6 +270,19 @@
            codes = L1DataProcessor.get_latest_update_codes()
            result = {"code": 0, "data": list(codes)}
            self.send_response(result, client_id, request_id)
        elif ctype == "get_l2_deal_price":
            # 根据L2数据获取成交价
            code = data["code"]
            price_info = L2DataProcessor.get_deal_price(code)
            if price_info:
                fdata = {"price": price_info[0], "time": price_info[1]}
                pre_price = gpcode_manager.get_price_pre_cache(code)
                if pre_price:
                    fdata["rate"] = round((price_info[0] - pre_price) / pre_price, 4)
                result = {"code": 0, "data": fdata}
            else:
                result = {"code": 1, "msg": "尚未获取到价格"}
            self.send_response(result, client_id, request_id)
        elif ctype == "get_l2_datas":
            # 获取L2数据
            code = data["code"]
@@ -411,7 +424,32 @@
                logging.exception(e)
class L2DataProcessor:
    __latest_deal_price_info = {}
    @classmethod
    def set_deal_price(cls, code, price, time_str):
        """
        设置成交价格
        :param code: 代码
        :param price: 价格
        :param time_str: 时间
        :return:
        """
        cls.__latest_deal_price_info[code] = (price, time_str)
    @classmethod
    def get_deal_price(cls, code):
        """
        获取成交价格
        :param code:
        :return:
        """
        return cls.__latest_deal_price_info.get(code)
class MyL2DataCallback(L2DataCallBack):
    def OnL2Order(self, code, origin_datas, timestamp):
        # 保存L2数据
        datas = None
@@ -440,6 +478,10 @@
    def OnL2Transaction(self, code, datas):
        async_log_util.info(hx_logger_l2_transaction, f"{code}#{datas}")
        if datas:
            # 获取最近的成交价
            price, time_str = datas[-1][1], l2_huaxin_util.convert_time(datas[-1][3])
            L2DataProcessor.set_deal_price(code, price, time_str)
# 做一些初始化的操作
@@ -486,7 +528,7 @@
        threading.Thread(target=lambda: async_log_util.run_sync(), daemon=True).start()
        threading.Thread(target=lambda:  async_log_util.l2_data_log.run_sync(), daemon=True).start()
        threading.Thread(target=lambda: async_log_util.l2_data_log.run_sync(), daemon=True).start()
        huaxin_trade_data_update.run(queue_l1_trade_r_strategy_w, queue_strategy_w_l2_r)