開源量化框架backtrader FAQ:開發MySQL data feed
有很多人建立了自己本地的行情資料庫,希望能夠從本地資料庫將資料發到backtrader,供策略使用。一個通用的方法是將資料庫的行情資料讀到pandas dataframe裡,然後將這個資料幀的資料傳給backtrader的pandas feed資料物件,這樣策略就能夠使用了。
但是有些同學不想通過pandas dataframe中轉,而是想直接從資料庫將資料餵給backtrader的資料饋送物件,這就需要針對資料庫開發專門的data feed類了。
以下就是backtrader社群提供的一個從MySQL資料庫讀取資料的feed類MySQLData,大家可以試一試。
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import datetime
from backtrader.feed import DataBase
from backtrader import date2num
from sqlalchemy import create_engine
class MySQLData(DataBase):
params = (
('dbHost', None),
('dbUser', None),
('dbPWD', None),
('dbName', None),
('ticker', 'ISL'),
('fromdate', datetime.datetime.min),
('todate', datetime.datetime.max),
('name', ''),
)
def __init__(self):
self.engine = create_engine('mysql://'+self.p.dbUser+':'+ self.p.dbPWD +'@'+ self.p.dbHost +'/'+ self.p.dbName +'?charset=utf8mb4', echo=False)
def start(self):
self.conn = self.engine.connect()
self.stockdata = self.conn.execute("SELECT id FROM stocks WHERE ticker LIKE '" + self.p.ticker + "' LIMIT 1")
self.stock_id = self.stockdata.fetchone()[0]
#self.result = self.engine.execute("SELECT `date`,`open`,`high`,`low`,`close`,`volume` FROM `eoddata` WHERE `stock_id` = 10 AND `date` between '"+self.p.fromdate.strftime("%Y-%m-%d")+"' and '"+self.p.todate.strftime("%Y-%m-%d")+"' ORDER BY `date` ASC")
self.result = self.conn.execute("SELECT `date`,`open`,`high`,`low`,`close`,`volume` FROM `eoddata` WHERE `stock_id` = " + str(self.stock_id) + " AND `date` between '"+self.p.fromdate.strftime("%Y-%m-%d")+"' and '"+self.p.todate.strftime("%Y-%m-%d")+"' ORDER BY `date` ASC")
def stop(self):
#self.conn.close()
self.engine.dispose()
def _load(self):
one_row = self.result.fetchone()
if one_row is None:
return False
self.lines.datetime[0] = date2num(one_row[0])
self.lines.open[0] = float(one_row[1])
self.lines.high[0] = float(one_row[2])
self.lines.low[0] = float(one_row[3])
self.lines.close[0] = float(one_row[4])
self.lines.volume[0] = int(one_row[5])
self.lines.openinterest[0] = -1
return True
釋出於 19 小時前
相關文章
- 量化交易系統開發技術框架丨量化交易市值機器人系統開發案例框架機器人
- 【FAQ】HarmonyOS SDK 閉源開放能力 —ArkUIUI
- 深度學習開發必備開源框架深度學習框架
- 前端開發必看的幾個開源框架!前端框架
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Map Kit
- 【FAQ】HarmonyOS SDK 閉源開放能力 —IAP Kit
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Account Kit
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Share Kit
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Vision Kit
- 開源Android容器化框架Atlas開發者指南Android框架
- 小程式·雲開發初級FAQ
- 合約量化/量化合約開發原始碼功能,量化合約/合約量化系統開發(開發策略)及案例詳情原始碼
- 量化合約系統開發/現貨量化技術開發/量化合約系統開發功能詳情
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit(3)
- 【FAQ】HarmonyOS SDK 閉源開放能力 —IAP Kit(3)
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Map Kit(3)
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit(6)
- 【FAQ】HarmonyOS SDK 閉源開放能力 — 公共模組
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit(4)
- 【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit(5)
- Dewdrop:開源事件源框架事件框架
- 剛剛,阿里開源 iOS 協程開發框架 coobjc!阿里iOS框架OBJ
- SET智慧合約量化系統開發|秒合約量化開發搭建
- The Data Way Vol.6|我不是開發者,但我依然嚮往開源
- 量化交易系統開發
- 阿里開源 iOS 協程開發框架 coobjc原始碼分析阿里iOS框架OBJ原始碼
- fusionjs uber開源的通用web外掛化開發框架JSWeb框架
- 三大最棒的開源Web開發模板或框架Web框架
- Cognita: 開源RAG框架助力生產級應用開發框架
- 網易 Duilib:功能全面的開源桌面 UI 開發框架UI框架
- phpGrace開源PHP框架PHP框架
- 量化交易系統開發技術闡述丨量化交易原始碼開發原始碼
- 量化合約系統開發丨合約量化系統開發原始碼丨合約量化系統開發技術Demo原始碼
- 如何使用Tushare+ Backtrader進行股票量化策略回測
- 量化合約開發專案丨量化合約系統開發(開發案例)及原始碼邏輯原始碼
- 量化合約系統開發(詳解開發)丨合約量化系統開發(說明及案例)
- 量化合約開發(原始碼)丨量化合約系統開發(海外版)丨量化合約系統開發(多語言)原始碼