Python: E1136: значение «self.exchange.get_portfolio» является неподписанным - PullRequest
0 голосов
/ 10 ноября 2018
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 ]

0 голосов
/ 10 ноября 2018

Вы должны сделать это следующим образом:

qty = self.exchange.get_portfolio()
qty = qty[qty.keys()[0]]['currentQty']

или в один ряд:

qty = self.exchange.get_portfolio()[self.exchange.get_portfolio().keys()[0]]['currentQty']
0 голосов
/ 10 ноября 2018

У вас есть небольшая ошибка в вызове:

self.exchange.get_portfolio - это функция, поэтому сначала вы должны вызвать ее, а , а затем вы можете ссылаться на записи из возвращенного dict.

О, я только что увидел, что вы также должны вставить свой symbol до:

qty = self.exchange.get_portfolio()[<YOUR_SYMBOL>]['currentQty']

Если вы не знаете символов, вы можете использовать функцию keys, которая перечисляет все ключи вашего диктанта:

port = self.exchange.get_portfolio()
port_keys = port.keys()
qty = port[port_keys[<SOME KEY NUMBER>]]['currentQty']
...