首頁 後端開發 Python教學 使用Python輕鬆取得Binance歷史交易

使用Python輕鬆取得Binance歷史交易

Apr 12, 2023 pm 10:16 PM
python 程式碼 binance

使用Python輕鬆取得Binance歷史交易

鑑於某些策略需要一定程度的技術數據,而其他數據可能只需要花費一個小時的時間,該過程並不總是那麼簡單,而基礎架構,可用性和連接性等元素可能會因資料類型的不同而大相徑庭。

但是為什麼本文只涉及取得「交易」數據,為什麼我們使用Binance API?你可能對我的文章內容有些疑問。

資料頻率和平衡

我想說,交易資料端點主要在99.99%的交易所中提供。它是細粒度的,提供了足夠的詳細資訊(在某些非常特殊的情況下)用於回測高頻交易(HFT)策略,並且可以用作OHLC candles(1S至24H或更多,如果你想要的話)的基礎。

交易資料是通用的,並且允許使用不同頻率的策略進行大量實驗。

為什麼選擇Binance?

那隻是因為它是我由於數量龐大而傾向於回溯的交易所之一。

我們將要進行的編碼

我們將建立一個Python腳本,該腳本接收對符號,開始日期和結束日期作為命令列參數。它將包含所有交易的CSV檔案輸出到磁碟。過程可以透過以下步驟進行詳細說明:

1、解析symbol,starting_date和ending_date論點。

2、取得開始日期發生的第一筆交易,以取得第一筆交易trade_id。

3、循環取得每個請求1000筆交易(Binance API限制),直到ending_date達到為止。

4、最後,將資料儲存到磁碟。對於範例,我們將其儲存為CSV,但是你還有其他選擇,不一定要儲存為CSV。

5、我們將使用pandas,requests,time,sys,和datetime。在程式碼段中,將不會顯示錯誤驗證,因為它不會為說明添加任何值。

編碼時間

此腳本將使用下列參數:

1、symbol:交易對的符號,由Binance定義。可以在此處查詢,也可以從Binance Web應用程式的URL複製(不包括 _ 字元)。

使用Python輕鬆取得Binance歷史交易

-starting_date and ending_date:不言自明。期望的格式為mm/dd/yyyy,或使用Python lang語為%m/%d/%Y。

為了取得參數,我們將使用內建函數sys(這裡沒有什麼花俏的地方),為了解析日期,我們將使用datetime函式庫。

使用Python輕鬆取得Binance歷史交易

我們將增加一天並減去一微秒,以使ending_date時間部分始終處於23:59:59.999,這使得獲取當天間隔更加實用。

提取交易

使用Binance的API並使用aggTrades端點,我們可以在一個請求中獲得最多1000 筆交易,如果我們使用開始和結束參數,則它們之間的間隔最多為一小時。

在出現一些失敗之後,透過使用時間間隔來獲取(在某個時間點或另一個時間點,流動性會變得瘋狂,我會失去一些寶貴的交易),我決定嘗試from_id策略。

將aggTrades選擇的端點,因為它回到壓縮產業。這樣,我們將不會失去任何寶貴的資訊。

獲得壓縮的總交易。在同一時間從同一訂單以相同價格執行的交易將匯總數量。

該from_id策略是這樣的:

我們要得到的第一筆交易starting_date 透過發送日期的時間間隔向終點。之後,我們將從第一個取得的交易ID開始取得1000個交易。然後,我們將檢查最後一筆交易是否發生在我們之後ending_date。

如果是這樣,我們已經遍歷了所有時間段,可以將結果儲存到檔案中。否則,我們將更新from_id變數以取得最後的交易ID,然後重新開始迴圈。

取得第一個交易編號

使用Python輕鬆取得Binance歷史交易

#首先,我們建立一個new_end_date。那是因為我們aggTrades是透過傳遞a startTime和endTime 參數來使用。

現在,我們只需要知道該期間的第一個交易編號,因此我們將增加60秒。在低流動性貨幣對中,可以更改此參數,因為不能保證在請求的第一天發生交易。

然後,使用我們的輔助函數解析日期,以使用該calendar.timegm函數將日期轉換為Unix毫秒錶示形式。此timegm函數是首選函數,因為它將日期保留為UTC。

使用Python輕鬆取得Binance歷史交易

請求的回應是按日期排序的貿易物件列表,格式如下:

使用Python輕鬆取得Binance歷史交易

因此,由於我們需要第一個交易ID ,因此我們將傳回該response[0]["a"]值。

主循環

現在我們有了第一個交易ID,我們可以一次提取1000個交易,直到達到ending_date。以下程式碼將在我們的主循環中呼叫。它將使用from_id參數,放棄startDate和endDate參數,並執行我們的請求。

使用Python輕鬆取得Binance歷史交易

現在,這是我們的主循環,它將執行請求並建立我們的DataFrame。

使用Python輕鬆取得Binance歷史交易

我們檢查是否current_time包含最近取得的交易日期大於to_date,如果是,則我們:

  •  使用from_id參數取得交易
  •  使用最新交易中取得的資訊來更新from_id和current_time參數
  • 列印nice偵錯訊息
  •  pd.concat 這些交易與我們之前的交易DataFrame
  •  使用sleep讓Binance不會給我們一個429 HTTP回應

清潔與儲存

#組裝完之後DataFrame,我們需要執行簡單的資料清理。我們將刪除重複trim的交易和之後發生的交易to_date(我們有這個問題,因為我們要獲取1000筆交易中的大部分,因此,我們預計在目標結束日期之後執行一些交易)。

我們可以封裝我們的trim功能:

使用Python輕鬆取得Binance歷史交易

並執行我們的資料清理:

使用Python輕鬆取得Binance歷史交易

現在,我們可以使用以下to_csv方法將其保存到文件中:

使用Python輕鬆取得Binance歷史交易

我們還可以使用其他資料存儲機制,例如Arctic。

最後:驗證你的數據

在使用交易策略時,我們必須信任我們的數據,這一點很重要。透過應用以下驗證,我們可以輕鬆地利用獲取的交易資料來做到這一點:

使用Python輕鬆取得Binance歷史交易

#在程式碼片段中,我們將其轉換DataFrame為NumPy數組,並逐行迭代,檢查交易ID是否每行遞增1。

Binance交易ID是以遞增方式編號的,並且是為每個交易品種創建的,因此,很容易驗證資料是否正確。

PS:創建成功的交易策略的第一步是擁有正確的資料。

以上是使用Python輕鬆取得Binance歷史交易的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

比特幣今日價格行情 比特幣今日價格行情 Apr 28, 2025 pm 07:39 PM

比特幣今日價格波動受宏觀經濟、政策、市場情緒等多因素影響,投資者需關注技術和基本面分析以做出明智決策。

全球幣圈十大交易所有哪些 排名前十的貨幣交易平台最新版 全球幣圈十大交易所有哪些 排名前十的貨幣交易平台最新版 Apr 28, 2025 pm 08:09 PM

全球十大加密貨幣交易平台包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi Global、Bitfinex、Bittrex、KuCoin和Poloniex,均提供多種交易方式和強大的安全措施。

排名前十的虛擬幣交易app有哪 最新數字貨幣交易所排行榜 排名前十的虛擬幣交易app有哪 最新數字貨幣交易所排行榜 Apr 28, 2025 pm 08:03 PM

Binance、OKX、gate.io等十大數字貨幣交易所完善系統、高效多元化交易和嚴密安全措施嚴重推崇。

瑞波幣(XRP幣)屬於什麼幣種 新手詳細教程 瑞波幣(XRP幣)屬於什麼幣種 新手詳細教程 Apr 28, 2025 pm 07:57 PM

瑞波幣(XRP)由Ripple公司創建,用於跨境支付,快速且費用低,適合小額交易支付。註冊錢包和交易所後,可進行購買和存儲。

比特幣值多少美金 比特幣值多少美金 Apr 28, 2025 pm 07:42 PM

比特幣的價格在20,000到30,000美元之間。 1. 比特幣自2009年以來價格波動劇烈,2017年達到近20,000美元,2021年達到近60,000美元。 2. 價格受市場需求、供應量、宏觀經濟環境等因素影響。 3. 通過交易所、移動應用和網站可獲取實時價格。 4. 比特幣價格波動性大,受市場情緒和外部因素驅動。 5. 與傳統金融市場有一定關係,受全球股市、美元強弱等影響。 6. 長期趨勢看漲,但需謹慎評估風險。

靠譜的數字貨幣交易平台推薦 全球十大數字貨幣交易所排行榜2025 靠譜的數字貨幣交易平台推薦 全球十大數字貨幣交易所排行榜2025 Apr 28, 2025 pm 04:30 PM

靠谱的数字货币交易平台推荐:1. OKX,2. Binance,3. Coinbase,4. Kraken,5. Huobi,6. KuCoin,7. Bitfinex,8. Gemini,9. Bitstamp,10. Poloniex,这些平台均以其安全性、用户体验和多样化的功能著称,适合不同层次的用户进行数字货币交易

免費炒幣看行情軟件推薦 好用的炒幣app排行榜前十 免費炒幣看行情軟件推薦 好用的炒幣app排行榜前十 Apr 28, 2025 pm 04:33 PM

推薦的炒幣看行情軟件前十名是:1. OKX,2. Binance,3. Coinbase,4. KuCoin,5. Huobi,6. Crypto.com,7. Kraken,8. Bitfinex,9. Bybit,10. Gate.io。這些app均提供實時的市場數據和交易工具,適合不同層次的用戶使用。

全球幣圈十大交易所有哪些 排名前十的貨幣交易平台2025 全球幣圈十大交易所有哪些 排名前十的貨幣交易平台2025 Apr 28, 2025 pm 08:12 PM

2025年全球十大加密貨幣交易所包括Binance、OKX、Gate.io、Coinbase、Kraken、Huobi、Bitfinex、KuCoin、Bittrex和Poloniex,均以高交易量和安全性著稱。

See all articles