91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Python輕松獲取Binance歷史交易

發布時間:2023-04-13 11:10:03 來源:億速云 閱讀:143 作者:iii 欄目:編程語言

本篇內容主要講解“如何使用Python輕松獲取Binance歷史交易”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用Python輕松獲取Binance歷史交易”吧!

數據頻率和平衡

我想說,交易數據端點主要在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歷史交易”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

滨海县| 铜川市| 东城区| 广州市| 铁岭市| 兴业县| 巨野县| 霍山县| 新绛县| 阿合奇县| 南投市| 青神县| 临朐县| 建阳市| 湟源县| 娄烦县| 秭归县| 雷波县| 台中县| 罗城| 建昌县| 柘荣县| 越西县| 乐业县| 贵阳市| 崇阳县| 阜宁县| 福州市| 土默特右旗| 门源| 贡嘎县| 保靖县| 西平县| 明光市| 镇坪县| 蒙阴县| 邮箱| 绵竹市| 鹰潭市| 富平县| 康平县|