簡體   English   中英

從幣安獲取歷史數據

[英]Get historical data from binance

我正在嘗試提取 [curr_time - 2years, curr_time] 之間的歷史數據。 時間間隔為1天。 所以,我預計大約有 700 件商品,但我只收到了 3 件商品。

我該如何解決這個問題?

我的代碼

from binance.client import Client

# Binance test_key https://testnet.binance.vision/key/generate
API_KEY = "---"
API_SECRET = "---"
DAYS_IN_YEAR = 365
DB_NAME = "charts"

def GetHistoricalData(
    timedelta_days=DAYS_IN_YEAR * 2,
    ticker="BTCUSDT",
    kline_interval=Client.KLINE_INTERVAL_1HOUR
    ):

    start_time = time.time()
    untilThisDate = datetime.datetime.now()
    sinceThisDate = untilThisDate - datetime.timedelta(days=timedelta_days)

    print("ZZZZZZZZZ_ ", str(sinceThisDate), str(untilThisDate)) # 2019-11-06 00:23:43.620016 2021-11-05 00:23:43.620016
    client = Client(API_KEY, API_SECRET) 
    client.API_URL = 'https://testnet.binance.vision/api'
    candle = client.get_historical_klines(ticker, kline_interval, str(sinceThisDate), str(untilThisDate))
    
    print("CANDLE_", len(candle)) # 3

我試過這個請求:

candle = client.get_historical_klines(ticker, kline_interval, "01 January, 2019", "04 November 2021") 

但又只收到了 3 件商品

dateTime                                              ...                             
2021-11-02 00:00:00  61722.80000000  150535.61000000  ...  448.99018200  1635897599999
2021-11-03 00:00:00  63208.69000000  100000.00000000  ...  451.03367500  1635983999999
2021-11-04 00:00:00  62894.04000000   70000.00000000  ...  401.86212800  1636070399999

好....

如果您嘗試通過 API 調用請求此數據,它將為您提供:

In [1]: import requests
   ...: len(requests.get('https://testnet.binance.vision/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1000').json())
Out[1]: 65

但是,如果您嘗試使用 binance 的生產環境運行它(順便說一句,klines/candles 是公共數據,不需要 apiKey):

In [2]: import requests
   ...: len(requests.get('https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1000').json())
Out[2]: 1000

因此,要修復您的示例,您需要替換 BASE_URL

client.API_URL = 'https://api.binance.com/api'

它給了我:

ZZZZZZZZZ_  2019-11-06 01:15:15.122873 2021-11-05 01:15:15.122873
CANDLE_ 17483

試試下面的代碼。 我得到了一堆數據,但沒有格式化:

 import datetime
    from binance.client import Client
    import time
    
    # Binance test_key https://testnet.binance.vision/key/generate
    API_KEY = "---"
    API_SECRET = "---"
    DAYS_IN_YEAR = 365
    DB_NAME = "charts"
    
    
    def GetHistoricalData(
            timedelta_days=DAYS_IN_YEAR * 2,
            ticker="BTCUSDT",
            kline_interval=Client.KLINE_INTERVAL_1HOUR
    ):
        start_time = time.time()
        untilThisDate = datetime.datetime.now()
        sinceThisDate = untilThisDate - datetime.timedelta(days=timedelta_days)
    
        print("ZZZZZZZZZ_ ", str(sinceThisDate),
              str(untilThisDate))  # 2019-11-06 00:23:43.620016 2021-11-05 00:23:43.620016
        client = Client(API_KEY, API_SECRET)
        client.API_URL = 'https://testnet.binance.vision/api'
        candle = client.get_historical_klines(ticker, kline_interval, str(sinceThisDate), str(untilThisDate))
        print(candle)
    
    
    GetHistoricalData()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM