Le problème de l'asynchronisme est fou.

Auteur:Je vous en prie., Créé: 2023-03-15 10:43:20, mis à jour:

Importer des pandas comme pd Il est possible de télécharger des fichiers à partir de binance.client depuis datetime importez datetime, timedelta Pour importer Importer le json def utc_to_local ((utc_dt):# converti en heure de Pékin local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # le décalage horaire est-huitième local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz) est un nom de domaine utilisé par les utilisateurs pour désigner un lieu de travail. retourner local_dt

Initialement asynchrone du client Binance

async def init_client ((): client = attendre AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

Récupération asynchrone des données de ligne K

Async def get_klines ((client, symbole, heure de début, heure de fin, intervalle): Klines = attendre client.futures_klines ((symbol=symbol, interval=interval, startTime=start_time.timestamp)) *1000, endTime=end_time.timestamp)) *1000) df = pd.DataFrame ((clins, colonnes=[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], unité=ms) df[close_time] = pd.to_datetime(df[close_time], unité=ms) df.set_index (( timestamp, en place=Vrai) df.drop(colonnes=[close_time, ignore], en place=Vrai) df = df.astype ((float) retour df

Fermer le client Binance en asynchronisation

Async def close_client ((client): Attendre client.close_connection ((()

Exécution asynchrone de la fonction principale

Async def main (): client = attendre init_client # Acquérir toutes les paires de transactions pour les contrats permanents en USDT L'exchange_info est un système de messagerie électronique qui permet aux utilisateurs d'accéder à des informations personnelles. Symbols = [symbol_info [symbol] for symbol_info in exchange_info [symbols] if symbol_info [contractType] == PERPETUAL and symbol_info [quoteAsset] == USDT # Créer un cadre de données vide df = pd.DataFrame ((columns=[Symbol tables, Open tables, High tables, Low tables, Close tables, Change tables, Volume tables]) df.set_index ((Symbol, inplace=Vrai)

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

Exécuter une procédure asynchrone

siNom == ‘le principal: Importation de produitsasyncio.runJe ne sais pas.

L'objectif est d'obtenir des données sur la chute de toutes les devises contractées par rapport au M15.

Log ((df) après une erreur; c'est-à-dire une erreur après une mise à jour de toutes les données de prix de symboles: Traceback (most recent call last): File , line 1246, ininit_ctxTypeError: Object of type coroutine is not JSON serializable sys:1: RuntimeWarning: coroutine main was never awaited (en anglais seulement) ChatGpt n'a pas réussi à résoudre le problème.


Plus de

Pas siIl est possible de collecter des données à travers plusieurs fils, de mettre les données collectées par chaque fils dans un objet public, puis de juger si tous les fils sont terminés.

Je vous en prie.Le rêve est-il toujours de mentionner un ou deux mots-clés sur les fonctions d'agrégation?

Je vous en prie.Le rêve est-il toujours de mentionner un ou deux mots-clés sur les fonctions d'agrégation?

Le foinJe n'ai jamais utilisé cette bibliothèque, mais il est préférable de le déboguer étape par étape.

Le foin/fapi/v1/ticker/price Le fichier est disponible