Я пишу простой менеджер API, и у меня проблема с использованием словаря в методе, вот что я написал до сих пор:
class BnManager():
def __init__(self, api_key, api_secret):
self.api_key = api_key
self.api_secret = api_secret
self.client = Client(api_key, api_secret)
def get_candles(self, symbol, interval):
self.symbol = symbol
self.interval = interval
choice = {
'1m' : Client.KLINE_INTERVAL_1MINUTE,
'3m' : Client.KLINE_INTERVAL_3MINUTE,
'5m' : Client.KLINE_INTERVAL_5MINUTE,
'15m' : Client.KLINE_INTERVAL_15MINUTE,
'30m' : Client.KLINE_INTERVAL_30MINUTE,
'1h' : Client.KLINE_INTERVAL_1HOUR,
'2h' : Client.KLINE_INTERVAL_2HOUR,
'4h' : Client.KLINE_INTERVAL_4HOUR,
'6h' : Client.KLINE_INTERVAL_6HOUR,
'8h' : Client.KLINE_INTERVAL_8HOUR,
'12h' : Client.KLINE_INTERVAL_12HOUR,
'1d' : Client.KLINE_INTERVAL_1DAY,
'3d' : Client.KLINE_INTERVAL_3DAY,
'1w' : Client.KLINE_INTERVAL_1WEEK,
'1m' : Client.KLINE_INTERVAL_1MONTH,
}
self.klines = self.client.get_klines(
self.symbol, choice[self.interval])
self.df = pd.DataFrame(self.klines, columns=[
'Date', 'Open', 'High', 'Low', 'Close', 'Volume',
'x', 'x1', 'x2', 'x3', 'x4', 'x5'])
self.df.drop(labels=['x', 'x1', 'x2', 'x3', 'x4', 'x5'],
axis=1, inplace=True).astype(float)
self.df['Date'] = date2num(pd.to_datetime(df.Date, unit='ms'))
self.df['Change'] = df['Close'].diff()
Проблема появляется, когда я пытаюсь выполнить метод get_candles
.
Например, когда я пишу manager.get_candles('BTCUSDT', '1m')
, я получаю:
self.symbol, выбор [self.interval] TypeError: get_candles () занимает 1
позиционный аргумент, но 3 были даны
Я знаю, что это, вероятно, тривиальный вопрос, но я действительно не понимаю, в чем проблема. И мой второй вопрос: как написать это без использования dict
. Я имею в виду, я хотел бы достичь чего-то вроде:
self.klines = self.client.get_klines(
self.symbol, Client.KLINE_INTERVAL_+interval)