数据Feed中,backtrader中文教程
数据Feeds
backtrader
附带有一组数据饲料解析器(在写所有的时间CSV为主),让您加载不同sources.
- Yahoo(在线或已保存到一个文件中的数据)
- VisualChart(见www.visualchart.com
- Backtrader CSV(自己的测试熟格式)
- 通用CSV support
From的快速入门指南,您添加数据馈送到它应该清楚Cerebro
实例。数据Feed稍后将提供给不同在策略:
- 的阵列self.datas(插入顺序)
- 别名到阵列对象:
- self.data和self.data0点到第一element
- self.dataX点与指数X元素在array
A快速提醒如要插入的工作原理:
import backtrader as bt import backtrader.feeds as btfeeds data = btfeeds.YahooFinanceCSVData(dataname="wheremydatacsvis.csv") cerebro = bt.Cerebro() cerebro.adddata(data) # a "name" parameter can be passed for plotting purposes
数据订阅常见parameters
This数据进料可以直接从雅虎下载数据并送入system.
Parameters:
dataname
(默认值:无)必须PROVIDEDThe含义与数据馈送类型而变化(文件的位置,股票,…)
name
(默认: ”)指用于装饰目的的策划。如果没有指定它可能是衍生自
dataname
(例如:文件路径的最后部分)fromdate
(默认值:MINDATE)蟒DateTime对象表示在此之前的任何日期时间应ignored
todate
(默认的maxDate)蟒DateTime对象指示任何日期时间后此应该被ignored
timeframe
(默认值:TimeFrame.Days)的潜在值:
Ticks
,Seconds
,Minutes
,Days
,Weeks
,
Months
和Years
compression
(默认值:1)每个酒吧的实际钢筋数量。翔实。只有有效的数据重采样/ Replaying.
sessionstart
(默认值:无)会议的指示开始时间的数据。可以通过类可用于目的,如resampling
sessionend
(默认值:无)为数据会话结束时间指示。可以通过类可用于目的,如resampling
CSV数据馈送通用parameters
Parameters(附加到常见的):
headers
(默认值:真)表示如果传递的数据具有初始头row
separator
(缺省:“”)分离考虑来标记每一个CSV rows
GenericCSVData
This类的暴露一个通用的接口,允许解析大多每CSV文件根据由parameters
Specific参数(或特定的含义)所定义的次序和外地存在格式化出there.
Parses CSV文件:
dataname
解析的文件名或一个类文件object
datetime
(默认值:0)包含日期(或日期时间)fieldtime
柱(默认值:-1)包含时间字段如果从单独的列日期时间字段(-1表示它是不存在的)open
(默认值:1),high
(默认值:2),low
(默认值:3),close
(默认值:4),volume
(默认值:5),openinterest
(默认值:6)包含相应fieldsIf负值列
指数被传递(例如:-1)表示该字段不是存在于CSV data
nullvalue
(默认值:浮子(“的NaN”))将被使用的值,如果应存在缺失的(该CSV值字段为空)
dtformat
(默认值:%Y-%间 – %d%H:%M:%S)用于解析日期时间CSV field
tmformat
格式(默认值:%H:%M:%S)用于解析时间CSV字段是否“存在”(默认为在格式“时间”字段CSV应不存在)
的示例用法覆盖以下要求:
- 限制输入到年2000
- HLOC顺序而不是OHLC
- 缺失值与零(0.0)来代替
- 提供每日酒吧和日期时间是只是格式YYYY-MM-DD
- No
openinterest
列中的天是present
The代码:
import datetime import backtrader as bt import backtrader.feeds as btfeeds ... ... data = btfeeds.GenericCSVData( dataname="mydata.csv", fromdate=datetime.datetime(2000, 1, 1), todate=datetime.datetime(2000, 12, 31), nullvalue=0.0, dtformat=("%Y-%m-%d"), datetime=0, high=1, low=2, open=3, close=4, volume=5, openinterest=-1 ) ...
稍加修改要求:
- 限制输入到一年2000
- HLOC顺序而不是OHLC
- Missing值与零(0.0)来代替
- 设置即日酒吧,有独立的日期和时间已columns
- Date格式YYYY-MM-DD
- Time具有格式HH(而不是通常的HH:MM:SS).MM.SS
- 无
openinterest
列是present
The代码:
import datetime import backtrader as bt import backtrader.feeds as btfeed ... ... data = btfeeds.GenericCSVData( dataname="mydata.csv", fromdate=datetime.datetime(2000, 1, 1), todate=datetime.datetime(2000, 12, 31), nullvalue=0.0, dtformat=("%Y-%m-%d"), tmformat=("%H.%M.%S"), datetime=0, time=1, high=2, low=3, open=4, close=5, volume=6, openinterest=-1 )
这也可以做permanent与子类:
import datetime import backtrader.feeds as btfeed class MyHLOC(btfreeds.GenericCSVData): params = ( ("fromdate", datetime.datetime(2000, 1, 1)), ("todate", datetime.datetime(2000, 12, 31)), ("nullvalue", 0.0), ("dtformat", ("%Y-%m-%d")), ("tmformat", ("%H.%M.%S")), ("datetime", 0), ("time", 1), ("high", 2), ("low", 3), ("open", 4), ("close", 5), ("volume", 6), ("openinterest", -1) )
这个新的类,现在可以通过只是提供了可重复使用的dataname
:
data = btfeeds.MyHLOC(dataname="mydata.csv")