Проблема асинхронизма, это безумие.

Автор:- Я не знаю., Создано: 2023-03-15 10:43:20, Обновлено:

Импорт панды как pd from binance.client import AsyncClient from datetime import datetime, timedelta Импорт aiohttp Импорт json def utc_to_local ((utc_dt):# преобразовать в Пекинское время local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # Восточный восьмой часовой пояс local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz) Оригинальное название: return local_dt

Асинхронное инициирование клиента Binance

async def init_client ((): клиент = ждать AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

Асинхронное получение данных K-линии

async def get_klines ((клиент, символ, время начала, время окончания, интервал): klines = ждать клиента.futures_klines ((символ=символ, интервал=интервал, startTime=start_time.timestamp))) *1000, endTime=end_time.timestamp))) *1000) df = pd.DataFrame ((клинки, столбцы=[ временная отметка, open, high, low, close, volume, close_time, quote_asset_volume, number_of_trades, taker_buy_base_asset_volume, taker_buy_quote_asset_volume, ignore]) df[timestamp] = pd.to_datetime(df[timestamp], единица=ms) df[close_time] = pd.to_datetime(df[close_time], единица=ms) df.set_index (( timestamp, inplace=True) df.drop(columns=[close_time, ignore], inplace=True) df = df.astype ((float) возвращение df

Отключение синхронности клиента Binance

async def close_client ((клиент): ждать клиента.close_connection ((()

Асинхронное выполнение основных функций

async def main (((): client = await init_client ((() Ожидание на начало работы # Получить все пары транзакций USDT на постоянные контракты exchange_info = await client.Futures_exchange_info (((((((((((((((((((((((((((( symbols = [symbol_info [symbol] for symbol_info in exchange_info [symbols] if symbol_info [contractType] == PERPETUAL and symbol_info [quoteAsset] == USDT] # Создание пустой DataFrame df = pd.DataFrame ((columns=[Symbol кнопка, Open кнопка, High кнопка, Low кнопка, Close кнопка, Change кнопка, Volume кнопка]) df.set_index ((Symbol, inplace=True)

# 将所有交易对添加到 DataFrame 中
for symbol in symbols:
    df.loc[symbol] = [None] * len(df.columns)
# 遍历所有交易对
for symbol in symbols:
    # 设置起止时间
    start_time = datetime.utcnow() - timedelta(minutes=16)#开始时间为16分钟前
    end_time = datetime.utcnow()
    try:
   # 获取M15k线
        current_klines = await get_klines(client, symbol, end_time - timedelta(minutes=15), end_time, '15m')
    except Exception as e:
        Log(f"An error occurred: {e}")
        current_klines = []
    # 将数据存入 DataFrame
   # 更新对应的行
    df.loc[symbol, 'Open'] = current_klines['open'].iloc[-1]
    df.loc[symbol, 'High'] = current_klines['high'].iloc[-1]
    df.loc[symbol, 'Low'] = current_klines['low'].iloc[-1]
    df.loc[symbol, 'Close'] = current_klines['close'].iloc[-1]
    df.loc[symbol, 'Change'] = current_change
    df.loc[symbol, 'Volume'] = current_klines['volume'].iloc[-1]

# 关闭客户端
Log(df)
await close_client(client)

Запустить асинхронную программу

еслиИмя == ‘главный: импортировать асинциоasyncio.run(главная))

Цель состоит в том, чтобы получить данные о падении всех контрактных валют по отношению к M15.

Log ((df) один раз после ошибки; то есть после обновления всех символов, цены и т. д.init_ctxFile , line 147, in TypeError: Object of type coroutine is not JSON serializable sys:1: RuntimeWarning: coroutine main was never awaited RuntimeWarning: Enable tracemalloc to get the object allocation traceback main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited main was never awaited Попросите о помощи в этом вопросе.


Больше

Нет, еслиВы можете собрать данные через несколько строк, поместить каждый строк в общий объект, и затем определить, закончились ли все стены.

- Я не знаю.О том, что такое агломерация, всегда есть ключевое слово или два?

- Я не знаю.О том, что такое агломерация, всегда есть ключевое слово или два?

ТраваЯ не использую эту библиотеку, но лучше пробовать поэтапно. Кроме того, не очень хорошо иметь сотни транзакций одновременно.

Трава/fapi/v1/ticker/price