请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问,如果股票池中有2只股票,如何查询购买第二只股票的可用金额?

请问,如果股票池中有2只股票,如何查询购买第二只股票的可用金额?我写的代码报错,不知应该如何修改,还请指教!谢谢图片描述

正在回答 回答被采纳积分+3

1回答

meteor2022 2023-01-29 23:19:32
同学,你这个代码截图没有run函数,也没有order函数,没有交易哪里来持仓呢?代码是否可以截全一点,方便我帮你排查问题
0 回复 有任何疑惑可以回复我~
  • 提问者 慕容3139001 #1
    老师你好,你给的代码如下:
    def initialize(context):
        g.security = "000001.XSHE"
    
    def handle_data(context, data):
        # 输出账户总资产
        log.info(context.portfolio.total_value)
        # 输出持仓额
        log.info(context.portfolio.positions_value)
        # 输出今天日期
        log.info(context.current_dt.day)  # A月B日就输出B
        # 总权益的累计收益
        log.info(context.portfolio.returns)
        # 获取仓位subportfolios[0]的可用资金
        log.info(context.subportfolios[0].available_cash) 
    
    以上是有且仅有一只股票时,使用subportfolios的代码。如果我现在有2只股票,我想查询第二只股票的available_cash,怎么写呢? 于是,我就写成如下:
    def initialize(context):
        set_universe =[ '000001.XSHE','000004.XSHE']
    
    def handle_data(context, data):
        # 输出账户总资产
        log.info(context.portfolio.total_value)
        # 输出持仓额
        log.info(context.portfolio.positions_value)
        # 输出今天日期
        log.info(context.current_dt.day)  # A月B日就输出B
        # 总权益的累计收益
        log.info(context.portfolio.returns)
        # 获取仓位subportfolios[1]的可用资金
        log.info(context.subportfolios[1].available_cash) 
    
    但是报错,不知该如何完善,谢谢!
    回复 有任何疑惑可以回复我~ 2023-01-30 11:30:34
  • 提问者 慕容3139001 #2
    老师你好,这是你写的代码:
    def initialize(context):
        g.security = "000001.XSHE"
    
    def handle_data(context, data):
        # 输出账户总资产
        log.info(context.portfolio.total_value)
        # 输出持仓额
        log.info(context.portfolio.positions_value)
        # 输出今天日期
        log.info(context.current_dt.day)  # A月B日就输出B
        # 总权益的累计收益
        log.info(context.portfolio.returns)
        # 获取仓位subportfolios[0]的可用资金
        log.info(context.subportfolios[0].available_cash) 
    
    以上为有且仅有一只股票时,查询可用资金的代码。如果现在有2只股票,我想查询第二只股票的可用资金该如何操作呢。于是,我写代码如下:
    def initialize(context):
        set_universe =[ '000001.XSHE','000004.XSHE']
    
    def handle_data(context, data):
        # 输出账户总资产
        log.info(context.portfolio.total_value)
        # 输出持仓额
        log.info(context.portfolio.positions_value)
        # 输出今天日期
        log.info(context.current_dt.day)  # A月B日就输出B
        # 总权益的累计收益
        log.info(context.portfolio.returns)
        # 获取仓位subportfolios[1]的可用资金
        log.info(context.subportfolios[1].available_cash) 
    
    但是报错,不知道该如何完善呢?谢谢!
    回复 有任何疑惑可以回复我~ 2023-01-30 11:32:54
  • meteor2022 回复 提问者 慕容3139001 #3
    同学,你可能没有理解subportfolio--子账户信息这个对象的意义。
    默认情况只有一个子账户!!!
    子账户信息的业务意义是你购买股票的账户信息,包含里面的账户类型,累计出入金,可用资金,总资产,多单仓位,空单仓位等。它和股票池中的股票数量没有直接联系。
    
    如果你仅仅只想查询账户可用资金,还是 log.info(context.subportfolios[0].available_cash) 
    
    如果你想查询可用买卖股票的持仓信息,需要采用long_positions多单仓位以及position对象,示例如下:
        long_positions_dict = context.subportfolios[0].long_positions
        for position in list(long_positions_dict.values()):
            print("标的:{0},总仓位:{1},标的价值:{2}".format(position.security, position.total_amount, position.value))
            print("持仓价值:{0}".format(context.subportfolios[0].positions_value))
            print("总资产:{0}".format(context.subportfolios[0].total_value))
    回复 有任何疑惑可以回复我~ 2023-01-30 23:48:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信