吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何從MySQL中提取數據并增加換手率指標進行回測

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 10:38 ? 次閱讀

事實上,backtrader雖然沒有直接提供接口給我們做這樣的優化,但是我們可以通過繼承DataBase基類重寫DataFeed實現目的。下面就給大家演示一下如何從MySQL中提取數據并增加換手率指標進行回測。

本文完整源代碼和數據均在開源代碼倉庫中:
https://github.com/Ckend/pythondict-quant

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。如果你用Python的目的是數據分析,可以直接安裝Anaconda:Python數據分析與挖掘好幫手—Anaconda,它內置了Python和pip.

此外,推薦大家用VSCode編輯器,因為它可以在編輯器下方的終端運行命令安裝依賴模塊:Python 編程的最好搭檔—VSCode 詳細指南。

Windows環境下打開 Cmd (開始-運行-CMD),蘋果系統環境下請打開 Terminal (command+空格輸入Terminal),準備開始輸入命令安裝依賴。

在終端輸入以下命令安裝我們所需要的依賴模塊:

pip install backtrader
pip install numpy
pip install matplotlib

看到 Successfully installed xxx 則說明安裝成功。

2.自定義DataFeed

何為DataFeed?DataFeed 即 backtrader 中的“數據源”,任何數據進入策略回測前都要通過DataFeed,而DataFeed中會對數據進行處理,使得策略可以高效地進行計算。

我們今天要做的,就是增加一個基于MySQL的DataFeed,使得整個流程變得更加自動化。

首先,需要定義一個類,使其繼承與backtrader的數據基類 DataBase:

from backtrader.feed import DataBase
from backtrader import date2num


class MySQLData(DataBase):
  pass

如果需要從外部傳入所需股票數據的代碼和其一定范圍內的K線數據,需要提前定義params. 此外,如果你有除了:datetime(時間)、open(開盤價)、close(收盤價)、high(最高價)、low(最低價)、volume(成交量) 之外的指標。需要提前定義lines,如下所示:

圖片

從上圖可見,在lines中我增加了兩個自定義指標:turnover(成交額) 和 turnover_rate(換手率)。

接下來,編寫一個函數根據params參數從MySQL中獲取數據:

圖片

代碼本身沒有什么可說的,記得替換你本地的mysql配置,值得注意的是最后一行,拿到mysql數據后需要轉化為迭代器。

在類初始化的時候,需要定義相關的數據存放變量并調用上述函數獲取數據:

圖片

接下來到了關鍵的步驟,在調用回測策略前,cerebro會遍歷Datafeed的所有數據,此時會調用_load函數, 因此我們需要在這里,將數據庫中提取的每列數據對應到lines上:

圖片

如果你完整地看完了我的上述分析,那么理解下面整個DataFeed,甚至自己寫一個DataFeed,是非常容易的。

圖片

3.使用自定義數據流進行回測

接下來,讓我們嘗試使用這個自定義數據流輸入數據,采用第二章的macd策略輔助增加換手率指標進行回測。

這里當然需要你先讀懂第二章的內容,如果有點忘記了,可以回頭閱讀一下,非常簡單:

Python 量化投資實戰教程(2) —MACD策略

首先,在回測模塊及next函數中,引入換手率指標:

圖片

next函數買入時增加判斷換手率必須小于3%的條件:

圖片

最后,引入我們剛剛編寫完成的MySQLData Feed,傳入相關參數讀取股票為603520.SH的數據流,取2017年1月1日至2020年4月12日的數據,并調用回測函數:

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8694

    瀏覽量

    151931
  • 數據
    +關注

    關注

    8

    文章

    7145

    瀏覽量

    89593
  • 終端
    +關注

    關注

    1

    文章

    1156

    瀏覽量

    30008
  • database
    +關注

    關注

    0

    文章

    5

    瀏覽量

    10830
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26745
收藏 人收藏

    評論

    相關推薦

    如果采集的數據中提取一個完整的脈沖數據?

    本帖最后由 eehome 于 2013-1-5 09:43 編輯 由于我不是學信號出生的,現在有一個難題請大家幫忙,謝謝了!從一個100M的采集卡中采集到的數據存放到TDMS文件中,如何從這些數據中提取區分出一個個完整的脈
    發表于 12-23 11:24

    怎么EXA中提取IQ數據進行后期處理

    我正試圖EXA中提取IQ數據進行后期處理。我設法捕獲了I / Q樣本并將它們轉儲到一個文件中(附帶示例),但有兩個問題:1 - IQ Analyzer文檔中似乎沒有描述文件格式(ht
    發表于 03-05 16:41

    怎么繪圖或變換中提取特定數據

    嗨,大家好,我想在劇情或轉換中有一套iccap數據。我想自動提取數據的特定點分別存儲值。是否有任何內部函數直接提取
    發表于 08-14 08:44

    怎么DHT11溫度傳感器中提取數據

    嘿,伙計們,我試圖DHT11溫度傳感器中提取數據。你能告訴我是否存在一個示例項目或一個圖書館?試著自己寫還沒有成功…
    發表于 09-12 06:16

    如何特征值中提取兩個字節?

    請求時,很容易WReqq=(CyLay-GATSSAWReqEyReqqPARAMYT**)事件PARAMARM中提取值,其值如下:LILUNIT8值=WReq-& Gt;但這不
    發表于 10-15 13:24

    如何以編程方式STL庫中提取版本信息?

    我們正在將 STL 庫集成到需要 IEC 61508 安全完整性級別 2 (SIL2) 的項目環境中。我們如何以編程方式 STL 庫中提取版本信息?API 沒有顯示任何相關信息。另外,我們要使用的最新版本是什么?
    發表于 12-30 08:18

    如何通過M480系列的PDMAA步態模式RGB顏色陣列中提取

    應用程序: 以 PDMA 向下模式 RGB 顏色陣列中提取紅色、 綠色 和 藍色 數據 。 BSP 版本: M480系列 BSP CMSIS V3.04.000 硬件
    發表于 08-22 08:23

    JAVA教程之壓縮包中提取文件

    JAVA教程之壓縮包中提取文件,很好的JAVA的資料,快來學習吧
    發表于 04-11 17:28 ?3次下載

    如何HTML或XML文件中提取數據的Python爬蟲庫Beautiful Soup概述

    Beautiful Soup是一個可以HTML或XML文件中提取數據的Python庫,簡單來說,它能將HTML的標簽文件解析成樹形結構,然后方便地獲取到指定標簽的對應屬性。
    的頭像 發表于 07-29 09:56 ?2.6w次閱讀

    新加坡研發空氣中提取水的氣凝膠

    新加坡國立大學的研究人員創造了一種新的物質,能夠在不需要外部動力的情況下空氣中提取水。這種物質是一種氣凝膠,可用于為生活在難以找到清潔飲用水的環境中的人們制造飲用水。氣凝膠是一種固體材料,重量特別輕。
    的頭像 發表于 01-21 14:47 ?2113次閱讀

    MySQL端口可以MySQL數據庫中存儲和檢索數據

    使用選定的表和列生成一個XML架構結構。 生成輸入映射后,當端口接收到與輸入映射的XML結構匹配的XML文件時,它將自動將數據插入數據庫。生成輸出映射后,端口將從數據中提取
    的頭像 發表于 02-15 14:07 ?1711次閱讀

    如何使用OpenCV和Python圖像中提取感興趣區域

    今天我們將一起探究如何使用OpenCV和Python圖像中提取感興趣區域(ROI)。 在之間的文章中,我們完成了圖像邊緣提取,例如從臺球桌中提取桌邊。使用了簡單的OpenC
    的頭像 發表于 02-07 14:42 ?1902次閱讀

    光體積圖中提取呼吸速率的信號處理技術的比較

    電子發燒友網站提供《光體積圖中提取呼吸速率的信號處理技術的比較.pdf》資料免費下載
    發表于 06-12 09:20 ?0次下載

    OST中提取郵箱數據和重置丟失的WindowsServer 密碼的工具

    ? ?還原Exchange數據庫 MVP 和 IT 管理員強烈推薦的 5 合 1 專用工具套件,用于修復損壞的 EDB 、備份中提取郵箱以及將 Exchange 數據庫 (EDB)
    的頭像 發表于 06-24 11:58 ?1291次閱讀
    OST<b class='flag-5'>中提取</b>郵箱<b class='flag-5'>數據</b>和重置丟失的WindowsServer 密碼的工具

    我們應該如何雜亂無章的噪聲中提取我們所需的信號?

    噪聲中獲取所需的信號也許是一個非常大的挑戰。下面我們將討論幾種雜亂無章的噪聲中提取信號的方法。 1.濾波器法 濾波器是一種可以對信號進行處理的電子器件,可以通過隔離某些頻率,來去除噪聲
    的頭像 發表于 11-06 10:13 ?1277次閱讀
    界首市| 赢真钱的棋牌游戏| 百家乐注册| 百家乐官网一邱大师打法| 百家乐官网出千的方法| 钱百家乐官网取胜三步曲| 在线百家乐官网博彩网| 赌场百家乐官网技巧| 百家乐官网tt娱乐场| 百家乐官网学院教学视频| 建水县| 免佣百家乐官网赌场优势| 有关百家乐官网玩家论坛| 在线玩百家乐官网的玩法技巧和规则| 百家乐官网77scs官网| 博E百百家乐官网的玩法技巧和规则| 网上百家乐官网打牌| 星期8百家乐官网娱乐城| 玩百家乐凤凰娱乐城| 不夜城百家乐的玩法技巧和规则| 百家乐baccarat| 大发888赢钱技巧| 大发888真人网址的微博| 蓝田县| 百家乐官网游戏机论坛| 大发888 真钱娱乐场| 亚洲顶级赌场的微博| 大发在线体育| 百家乐官网平点| 百家乐优惠现金| V博百家乐的玩法技巧和规则 | 大发888网页登陆| 百家乐官网算号软件| 月华百家乐官网的玩法技巧和规则| 百家乐分析概率原件| 百家乐平注法攻略| 大发888备用a99.com| 百家乐官网有人赢过吗| 百家乐官网丽| 百家乐黏土筹码| 百家乐官网有多少种游戏|