Задать вопрос
@Sergey_Lomakin

Как в Python получить список открытых позиций в Binance?

Нужен список монет и размер открытой позиции по каждой монете.
В документации не нашёл отдельного запроса.

client.get_position_risk()

возвращает список вида:
[
...
{'symbol': 'FTTBUSD', 'positionAmt': '0.0', 'entryPrice': '0.0', 'markPrice': '0.00000000', 'unRealizedProfit': '0.00000000', 'liquidationPrice': '0', 'leverage': '20', 'maxNotionalValue': '0', 'marginType': 'cross', 'isolatedMargin': '0.00000000', 'isAutoAddMargin': 'false', 'positionSide': 'BOTH', 'notional': '0', 'isolatedWallet': '0', 'updateTime': 0}
{'symbol': 'ETHUSDT', 'positionAmt': '0.003', 'entryPrice': '1912.07', 'markPrice': '1911.37031373', 'unRealizedProfit': '-0.00209905', 'liquidationPrice': '0', 'leverage': '20', 'maxNotionalValue': '15000000', 'marginType': 'cross', 'isolatedMargin': '0.00000000', 'isAutoAddMargin': 'false', 'positionSide': 'BOTH', 'notional': '5.73411094', 'isolatedWallet': '0', 'updateTime': 1689840029568}
{'symbol': 'ALPHAUSDT', 'positionAmt': '0', 'entryPrice': '0.0', 'markPrice': '0.00000000', 'unRealizedProfit': '0.00000000', 'liquidationPrice': '0', 'leverage': '20', 'maxNotionalValue': '25000', 'marginType': 'cross', 'isolatedMargin': '0.00000000', 'isAutoAddMargin': 'false', 'positionSide': 'BOTH', 'notional': '0', 'isolatedWallet': '0', 'updateTime': 0}
...
]

Мне достаточно 'symbol': 'ETHUSDT', 'positionAmt': '0.003'.
Монет может быть несколько.
Циклом for - слишком долго, возвращаемый список состоит из 240 элементов.
Монета тоже может быть разной и задаётся переменной.
  • Вопрос задан
  • 525 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
res = [x for x in getrisk if x['symbol'] in ('ETHUSDT', )]
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
Обычно для работы с различными финансовыми данными используют такую структуру данных, как pandas датафрейм (некоторые api даже имеют параметр что то типа returned_type = 'dataframe' ). Там легко выбрать все что нужно, привести типы данных, ответить на любые вопросы например по какой монете самая большая открытая позиция и т.д, в общем все возможные манипуляции там есть + визуализации.

Например представим нам прислали структуру как у тебя, я сократил (количество ключей для читабельности, а так не важно сколько их там)
import pandas as pd
import numpy as np
data = [
    {'symbol': 'FTTBUSD', 'positionAmt': '0.001', 'entryPrice': '0.0', 'markPrice': '0.00000000'},
    {'symbol': 'ETHUSDT', 'positionAmt': '0.003', 'entryPrice': '1912.07', 'markPrice': '1911.37031373'},
    {'symbol': 'ALPHAUSDT', 'positionAmt': '0.002', 'entryPrice': '0.0', 'markPrice': '0.00000000'}
    ]
df = pd.DataFrame(data=data, columns=['symbol','positionAmt'])
df['positionAmt'] = df['positionAmt'].astype(float)
print(df)

Все мы выбрали только те ключи которые нам интересны параметр columns, если нужны все просто не указываем его. Теперь мы имеем таблицу с которой, мы можем делать все что угодно, начиная от любых расчетов, записей в различные форматы файлов или бд и даже визуализаций, например код df.plot(kind='bar', x='symbol', y='positionAmt'); Выведет вот такой график64b90126736ad454204003.png
Это для демонстрации что всего в пару строк мы проходим путь от того что нам прислал binance до анализа.
C датафреймом, будет легко и быстро задавать все интересующие вопросы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы