<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Backtrader-系列教程-02-環(huán)境配置

          共 5793字,需瀏覽 12分鐘

           ·

          2021-10-02 19:19

          Backtrader 環(huán)境配置

          • 環(huán)境配置介紹

            • 環(huán)境說明

            • 依賴工具版本

          • 手把手進(jìn)行環(huán)境配置

            • 操作系統(tǒng)的安裝

            • Anaconda 的安裝

            • Python 的安裝

            • 依賴庫的安裝

            • PyCharm 的安裝

            • 測(cè)試工程及環(huán)境

          • 總結(jié)

            • 教程小結(jié)

            • 第三方庫可視化結(jié)果展示

          環(huán)境配置介紹

          環(huán)境說明

          Backtrader 是 Daniel Rodriguez 在 2015 年 1 月 10 發(fā)布在其 GitHub(https://github.com/mementum/backtrader) 上的一個(gè)開源項(xiàng)目。根據(jù)其發(fā)布的時(shí)間來看,當(dāng)時(shí)主流的 Python 版本應(yīng)該是 Pyhton 2,所以我們?cè)诳?Backtrader 代碼的時(shí)候有很多特性是為了兼容 Python 2 而編寫的。然后隨著 Python 的不斷迭代更新,截止目前撰文為止,最新的 Python 穩(wěn)定版本是 Python 3.9.7,里面增加了很多新的特性。本次 Backtrader 的系列教程會(huì)使用 Python 3.9.7 來撰寫,如果各位小伙伴有使用 Python 2(已經(jīng)在 20200101正式停止維護(hù))的,請(qǐng)盡快轉(zhuǎn)入 Python 3 來使用。此處先列出需要使用的語言及庫的相應(yīng)版本,以方便大家統(tǒng)一環(huán)境配置,有利用盡快解決遇到的各種問題。

          依賴工具版本

          相應(yīng)工具版本號(hào)下載鏈接
          Windows10 64 位21H1https://msdn.itellyou.cn/
          Aanconda3 64 位2021.05https://repo.anaconda.com/archive/Anaconda3-2021.05-Windows-x86_64.exe
          Python33.9.7https://www.python.org/ftp/python/3.9.7/python-3.9.7-amd64.exe
          PyCharm2021.2.2https://www.jetbrains.com/pycharm/download/
          Matplotlib3.2.2https://github.com/matplotlib/matplotlib
          Backtrader1.9.76.123https://github.com/mementum/backtrader
          AKShare1.1.51https://github.com/akfamily/akshare
          Backtrader_plotting2.0.0https://github.com/verybadsoldier/backtrader_plotting
          Pyfolio源碼安裝https://github.com/quantopian/pyfolio/
          QuantStats0.0.36https://github.com/ranaroussi/quantstats

          嚴(yán)格安裝上述的參數(shù)來配置本地環(huán)境,可以較快速的實(shí)現(xiàn)第一個(gè)測(cè)試策略,如果遇到問題,歡迎在知識(shí)星球《數(shù)據(jù)科學(xué)家》里面提問,一起解決問題。如果對(duì)環(huán)境配置比較陌生的小伙伴,可以在《數(shù)據(jù)科學(xué)家》看 Backtrader 的視頻安裝直播課,手把手完成環(huán)境配置。

          手把手進(jìn)行環(huán)境配置

          操作系統(tǒng)的安裝

          本次 Backtrader 的系列教程會(huì)在 Windows 10 系統(tǒng)中進(jìn)行撰寫,如果您是 Mac 用戶,可以創(chuàng)建虛擬機(jī),其中 Windows 的鏡像可以在 MSDN 的鏡像站進(jìn)行下載。由于兼容 AKShare 的需要,請(qǐng)確認(rèn)您安裝的操作系統(tǒng)的版本是 64 位。您可以打開 Windows 的命令提示符工具,在里面輸入 systeminfo,查看 系統(tǒng)類型 項(xiàng)目是x64 開頭則是 64 位的 Windows 10,否則請(qǐng)重新安裝正確的系統(tǒng)版本。如下圖所示:

          關(guān)于操作系統(tǒng)的具體安裝過程這里不再贅述,請(qǐng)參考相關(guān)的安裝文檔!

          Anaconda 的安裝

          首先要說明的是 Backtrader 和 AKShare 的安裝和使用本身只需要有 Python 及相應(yīng)軟件就可以了,并不需要安裝 Anaconda。此處推薦安裝 Anaconda 是因?yàn)椴糠秩腴T的小伙伴對(duì)環(huán)境配置不熟悉,通過安裝 Anaconda 可以比較方便的解決環(huán)境配置的問題,此外 Anaconda 里面自帶的 conda,可以用來管理我們的虛擬環(huán)境。如果覺得 Anaconda 安裝包過于龐大,也可以安裝 Miniconda 來簡(jiǎn)化。此處我們安裝 Anaconda 主要解決的問題是需要一個(gè) conda 的虛擬環(huán)境管理工具,所以無論是安裝 Anaconda 或者 Miniconda 都可以滿足我們的需求。下面以 Anaconda3 的安裝為例子。

          Anaconda 下載

          各位小伙伴可以在 Anaconda 的官網(wǎng)下載相應(yīng)的 64 位版本,但是由于官網(wǎng)提供的服務(wù)器在國(guó)外,下載速度較慢。這里推薦在清華大學(xué)提供的 Anaconda 鏡像站下載相對(duì)應(yīng)的 Anaconda3-2021.05-Windows-x86_64.exe 來安裝,具體下載地址為:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/。下載到本地后,雙擊打開。

          Anaconda 安裝

          點(diǎn)擊 next,然后

          點(diǎn)擊 I Agree,然后

          點(diǎn)擊 Next,然后

          此處需要注意的是修改路徑為 c:\anaconda3,此處修改路徑僅僅是為了后期方便查找相應(yīng)的環(huán)境。點(diǎn)擊 Next,然后

          此處勾選 Add Anaconda3 to my PATH environment variable,配置系統(tǒng)的環(huán)境變量,方便調(diào)用相關(guān)的程序。點(diǎn)擊 Install,等安裝完成就可以!

          Anaconda 測(cè)試

          安裝完成后,需要首先測(cè)試下是否安裝成功,可以打開 開始菜單,搜索 anaconda

          打開 Anaconda Prompt 后輸入 python

          如果可以成功進(jìn)入到 Python 環(huán)境,則表示 Anaconda 安裝成功。

          Python 的安裝

          我們安裝的 Anaconda 后,默認(rèn)安裝版本是 3.8.8,我們可以在 Anaconda Prompt 中輸入 python,后查看 Python 版本。但是根據(jù)我們此次的需求我們需要安裝 Python 3.9.7,為了解決這個(gè)問題,此處我們采用創(chuàng)建虛擬環(huán)境的方式來管理不同的項(xiàng)目。

          創(chuàng)建虛擬環(huán)境

          可以打開 開始菜單,搜索 anaconda 打開 Anaconda Prompt,輸入命令:conda create -n bt_tutotial python=3.9.7

          在后面的提示符中輸入 y 后,按回車鍵,

          如果現(xiàn)實(shí)如上圖所示 done,我們就成功安裝好了虛擬環(huán)境,進(jìn)入我們創(chuàng)建的虛擬環(huán)境開始安裝我們需要的庫!

          測(cè)試虛擬環(huán)境

          下面通過 conda activate bt_tutorial 發(fā)現(xiàn)可以成功進(jìn)入我們的虛擬環(huán)境

          在虛擬環(huán)境中輸入 python

          發(fā)現(xiàn)顯示的 Python 版本為 3.9.7,我們已經(jīng)成功安裝 Python 的虛擬環(huán)境并且成功運(yùn)行我們指定的 Python 版本。此后我們需要的 Python 及其依賴都會(huì)在改虛擬環(huán)境中進(jìn)行。

          依賴庫的安裝

          本次我們需要安裝的依賴庫主要是 backtraderakshare,其中由于 backtrader 的問題,需要先安裝指定版本的 matplotlib,以免后期報(bào)錯(cuò)。此處為了加速相應(yīng)庫的安裝,我們可以配置 pypi 在國(guó)內(nèi)的鏡像,此處推薦配置 pypi 的清華鏡像源:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/,具體的配置方式可以打開鏡像源的網(wǎng)址查看。

          matplotlib 安裝

          在我們創(chuàng)建好的虛擬環(huán)境中輸入 pip install matplotlib==3.2.2,安回車鍵后,發(fā)現(xiàn) Successfully installed 就說明成功安裝 matplotlib

          安裝 backtrader 和 akshare

          在我們創(chuàng)建好的虛擬環(huán)境中輸入 pip install backtrader akshare,一行命令就可以同時(shí)把 Backtrader 和 AKShare 安裝到我們的虛擬環(huán)境中。

          測(cè)試依賴庫

          在我們創(chuàng)建好的虛擬環(huán)境中輸入 python,進(jìn)入相對(duì)應(yīng)的 Python 虛擬環(huán)境,通過引入 akshare 和 backtrader 模塊,調(diào)用 xx.__version__ 屬性來查看我們安裝的依賴庫的版本,其中依賴庫需要注意是否已經(jīng)安裝最新版本,否則可能導(dǎo)致新加入的函數(shù)無法調(diào)用!

          PyCharm 的安裝

          此處推薦使用 PyCharm 作為編寫代碼的 IDE,有條件的小伙伴可以使用專業(yè)版的 PyCharm,社區(qū)版的 PyCharm 也可以。此外也可以使用 Visual Studio Code。此處我們以專業(yè)版的 PyCharm 為例,因?yàn)?PyCharm 是一款專業(yè)的 IDE,對(duì)于程序的編輯,調(diào)試和源碼查看都比較便利!

          PyCharm 下載

          先從 PyCharm 官網(wǎng) https://www.jetbrains.com/pycharm/ 下載專業(yè)版或者社區(qū)版的 PyCharm,此處以專業(yè)版為例,下載后雙擊打開安裝文件。

          PyCharm 安裝

          點(diǎn)擊 Next

          點(diǎn)擊 Next

          此處勾選所有的選項(xiàng),然后點(diǎn)擊 Next

          點(diǎn)擊 Install,完成安裝即可

          PyCharm 測(cè)試

          雙擊打開安裝好的 PyCharm,創(chuàng)建一個(gè)新的工程,File -> New Project

          打開工程文件創(chuàng)建選項(xiàng)卡,在 Location 中輸入本次的工程名稱為:bt_tutorial,點(diǎn)擊 Previously configured interpreter

          點(diǎn)擊 ...,進(jìn)入選項(xiàng)卡 Add Python Interpreter 中,繼續(xù)點(diǎn)擊 ...

          c:\Anaconda3\env 路徑中選擇 bt_tutorial 文件夾下的 python.exe

          然后點(diǎn)擊 OK,返回到頁面

          點(diǎn)擊 Create 就創(chuàng)建好了我們需要的工程并配置好了我們需要虛擬環(huán)境!

          測(cè)試工程及環(huán)境

          創(chuàng)建工程中的文件

          我們?cè)谟益I單擊創(chuàng)建好的工程文件夾,創(chuàng)建一個(gè)名為 bt_test 的 Python 文件

          輸入文件名并按回車鍵就可以創(chuàng)建好我們需要的 Python 文件

          編寫策略代碼

          在右側(cè)界面就可以編輯我們需要的代碼,此處我們測(cè)試在 AKShare 文檔:https://www.akshare.xyz/demo.html#id4 中提供的代碼,可以在上面下載

          from?datetime?import?datetime

          import?backtrader?as?bt??#?升級(jí)到最新版
          import?matplotlib.pyplot?as?plt??#?由于?Backtrader?的問題,此處要求?pip?install?matplotlib==3.2.2
          import?akshare?as?ak??#?升級(jí)到最新版
          import?pandas?as?pd

          plt.rcParams["font.sans-serif"]?=?["SimHei"]
          plt.rcParams["axes.unicode_minus"]?=?False

          #?利用?AKShare?獲取股票的后復(fù)權(quán)數(shù)據(jù),這里只獲取前?6?列
          stock_hfq_df?=?ak.stock_zh_a_hist(symbol="000001",?adjust="hfq").iloc[:,?:6]
          #?處理字段命名,以符合?Backtrader?的要求
          stock_hfq_df.columns?=?[
          ????'date',
          ????'open',
          ????'close',
          ????'high',
          ????'low',
          ????'volume',
          ]
          #?把?date?作為日期索引,以符合?Backtrader?的要求
          stock_hfq_df.index?=?pd.to_datetime(stock_hfq_df['date'])


          class?MyStrategy(bt.Strategy):
          ????"""
          ????主策略程序
          ????"""

          ????params?=?(("maperiod",?20),)??#?全局設(shè)定交易策略的參數(shù)

          ????def?__init__(self):
          ????????"""
          ????????初始化函數(shù)
          ????????"""

          ????????self.data_close?=?self.datas[0].close??#?指定價(jià)格序列
          ????????#?初始化交易指令、買賣價(jià)格和手續(xù)費(fèi)
          ????????self.order?=?None
          ????????self.buy_price?=?None
          ????????self.buy_comm?=?None
          ????????#?添加移動(dòng)均線指標(biāo)
          ????????self.sma?=?bt.indicators.SimpleMovingAverage(
          ????????????self.datas[0],?period=self.params.maperiod
          ????????)

          ????def?next(self):
          ????????"""
          ????????執(zhí)行邏輯
          ????????"""

          ????????if?self.order:??#?檢查是否有指令等待執(zhí)行,
          ????????????return
          ????????#?檢查是否持倉
          ????????if?not?self.position:??#?沒有持倉
          ????????????if?self.data_close[0]?>?self.sma[0]:??#?執(zhí)行買入條件判斷:收盤價(jià)格上漲突破20日均線
          ????????????????self.order?=?self.buy(size=100)??#?執(zhí)行買入
          ????????else:
          ????????????if?self.data_close[0]?0]:??#?執(zhí)行賣出條件判斷:收盤價(jià)格跌破20日均線
          ????????????????self.order?=?self.sell(size=100)??#?執(zhí)行賣出


          cerebro?=?bt.Cerebro()??#?初始化回測(cè)系統(tǒng)
          start_date?=?datetime(1991,?4,?3)??#?回測(cè)開始時(shí)間
          end_date?=?datetime(2020,?6,?16)??#?回測(cè)結(jié)束時(shí)間
          data?=?bt.feeds.PandasData(dataname=stock_hfq_df,?fromdate=start_date,?todate=end_date)??#?加載數(shù)據(jù)
          cerebro.adddata(data)??#?將數(shù)據(jù)傳入回測(cè)系統(tǒng)
          cerebro.addstrategy(MyStrategy)??#?將交易策略加載到回測(cè)系統(tǒng)中
          start_cash?=?1000000
          cerebro.broker.setcash(start_cash)??#?設(shè)置初始資本為?100000
          cerebro.broker.setcommission(commission=0.002)??#?設(shè)置交易手續(xù)費(fèi)為?0.2%
          cerebro.run()??#?運(yùn)行回測(cè)系統(tǒng)

          port_value?=?cerebro.broker.getvalue()??#?獲取回測(cè)結(jié)束后的總資金
          pnl?=?port_value?-?start_cash??#?盈虧統(tǒng)計(jì)

          print(f"初始資金:?{start_cash}\n回測(cè)期間:{start_date.strftime('%Y%m%d')}:{end_date.strftime('%Y%m%d')}")
          print(f"總資金:?{round(port_value,?2)}")
          print(f"凈收益:?{round(pnl,?2)}")

          cerebro.plot(style='candlestick')??#?畫圖

          運(yùn)行策略代碼

          在代碼塊中,右鍵單擊

          選擇 Run bt_test,就可以運(yùn)行策略文件,運(yùn)行后我們?cè)谳敵隹刂婆_(tái)可以看到一些我需要的輸出信息

          查看輸出信息

          可視化策略結(jié)果

          同時(shí),Backtrader 也為利用內(nèi)置的繪制功能,繪制可視化的策略結(jié)果圖

          總結(jié)

          教程小結(jié)

          本次教程主要從 Backtrader 的環(huán)境配置入手,介紹了如何在本地搭建合適的策略編寫環(huán)境,并通過引入虛擬環(huán)境,來為不同的策略引入不同版本的 Python 和相應(yīng)的依賴庫,此方法有利于各位小伙伴以后利用不同的工具來編寫自己的策略。由于圖文的形式并不能夠很形象的描述整個(gè)配置過程,后續(xù)會(huì)在知識(shí)星球《數(shù)據(jù)科學(xué)家》中以視頻直播的形式為大家演示如何搭建合適的編程環(huán)境。

          上述過程我們已經(jīng)安裝了必要的依賴庫,但是還有一些第三方庫可以幫我們?cè)?Backtrader 原來的功能基礎(chǔ)上,更好的對(duì)策略的結(jié)果進(jìn)行分析及可視化。比如 backtrader_plottingpyfolio、quantstats 等,這部分內(nèi)容我們會(huì)在后續(xù)的文章及視頻中講解,尤其是 pyfolio 直接通過 pip 來安裝會(huì)出錯(cuò),我們需要通過源碼來安裝。

          第三方庫可視化結(jié)果展示

          此處展示通過調(diào)用 backtrader_plotting、pyfolio、quantstats 等第三方庫,我們可以計(jì)算更多的指標(biāo)和獲取更多的可視化圖形!


          瀏覽 472
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲乱伦网站 | 欧美色色爱爱男人天堂 | 丁香五月婷婷亚洲 | 黄色网址中文字幕不卡 | 日本A级天堂 |