成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Python打造加密貨幣算法交易機器人 原創

發布于 2024-9-13 12:54
瀏覽
0收藏

大家好,我是橙哥!今天我們來聊一聊Freqtrade,Freqtrade是一個開源的加密貨幣量化交易機器人,用Python編寫。它支持主流的交易所,可以通過Telegram或網頁界面來控制,還提供回測、圖表和資金管理工具,并可以通過機器學習來優化交易策略。

下面我們來了解一下freqtrade的工作原理,看看如何使用命令行工具下載歷史數據,創建新的配置文件和新的策略;如何使用Python和Pandas編寫策略:我們將定義一個簡單的移動平均策略,在以太坊(ETH)和比特幣(BTC)之間進行交易,來增加持有的比特幣數量。我們可以用freqtrade進行以下操作:

開發策略:輕松使用 Python 和 pandas 開發策略。我們將在下面創建一個簡單的策略,freqtrade 有一些示例策略倉庫。

下載市場數據:快速下載你選擇的加密貨幣的歷史價格數據。

回測:查看你的策略在現實世界中是否有盈利機會。

優化:使用 hyperopt 為你的策略找到最佳參數。

選擇交易對:你的選擇可以是靜態的或基于簡單過濾器的動態選擇,例如交易量大于某個數量。

模擬運行:使用模擬錢包在實時數據上測試策略。

實時運行:通過加密貨幣交易所的 API 使用真實資金部署策略。

使用 Telegram 機器人:通過 Telegram 控制和監控你的策略。

分析和可視化交易歷史:利用保存文件或 SQL 數據庫中的交易數據。

Freqtrade 的安裝

讓我們從安裝開始,Docker 是所有安裝方法中最便捷的方式。你需要先安裝 Docker 和 docker-compose,然后通過啟動 Docker Desktop 確保 Docker 正在運行。現在可以通過在你想要的目錄中發出以下命令來設置 freqtrade:

用Python打造加密貨幣算法交易機器人-AI.x社區

現在應該會有以下目錄結構:

用Python打造加密貨幣算法交易機器人-AI.x社區

要驗證 freqtrade 是否已正確安裝并準備好使用,請運行幫助命令:

用Python打造加密貨幣算法交易機器人-AI.x社區

你會看到以下輸出:

用Python打造加密貨幣算法交易機器人-AI.x社區

幫助命令的輸出列出了所有可用的freqtrade命令。在這一部分,我們將探討最重要的命令及其使用方法。首先是回測。

回測:freqtrade測試交易策略的方法

在下面,我們將創建一個簡單的策略并在歷史數據上進行回測。通過歷史數據測試策略,模擬策略預期的交易行為。雖然這不能保證在實盤中的表現,但它是一個獲勝/虧損策略的參考。

Freqtrade通過以下步驟進行策略回測:

為配置文件中提供的貨幣對(如ETH/BTC、ADA/BTC、XRP/BTC等)加載歷史數據;

調用策略的bot_loop_start()函數一次。這在實時運行中啟動一個新循環,而在回測中只需要一次;

調用populate_indicators()方法計算每個貨幣對的技術指標;

調用populate_buy_trend()和populate_sell_trend()方法計算每個貨幣對的買賣信號;

如果策略實現了,通過調用confirm_trade_entry()和confirm_trade_exit()方法確認買賣交易;

遍歷每個時間段(如5分鐘、1小時、1天等),模擬入場和出場點;

生成回測報告,匯總所有交易及其在指定期間的盈虧情況。

下載數據

要進行回測,我們需要從交易所獲取歷史價格數據。讓我們使用以下命令從Binance下載一些數據:

用Python打造加密貨幣算法交易機器人-AI.x社區

該命令的參數告訴freqtrade以下內容:

-p ETH/BTC - 下載以太坊(ETH)-比特幣(BTC)對的數據
-t 1d - 下載時間周期為1天的數據
--timerange 20200101-20201231 - 下載2020年1月1日至12月31日的數據
--exchange binance - 從Binance下載數據。在這里,您可以使用freqtrade支持的任何交易所

此命令生成了以下文件:

用Python打造加密貨幣算法交易機器人-AI.x社區

其中包含多個開盤-最高-最低-收盤-成交量(OHLCV)數據記錄,如下:

用Python打造加密貨幣算法交易機器人-AI.x社區

列的含義如下:

時間:Unix 時間戳(毫秒)
開盤價:蠟燭圖開盤價最高價:蠟燭圖最高價
最低價:蠟燭圖最低價
收盤價:蠟燭圖收盤價
成交量:交易量,以基礎貨幣顯示,本例中為 ETH。BTC 為報價貨幣。
這些數據可以整齊地顯示在以下蠟燭圖表中:

用Python打造加密貨幣算法交易機器人-AI.x社區

如何解讀上面的圖表
上面的圖表使用蠟燭圖來表示比簡單線條更多的信息。你可以在下面的圖片中快速了解蠟燭圖的含義。

用Python打造加密貨幣算法交易機器人-AI.x社區

從上一節中的OHLCV行示例,你可以看到每個蠟燭圖代表每行數據的開盤、最高、最低、收盤部分。


現在我們已經看到了數據的示例并理解了每行的含義,讓我們繼續配置freqtrade以運行策略。

Freqtrade配置

我們已經有了回測策略所需的數據,但我們還需要創建一個配置文件,這將使我們能夠輕松控制策略的幾個參數。

要創建新的配置,我們運行以下命令:

用Python打造加密貨幣算法交易機器人-AI.x社區

你會看到一些初始問題,回答如下:

用Python打造加密貨幣算法交易機器人-AI.x社區

下面,我們需要打開配置文件并設置 pair_whitelist = ["ETH/BTC"],這將設定我們關注的貨幣對。然后我們就可以開始了。

實現一個簡單的自定義策略 - 移動平均交叉

這個交易策略其實非常簡單,我們只需要做對兩件事:

低價買入
高價賣出

用Python打造加密貨幣算法交易機器人-AI.x社區

真的這么簡單嗎?有什么需要注意的嗎?難點在于準確找到實際的低點和高點。移動平均策略背后的想法如下:

你有兩條線:
慢速移動平均線(SMA):長期平均值,代表一般趨勢。
快速移動平均線(FMA):短期平均值,代表當前趨勢。

對于我們的策略,我們將使用以下指標:

當FMA上穿SMA時買入,表示上升趨勢。
當FMA下穿SMA時賣出,表示下降趨勢。

這就是所謂的移動平均交叉策略。

用Python打造加密貨幣算法交易機器人-AI.x社區

 freqtrade 的策略實現

讓我們使用 pandas 實現 freqtrade 中的移動平均交叉策略。

首先,我們需要創建一個新的策略文件,該文件將包含我們買賣信號背后的邏輯。

用Python打造加密貨幣算法交易機器人-AI.x社區

現在,我們可以在策略文件夾中找到新創建的文件:

用Python打造加密貨幣算法交易機器人-AI.x社區

SimpleMA_strategy.py 

包含一個自動生成的類 SimpleMA_strategy 和幾個我們需要更新的函數。

為了定義我們的簡單策略,我們需要更新以下三個函數:

populate_indicators()
populate_buy_trend()
populate_sell_trend()
讓我們逐一了解這些函數。

  1. populate_indicators()

在這里,我們計算策略所需的指標,以生成買賣信號。

用Python打造加密貨幣算法交易機器人-AI.x社區

根據我們的策略,我們計算快線fast_MA(基于最近5根K線圖)和慢線slow_ma(基于前50根K線圖):

用Python打造加密貨幣算法交易機器人-AI.x社區

2. populate_buy_trend()
此函數生成我們的買入信號,當快速移動平均線(fast_MA)上穿慢速移動平均線(slow_MA)時觸發。

用Python打造加密貨幣算法交易機器人-AI.x社區

我們可以通過更新 populate_buy_trend() 來加入以下邏輯,以完成這個任務:

用Python打造加密貨幣算法交易機器人-AI.x社區

使用qtpylib,我們可以輕松找到均線交叉點。本質上,上面的代碼在滿足買入條件(crossed_above)時,將買入列設置為1。

  1. populate_sell_trend()
    與前一個函數類似,此函數生成我們的賣出信號。

用Python打造加密貨幣算法交易機器人-AI.x社區

根據我們的策略,當fast_MA線低于slow_MA線時的代碼如下。

用Python打造加密貨幣算法交易機器人-AI.x社區

我們現在使用crossed_below——與crossed_above相反的信號——當我們的賣出條件被觸發時,它會在賣出列中標記為1。

默認情況下,生成的freqtrade策略文件包含更多選項,例如ROI(投資回報率)和止損,后面我們再討論,現在將暫時禁用它們。

用Python打造加密貨幣算法交易機器人-AI.x社區

既然我們已經制定了一個策略,我們可以測試它在過去數據上的表現。

回測策略定義了我們的簡單策略后,現在我們想使用歷史數據對其進行評估,通過回測,我們可以在過去模擬交易,以評估其表現。

回測并不能完全反映策略在實際市場中的表現,因為在實時市場中,其他因素會影響回報,例如滑點。

要使用freqtrade進行回測,我們可以運行以下命令,利用我們剛剛創建的類和函數:

用Python打造加密貨幣算法交易機器人-AI.x社區

命令參數如下所示:

-p ETH/BTC - 交易 ETH/BTC 對,用我們的 BTC 換取 ETH
--timerange 20200101-20201231 - 回測 2020 年的數據,從 2020 年 1 月 1 日到 2020 年 12 月 31 日。
c ./user_data/config-learndatasci.json 使用的是本文前面定義的配置文件。
--starting-balance 1 初始余額為 1 BTC。

用Python打造加密貨幣算法交易機器人-AI.x社區

我們獲得了一份完整的報告,其中包含在指定期間內所有交易的成果。

Freqtrade將報告分為四個部分:

  1. 回測結果報告:本部分顯示每個幣對的性能報告,在我們的例子中,只有ETH/BTC。列“平均利潤%”顯示所有交易產生的平均利潤,而列“累計利潤%”匯總了所有利潤/虧損。列“總利潤百分比”則顯示相對于初始余額的總利潤百分比。
  2. 賣出原因分析:該報告向我們展示了賣出原因的性能。根據我們的策略,我們只使用了賣出信號,所以我們只有一行。通常,我們還可以因其他原因賣出,例如接受的回報率(ROI)和止損。我們將在系列的下篇文章中看到這一點。
  3. 未平倉交易分析:該報告部分顯示在回測結束時未平倉的任何交易。在我們的例子中,我們沒有任何未平倉交易,通常這并不非常重要,因為它代表了回測的結束狀態。
  4. 總結指標:就我個人而言,這是我通常首先查看的區域。最需要指出的部分如下:

每日交易次數 - 每天平均完成的交易數量。我通常尋找每天大約進行十筆交易的策略。

總利潤百分比 - 以初始余額的百分比表示的利潤。

最大回撤 - 最大連續虧損的金額

市場變動 - 在指定期間內市場增長/縮減的幅度。當交易多個幣對時,此指標是所有幣對從指定期間開始到結束的市場變動的平均值。在我們的例子中,ETH/BTC市場增長了24.93%。在不同的市場條件下測試策略至關重要,而不僅僅是在上漲市場中。

我們可以看到只發生了六筆交易。這些交易產生了5.09%的利潤,初始為1 BTC,最終為1.05086506 BTC。

考慮到涉及的風險,這一結果并不令人印象深刻。然而,這個策略非常簡單,有很大的改進空間:

與買入并持有相比 僅僅持有ETH,即在測試期開始時將我們的全部BTC轉換為ETH,我們將獲得24.93%的收益(市場變動指標),但這并不是我們通??梢灶A期的。我們每次交易只投入了10%的倉位,而不是全部。在不同的條件下測試我們的策略非常重要——不僅在市場上漲時,也在市場下跌時。

交易更多幣對:我們只考慮了以太坊,這是我們可以交易的數百種幣之一。這種限制只允許一次進行一筆交易,這顯然不是最優的。

使用更高級的策略:我們使用了可以說是其中最簡單的策略之一,僅使用簡單移動平均線作為指標。增加復雜性并不一定意味著更好的性能,但我們可以對許多指標組合進行回測,以找到最佳策略。

參數優化:目前,我們尚未嘗試優化任何超參數,例如移動平均周期、回報率和止損。

更短的時間周期:我們只考慮了每日蠟燭圖,這也是為什么機器人每天只找到大約0.02筆交易,遠少于人工交易。機器人通過更頻繁的交易和查看更詳細的蠟燭圖,有可能獲得更多利潤。

繪制結果要使用freqtrade的繪圖命令,我們需要修改docker-compose.yml文件。我們唯一需要做的就是注釋掉一行并取消注釋另一行。請查看示例:

用Python打造加密貨幣算法交易機器人-AI.x社區

這會指示 docker-compose 拉取包含正確繪圖庫的 freqtrade Docker 鏡像。

現在可以使用 freqtrade plot-dataframe 命令來可視化數據、指標以及買賣信號。

用Python打造加密貨幣算法交易機器人-AI.x社區

--indicators1 選項定義了我們想要繪制的指標,即 fast_MA 和 slow_MA。這些指標必須在 -s 選項指定的策略內定義。

默認情況下,這會在 plot 目錄中創建一個可用的 plotly html 文件:./user_data/plot/freqtrade-plot-ETH_BTC-1d.html

用Python打造加密貨幣算法交易機器人-AI.x社區

在圖表上,可以觀察機器人如何按照我們定義的簡單移動平均策略執行操作:

  • 當fast_MA上穿slow_MA時買入。
  • 當fast_MA下穿slow_MA時賣出。

要了解更多plot-dataframe的功能,請運行docker-compose run --rm freqtrade plot-dataframe -h或訪問相關文檔。

用Python打造加密貨幣算法交易機器人-AI.x社區

總結

在本文中,我們只是看到了freqtrade可以做的一小部分:

  • 使用pandas定義自定義策略。
  • 使用歷史數據進行回測并生成相關報告。
  • 使用plotly繪制結果并可視化模擬交易。

后面我們將了解更多freqtrade的高級用法,我們將添加更多交易對,討論投資回報率(ROI)和止損,并正確地定義它們。使用hyperopt優化我們的策略,部署一個實時交易機器人,以及討論更多高級改進方法。


本文轉載自公眾號開發者阿橙 ,作者:橙哥

原文鏈接:??https://mp.weixin.qq.com/s/w7sWQE_GIoIXONjcmktFaA??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 综合欧美亚洲 | 91在线成人 | 日韩一二区 | 精品久久国产 | 国产一区二区三区四区五区加勒比 | 久久久国产一区二区三区 | 99草免费视频| 久久99这里只有精品 | 成人视屏在线观看 | 久久久久久久一区 | 可以免费观看的av | 精品视频久久久 | 成人不卡视频 | 国产乱码精品1区2区3区 | 亚洲天堂男人的天堂 | 黄色在线网站 | 在线视频国产一区 | 香蕉久久久 | 国产日韩精品在线 | 日韩精品一区二区三区四区视频 | 亚洲午夜视频 | caoporn免费在线视频 | 国产伦精品一区二区三区在线 | 天堂综合网久久 | 丝袜美腿av | 亚洲美女av网站 | 中文字幕 国产 | 欧美一区二区三区在线看 | 99精品视频免费在线观看 | 国产成人精品免费视频大全最热 | 欧美日韩在线视频一区 | 国产精品1 | 国产精品久久久久久久久久软件 | 99re视频在线观看 | 懂色一区二区三区免费观看 | 亚洲专区在线 | 久久久激情视频 | 免费在线观看av | 午夜免费福利电影 | 人人擦人人 | 四虎在线观看 |