Masalah asynchrony, gila.

Penulis:Aku tidak tahu., Dibuat: 2023-03-15 10:43:20, Diperbarui:

import panda sebagai pd dari binance.client import AsyncClient dari datetime import datetime, timedelta import aiohttp import json def utc_to_local ((utc_dt):# Konversi ke waktu Beijing local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # perbedaan waktu zona delapan timur local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone(local_tz) return local_dt

Inisialisasi Asynchronous pada klien Binance

async def init_client ((): klien = menunggu AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

Mendapatkan data K-line secara asinkron

async def get_klines ((klien, simbol, start_time, end_time, interval): klines = menunggu client.futures_klines ((symbol=symbol, interval=interval, startTime=start_time.timestamp() *1000, endTime=end_time.timestamp() *1000) df = pd.DataFrame(klines, columns=[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, inplace=True) df.drop(kolom=[close_time, ignore], inplace=True) df = df.astype ((float) kembali df

Menutup klien Binance secara asinkron

async def close_client(client): menunggu client.close_connection ((()

Mengeksekusi fungsi utama secara asinkron

Async def main (: client = tunggu init_client # Dapatkan semua pasangan transaksi kontrak USDT permanen exchange_info = menunggu klien.futures_exchange_info symbols = [symbol_info [symbol] for symbol_info in exchange_info [symbols] if symbol_info [contractType] == PERPETUAL and symbol_info [quoteAsset] == USDT] # Membuat DataFrame kosong df = pd.DataFrame ((columns=[Symbol,Open,High,Low,Close,Change,Volume]) 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)

Jalankan Async

Jikanama == ‘utama: Asyncio imporasyncio.run(main))

Tujuannya adalah untuk mendapatkan data penurunan mata uang kontrak terhadap M15

Log ((df) setelah satu kali akan mengalami kesalahan; yaitu setelah satu kali memperbarui semua simbol harga dan data lainnya:Traceback (most recent call last): File , line 1246, ininit_ctxFile , 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 main tidak pernah ditunggu ChatGpt juga tidak berhasil, mohon bantuannya.


Lebih banyak

Tidak jikaAnda dapat mengumpulkan data melalui beberapa thread, menempatkan data yang dikumpulkan dari setiap thread ke dalam satu objek publik, dan kemudian menilai apakah semua thread berakhir.

Aku tidak tahu.Apakah mimpi selalu menyebutkan satu atau dua kata kunci tentang fungsi agregat?

Aku tidak tahu.Apakah mimpi selalu menyebutkan satu atau dua kata kunci tentang fungsi agregat?

RumputSaya belum pernah menggunakan perpustakaan ini, tetapi lebih baik untuk melakukan debugging langkah demi langkah. Selain itu, melakukan ratusan transaksi secara langsung secara bersamaan juga tidak terlalu baik.

Rumput/fapi/v1/ticker/price