Masalah ketidakselarasan, gila.

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

import pandas as pd dari 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, start_time, end_time, 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 asyncio asyncio.run (main))

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

Log ((df) berlaku selepas satu kesalahan; iaitu, selepas satu kemas kini semua simbol harga dan lain-lain data berlaku kesalahan:Traceback (most recent call last): File bar, line 1246, ininit_ctxFail , baris 147, dalam TypeError: Objek jenis coroutine bukan JSON sys:1: RuntimeWarning: coroutine main tidak pernah diharapkan RuntimeWarning: Enable tracemalloc untuk mendapatkan objek alokasi 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