| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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() |
| | |
| | | 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: |
| | |
| | | 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": |
| | |
| | | |
| | | 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: |
| | | # 转换数据格式 |