El problema de la falta de sincronización es una locura.

El autor:¿Qué quieres decir?, Creado: 2023-03-15 10:43:20, Actualizado:

Importar pandas como pd Desde binance.client import AsyncClient Importar tiempo de fecha, tiempo de salida Importación de datos Importar json def utc_to_local ((utc_dt):# convertido a tiempo de Beijing local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # Diferencia horaria entre las ocho zonas del este local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz) el tiempo en el que se encuentra el sitio web de local_dt es el tiempo en el que se encuentra el sitio web de local_dt) ¿Cómo se hace esto?

Inicialización sincronizada del cliente de Binance

async def init_client ((): cliente = esperar AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

Obtención de datos sincronizados de línea K

Async def get_klines ((cliente, símbolo, tiempo de inicio, tiempo de fin, intervalo): klines = esperar al cliente.futures_klines ((símbolo=símbolo, intervalo=intervalo, startTime=start_time.timestamp))) *1000, endTime=end_time.timestamp))) *1000) df = pd.DataFrame(clases, columnas=[tiempo de registro, abierto, alto, bajo, cerrado, volumen, volumen de cierre, cuota_activos_volumen, número_de_negocios, tomador_compra_base_activos_volumen, tomador_compra_cuota_activos_volumen, ignorar]) df[tiempostamp] = pd.to_datetime(df[tiempostamp], unidad=ms) df[close_time] = pd.to_datetime(df[close_time], unidad=ms) df.set_index ((tiempo marcado, en su lugar=Verdadero) df.drop(columnas=[close_time, ignore], en su lugar=Verdadero) df = df.astype ((float) Regreso df

Cierra sincronizado el cliente de Binance

Async def close_client ((cliente): Esperar al cliente. cerrar la conexión ((()

Ejecutar funciones principales de forma asíncrona

Async def main ((): Cliente = espera init_client ()) # Acceso a todos los pares de transacciones de USDT para contratos permanentes En el caso de los clientes que están esperando el cambio de información. symbols = [symbol_info [symbol] for symbol_info in exchange_info [symbols] if symbol_info [contractType] == PERPETUAL and symbol_info [quoteAsset] == USDT # Crear un marco de datos vacío df = pd.DataFrame ((columns=[Symbol tab, Open tab, High tab, Low tab, Close tab, Change tab, Volume tab]) df.set_index ((Symbol, inplace=True) es el nombre de un conjunto de símbolos de un conjunto de símbolos.

# 将所有交易对添加到 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)

Ejecutar el procedimiento de sincronización

si esnombre == ‘el principal: Importar asyncio Asyncio.run (en inglés)

El objetivo es obtener datos sobre la caída del M15 en todas las monedas contratadas.

Log ((df) una vez después se produce un error; es decir, se produce un error después de actualizar datos como el precio de todos los símbolos: Traceback (most recent call last): File bar, line 1246, in¿ Qué está pasando?Archivo , línea 147, en TypeError: Objeto del tipo coroutine no es un sistema serializable JSON:1: RuntimeWarning: coroutine main nunca fue esperado RuntimeWarning: Habilitar tracemalloc para obtener el rastreo de asignación de objetos

ChatGpt no lo ha arreglado, pido ayuda.


Más contenido

No siSe puede recopilar a través de múltiples hilos, poner los datos recopilados en cada hilo en un objeto público; y luego juzgar si todos los hilos terminan.

¿Qué quieres decir?En cuanto a la función de agregación, ¿el sueño siempre menciona una o dos palabras clave?

¿Qué quieres decir?En cuanto a la función de agregación, ¿el sueño siempre menciona una o dos palabras clave?

Las hierbasNo he usado esta biblioteca, pero es mejor hacer un proceso de depuración paso a paso. También no es tan bueno para realizar cientos de transacciones simultáneamente directamente.

Las hierbas/fapi/v1/ticker/price El archivo de Bitcoin tiene