偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用Python打造加密貨幣算法交易機器人 原創(chuàng)

發(fā)布于 2024-9-13 12:54
瀏覽
0收藏

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

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

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

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

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

優(yōu)化:使用 hyperopt 為你的策略找到最佳參數(shù)。

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

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

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

使用 Telegram 機器人:通過 Telegram 控制和監(jiān)控你的策略。

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

Freqtrade 的安裝

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

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

現(xiàn)在應該會有以下目錄結構:

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

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

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

你會看到以下輸出:

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

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

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

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

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

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

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

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

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

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

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

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

下載數(shù)據(jù)

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

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

該命令的參數(shù)告訴freqtrade以下內容:

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

此命令生成了以下文件:

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

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

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

列的含義如下:

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

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

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

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

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


現(xiàn)在我們已經(jīng)看到了數(shù)據(jù)的示例并理解了每行的含義,讓我們繼續(xù)配置freqtrade以運行策略。

Freqtrade配置

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

要創(chuàng)建新的配置,我們運行以下命令:

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

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

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

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

實現(xiàn)一個簡單的自定義策略 - 移動平均交叉

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

低價買入
高價賣出

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

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

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

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

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

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

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

 freqtrade 的策略實現(xiàn)

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

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

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

現(xiàn)在,我們可以在策略文件夾中找到新創(chuàng)建的文件:

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

SimpleMA_strategy.py 

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

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

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

  1. populate_indicators()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

既然我們已經(jīng)制定了一個策略,我們可以測試它在過去數(shù)據(jù)上的表現(xiàn)。

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

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

要使用freqtrade進行回測,我們可以運行以下命令,利用我們剛剛創(chuàng)建的類和函數(shù):

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

命令參數(shù)如下所示:

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

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

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

Freqtrade將報告分為四個部分:

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

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

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

最大回撤 - 最大連續(xù)虧損的金額

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

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

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

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

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

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

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

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

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

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

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

現(xiàn)在可以使用 freqtrade plot-dataframe 命令來可視化數(shù)據(jù)、指標以及買賣信號。

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

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

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

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

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

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

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

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

總結

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

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

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


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

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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦