| | |
| | | |
| | | |
| | | # 网络请求 |
| | | def __request(_type, data, request_id=None): |
| | | def __request(_type, data, request_id=None, blocking=False): |
| | | if not request_id: |
| | | request_id = __get_request_id(_type) |
| | | try: |
| | |
| | | sk = socket_util.create_socket("127.0.0.1", trade_client_server.SERVER_PORT) |
| | | if True: |
| | | sk.sendall(socket_util.load_header(json.dumps(root_data).encode("utf-8"))) |
| | | if blocking: |
| | | result_data, header_str = socket_util.recv_data(sk) |
| | | if result_data: |
| | | set_response(request_id,json.loads(result_data)) |
| | | else: |
| | | pipe_trade.send(json.dumps(root_data).encode("utf-8")) |
| | | async_log_util.info(hx_logger_trade_loop, "请求发送成功:request_id-{}", request_id) |
| | |
| | | "local_order_id": local_order_id, |
| | | "volume": volume, |
| | | "price_type": price_type, |
| | | "price": price, "sinfo": sinfo}, request_id=request_id) |
| | | "price": price, "sinfo": sinfo}, request_id=request_id, blocking=blocking) |
| | | if blocking: |
| | | try: |
| | | return __read_response(request_id, blocking) |
| | |
| | | "direction": direction, |
| | | "code": code, |
| | | "localOrderID": localOrderID, |
| | | "orderSysID": orderSysID, "sinfo": sinfo}, request_id=request_id) |
| | | "orderSysID": orderSysID, "sinfo": sinfo}, request_id=request_id, blocking=blocking) |
| | | try: |
| | | return __read_response(request_id, blocking) |
| | | finally: |
| | |
| | | def get_delegate_list(can_cancel=True, blocking=True, timeout=TIMEOUT): |
| | | request_id = __request(ClientSocketManager.CLIENT_TYPE_DELEGATE_LIST, |
| | | {"type": ClientSocketManager.CLIENT_TYPE_DELEGATE_LIST, |
| | | "can_cancel": 1 if can_cancel else 0}) |
| | | "can_cancel": 1 if can_cancel else 0}, blocking=blocking) |
| | | |
| | | return __read_response(request_id, blocking, timeout=timeout) |
| | | |
| | |
| | | # 获取成交列表 |
| | | def get_deal_list(blocking=True): |
| | | request_id = __request(ClientSocketManager.CLIENT_TYPE_DEAL_LIST, |
| | | {"type": ClientSocketManager.CLIENT_TYPE_DEAL_LIST}) |
| | | {"type": ClientSocketManager.CLIENT_TYPE_DEAL_LIST}, blocking=blocking) |
| | | return __read_response(request_id, blocking) |
| | | |
| | | |
| | | # 获取持仓列表 |
| | | def get_position_list(blocking=True): |
| | | request_id = __request(ClientSocketManager.CLIENT_TYPE_POSITION_LIST, |
| | | {"type": ClientSocketManager.CLIENT_TYPE_POSITION_LIST}) |
| | | {"type": ClientSocketManager.CLIENT_TYPE_POSITION_LIST}, blocking=blocking) |
| | | return __read_response(request_id, blocking) |
| | | |
| | | |
| | | # 获取账户资金状况 |
| | | def get_money(blocking=True): |
| | | request_id = __request(ClientSocketManager.CLIENT_TYPE_MONEY, |
| | | {"type": ClientSocketManager.CLIENT_TYPE_MONEY}) |
| | | {"type": ClientSocketManager.CLIENT_TYPE_MONEY}, blocking=blocking) |
| | | return __read_response(request_id, blocking) |
| | | |
| | | |
| | | # 设置L2订阅数据 |
| | | def set_l2_codes_data(codes_data, blocking=True): |
| | | request_id = __request(ClientSocketManager.CLIENT_TYPE_CMD_L2, |
| | | {"type": ClientSocketManager.CLIENT_TYPE_CMD_L2, "data": codes_data}) |
| | | {"type": ClientSocketManager.CLIENT_TYPE_CMD_L2, "data": codes_data}, blocking=blocking) |
| | | return __read_response(request_id, blocking) |
| | | |
| | | |
| | | # 设置L2订阅数据 |
| | | def __test_trade_channel(sid): |
| | | request_id = __request("test", |
| | | {"type": "test", "data": {"sid": sid}}) |
| | | {"type": "test", "data": {"sid": sid}}, blocking=True) |
| | | return __read_response(request_id, True) |
| | | |
| | | |