• Backtrader中文笔记之Data Feeds


    backtrader comes with a set of Data Feed parsers (at the time of writing all CSV Based) to let you load data from different sources.

    backtrader附带了一组数据源解析器(在编写所有基于CSV的代码时),允许您从不同的源加载数据

    • Yahoo (online or already saved to a file)

    • VisualChart (see www.visualchart.com

    • Backtrader CSV (own cooked format for testing)

    • Generic CSV support

    From the Quickstart guide it should be clear that you add data feeds to a Cerebro instance. The data feeds will later be available to the different strategies in:

    从快速入门指南中可以清楚地看到,您可以向一个大脑实例添加数据源。数据源稍后将提供给不同的策略:

    • An array self.datas (insertion order)

    • 一个数组self.datas(插入顺序)
    • Alias to the array objects:

    • 数组对象的别名
      • self.data and self.data0 point to the first element

      • self.data和self.data0指向了第一个元素
      • self.dataX points to elements with index X in the array

      • self.dataX指向了array的第X索引的元素

    A quick reminder as to how the insertion works:

    关于插入如何工作的快速提示:

    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
    

    Data Feeds Common parameters

    This data feed can download data directly from Yahoo and feed into the system.

    这个数据源可以直接从Yahoo下载数据并输入到系统中

    Parameters:

    • dataname (default: None) MUST BE PROVIDED(必须提供)

      The meaning varies with the data feed type (file location, ticker, …)

    • 其含义随数据馈送类型(文件位置、ticker等)而变化

    • name (default: ‘’)

      Meant for decorative purposes in plotting. If not specified it may be derived from dataname (example: last part of a file path)

    • 在绘图的时候用于装饰用。如果没有指定,它可能来至与dataname(例如:文件路径的最后一部分)
    • fromdate (default: mindate)

      Python datetime object indicating that any datetime prior to this should be ignored

    • Python日期时间对象,该对象指示在此之前的任何日期时间都应被忽略
    • todate (default: maxdate)

      Python datetime object indicating that any datetime posterior to this should be ignored

    • Python日期时间对象,该对象指示在此之后的任何日期时间都应被忽略
    • timeframe (default: TimeFrame.Days)

    • 时间框架
    • Potential values: Ticks, Seconds, Minutes, Days, Weeks, Months and Years

    • compression (default: 1)

    • 压缩
    • Number of actual bars per bar. Informative. Only effective in Data Resampling/Replaying.

    • 每个bar的实际数量,仅对数据重采样/重放有效。
    • sessionstart (default: None)

      Indication of session starting time for the data. May be used by classes for purposes like resampling

    • 指示数据的会话开始时间。可能被类用于重采样等目的
    • sessionend (default: None)

      Indication of session ending time for the data. May be used by classes for purposes like resampling

    • 指示数据的会话结束时间。可能被类用于重采样等目的

     

    CSV Data Feeds Common parameters

    Parameters (additional to the common ones):

    额外的参数

    • headers (default: True)

      Indicates if the passed data has an initial headers row

    • 指示传递的数据是否具有初始标题行
    • separator (default: “,”)

      Separator to take into account to tokenize each of the CSV rows

    • 分隔符,用于标记每个CSV行

    GenericCSVData

    一般CSVData

    This class exposes a generic interface allowing parsing mostly every CSV file format out there.

    Parses a CSV file according to the order and field presence defined by the parameters

    Specific parameters (or specific meaning):

    这个类公开了一个通用接口,允许解析大部分CSV文件格式。

    解析CSV文件根据参数的顺序以及字段的定义

    • dataname

      The filename to parse or a file-like object

    • 分析文件名或者文件对象
    • datetime (default: 0) column containing the date (or datetime) field

    • 列包含date或datetime的字段
    • time (default: -1) column containing the time field if separate from the datetime field (-1 indicates it’s not present)

    • 时间(默认值:-1)如果与日期时间字段分开,则包含时间字段的列(-1表示不存在)

    • open (default: 1) , high (default: 2), low (default: 3), close (default: 4), volume (default: 5), openinterest (default: 6)

      Index of the columns containing the corresponding fields

    • 列的索引包含不同的领域
    • If a negative value is passed (example: -1) it indicates the field is not present in the CSV data

    • 如果传递负值(例如:-1),则表示CSV数据中不存在该字段
    • nullvalue (default: float(‘NaN’))

      Value that will be used if a value which should be there is missing (the CSV field is empty)

    • 如果缺少应存在的值(CSV字段为空)时将使用的值
    • dtformat (default: %Y-%m-%d %H:%M:%S)

      用于分析datetime CSV字段的格式

    • tmformat (default: %H:%M:%S)

      Format used to parse the time CSV field if “present” (the default for the “time” CSV field is not to be present)

    • 用于分析“present”时的timeCSV字段的格式(“time”CSV字段的默认值不存在)

    An example usage covering the following requirements:

    包含以下要求的示例用法:

    • Limit input to year 2000

    • 输入限制在2000年以后
    • HLOC order rather than OHLC

    • 输入数据为hight,low,open,close
    • Missing values to be replaced with zero (0.0)

    • 缺省的值为0.0
    • Daily bars are provided and datetime is just the day with format YYYY-MM-DD

    • 时间格式化为YYYY-MM-DD
    • No openinterest column is present

    • 当前没有openinterest的列
    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
    )
    
    ...
    

    Slightly modified requirements:

    略微改进的要求

    • Limit input to year 2000

    • HLOC order rather than OHLC

    • Missing values to be replaced with zero (0.0)

    • Intraday bars are provided, with separate date and time columns

    • 提供日内的bars,分成日期与时间两个柱
      • Date has format YYYY-MM-DD
      • Time has format HH.MM.SS (instead of the usual HH:MM:SS)
    • No openinterest column is present

    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
    )
    

     This can also be made permanent with subclassing:

     也可以通过子类化使其永久化
    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)
    )
    

     This new class can be reused now by just providing the dataname:

    这个新的类可以让我们只提供dataname就可以重用

    data = btfeeds.MyHLOC(dataname='mydata.csv')
    

     

       
  • 相关阅读:
    [极客大挑战 2019]EasySQL CTF复现
    [极客大挑战 2019]Havefun (一起来撸猫) CTF复现
    一个简单漂亮的登录页面(前端)
    Python XPath的使用
    Python Requests的基本用法
    Linux配置jdk环境变量
    高性能 Java RPC 框架 Dubbo
    Zookeeper的配置文件及命令
    zookeeper怎么实现分布式锁
    Zookeeper-集群崩溃恢复
  • 原文地址:https://www.cnblogs.com/sidianok/p/13475244.html
Copyright © 2020-2023  润新知