您的位置:  首页 » 量化交易与机器学习 » backtrader » 数据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(默认值:无)必须PROVIDED

    The含义与数据馈送类型而变化(文件的位置,股票,…)

  • name(默认: ”)

    指用于装饰目的的策划。如果没有指定它可能是衍生自dataname(例如:文件路径的最后部分)

  • fromdate(默认值:MINDATE)

    蟒DateTime对象表示在此之前的任何日期时间应ignored

  • todate(默认的maxDate)

    蟒DateTime对象指示任何日期时间后此应该被ignored

  • timeframe(默认值:TimeFrame.Days)

    的潜在值:Ticks, Seconds, Minutes, Days, Weeks,
    MonthsYears

  • 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)包含日期(或日期时间)field
  • time柱(默认值:-1)包含时间字段如果从单独的列日期时间字段(-1表示它是不存在的)
  • open(默认值:1),high(默认值:2),low(默认值:3),close(默认值:4),volume(默认值:5),openinterest(默认值:6)包含相应fields

    If负值列

    指数被传递(例如:-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
  • Noopeninterest列中的天是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")