You are here:  Home » 量化交易与机器学习 » backtrader » 一个通用的CSV数据馈backtrader中文教程

一个通用的CSV数据Feed

An问题已经导致了GenericCSVData可用于实施解析不同的CSV formats.

在GitHub上的问题,问题#6清楚地表明是有需要有东西,实际上可以处理任何传入的CSV数据feed.

The酱是在PARAMS声明:

class GenericCSVData(feed.CSVDataBase):
    params = (
        ("nullvalue", float("NaN")),
        ("dtformat", "%Y-%m-%d %H:%M:%S"),
        ("tmformat", "%H:%M:%S"),

        ("datetime", 0),
        ("time", -1),
        ("open", 1),
        ("high", 2),
        ("low", 3),
        ("close", 4),
        ("volume", 5),
        ("openinterest", 6),
    )

因为类从CSV数据库继承,一些标准参数可用的:

  • fromdate(取一个日期时间对象,以限制开始日期)
  • todate(需要一个日期时间的对象),以限制的结束日期)
  • headers默认值:真,指示该CSV数据具有标头行)
  • separator(缺省:“”,该字符分隔域)
  • dataname(其具有CSV数据或类似文件的对象的文件的名称)

的一些其它参数,如name, compressiontimeframe只是信息,除非你打算执行resampling.

当然更重要的是,新定义参数的含义:

  • 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:用于解析日期时间CSV field

    %S)

  • tmformat格式(默认值:%H:%M:%S)

    用于解析时间CSV字段是否“存在”(默认为在格式“时间”字段CSV应不存在)

这或许应该足以涵盖许多不同的CSV格式和不存在values.

An例如使用的覆盖以下要求:

  • 限制输入到一年2000
  • HLOC顺序而不是OHLC
  • 缺失值与零(0.0)来代替
  • 提供每日酒吧和日期时间是只是格式YYYY-MM-DD
  • No一天openinterest列是present

代码:

import datetime
import backtrader as bt
import backtrader.feeds as btfeed

...
...

data = btfeed.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.MM.SS
  • Noopeninterest列是present

The代码:

import datetime
import backtrader as bt
import backtrader.feeds as btfeed

...
...

data = btfeed.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
)

评论被关闭。