| | |
| | | self.end_headers() |
| | | self.wfile.write(response_data.encode()) |
| | | |
| | | def __is_sign_right(self, params): |
| | | @classmethod |
| | | def __is_sign_right(cls, params): |
| | | ps = [] |
| | | for k, v in params.items(): |
| | | if k == 'sign': |
| | |
| | | code = params.get("code") # 代码 |
| | | volume = params.get("volume") # 量 |
| | | price = round(params.get("price"), 2) # 价格 |
| | | result = huaxin_trade_api.order(1, code, volume, price) |
| | | result = huaxin_trade_api.order(1, code, volume, price, blocking=True) |
| | | result_str = json.dumps({"code": 0, "data": result}) |
| | | elif url.path == "/sell": |
| | | params = self.__parse_request() |
| | |
| | | code = params.get("code") # 代码 |
| | | volume = params.get("volume") # 量 |
| | | price = round(params.get("price"), 2) # 价格 |
| | | result = huaxin_trade_api.order(2, code, volume, price) |
| | | result = huaxin_trade_api.order(2, code, volume, price, blocking=True) |
| | | result_str = json.dumps({"code": 0, "data": result}) |
| | | except Exception as e: |
| | | result_str = json.dumps({"code": 1, "msg": str(e)}) |
| | |
| | | # import account_management |
| | | # 引入日志模块 |
| | | from strategy.logging_config import get_logger |
| | | from trade import huaxin_trade_api |
| | | from trade import huaxin_trade_api, huaxin_trade_data_update, middle_api_protocol |
| | | from utils import huaxin_util |
| | | |
| | | # 获取logger实例 |
| | | logger = get_logger() |
| | |
| | | :param order_info: {'sinfo': 'b_603682_1736312765623', 'securityID': '603682', 'orderLocalID': '8100043081', 'direction': '0', 'orderSysID': '110018100043081', 'insertTime': '13:06:04', 'insertDate': '20250108', 'acceptTime': '13:05:46', 'cancelTime': '', 'limitPrice': 6.45, 'accountID': '00032047', 'orderRef': 130608, 'turnover': 6410.0, 'volume': 1000, 'volumeTraded': 1000, 'orderStatus': '4', 'orderSubmitStatus': '1', 'statusMsg': ''} |
| | | :return: |
| | | """ |
| | | print(f"收到订单回调:{order_info}") |
| | | logger_debug.info(f"收到订单回调:{order_info}") |
| | | if huaxin_util.is_deal(order_info['orderStatus']): |
| | | # 成交,需要更新持仓/委托/成交 |
| | | huaxin_trade_data_update.add_position_list() |
| | | huaxin_trade_data_update.add_delegate_list("成交") |
| | | huaxin_trade_data_update.add_deal_list() |
| | | else: |
| | | huaxin_trade_data_update.add_money_list() |
| | | huaxin_trade_data_update.add_delegate_list("订单状态变化") |
| | | # 推送订单数据 |
| | | threading.Thread(target=lambda: middle_api_protocol.push( |
| | | middle_api_protocol.load_push_msg({"type": "order", "data": order_info})), daemon=True).start() |
| | | |
| | | queue = multiprocessing.Queue() |
| | | huaxin_trade_api.run_trade(queue, MyTradeCallback()) |
| | |
| | | |
| | | SERVER_HOST = '43.138.167.68' |
| | | SERVER_PORT = 10008 |
| | | SERVER_PUSH_PORT = 10009 |
| | | |
| | | |
| | | def request(data_json, host=SERVER_HOST, port=SERVER_PORT): |
| | | if type(data_json) == set: |
| | | data_json = list(data_json) |
| | | data_bytes = socket_util.load_header(json.dumps(data_json).encode('utf-8')) |
| | | sk = socket_util.create_socket(host, port) |
| | | try: |
| | | sk.sendall(data_bytes) |
| | | result_str, header_str = socket_util.recv_data(sk) |
| | | result_json = json.loads(result_str) |
| | | if result_json["code"] != 0: |
| | | raise Exception(result_json["msg"]) |
| | | return result_json.get("data") |
| | | finally: |
| | | sk.close() |
| | | |
| | | |
| | | def push(data_json, host=SERVER_HOST, port=SERVER_PUSH_PORT): |
| | | data_bytes = socket_util.load_header(json.dumps(data_json).encode('utf-8')) |
| | | sk = socket_util.create_socket(host, port) |
| | | try: |
| | |
| | | |
| | | # ------------------------------消息推送------------------------------------ |
| | | def load_push_msg(data): |
| | | fdata = {"type": "push_msg", "data": {"ctype": "push_msg", "data": data}} |
| | | fdata = {"type": "push_msg", "data": data} |
| | | return fdata |
| | | |
| | | |