Das Problem der Asynchronisierung ist verrückt.

Schriftsteller:- Ich weiß nicht., Erstellt: 2023-03-15 10:43:20, Aktualisiert:

Import pandas als pd von binance.client Import AsyncClient von Datetime importieren Datetime, Timedelta Import aiohttp Import von json def utc_to_local ((utc_dt):# Umgewandelt in Pekingzeit local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # östliche Zeitzone acht local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz)) zurück local_dt

Binance-Client wird asynchron initialiert

async def init_client (): Client = warten AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

Asynchronisierte Datenerfassung von K-Linien

Async def get_klines ((Client, Symbol, Startzeit, Endzeit, Intervall): klines = warten client.futures_klines ((symbol=symbol, interval=interval, startTime=start_time.timestamp))) *1000, endTime=end_time.timestamp))) *1000) df = pd.DataFrame(Klinien, Spalten=[Zeitstempel, offener, hoher, niedriger, schließender, volumen, schließender_Zeit, quote_asset_volume, Anzahl_von_Handlungen, taker_buy_base_asset_volume, taker_buy_quote_asset_volume, ignorieren]) df[zeitstempel] = pd.to_datetime(df[zeitstempel], Einheit=ms) df[close_time] = pd.to_datetime(df[close_time], Einheit=ms) df.set_index ((Zeitstempel, inplace=True) df.drop(Spalten=[close_time, ignore], inplace=True) df = df.astype ((float) Rückgabe df

Binance-Client als Synchronisierung abschalten

Async def close_client ((Client): Warten Sie auf den Client.close_connection ((()

Asynchrone Ausführung der Hauptfunktion

Async def main (: Client = warten auf init_client # Zugriff auf alle USDT-Permanenten-Kontrakte 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 # Erstellen eines leeren Datenrahmens df = pd.DataFrame ((columns=[Symbol-Tab, Open-Tab, High-Tab, Low-Tab, Close-Tab, Change-Tab, Volume-Tab]) 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)

Ausführen von Asynchronisierungsverfahren

wennName == ‘Haupt: Einfuhrvertrag Das ist nicht wahr.

Der Zweck ist es, die Pünktlichkeitsdaten für alle Vertragsgelder gegenüber dem M15 zu erhalten.

Log ((df) ist nach einem Mal fehlerhaft; d.h. nach einem Update aller Symbolpreise und dergleichen: Traceback (most recent call last): File Bar, line 1246, inDas ist nicht der Fall.Datei , Zeile 147, in TypeError: Objekt des Typs coroutine ist kein JSON-serializierbares Sys:1: LaufzeitWarnung: coroutine main wurde nie erwartet

ChatGpt hat es auch nicht geschafft.


Weitere Informationen

Nein, wennSie können über mehrere Threads gesammelt werden, und die gesammelten Daten von jedem Thread in einen öffentlichen Objekt gesetzt werden, um zu beurteilen, ob alle Threads beendet sind.

- Ich weiß nicht.Kann man immer ein oder zwei Schlüsselwörter über die Aggregationsfunktion erwähnen?

- Ich weiß nicht.Kann man immer ein oder zwei Schlüsselwörter über die Aggregationsfunktion erwähnen?

Das GrasIch habe diese Bibliothek nicht benutzt, aber es ist am besten, sie Schritt für Schritt zu deaktivieren. Außerdem ist es nicht so gut, Hunderte von Transaktionen gleichzeitig zu führen.

Das Gras/fapi/v1/ticker/price