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):# wird in Peking Zeit umgewandelt local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # östliche Zeitzone acht local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz) der Datenzeit-Zone ist der Zeitzone, in der die Datenzeit der Datenzone liegt. 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 = client.futures_klines warten ((symbol=symbol, interval=interval, startTime=start_time.timestamp))) *1000, endTime=end_time.timestamp))) *1000) df = pd.DataFrame(Klinen, Spalten=[Zeitstempel, offene, hohe, niedrige, schließende, volume, schließende_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 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: Einfuhr von Asyncioasyncio.run(Haupt-)

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 , line 1246, inDas ist nicht der Fall.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 (Typfehler: Objekt des Typs coroutine ist nicht JSON-serializierbar) ChatGpt hat es auch nicht geschafft.


Mehr

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