def settle(self): '同步可用资金/可卖股票' if self.running_environment == RUNNING_ENVIRONMENT.TZERO and self.hold_available.sum() != 0: raise RuntimeError('QAACCOUNT: 该T0账户未当日仓位,请平仓 {}'.format( self.hold_available.to_dict())) self.sell_available = self.hold self.buy_available = self.hold self.datetime = '{} 09:30:00'.format(QA_util_get_next_day( self.date)) if self.date is not None else None
def subscribe_strategy( self, strategy_id: str, last: int, today=datetime.date.today(), cost_coins=10 ): """订阅一个策略 会扣减你的积分 Arguments: strategy_id {str} -- [description] last {int} -- [description] Keyword Arguments: today {[type]} -- [description] (default: {datetime.date.today()}) cost_coins {int} -- [description] (default: {10}) """ if self.coins > cost_coins: order_id = str(uuid.uuid1()) self._subscribed_strategy[strategy_id] = { 'lasttime': last, 'start': str(today), 'strategy_id': strategy_id, 'end': QA_util_get_next_day( QA_util_get_real_date(str(today), towards=1), last ), 'status': 'running', 'uuid': order_id } self.coins -= cost_coins self.coins_history.append( [ cost_coins, strategy_id, str(today), last, order_id, 'subscribe' ] ) return True, order_id else: # return QAERROR. return False, 'Not Enough Coins'
def settle(self): """ 股票/期货的日结算 股票的结算: 结转股票可卖额度 T0的结算: 结转T0的额度 期货的结算: 结转静态资金 """ if self.running_environment == RUNNING_ENVIRONMENT.TZERO and self.hold_available.sum( ) != 0: raise RuntimeError('QAACCOUNT: 该T0账户未当日仓位,请平仓 {}'.format( self.hold_available.to_dict())) if self.market_type == MARKET_TYPE.FUTURE_CN: self.static_balance['frozen'].append( sum([ rx['money'] * rx['amount'] for var in self.frozen.values() for rx in var.values() ])) self.static_balance['cash'].append(self.cash[-1]) self.static_balance['hold'].append(self.hold.to_dict()) self.static_balance['date'].append(self.date) """静态权益的结算 只关心开仓价/ 不做盯市制度 动态权益的结算需要关心 """ self.static_balance['static_assets'].append( self.static_balance['cash'][-1] + self.static_balance['frozen'][-1]) self.sell_available = self.hold self.buy_available = self.hold self.datetime = '{} 09:30:00'.format(QA_util_get_next_day( self.date)) if self.date is not None else None