Masalah ketidakselarasan, gila.

Penulis:Pergilah., Dicipta: 2023-03-15 10:43:20, Dikemas kini:

import pandas as pd daripada binance.client import AsyncClient dari datetime import datetime, timedelta import aiohttp import json def utc_to_local ((utc_dt):# menukar ke waktu Beijing local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz)) return local_dt

Inisialisasi pelanggan Binance secara tidak seiring

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

return client

Mengambil data K-line secara tidak seiring

async def get_klines ((client, simbol, permulaan_waktu, akhir_masa, selang): klines = menunggu pelanggan.masa depan_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) pulangan df

Menutup pelanggan Binance secara tidak selaras

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

Melakukan fungsi utama secara tidak selaras

async def main (: client = await init_client ((() # Dapatkan semua pasangan urus niaga kontrak USDT kekal exchange_info = tunggu pelanggan. symbols = [symbol_info [symbol] for symbol_info in exchange_info [symbols] if symbol_info [contractType] == PERPETUAL and symbol_info [quoteAsset] == USDT # Membuat bingkai data 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 prosedur tidak selaras

jikanama == ‘utama: import asyncioasyncio.run(terutama))

Tujuan adalah untuk mendapatkan data kejatuhan daripada semua mata wang kontrak terhadap M15.

Log ((df) berlaku selepas satu kali; iaitu, selepas satu kali mengemas kini semua simbol, data seperti harga berlaku: 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 ChatGpt juga tidak berjaya, mohon bantuan.


Lebih lanjut

Tidak jikaIa boleh dikumpulkan melalui pelbagai benang, dan setiap benang dikumpulkan ke dalam satu objek awam; dan kemudian menilai sama ada semua benang berakhir.

Pergilah.Adakah anda selalu ingat satu atau dua kata kunci tentang fungsi pengumpulan?

Pergilah.Adakah anda selalu ingat satu atau dua kata kunci tentang fungsi pengumpulan?

RumputSaya tidak pernah menggunakan perpustakaan ini, tetapi lebih baik melakukan debugging langkah demi langkah. Selain itu, mengumpul ratusan transaksi secara langsung pada masa yang sama tidak begitu baik.

Rumput/fapi/v1/ticker/price