| | |
| | | __TradeBuyQueue = transaction_progress.TradeBuyQueue() |
| | | # 非涨停成交时间 |
| | | __not_limit_up_time_dict = {} |
| | | # 最近成交数据字典 |
| | | __latest_transaction_data_dict = {} |
| | | |
| | | # 计算成交进度 |
| | | @classmethod |
| | |
| | | # q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'], |
| | | # data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'], |
| | | # data['SellNo'], data['ExecType'])) |
| | | if o_datas: |
| | | cls.__latest_transaction_data_dict[code] = o_datas[-1] |
| | | fdatas = [ |
| | | [d, d[6] > d[7], limit_up_price == d[1], d[1] * d[2], '', ''] |
| | | for d in o_datas] |
| | |
| | | L2TradeDataProcessor.cancel_buy(code, f"F撤:{cancel_result[1]}", |
| | | cancel_type=trade_constant.CANCEL_TYPE_F) |
| | | |
| | | if o_datas: |
| | | cls.__latest_transaction_data_dict[code] = o_datas[-1] |
| | | limit_up_price = gpcode_manager.get_limit_up_price_as_num(code) |
| | | # =====格式化数据===== |
| | | # 整形数据,格式:[(数据本身, 是否主动买, 是否涨停, 总成交额, 不含ms时间,含ms时间)] |
| | |
| | | if _start_time - __start_time > 5: |
| | | l2_log.info(code, hx_logger_l2_upload, |
| | | f"{code}处理成交用时:{_start_time - __start_time} 数据数量:{len(fdatas)} 详情:{use_time_list}") |
| | | |
| | | @classmethod |
| | | def get_latest_transaction_data(cls, code): |
| | | return cls.__latest_transaction_data_dict.get(code) |
| | |
| | | import constant |
| | | import inited_data |
| | | from api import low_suction_data_pusher |
| | | from code_attribute.gpcode_manager import BlackListCodeManager, HumanRemoveForbiddenManager |
| | | from code_attribute.gpcode_manager import BlackListCodeManager, HumanRemoveForbiddenManager, CodePrePriceManager |
| | | from l2.code_price_manager import CurrentPriceManager |
| | | from l2.huaxin import huaxin_target_codes_manager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager |
| | | from l2.l2_transaction_data_processor import HuaXinTransactionDatasProcessor |
| | | from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api, \ |
| | | logger_kpl_market_strong, logger_kpl_new_blocks |
| | | from third_data.custom_block_in_money_manager import CodeInMoneyManager |
| | |
| | | for k in code_blocks_dict: |
| | | fdata[k] = list(code_blocks_dict[k]) |
| | | response_data = json.dumps({"code": 0, "data": fdata}) |
| | | elif url.path == "/get_want_buy_detail_list": |
| | | # 获取想买单详细信息 |
| | | codes = gpcode_manager.WantBuyCodesManager().list_code_cache() |
| | | # 拉取涨停时间 |
| | | # 拉取最近成交信息 |
| | | fdatas = [] |
| | | for code in codes: |
| | | # (代码,名称,涨停时间,涨幅,现手,自由市值,现价) |
| | | data = [code, gpcode_manager.get_code_name(code)] |
| | | limit_up_time = LimitUpDataConstant.get_first_limit_up_time(code) |
| | | data.append(limit_up_time) |
| | | pre_close_price = CodePrePriceManager.get_price_pre_cache(code) |
| | | latest_transaction_data = HuaXinTransactionDatasProcessor.get_latest_transaction_data(code) |
| | | zyltgb = global_util.zyltgb_map.get(code) |
| | | if latest_transaction_data: |
| | | data.append(round((latest_transaction_data[1] - pre_close_price) * 100 / pre_close_price, 2)) |
| | | data.append((latest_transaction_data[2]//100, latest_transaction_data[6] - latest_transaction_data[7])) |
| | | data.append(output_util.money_desc(zyltgb) if zyltgb else '--') |
| | | data.append(latest_transaction_data[1]) |
| | | else: |
| | | data.append("--") |
| | | data.append(("--", 0)) |
| | | data.append(output_util.money_desc(zyltgb) if zyltgb else '--') |
| | | data.append("--") |
| | | fdatas.append(data) |
| | | response_data = json.dumps({"code": 0, "data": fdatas}) |
| | | |
| | | async_log_util.info(logger_request_api, f"结束请求{tool.get_thread_id()}-{url}") |
| | | self.send_response(200) |
| | |
| | | import zmq |
| | | |
| | | from code_attribute import gpcode_manager |
| | | from huaxin_client import constant as huaxin_client_constant |
| | | from huaxin_client import constant as huaxin_client_constant, huaxin_sinfo_util |
| | | from log_module import async_log_util |
| | | from log_module.log import hx_logger_trade_debug, hx_logger_trade_loop, hx_logger_trade_callback, logger_trade, \ |
| | | logger_system |
| | |
| | | @param shadow_price: |
| | | @return: |
| | | """ |
| | | timestamp = round(time.time() * 1000) |
| | | if not sinfo: |
| | | sinfo = f"ba_{code}_{timestamp}" |
| | | sinfo = huaxin_sinfo_util.create_place_order_sinfo(code, direction == 1, False) # f"ba_{code}_{timestamp}" |
| | | if not order_ref: |
| | | order_ref = huaxin_util.create_order_ref() |
| | | if not request_id: |
| | |
| | | """ |
| | | timestamp = round(time.time() * 1000) |
| | | if not sinfo: |
| | | sinfo = f"ba_{code}_{timestamp}" |
| | | sinfo = huaxin_sinfo_util.create_place_order_sinfo(code, direction == 1, False) #f"ba_{code}_{timestamp}" |
| | | if not request_id: |
| | | request_id = __get_request_id(ClientSocketManager.CLIENT_TYPE_TRADE) |
| | | for i in range(1): |
| | |
| | | "price_type": price_type, |
| | | "sinfo": sinfo, |
| | | "blocking": blocking, |
| | | "cancel_shadow": False}, |
| | | "cancel_shadow": False |
| | | }, |
| | | request_id=request_id, |
| | | is_trade=True) |
| | | try: |