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

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

Импорт панды как pd from binance.client import AsyncClient 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 ((клинки, столбцы=[ timestamp, 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 = ожидать клиента.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_ctxФайл , строка 147, в TypeError: Объект типа coroutine не является JSON сериализируемым sys:1: RuntimeWarning: coroutine main никогда не ожидалось RuntimeWarning: Включить tracemalloc для получения отслеживания распределения объектов

ChatGpt не справился с этой задачей, и мы обратились к вам за помощью


Больше информации

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

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

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

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

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