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 8 zonas del este local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz) el tiempo de la fecha y el tiempo de la zona de tiempo de la zona de tiempo de la zona de tiempo de la zona de tiempo de tiempo de la zona de tiempo de tiempo de la zona de tiempo de tiempo)) ¿Cómo se hace esto?

Inicialización sincronizada del cliente de Binance

Async def init_client (en inglés): 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[tiempestamp] = pd.to_datetime(df[tiempestamp], 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) retorno df

Cierra sincronizado el cliente de Binance

Async def close_client ((cliente): el nombre de la página de inicio Espera 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, este es el momento en el que el cliente espera. 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 en el que se puede encontrar el valor 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 asyncioasyncio.run¿ Qué pasa?

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, una vez que se actualizan todos los símbolos de precios y otros datos, se produce un error: Traceback (most recent call last): File, line 1246, in¿ Qué está pasando?File , 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 El objeto de coroutine no es serializable en el formato JSON ChatGpt no lo ha arreglado, por favor, ayúdame.


Más.

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