14 Star 76 Fork 55

redace85/backtrader_bilibili_study

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
tusharefeed.py 1.89 KB
一键复制 编辑 原始数据 按行查看 历史
redace85 提交于 2020-06-13 09:39 +08:00 . self indicator
import backtrader as bt
import tushare as ts
import datetime
class TushareData(bt.feed.DataBase):
'''
TushareData base on ts.get_hist_data interface,which is free for everyone
ktype: D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
'''
def __init__(self, ktype='D', **kwargs):
super().__init__(**kwargs)
# name of the table is indicated by dataname
# data is fetch between fromdate and todate
assert(self.p.fromdate is not None)
assert(self.p.todate is not None)
self.ktype = ktype
# iterator 4 data in the list
self.iter = None
self.data = None
def start(self):
if self.data is None:
# query data from free interface
self.data = ts.get_hist_data(
self.p.dataname,
start=self.p.fromdate.strftime('%Y-%m-%d'),
end=self.p.todate.strftime('%Y-%m-%d'),
ktype=self.ktype,
)
assert(self.data is not None)
# set the iterator anyway
self.iter = self.data.sort_index(ascending=True).iterrows()
def stop(self):
pass
def _load(self):
if self.iter is None:
# if no data ... no parsing
return False
# try to get 1 row of data from iterator
try:
row = next(self.iter)
except StopIteration:
# end of the list
return False
# fill the lines
self.lines.datetime[0] = self.date2num(datetime.datetime.strptime(row[0],'%Y-%m-%d'))
self.lines.open[0] = row[1]['open']
self.lines.high[0] = row[1]['high']
self.lines.low[0] = row[1]['low']
self.lines.close[0] = row[1]['close']
self.lines.volume[0] = row[1]['volume']
self.lines.openinterest[0] = -1
# Say success
return True
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/redace85/backtrader_bilibili_study.git
git@gitee.com:redace85/backtrader_bilibili_study.git
redace85
backtrader_bilibili_study
backtrader_bilibili_study
master

搜索帮助