অ্যাসিনক্রোনাস সমস্যা, পাগল হয়ে যাচ্ছে

লেখক:ইজক্লজ, সৃষ্টিঃ ২০২৩-০৩-১৫ ১০ঃ৪৩ঃ২০, আপডেটঃ

import pandas as pd (প্যান্ডাসকে পিডি হিসেবে আমদানি করুন) from binance.client আমদানি করুন AsyncClient from datetime আমদানি datetime, timedelta import aiohttp এর মাধ্যমে json আমদানি করুন def utc_to_local ((utc_dt):# বেইজিং সময় রূপান্তর local_tz = datetime.timezone ((datetime.timedelta ((hours=8)) # পূর্ব আট অঞ্চল সময় পার্থক্য local_dt = utc_dt.replace ((tzinfo=datetime.timezone.utc).astimezone ((local_tz)) return local_dt

Binance ক্লায়েন্টের অ্যাসিনক্রোন ইনস্টল করা হচ্ছে

async def init_client ((): ক্লায়েন্ট = অপেক্ষা AsyncClient.create ((api_key=api_key, api_secret=api_secret)

return client

অ্যাসিনক্রোনিকভাবে কে-লাইন ডেটা পান

async def get_klines ((ক্লায়েন্ট, প্রতীক, শুরু_সময়, শেষ_সময়, ব্যবধান): klines = wait client.futures_klines ((symbol=symbol, interval=interval, startTime=start_time.timestamp))) *1000, endTime=end_time.timestamp))) *1000) df = pd.DataFrame ((ক্লিন, কলাম=[টাইমস্ট্যাম্প, 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], ইউনিট=ms) df[close_time] = pd.to_datetime(df[close_time], ইউনিট=ms) df.set_index ((টাইমস্ট্যাম্প, inplace=True) df.drop(columns=[close_time, ignore], inplace=True) df = df.astype ((float) রিটার্ন df

Binance ক্লায়েন্টকে অ্যাসিনক্রোনাইজড বন্ধ করুন

async def close_client ((ক্লায়েন্ট): ক্লায়েন্ট.close_connection অপেক্ষা করুন (()

প্রধান ফাংশন অ্যাসিনক্রোনাইজ করা

async def main (: client = wait init_client (() # সমস্ত USDT স্থায়ী চুক্তির লেনদেনের জোড়া পান 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] # ফাঁকা ডেটাফ্রেম তৈরি করুন 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)

অ্যাসিনক্রোনাস প্রোগ্রাম চালান

যদিনাম == ‘প্রধান: আমদানি asyncio.run ((main))

M15-এর বিপরীতে সমস্ত কন্ট্রাক্ট মুদ্রার পতনের তথ্য সংগ্রহ করা।

Log ((df) এর পরে একবার ত্রুটি ঘটে; অর্থাৎ, সমস্ত প্রতীকগুলির দাম এবং অন্যান্য ডেটা আপডেট করার পরে ত্রুটি ঘটেঃTraceback (most recent call last): File , line 1246, ininit_ctxফাইল , লাইন 147, টাইপ ত্রুটিঃ টাইপ coroutine অবজেক্ট JSON সিরিয়ালাইজযোগ্য sys:1 নয়ঃ রানটাইমWarning: coroutine main কখনও প্রত্যাশিত ছিল না রানটাইমWarning: অবজেক্ট বরাদ্দ ট্র্যাকব্যাক পেতে tracemalloc সক্ষম করুন

চ্যাট জিপিটিও এটি করতে পারেনি।


আরও দেখুন

না যদিএটি একাধিক থ্রেডের মাধ্যমে সংগ্রহ করা যেতে পারে, প্রতিটি থ্রেডের তথ্য একটি পাবলিক অবজেক্টে সংগ্রহ করা যেতে পারে; এবং তারপর বিচার করা যেতে পারে যে সমস্ত থ্রেড শেষ হয়েছে কিনা।

ইজক্লজআপনি কি সবসময় একটি বা দুটি কীওয়ার্ড উল্লেখ করেন?

ইজক্লজআপনি কি সবসময় একটি বা দুটি কীওয়ার্ড উল্লেখ করেন?

ঘাসআমি এই লাইব্রেরিটি ব্যবহার করি নি, তবে ধাপে ধাপে ডিবাগ করা ভাল। একসাথে কয়েকশো লেনদেনের সাথে সরাসরি ডিল করাও ভাল নয়। সমষ্টিগত বাজার ইন্টারফেসের সাহায্যে নিজের রেকর্ডিং করা সহজ।

ঘাস/fapi/v1/ticker/price