| | |
| | | def add_l2_order_detail(data, istransaction=False): |
| | | code = data["SecurityID"] |
| | | # 异步日志记录 |
| | | async_log_util.huaxin_l2_log.info(logger_local_huaxin_l2_orderdetail, data) |
| | | if code not in tmep_order_detail_queue_dict: |
| | | tmep_order_detail_queue_dict[code] = queue.Queue() |
| | | # 原来的格式 |
| | |
| | | "insertTime": pOrderField.InsertTime, "insertDate": pOrderField.InsertDate, |
| | | "acceptTime": pOrderField.AcceptTime, "cancelTime": pOrderField.CancelTime, |
| | | "limitPrice": pOrderField.LimitPrice, "accountID": pOrderField.AccountID, |
| | | "turnover": pOrderField.Turnover, |
| | | "volume": pOrderField.VolumeTotalOriginal, |
| | | "volumeTraded": pOrderField.VolumeTraded, "orderStatus": pOrderField.OrderStatus, |
| | | "orderSubmitStatus": pOrderField.OrderSubmitStatus, "statusMsg": pOrderField.StatusMsg} |
| | | "orderRef": pOrderField.OrderRef, "turnover": pOrderField.Turnover, |
| | | "volume": pOrderField.VolumeTotalOriginal, "volumeTraded": pOrderField.VolumeTraded, |
| | | "orderStatus": pOrderField.OrderStatus, "orderSubmitStatus": pOrderField.OrderSubmitStatus, |
| | | "statusMsg": pOrderField.StatusMsg} |
| | | self.call_back_thread_pool.submit(self.__data_callback, TYPE_ORDER, 0, order_data) |
| | | except Exception as e: |
| | | async_log_util.error(logger_local_huaxin_trade_debug, "OnRtnOrder 出错") |
| | |
| | | "insertTime": pOrderField.InsertTime, "insertDate": pOrderField.InsertDate, |
| | | "acceptTime": pOrderField.AcceptTime, "cancelTime": pOrderField.CancelTime, |
| | | "limitPrice": pOrderField.LimitPrice, "accountID": pOrderField.AccountID, |
| | | "turnover": pOrderField.Turnover, |
| | | "turnover": pOrderField.Turnover, "orderRef": pOrderField.OrderRef, |
| | | "volume": pOrderField.VolumeTotalOriginal, |
| | | "volumeTraded": pOrderField.VolumeTraded, "orderStatus": pOrderField.OrderStatus, |
| | | "orderSubmitStatus": pOrderField.OrderSubmitStatus, "statusMsg": pOrderField.StatusMsg}) |
| | |
| | | total_datas = local_today_datas.get(code) |
| | | if total_datas: |
| | | MIN_MONEYS = [300, 200, 100, 50] |
| | | watch_indexes = set() |
| | | MAX_COUNT = 5 |
| | | for min_money in MIN_MONEYS: |
| | | watch_indexes = set() |
| | | for i in range(end_index, start_index, -1): |
| | | # if i > len(total_datas): |
| | | # continue |
| | |
| | | code)) |
| | | if left_count > 0: |
| | | watch_indexes.add(i) |
| | | if len(watch_indexes) >= 5: |
| | | if len(watch_indexes) >= MAX_COUNT: |
| | | break |
| | | except Exception as e: |
| | | logger_l2_l_cancel.error(f"{code}: 范围: {start_index}-{end_index} 位置:{i}") |
| | | logger_l2_l_cancel.exception(e) |
| | | if watch_indexes: |
| | | self.__set_watch_indexes(code, watch_indexes) |
| | | l2_log.l_cancel_debug(code, f"设置监听范围, 数据范围:{start_index}-{end_index} 监听范围-{watch_indexes}") |
| | | if len(watch_indexes) >= MAX_COUNT: |
| | | break |
| | | if watch_indexes: |
| | | self.__set_watch_indexes(code, watch_indexes) |
| | | l2_log.l_cancel_debug(code, f"设置监听范围, 数据范围:{start_index}-{end_index} 监听范围-{watch_indexes}") |
| | | |
| | | # 设置真实下单位置 |
| | | def set_real_place_order_index(self, code, index, buy_single_index=None): |
| | |
| | | |
| | | l2_data_log = AsyncLogManager() |
| | | |
| | | |
| | | huaxin_l2_log = AsyncLogManager() |
| | | |
| | | |
| | | log_queue = queue.Queue() |
| | | |
| | | |
| | | def __add_log(logger, method, *args): |
| | | log_queue.put_nowait((logger, time.time(), method, args)) |
| | | def __add_log(logger, time_out_log, method, *args): |
| | | start_time = time.time() |
| | | log_queue.put_nowait((logger, start_time, method, args)) |
| | | if time_out_log: |
| | | end_time = time.time() |
| | | sub_time = end_time - start_time |
| | | if sub_time > 0.01: |
| | | # 记录日志保存慢的日志 |
| | | __add_log(logger_debug, False, f"保存到日志队列用时:{sub_time}s") |
| | | |
| | | |
| | | def debug(logger, *args): |
| | | __add_log(logger, "debug", *args) |
| | | __add_log(logger, True, "debug", *args) |
| | | |
| | | |
| | | def info(logger, *args): |
| | | __add_log(logger, "info", *args) |
| | | __add_log(logger, True, "info", *args) |
| | | |
| | | |
| | | def warning(logger, *args): |
| | | __add_log(logger, "warning", *args) |
| | | __add_log(logger, True, "warning", *args) |
| | | |
| | | |
| | | def error(logger, *args): |
| | | __add_log(logger, "error", *args) |
| | | __add_log(logger, True, "error", *args) |
| | | |
| | | |
| | | def exception(logger, *args): |
| | | __add_log(logger, "exception", *args) |
| | | __add_log(logger, True, "exception", *args) |
| | | |
| | | |
| | | # 运行同步日志 |
| | |
| | | |
| | | if __name__ == "__main__": |
| | | # info(logger_debug, "*-{}", "test") |
| | | info(logger_debug, "123123") |
| | | info(logger_debug, "002375") |
| | | run_sync() |
| | |
| | | if not is_pipe: |
| | | trade_cmd_callback(TradeRequest(_type, root_data, request_id)) |
| | | else: |
| | | start_time = time.time() |
| | | pipe_trade.send(json.dumps(root_data).encode("utf-8")) |
| | | use_time = int((time.time() - start_time)*1000) |
| | | if use_time > 10: |
| | | async_log_util.info(hx_logger_trade_loop, f"发送耗时:request_id-{request_id} 耗时时间:{use_time}") |
| | | if log_enable: |
| | | async_log_util.info(hx_logger_trade_loop, "请求发送成功:request_id-{}", request_id) |
| | | except BrokenPipeError as e: |
| | |
| | | new_place_order_index = trade_huaxin.order_success(d['securityID'], |
| | | d['accountID'], |
| | | d['orderSysID'], |
| | | d['orderRef'], |
| | | d['insertTime']) |
| | | if new_place_order_index: |
| | | buy_single_index, buy_exec_index, compute_index, num, count, max_num_set, volume_rate = TradePointManager().get_buy_compute_start_data_cache( |
| | |
| | | trade_huaxin.order_success(resultJSON['securityId'], |
| | | resultJSON['accountID'], |
| | | resultJSON['orderSysID'], |
| | | resultJSON['orderRef'], |
| | | resultJSON['insertTime'] |
| | | ) |
| | | return_str = json.dumps({"code": 0}) |
| | |
| | | raise Exception("下单失败,无返回") |
| | | |
| | | |
| | | def order_success(code, accountId, orderSysID, insertTime): |
| | | def order_success(code, accountId, orderSysID, orderRef, insertTime): |
| | | # 加入系统订单号 |
| | | __TradeOrderIdManager.add_order_id(code, accountId, orderSysID) |
| | | # 删除临时订单号 |
| | | __TradeOrderIdManager.remove_order_ref(code, orderRef) |
| | | # 根据插入时间判断下单位置是否正确 |
| | | try: |
| | | place_index = huaxin_delegate_postion_manager.get_place_order_position(code) |
| | |
| | | # 获取L2的数据 |
| | | local_today_datas = log_export.load_l2_from_log(date) |
| | | datas = local_today_datas[code] |
| | | datas = datas[-2000:] |
| | | # 获取L2处理位置信息 |
| | | process_indexs = log_export.get_l2_process_position(code, date) |
| | | trade_indexs = log_export.get_l2_trade_position(code, date) |
| | |
| | | num_operate_map = {} |
| | | l2.l2_data_util.load_num_operate_map(num_operate_map, code, datas) |
| | | for progress in progresses: |
| | | deal_big_money_manager.DealComputeProgressManager().set_trade_progress(code, progress, datas, num_operate_map[code]) |
| | | deal_big_money_manager.DealComputeProgressManager().set_trade_progress(code, progress, datas, |
| | | num_operate_map[code]) |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | try: |
| | | export_l2_excel("600615") |
| | | export_l2_excel("002375") |
| | | except Exception as e: |
| | | logging.exception(e) |