Python: E1136: значение "self.exchange.get_portfolio" является неподписанным
def get_portfolio(self):
contracts = settings.CONTRACTS
portfolio = {}
for symbol in contracts:
position = self.bitmex.position(symbol=symbol)
instrument = self.bitmex.instrument(symbol=symbol)
if instrument['isQuanto']:
future_type = "Quanto"
elif instrument['isInverse']:
future_type = "Inverse"
elif not instrument['isQuanto'] and not instrument['isInverse']:
future_type = "Linear"
else:
raise NotImplementedError("Unknown future type; not quanto or inverse: %s" % instrument['symbol'])
if instrument['underlyingToSettleMultiplier'] is None:
multiplier = float(instrument['multiplier']) / float(instrument['quoteToSettleMultiplier'])
else:
multiplier = float(instrument['multiplier']) / float(instrument['underlyingToSettleMultiplier'])
portfolio[symbol] = {
"currentQty": float(position['currentQty']),
"futureType": future_type,
"multiplier": multiplier,
"markPrice": float(instrument['markPrice']),
"spot": float(instrument['indicativeSettlePrice'])
}
return portfolio
qty = self.exchange.get_portfolio['currentQty']()
Кто-нибудь знает, что я делаю неправильно, когда я вызываю функцию get_portfolio, потому что я продолжаю получать это сообщение об ошибке:
E1136:Value 'self.exchange.get_portfolio' is unsubscriptable
2 ответа
У вас есть небольшая ошибка в вызове:
self.exchange.get_portfolio
является функцией, поэтому сначала вы должны вызвать ее, а затем вы можете ссылаться на записи из возвращенного dict.
О, я только что увидел, что вы также должны вставить свой symbol
до:
qty = self.exchange.get_portfolio()[<YOUR_SYMBOL>]['currentQty']
Если вы не знаете символы, вы можете использовать keys
функция, которая перечисляет все ключи вашего dict:
port = self.exchange.get_portfolio()
port_keys = port.keys()
qty = port[port_keys[<SOME KEY NUMBER>]]['currentQty']
Вы должны сделать это следующим образом:
qty = self.exchange.get_portfolio()
qty = qty[qty.keys()[0]]['currentQty']
или в один ряд:
qty = self.exchange.get_portfolio()[self.exchange.get_portfolio().keys()[0]]['currentQty']