Administrator
2023-07-10 4202470a0702b313b150eff1797ec495ee1ca59a
华鑫适配
3个文件已修改
76 ■■■■■ 已修改文件
l2/l2_data_manager_new.py 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_util.py 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/trade_server.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py
@@ -4,6 +4,7 @@
from code_attribute import big_money_num_manager, code_volumn_manager, code_data_util, industry_codes_sort, \
    limit_up_time_manager, global_data_loader, gpcode_manager
import constant
from l2.huaxin import l2_huaxin_util
from utils import global_util, ths_industry_util, tool
import l2_data_util
from db import redis_manager
@@ -14,10 +15,11 @@
from l2.cancel_buy_strategy import SecondCancelBigNumComputer, HourCancelBigNumComputer, L2LimitUpMoneyStatisticUtil, \
    L2LimitUpSellStatisticUtil
from l2.l2_data_manager import L2DataException, TradePointManager
from l2.l2_data_util import local_today_datas, L2DataUtil, local_today_num_operate_map,local_today_buyno_map, local_latest_datas
from l2.l2_data_util import local_today_datas, L2DataUtil, local_today_num_operate_map, local_today_buyno_map, \
    local_latest_datas
import l2.l2_data_util
from logs_.log import logger_l2_trade_buy, logger_l2_process, \
    logger_place_order_score
    logger_place_order_score, logger_l2_error
# TODO l2数据管理
from trade.trade_data_manager import CodeActualPriceProcessor
@@ -210,6 +212,35 @@
            if code in cls.unreal_buy_dict:
                cls.unreal_buy_dict.pop(code)
    # 处理华鑫L2数据
    @classmethod
    def process_huaxin(cls, code, datas):
        origin_start_time = round(t.time() * 1000)
        try:
            # 加载历史的L2数据
            is_normal = l2.l2_data_util.load_l2_data(code,load_latest=False)
            if not is_normal:
                print("历史数据异常:", code)
                # 数据不正常需要禁止交易
                l2_trade_util.forbidden_trade(code)
            # 转换数据格式
            _start_index = 0
            if local_today_datas.get(code) is not None and len(
                    local_today_datas[code]) > 0:
                _start_index = local_today_datas[code][-1]["index"] + 1
            datas = l2_huaxin_util.get_format_l2_datas(code, datas,
                                                       gpcode_manager.get_limit_up_price(code), _start_index)
            __start_time = round(t.time() * 1000)
            cls.process_add_datas(code, datas, 0, __start_time)
        except Exception as e:
            logging.exception(e)
            logger_l2_error.exception(e)
        finally:
            l2_data_log.l2_time(code, round(t.time() * 1000) - origin_start_time,
                                "l2数据处理总耗时",
                                True)
            l2.l2_data_util.save_l2_data(code, None, datas)
    @classmethod
    def process_add_datas(cls, code, add_datas, capture_timestamp, __start_time):
        now_time_str = tool.get_now_time_str()
l2/l2_data_util.py
@@ -32,17 +32,18 @@
local_today_buyno_map = {}
def load_l2_data(code, force=False):
def load_l2_data(code, load_latest=True, force=False):
    redis = _redisManager.getRedis()
    # 加载最近的l2数据
    if local_latest_datas.get(code) is None or force:
        # 获取最近的数据
        _data = redis.get("l2-data-latest-{}".format(code))
        if _data is not None:
            if code in local_latest_datas:
                local_latest_datas[code] = json.loads(_data)
            else:
                local_latest_datas.setdefault(code, json.loads(_data))
    if load_latest :
        if local_latest_datas.get(code) is None or force:
            # 获取最近的数据
            _data = redis.get("l2-data-latest-{}".format(code))
            if _data is not None:
                if code in local_latest_datas:
                    local_latest_datas[code] = json.loads(_data)
                else:
                    local_latest_datas.setdefault(code, json.loads(_data))
        # 获取今日的数据
    if local_today_datas.get(code) is None or force:
trade/huaxin/trade_server.py
@@ -153,25 +153,7 @@
                        code = data["code"]
                        datas = data["data"]
                        logger_l2_orderdetail.info(f"{code}#{datas}")
                        origin_start_time = round(time.time() * 1000)
                        try:
                            # 转换数据格式
                            _start_index = 0
                            if local_today_datas.get(code) is not None and len(
                                    local_today_datas[code]) > 0:
                                _start_index = local_today_datas[code][-1]["index"] + 1
                            datas = l2_huaxin_util.get_format_l2_datas(code, datas,
                                                                       gpcode_manager.get_limit_up_price(code), _start_index)
                            __start_time = round(time.time() * 1000)
                            l2_data_manager_new.L2TradeDataProcessor().process_add_datas(code, datas, 0, __start_time)
                        except Exception as e:
                            logging.exception(e)
                            logger_l2_error.exception(e)
                        finally:
                            l2_data_log.l2_time(code, round(time.time() * 1000) - origin_start_time,
                                                "l2数据处理总耗时",
                                                True)
                            l2.l2_data_util.save_l2_data(code, None, datas)
                        l2_data_manager_new.L2TradeDataProcessor.process_huaxin(code, datas)
                        sk.sendall(json.dumps({"code": 0}).encode(encoding='utf-8'))
                    elif data_json["type"] == "l2_trans":
@@ -380,7 +362,7 @@
if __name__ == "__main__":
    code = "002251"
    datas =[['002251', 0.0, 138300, '1', '2', 112555120, 2011, 18281251, 18233797, 'D']]
    datas = [['002251', 0.0, 138300, '1', '2', 112555120, 2011, 18281251, 18233797, 'D']]
    origin_start_time = 0
    try:
        # 转换数据格式