Administrator
2023-07-13 5cc2ce51a5cc6ddbba9e832ecb903bc3b1b435e5
华鑫适配
2个文件已修改
41 ■■■■■ 已修改文件
trade/huaxin/huaxin_trade_record_manager.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/trade_api_server.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/huaxin/huaxin_trade_record_manager.py
@@ -105,11 +105,38 @@
# 持仓记录
class PositionManager:
    __redisManager = redis_manager.RedisManager(2)
    @classmethod
    def __get_redis(cls):
        return cls.__redisManager.getRedis()
    # 保存代码的量
    @classmethod
    def __save_code_volume(cls, code, volume):
        cls.__get_redis().setex(f"available_position_{code}", tool.get_expire(), f"{volume}")
    @classmethod
    def get_code_volume(cls, code):
        val = cls.__get_redis().get(f"available_position_{code}")
        if not val:
            return 0
        return int(val)
    @classmethod
    def add(cls, datas):
        mysqldb = mysql_data.Mysqldb()
        try:
            if datas:
                # 统计可用量
                volume_dict = {}
                for d in datas:
                    if d["securityID"] not in volume_dict:
                        volume_dict[d["securityID"]] = 0
                    volume_dict[d["securityID"]] = volume_dict[d["securityID"]] + d["availablePosition"]
                for k in volume_dict:
                    cls.__save_code_volume(k, volume_dict[k])
                for d in datas:
                    _id = f"{d['investorID']}-{d['tradingDay']}-{d['securityID']}"
                    # 查询是否有数据
@@ -119,7 +146,7 @@
                        # 新增数据
                        mysqldb.execute(
                            "insert into hx_trade_position values('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" % (
                                _id, d["tradingDay"], d["investorID"], d["securityName"], d["securityID"],
                                _id, d["investorID"], d["tradingDay"], d["securityName"], d["securityID"],
                                d["historyPos"], d["historyPosFrozen"], d["todayBSPos"], d["todayBSPosFrozen"],
                                d["historyPosPrice"],
                                d["totalPosCost"], d["prePosition"], d["availablePosition"], d["currentPosition"],
@@ -197,6 +224,11 @@
        finally:
            pass
    @classmethod
    def get_volume_by_code(cls, code):
        mysqldb = mysql_data.Mysqldb()
        mysqldb.select_one(f"select currentPosition from hx_trade_position where securityID='{code}'")
# 成交记录
class DealRecordManager:
trade/huaxin/trade_api_server.py
@@ -178,8 +178,11 @@
                        force_sell = codes_data["force"]
                        # TODO 强制卖策略
                        if volume == 0:
                            # TODO 获取持仓的量
                            pass
                            # 查询持仓量
                            volume = huaxin_trade_record_manager.PositionManager.get_code_volume(code)
                        if volume <= 0:
                            raise Exception("代码无持仓")
                        if not price:
                            # 获取现价
                            prices = HistoryKDatasUtils.get_now_price([code])