admin
2024-02-29 07af91d1cb4e317065b8dc1db09f337f2014e8c7
添加外部接口
2个文件已修改
69 ■■■■ 已修改文件
middle_api_server.py 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/huaxin_trade_record_manager.py 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
middle_api_server.py
@@ -90,15 +90,14 @@
                                if not volume:
                                    raise Exception("请上传volume")
                                if round(float(price), 2) <= 0:
                                    prices = HistoryKDatasUtils.get_now_price([code])
                                    if not prices:
                                        raise Exception("现价获取失败")
                                    price = prices[0][1]
                                # if round(float(price), 2) <= 0:
                                #     prices = HistoryKDatasUtils.get_now_price([code])
                                #     if not prices:
                                #         raise Exception("现价获取失败")
                                #     price = prices[0][1]
                                # 下单
                                result = hosting_api_util.trade_order(hosting_api_util.TRADE_DIRECTION_BUY, code,
                                                                      volume,
                                                                      round(float(price), 2))
                                                                      volume, price)
                                if result:
                                    resultJSON = result
                                    print("下单结果:", resultJSON)
@@ -353,14 +352,29 @@
                            sk.sendall(socket_util.load_header(return_str.encode(encoding='utf-8')))
                            while True:
                                try:
                                    sk.recv(1024)
                                    buf = sk.recv(1024)
                                    print(f"收到数据:{buf.decode(encoding='utf-8')}")
                                    time.sleep(1)
                                except:
                                    print("数据断开")
                                    break
                        elif type_ == "get_latest_cancel_orders":
                            # 获取最近的撤单
                            results = huaxin_trade_record_manager.DelegateRecordManager.list_latest_cancel_records(10)
                            fresults = []
                            for result in results:
                                temp = {}
                                for key in result:
                                    if key in ["securityID", "securityName", "direction", "orderSysID", "acceptTime",
                                               "cancelTime", "limitPrice", "volume"]:
                                        temp[key] = result[key]
                                # 过滤虚拟单与卖单
                                if int(temp["volume"] <= 100):
                                    continue
                                if int(temp["direction"] != 0):
                                    continue
                                fresults.append(temp)
                                return_str = json.dumps(json.dumps({"code": 0, "data": fresults}))
                    finally:
                        log.request_info("middle_api_server", f"请求结束:{type_}")
                break
utils/huaxin_trade_record_manager.py
@@ -15,6 +15,10 @@
class DelegateRecordManager:
    key_list = ["id", "orderLocalID", "securityID", "securityName", "direction", "orderSysID", "insertTime",
                "insertDate", "acceptTime", "cancelTime", "limitPrice", "turnover", "volume", "volumeTraded",
                "orderStatus", "orderSubmitStatus", "statusMsg", "createTime", "updateTime", "accountID"]
    @classmethod
    def add(cls, datas):
        mysqldb = mysql_data.Mysqldb()
@@ -82,9 +86,6 @@
            results = mysqldb.select_all(
                f"select * from hx_trade_delegate_record r where {' and '.join(where_list)} order by createTime")
            # 转dict
            key_list = ["id", "orderLocalID", "securityID", "securityName", "direction", "orderSysID", "insertTime",
                        "insertDate", "acceptTime", "cancelTime", "limitPrice", "turnover", "volume", "volumeTraded",
                        "orderStatus", "orderSubmitStatus", "statusMsg", "createTime", "updateTime", "accountID"]
            fresults = []
            max_update_time = None
            if results:
@@ -96,13 +97,33 @@
                    temp = {}
                    for i in range(len(r)):
                        if type(r[i]) == datetime.datetime:
                            temp[key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
                            temp[cls.key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
                        else:
                            temp[key_list[i]] = r[i]
                            temp[cls.key_list[i]] = r[i]
                    fresults.append(temp)
            return fresults, max_update_time.strftime("%Y-%m-%d %H:%M:%S") if max_update_time else None
        finally:
            pass
    # 获取最近的撤单记录
    @classmethod
    def list_latest_cancel_records(cls, count, day=tool.get_now_date_str("%Y%m%d")):
        mysqldb = mysql_data.Mysqldb()
        where_list = [f"r.insertDate='{day}'", "r.cancelTime!=''"]
        results = mysqldb.select_many(
            f"select * from hx_trade_delegate_record r where {' and '.join(where_list)} order by r.cancelTime desc",
            count)
        fresults = []
        if results:
            for r in results:
                temp = {}
                for i in range(len(r)):
                    if type(r[i]) == datetime.datetime:
                        temp[cls.key_list[i]] = r[i].strftime("%Y-%m-%d %H:%M:%S")
                    else:
                        temp[cls.key_list[i]] = r[i]
                fresults.append(temp)
        return fresults
# 持仓记录
@@ -316,5 +337,5 @@
if __name__ == "__main__":
    results = DelegateRecordManager.list_by_day('20230704', '1970-01-01')
    results = DelegateRecordManager.list_latest_cancel_records(10)
    print(results)