首页 > 其他分享 >BackTrader 中文文档(四)

BackTrader 中文文档(四)

时间:2024-04-15 10:55:40浏览次数:32  
标签:中文 False BackTrader data None dataname 文档 数据源 True

原文:www.backtrader.com/

数据供稿 - 过滤器

过滤器

原文:www.backtrader.com/docu/filters/

此功能是相对较晚添加到backtrader中的,并且必须适应已经存在的内部结构。这使得它不像希望的那样灵活和 100%功能齐全,但在许多情况下仍然可以实现目的。

尽管实现尝试允许即插即用的过滤器链接,但是现有的内部结构使得很难确保总是可以实现。因此,一些过滤器可能被链接,而另一些则可能没有。

目的

  • 转换由数据源提供的值以提供不同的数据源

实现是为了简化可以通过cerebro API 直接使用的两个明显过滤器的实现。这些是:

  • 重新采样cerebro.resampledata

    在这里,过滤器转换了传入数据源时间框架压缩。例如:

    (Seconds, 1) -> (Days, 1)` 
    

    这意味着原始数据提供的是分辨率为1 秒的柱状图。 重新采样过滤器拦截数据并将其缓冲,直到可以提供1 天柱状图。当看到下一天的1 秒柱状图时,将会发生这种情况。

  • 重播cerebro.replaydata

    对于上述相同的时间段,该过滤器将使用1 秒分辨率的柱状图来重建1 天柱状图。

    这意味着1 天柱状图会被提供与看到的1 秒柱状图一样多次,并更新以包含最新信息。

    例如,这模拟了实际交易日的发展方式。

    注意

    数据的长度,len(data)以及策略的长度在不变的情况下保持不变。

过滤器工作中

给定现有的数据源,您可以使用数据源的addfilter方法:

data = MyDataFeed(dataname=myname)
data.addfilter(filter, *args, **kwargs)
cerebro.addata(data)

即使它恰好与重新采样/重播过滤器兼容,也可以执行以下操作:

data = MyDataFeed(dataname=myname)
data.addfilter(filter, *args, **kwargs)
cerebro.replaydata(data)

过滤器接口

一个filter必须符合给定的接口,即:

  • 一个可调用的函数,接受此签名:

    callable(data, *args, **kwargs)` 
    

或者

  • 一个可以实例化调用的类

    • 在实例化期间,__init__方法必须支持此签名:
    def __init__(self, data, *args, **kwargs)` 
    
    • __call__方法具有以下签名:
    def __call__(self, data, *args, **kwargs)` 
    

    对于来自数据源的每个新输入值,将调用该实例。 \*args\*kwargs__init__传递的相同。

    返回值

    * `True`: the inner data fetching loop of the data feed must retry
      fetching data from the feed, becaue the length of the stream was
      manipulated
    
    * `False` even if data may have been edited (example: changed
      `close` price), the length of the stream has remain untouched` 
    

    在基于类的过滤器的情况下,可以实现 2 个附加方法

    • 具有以下签名的last
    def last(self, data, *args, **kwargs)` 
    

    数据源结束时,将调用此方法,允许过滤器传递它可能已经缓冲的数据。一个典型的情况是重新采样,因为柱状图被缓冲,直到看到下一个时间段的数据。当数据源结束时,没有新数据来推送缓冲的数据出去。

    last提供了将缓冲数据推送出去的机会。

注意

很明显,如果过滤器根本不支持任何参数,并且将添加而无任何参数,则签名可以简化为:

def __init__(self, data, *args, **kwargs) -> def __init__(self, data)

一个示例过滤器

一个非常快速的过滤器实现:

class SessionFilter(object):
    def __init__(self, data):
        pass

    def __call__(self, data):
        if data.p.sessionstart <= data.datetime.time() <= data.p.sessionend:
            # bar is in the session
            return False  # tell outer data loop the bar can be processed

        # bar outside of the regular session times
        data.backwards()  # remove bar from data stack
        return True  # tell outer data loop to fetch a new bar

这个过滤器:

  • 使用data.p.sessionstartdata.p.sessionend(标准数据源参数)来判断条是否在会话中。

  • 如果在会话中,返回值为False,以指示未执行任何操作,可以继续处理当前条目

  • 如果不在会话中,则从流中移除该条,并返回True以指示必须获取新条。

    注意

    data.backwards()利用LineBuffer接口。 这深入到backtrader的内部。

这种过滤器的用法:

  • 一些数据源包含非常规交易时间外的数据,这些数据可能不受交易者的关注。 使用此过滤器仅将会话内条考虑在内。

用于过滤器的数据伪-API

在上述示例中,已经展示了过滤器如何调用data.backwards()以从流中移除当前条。 数据源对象的有用调用,旨在作为过滤器的伪-API

  • data.backwards(size=1, force=False):通过将逻辑指针向后移动来从数据流中删除size条(默认为1)。 如果force=True,则物理存储也将被删除。

    移除物理存储是一项细致的操作,仅用作内部操作的黑客方法。

  • data.forward(value=float('NaN'), size=1):将size条移动到存储区向前移动,必要时增加物理存储并用value填充。

  • data._addtostack(bar, stash=False):将bar添加到堆栈以供以后处理。 bar是一个包含与数据源的lines一样多的值的可迭代对象。

    如果stash=False,则添加到堆栈的条将立即被系统消耗,在下一次迭代开始时。

    如果stash=True,则条将经历整个循环处理,包括可能被过滤器重新解析

  • data._save2stack(erase=False, force=False):将当前数据条保存到堆栈以供以后处理。 如果erase=True,则将调用data.backwards并将接收参数force

  • data._updatebar(bar, forward=False, ago=0):使用可迭代对象bar中的值来覆盖数据流中ago位置的值。 默认情况下,ago=0将更新当前条。 如果是-1,则是前一个。

另一个示例:粉鱼过滤器

这是一个可以链接的过滤器的示例,并且旨在如此,以连接到另一个过滤器,即replay 过滤器Pinkfish名称来自于其主页描述该想法的库:使用每日数据执行仅在分时数据中才可能的操作。

要实现效果:

  • 每日条将分解为 2 个组件:OHL然后是C

  • 这两个部分通过重播链接以在流中发生以下情况:

    With Len X     -> OHL
    With Len X     -> OHLC
    With Len X + 1 -> OHL
    With Len X + 1 -> OHLC
    With Len X + 2 -> OHL
    With Len X + 2 -> OHLC
    ...` 
    

逻辑:

  • 收到OHLC条时,将其复制到一个可迭代对象中,并分解为以下内容:

    • 一个OHL条。 由于这个概念实际上并不存在,收盘价格被替换为开盘价格以真正形成一个OHLO条。

    • 一个不存在的 C 条,实际上会被传递为一个刻度 CCCC

    • 成交量在这两部分之间分配

    • 当前条被从流中移除

    • OHLO 部分被放入堆栈中进行即时处理

    • CCCC 部分被放入存储区,在下一轮处理中处理

    • 因为堆栈中有一些需要立即处理的内容,过滤器可以返回 False 来指示这一点。

这个过滤器与以下内容一起工作:

  • 重播 过滤器将 OHLOCCCC 部分组合在一起,最终生成一个 OHLC 条。

使用案例:

  • 看到像是如果今天的最大值是过去 20 个交易日中的最高最大值,就发出一个 Close 订单,该订单在第 2 个刻度执行。

代码:

class DaySplitter_Close(bt.with_metaclass(bt.MetaParams, object)):
  '''
 Splits a daily bar in two parts simulating 2 ticks which will be used to
 replay the data:

 - First tick: ``OHLX``

 The ``Close`` will be replaced by the *average* of ``Open``, ``High``
 and ``Low``

 The session opening time is used for this tick

 and

 - Second tick: ``CCCC``

 The ``Close`` price will be used for the four components of the price

 The session closing time is used for this tick

 The volume will be split amongst the 2 ticks using the parameters:

 - ``closevol`` (default: ``0.5``) The value indicate which percentage, in
 absolute terms from 0.0 to 1.0, has to be assigned to the *closing*
 tick. The rest will be assigned to the ``OHLX`` tick.

 **This filter is meant to be used together with** ``cerebro.replaydata``

 '''
    params = (
        ('closevol', 0.5),  # 0 -> 1 amount of volume to keep for close
    )

    # replaying = True

    def __init__(self, data):
        self.lastdt = None

    def __call__(self, data):
        # Make a copy of the new bar and remove it from stream
        datadt = data.datetime.date()  # keep the date

        if self.lastdt == datadt:
            return False  # skip bars that come again in the filter

        self.lastdt = datadt  # keep ref to last seen bar

        # Make a copy of current data for ohlbar
        ohlbar = [data.lines[i][0] for i in range(data.size())]
        closebar = ohlbar[:]  # Make a copy for the close

        # replace close price with o-h-l average
        ohlprice = ohlbar[data.Open] + ohlbar[data.High] + ohlbar[data.Low]
        ohlbar[data.Close] = ohlprice / 3.0

        vol = ohlbar[data.Volume]  # adjust volume
        ohlbar[data.Volume] = vohl = int(vol * (1.0 - self.p.closevol))

        oi = ohlbar[data.OpenInterest]  # adjust open interst
        ohlbar[data.OpenInterest] = 0

        # Adjust times
        dt = datetime.datetime.combine(datadt, data.p.sessionstart)
        ohlbar[data.DateTime] = data.date2num(dt)

        # Ajust closebar to generate a single tick -> close price
        closebar[data.Open] = cprice = closebar[data.Close]
        closebar[data.High] = cprice
        closebar[data.Low] = cprice
        closebar[data.Volume] = vol - vohl
        ohlbar[data.OpenInterest] = oi

        # Adjust times
        dt = datetime.datetime.combine(datadt, data.p.sessionend)
        closebar[data.DateTime] = data.date2num(dt)

        # Update stream
        data.backwards(force=True)  # remove the copied bar from stream
        data._add2stack(ohlbar)  # add ohlbar to stack
        # Add 2nd part to stash to delay processing to next round
        data._add2stack(closebar, stash=True)

        return False  # initial tick can be further processed from stack

Filters Reference

原文:www.backtrader.com/docu/filters-reference/

SessionFilter

class backtrader.filters.SessionFilter(data)

此类可以作为过滤器应用于数据源,并将过滤掉超出常规会话时间的盘中 bar(即:盘前/盘后市场数据)

这是一个“非简单”的过滤器,必须管理数据的堆栈(在初始化和 call 期间传递)

它不需要“last”方法,因为它没有需要传递的内容

SessionFilterSimple

class backtrader.filters.SessionFilterSimple(data)

此类可以作为过滤器应用于数据源,并将过滤掉超出常规会话时间的盘中 bar(即:盘前/盘后市场数据)

这是一个“简单”过滤器,不必管理数据的堆栈(在初始化和 call 期间传递)

它不需要“last”方法,因为它没有需要传递的内容

Bar 管理将由 SimpleFilterWrapper 类完成,该类在 DataBase.addfilter_simple 调用时添加

SessionFilller

class backtrader.filters.SessionFiller(data)

声明会话开始/结束时间内的数据源的 Bar Filler。

填充 bar 是使用声明的 Data Source timeframecompression 构建的(用于计算中间缺失的时间)

参数:

  • fill_price (def: None):

    如果传递了 None,则将使用前一个 bar 的收盘价。例如,要得到一个 bar,该 bar 需要时间,但不会在图表中显示... 使用 float(‘Nan’)

  • fill_vol (def: float(‘NaN’)):

    用于填充缺失的 volume 的值

  • fill_oi (def: float(‘NaN’)):

    用于填充缺失的持仓量的值

  • skip_first_fill (def: True):

    在看到第一个有效 bar 时,不要从 sessionstart 填充到该 bar

CalendarDays

class backtrader.filters.CalendarDays(data)

在交易日中添加缺失的日历天的 Bar Filler

参数:

  • fill_price (def: None):

    0:用于填充 0 或 None 的给定值:使用最后已知的收盘价 -1:使用最后一个 bar 的中点(High-Low 平均值)

  • fill_vol (def: float(‘NaN’)):

    用于填充缺失的 volume 的值

  • fill_oi (def: float(‘NaN’)):

    用于填充缺失的持仓量的值

BarReplayer_Open

class backtrader.filters.BarReplayer_Open(data)

此过滤器将一个 bar 拆分为两部分:

  • Open:将使用 bar 的开盘价提供一个初始价格 bar,在该 bar 中,四个组件(OHLC)相等

    该初始 bar 的 volume/openinterest 字段为 0

  • OHLC:原始 bar 包含原始的 volume/openinterest

拆分模拟了一次回放,无需使用 replay 过滤器。

DaySplitter_Close

class backtrader.filters.DaySplitter_Close(data)

将每日 bar 拆分为两部分,模拟用于重放数据的 2 个 tick:

  • 第一个 tick:OHLX

    Close 将被替换为 OpenHighLow平均值

    此 tick 使用会话开放时间

  • 第二个 tick:CCCC

    Close价格将用于价格的四个组成部分

    会话结束时间用于此点

体积将根据以下参数分配给 2 个点:

  • closevol(默认:0.5)该值表示从 0.0 到 1.0 的绝对比例,应分配给收盘点。其余将分配给OHLX点。

此过滤器意在与 cerebro.replaydata 一同使用

平均趋势烛(HeikinAshi)

类 backtrader.filters.HeikinAshi(data)

此过滤器重新构建开盘价、最高价、最低价、收盘价以绘制平均趋势烛

参见:

* [`en.wikipedia.org/wiki/Candlestick_chart#Heikin_Ashi_candlesticks`](https://en.wikipedia.org/wiki/Candlestick_chart#Heikin_Ashi_candlesticks)

* [`stockcharts.com/school/doku.php?id=chart_school:chart_analysis:heikin_ashi`](http://stockcharts.com/school/doku.php?id=chart_school:chart_analysis:heikin_ashi)

砖形图(Renko)

类 backtrader.filters.Renko(data)

修改数据流以绘制砖形图(或砖块)

参数:

  • hilo(默认:False)使用最高价和最低价而不是收盘价来决定是否需要新砖

  • size(默认:None)每个砖的考虑大小

  • autosize(默认:20.0)如果sizeNone,则将用于自动计算砖的大小(简单地将当前价格除以给定值)

  • dynamic(默认:False)如果True并使用autosize,则移至新砖时将重新计算砖的大小。这当然会消除砖的完美对齐。

  • align(默认:1.0)用于对齐砖的价格边界的因子。例如,如果价格为3563.25,而align10.0,则得到的对齐价格将为3560。计算方式:

    • 3563.25 / 10.0 = 356.325

    • 四舍五入并去除小数 -> 356

    • 356 * 10.0 -> 3560

参见:

* [`stockcharts.com/school/doku.php?id=chart_school:chart_analysis:renko`](http://stockcharts.com/school/doku.php?id=chart_school:chart_analysis:renko)

雅虎数据源注意事项

原文:www.backtrader.com/docu/datayahoo/

2017 年 5 月,雅虎停止了用于历史数据下载的现有 csv 格式的 API。

一个新的 API(此处命名为 v7)迅速被标准化并已实施。

这也带来了实际 CSV 下载格式的更改。

使用 v7 API/格式

从版本 1.9.49.116 开始,这是默认行为。只需简单选择

  • YahooFinanceData 用于在线下载

  • YahooFinanceCSVData 用于离线下载的文件

使用传统的 API/格式

要使用旧的 API/格式

  1. 将在线雅虎数据源实例化为:

    data = bt.feeds.YahooFinanceData(
        ...
        version='',
        ...
    )` 
    

    离线雅虎数据源为:

    data = bt.feeds.YahooFinanceCSVData(
        ...
        version='',
        ...
    )` 
    

    可能在线服务会回来(该服务没有任何公告地停止了… 也有可能会回来)

或者

  1. 仅对在更改发生之前下载的离线文件,也可以进行以下操作:

    data = bt.feeds.YahooLegacyCSV(
        ...
        ...
    )` 
    

    新的 YahooLegacyCSV 简单地使用 version='' 进行自动化。

Pandas 数据源示例

原文:www.backtrader.com/docu/pandas-datafeed/pandas-datafeed/

注意

必须安装 pandas 及其依赖项

支持 Pandas Dataframes 似乎是许多人关注的问题,他们依赖于已经可用的用于不同数据源(包括 CSV)的解析代码以及 Pandas 提供的其他功能。

数据源的重要声明。

注意

这些只是声明。不要盲目复制此代码。请参见下面示例中的实际用法

class PandasData(feed.DataBase):
  '''
 The ``dataname`` parameter inherited from ``feed.DataBase`` is the pandas
 DataFrame
 '''

    params = (
        # Possible values for datetime (must always be present)
        #  None : datetime is the "index" in the Pandas Dataframe
        #  -1 : autodetect position or case-wise equal name
        #  >= 0 : numeric index to the colum in the pandas dataframe
        #  string : column name (as index) in the pandas dataframe
        ('datetime', None),

        # Possible values below:
        #  None : column not present
        #  -1 : autodetect position or case-wise equal name
        #  >= 0 : numeric index to the colum in the pandas dataframe
        #  string : column name (as index) in the pandas dataframe
        ('open', -1),
        ('high', -1),
        ('low', -1),
        ('close', -1),
        ('volume', -1),
        ('openinterest', -1),
    )

上述从 PandasData 类中摘录的片段显示了键:

  • 实例化期间传递给类的 dataname 参数保存了 Pandas Dataframe

    此参数从基类 feed.DataBase 继承

  • 新参数使用 DataSeries 中常规字段的名称,并遵循以下约定

    • datetime(默认值:无)

    • None:datetime 是 Pandas Dataframe 中的“索引”

    • -1:自动检测位置或大小写相等的名称

    • = 0:对应 pandas 数据帧中的列的数字索引

    • string:pandas 数据帧中的列名(作为索引)

    • open, high, low, high, close, volume, openinterest(默认值:全部为 -1)

    • None:列不存在

    • -1:自动检测位置或大小写相等的名称

    • = 0:对应 pandas 数据帧中的列的数字索引

    • string:pandas 数据帧中的列名(作为索引)

一个小示例应该能够加载标准的 2006 示例,已由 Pandas 解析,而不是直接由 backtrader 解析

运行示例以使用 CSV 数据中的现有“标题”:

$ ./panda-test.py
--------------------------------------------------
               Open     High      Low    Close  Volume  OpenInterest
Date
2006-01-02  3578.73  3605.95  3578.73  3604.33       0             0
2006-01-03  3604.08  3638.42  3601.84  3614.34       0             0
2006-01-04  3615.23  3652.46  3615.23  3652.46       0             0

相同但告诉脚本跳过标题:

$ ./panda-test.py --noheaders
--------------------------------------------------
                  1        2        3        4  5  6
0
2006-01-02  3578.73  3605.95  3578.73  3604.33  0  0
2006-01-03  3604.08  3638.42  3601.84  3614.34  0  0
2006-01-04  3615.23  3652.46  3615.23  3652.46  0  0

第 2 次运行使用的是 tells pandas.read_csv

  • 跳过第一行输入(将 skiprows 关键字参数设置为 1)

  • 不查找标题行(将 header 关键字参数设置为 None)

backtrader 对 Pandas 的支持尝试自动检测是否使用了列名,否则使用数字索引,并相应地采取行动,尝试提供最佳匹配。

下图是对成功的致敬。Pandas Dataframe 已正确加载(在两种情况下)

image

测试的示例代码。

from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

import argparse

import backtrader as bt
import backtrader.feeds as btfeeds

import pandas

def runstrat():
    args = parse_args()

    # Create a cerebro entity
    cerebro = bt.Cerebro(stdstats=False)

    # Add a strategy
    cerebro.addstrategy(bt.Strategy)

    # Get a pandas dataframe
    datapath = ('../../datas/2006-day-001.txt')

    # Simulate the header row isn't there if noheaders requested
    skiprows = 1 if args.noheaders else 0
    header = None if args.noheaders else 0

    dataframe = pandas.read_csv(datapath,
                                skiprows=skiprows,
                                header=header,
                                parse_dates=True,
                                index_col=0)

    if not args.noprint:
        print('--------------------------------------------------')
        print(dataframe)
        print('--------------------------------------------------')

    # Pass it to the backtrader datafeed and add it to the cerebro
    data = bt.feeds.PandasData(dataname=dataframe)

    cerebro.adddata(data)

    # Run over everything
    cerebro.run()

    # Plot the result
    cerebro.plot(style='bar')

def parse_args():
    parser = argparse.ArgumentParser(
        description='Pandas test script')

    parser.add_argument('--noheaders', action='store_true', default=False,
                        required=False,
                        help='Do not use header rows')

    parser.add_argument('--noprint', action='store_true', default=False,
                        help='Print the dataframe')

    return parser.parse_args()

if __name__ == '__main__':
    runstrat()

数据源参考

译文:www.backtrader.com/docu/dataautoref/

AbstractDataBase

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

BacktraderCSVData

解析用于测试的自定义 CSV 数据。

特定参数:

  • dataname:要解析的文件名或类似文件的对象

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

CSVDataBase

实现 CSV 数据源的类的基类

该类负责打开文件,读取行并对其进行标记

子类只需要覆盖:

  • _loadline(tokens)

_loadline的返回值(True/False)将是由此基类覆盖的_load的返回值

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

Chainer

链接数据的类

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

DataClone

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

DataFiller

此类将使用来自基础数据源的以下信息位填充源数据中的间隙

  • 时间框架和压缩以确定输出条的维度

  • sessionstart 和 sessionend

如果数据源在 10:31 和 10:34 之间缺少���,且时间框架为分钟,则输出将使用最后一条条的收盘价(10:31)填充 10:32 和 10:33 分钟的条

条可能会缺失,因为其他原因

参数:

* `fill_price` (def: None): if None (or evaluates to False),the
  closing price will be used, else the passed value (which can be
  for example ‘NaN’ to have a missing bar in terms of evaluation but
  present in terms of time

* `fill_vol` (def: NaN): used to fill the volume of missing bars

* `fill_oi` (def: NaN): used to fill the openinterest of missing bars

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* fill_price (None)

* fill_vol (nan)

* fill_oi (nan)

DataFilter

此类从给定数据源中过滤条。除了 DataBase 的标准参数外,它还接受一个funcfilter参数,该参数可以是任何可调用对象

逻辑:

  • funcfilter将与基础数据源一起调用

    它可以是任何可调用对象

    • 返回值 True:将使用当前数据源的条形值

    • 返回值 False:将丢弃当前数据源的条形值

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* funcfilter (None)

GenericCSVData

根据参数定义的顺序和字段存在性解析 CSV 文件

特定参数(或特定含义):

  • dataname:要解析的文件名或类似文件的对象

  • 行参数(日期时间,开盘价,最高价...)采用数值

    -1 的值表示 CSV 源中该字段的缺失

  • 如果time存在(参数 time >=0),则源包含分开的日期和时间字段,这些字段将被组合

  • nullvalue

    如果应该存在的值缺失(CSV 字段为空),将使用的值

  • dtformat:用于解析日期时间 CSV 字段的格式。有关格式,请参阅 python strptime/strftime 文档。

    如果指定了数值,则将按以下方式解释

    • 1:值是int类型的 Unix 时间戳,表示自 1970 年 1 月 1 日起的秒数

    • 2:值是float类型的 Unix 时间戳

    如果传递了可调用对象

    • 它将接受一个字符串并返回一个 datetime.datetime 的 python 实例
  • tmformat:如果“存在”,则用于解析时间 CSV 字段的格式(“时间”CSV 字段的默认值是不存在)

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* nullvalue (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)

IBData

交互经纪人数据源。

支持参数dataname中的以下合同规范:

  • TICKER # 股票类型和 SMART 交易所

  • TICKER-STK # 股票和 SMART 交易所

  • TICKER-STK-EXCHANGE # 股票

  • TICKER-STK-EXCHANGE-CURRENCY # 股票

  • TICKER-CFD # 差价合约和 SMART 交易所

  • TICKER-CFD-EXCHANGE # 差价合约

  • TICKER-CDF-EXCHANGE-CURRENCY # 股票

  • TICKER-IND-EXCHANGE # 指数

  • TICKER-IND-EXCHANGE-CURRENCY # 指数

  • TICKER-YYYYMM-EXCHANGE # 期货

  • TICKER-YYYYMM-EXCHANGE-CURRENCY # 期货

  • TICKER-YYYYMM-EXCHANGE-CURRENCY-MULT # 期货

  • TICKER-FUT-EXCHANGE-CURRENCY-YYYYMM-MULT # 期货

  • TICKER-YYYYMM-EXCHANGE-CURRENCY-STRIKE-RIGHT # 期权

  • TICKER-YYYYMM-EXCHANGE-CURRENCY-STRIKE-RIGHT-MULT # 期权

  • TICKER-FOP-EXCHANGE-CURRENCY-YYYYMM-STRIKE-RIGHT # 期权

  • TICKER-FOP-EXCHANGE-CURRENCY-YYYYMM-STRIKE-RIGHT-MULT # 期权

  • CUR1.CUR2-CASH-IDEALPRO # 外汇

  • TICKER-YYYYMMDD-EXCHANGE-CURRENCY-STRIKE-RIGHT # 期权

  • TICKER-YYYYMMDD-EXCHANGE-CURRENCY-STRIKE-RIGHT-MULT # 期权

  • TICKER-OPT-EXCHANGE-CURRENCY-YYYYMMDD-STRIKE-RIGHT # 期权

  • TICKER-OPT-EXCHANGE-CURRENCY-YYYYMMDD-STRIKE-RIGHT-MULT # 期权

参数:

  • sectype(默认值:STK

    如果在dataname规范中未提供,应用的默认值为security type

  • exchange(默认值:SMART

    如果在dataname规范中未提供,应用的默认值为exchange

  • currency(默认值:''

    如果在dataname规范中未提供,应用的默认值为currency

  • historical(默认值:False

    如果设置为True,数据源将在首次下载数据后停止。

    标准数据源参数fromdatetodate将被用作参考。

    如果请求的持续时间大于 IB 根据所选数据的时间框架/压缩允许的持续时间,则数据源将进行多次请求。

  • what(默认值:None

    如果为None,则将为历史数据请求使用不同资产类型的默认值:

    • 对于现金资产‘BID’

    • 对于任何其他‘交易’

    如果希望使用其他值,请查阅 IB API 文档

  • rtbar(默认值:False

    如果设置为True,则使用 Interactive Brokers 提供的5 秒实时数据条作为最小跳动。根据文档,它们对应实时值(一旦被 IB 收集和整理)

    如果为False,则将使用基于接收到的跳动的RTVolume价格。在CASH资产的情况下(例如 EUR.JPY),将始终使用RTVolume,并从中获取bid价格(根据散布在互联网上的文献,这是 IB 的行业事实标准)

    即使设置为True,如果数据被重新采样/保持到低于 Seconds/5 的时间框架/压缩,将不会使用实时条,因为 IB 不会在该水平以下提供它们

  • qcheck(默认值:0.5

    以秒为单位的时间,如果未收到数据,则唤醒以正确重新采样/回放数据包并将通知传递给链路上游的机会

  • backfill_start(默认值:True

    在开始时执行回填。将在单个请求中获取最大可能的历史数据。

  • backfill(默认值:True

    在断开/重新连接周期后执行回填。间隙持续时间将用于下载尽可能少的数据量

  • backfill_from(默认值:None

    可以传递一个额外的数据源来进行初始层次的回填。一旦数据源耗尽并且如果需要,将从 IB 进行回填。理想情况下,这是为了从已存储的源(如磁盘上的文件)回填,但不限于此。

  • latethrough(默认:False

    如果数据源被重新采样/回放,一些 ticks 可能会因为已经交付的重新采样/回放的 bar 而来得太晚。如果这是 True,那些 ticks 将无论如何都会被放过。

    检查 Resampler 文档以查看如何考虑这些 ticks。

    如果在 IBStore 实例中设置 timeoffsetFalse,并且 TWS 服务器时间与本地计算机时间不同步,则可能会发生这种情况。

  • tradename(默认:None)对某些特定情况(如 CFD,其中价格由一种资产提供,交易发生在另一种资产上)很有用

    • SPY-STK-SMART-USD -> SP500 ETF(将被指定为 dataname

    • SPY-CFD-SMART-USD -> 这是对应的 CFD,它提供的不是价格跟踪,而是在这种情况下将是交易资产(指定为 tradename

参数中的默认值是为了允许类似 \TICKER这样的东西,其中参数sectype(默认:STK)和 exchange(默认:SMART`)被应用。

一些资产如 AAPL 需要包括 currency 的完整规范(默认:‘’),而像 TWTR 这样的其他资产可以直接传递。

  • AAPL-STK-SMART-USD 是 dataname 的完整规范。

    或者:IBData 作为 IBData(dataname='AAPL', currency='USD'),它使用默认值(STKSMART)并覆盖货币为 USD

Lines:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.5)

* calendar (None)

* sectype (STK)

* exchange (SMART)

* currency ()

* rtbar (False)

* historical (False)

* what (None)

* useRTH (False)

* backfill_start (True)

* backfill (True)

* backfill_from (None)

* latethrough (False)

* tradename (None)

InfluxDB

Lines:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* host (127.0.0.1)

* port (8086)

* username (None)

* password (None)

* database (None)

* startdate (None)

* high (high_p)

* low (low_p)

* open (open_p)

* close (close_p)

* volume (volume)

* ointerest (oi)

MT4CSVData

解析 Metatrader4 历史中心的 CSV 导出文件。

特定参数(或特定含义):

  • dataname:要解析的文件名或文件对象

  • 使用 GenericCSVData 并简单修改参数

Lines:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* nullvalue (nan)

* dtformat (%Y.%m.%d)

* tmformat (%H:%M)

* datetime (0)

* time (1)

* open (2)

* high (3)

* low (4)

* close (5)

* volume (6)

* openinterest (-1)

OandaData

Oanda 数据源。

参数:

  • qcheck(默认:0.5

    在未收到数据时唤醒的时间,以便充分重新采样/回放数据包并将通知传递给上游链。

  • historical(默认:False

    如果设置为 True,数据源在完成首次数据下载后将停止。

    标准数据源参数 fromdatetodate 将作为参考。

    如果所请求的持续时间大于 IB 根据数据所选的时间框架/压缩允许的持续时间,则数据源将发出多个请求。

  • backfill_start(默认:True

    在开始时执行回填。将在单个请求中获取最大可能的历史数据。

  • backfill(默认:True

    在断开/重新连接周期后执行回填。将使用间隙持续时间来下载可能的最小数据量

  • backfill_from(默认:None

    可以传递附加数据源来执行初始层的补充。一旦数据源耗尽并且如果需要,将从 IB 进行补充。这最理想地用于从已存储的源(如磁盘上的文件)进行补充,但不限于此。

  • bidask(默认:True

    如果为True,则历史/补偿请求将从服务器请求买入/卖出价格

    如果为False,则将请求midpoint

  • useask(默认:False

    如果为True,则将使用bidask价格的ask部分,而不是默认使用bid

  • includeFirst(默认:True

    通过直接将参数直接设置为 Oanda API 调用来影响历史/补偿请求的第 1 个栏条的交付

  • reconnect(默认:True

    当网络连接中断时重新连接

  • reconnections(默认:-1

    重新连接尝试次数:-1 表示永远

  • reconntimeout(默认:5.0

    重新连接尝试之间等待的秒数

此数据源仅支持与 OANDA API 开发人员指南中的定义相符的timeframecompression的此映射:

(TimeFrame.Seconds, 5): 'S5',
(TimeFrame.Seconds, 10): 'S10',
(TimeFrame.Seconds, 15): 'S15',
(TimeFrame.Seconds, 30): 'S30',
(TimeFrame.Minutes, 1): 'M1',
(TimeFrame.Minutes, 2): 'M3',
(TimeFrame.Minutes, 3): 'M3',
(TimeFrame.Minutes, 4): 'M4',
(TimeFrame.Minutes, 5): 'M5',
(TimeFrame.Minutes, 10): 'M10',
(TimeFrame.Minutes, 15): 'M15',
(TimeFrame.Minutes, 30): 'M30',
(TimeFrame.Minutes, 60): 'H1',
(TimeFrame.Minutes, 120): 'H2',
(TimeFrame.Minutes, 180): 'H3',
(TimeFrame.Minutes, 240): 'H4',
(TimeFrame.Minutes, 360): 'H6',
(TimeFrame.Minutes, 480): 'H8',
(TimeFrame.Days, 1): 'D',
(TimeFrame.Weeks, 1): 'W',
(TimeFrame.Months, 1): 'M',

任何其他组合都将被拒绝

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.5)

* calendar (None)

* historical (False)

* backfill_start (True)

* backfill (True)

* backfill_from (None)

* bidask (True)

* useask (False)

* includeFirst (True)

* reconnect (True)

* reconnections (-1)

* reconntimeout (5.0)

PandasData

使用 Pandas DataFrame 作为数据源,使用列名的索引(可以是“数字”)

这意味着所有与行相关的参数都必须具有数值作为元组的索引

参数:

  • nocase (默认 True)不区分列名大小写的匹配

注:

  • dataname参数是一个 Pandas DataFrame

  • 可用于日期时间的值

    • None:索引包含日期时间

    • -1:无索引,自动检测列

    • = 0 或字符串:具体的列标识符

  • 对于其他行参数

    • None:列不存在

    • -1:自动检测

    • = 0 或字符串:具体的列标识符

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* nocase (True)

* datetime (None)

* open (-1)

* high (-1)

* low (-1)

* close (-1)

* volume (-1)

* openinterest (-1)

PandasDirectData

使用 Pandas DataFrame 作为数据源,直接迭代“itertuples”返回的元组。

这意味着所有与行相关的参数都必须具有数值作为元组的索引

注:

  • dataname参数是一个 Pandas DataFrame

  • 数据行中任何参数的负值表示它不存在于 DataFrame 中

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* datetime (0)

* open (1)

* high (2)

* low (3)

* close (4)

* volume (5)

* openinterest (6)

Quandl

对给定时间范围内的数据执行从 Quandl 服务器的直接下载。

特定参数(或特定含义):

  • dataname

    要下载的股票代码(例如‘YHOO’)

  • baseurl

    服务器 URL。未来可能有人决定开放与 Quandl 兼容的服务。

  • proxies

    一个字典,指示下载要经过的代理,如{‘http’: ‘myproxy.com’}或{‘http’: ‘127.0.0.1:8080’}

  • buffered

    如果为 True,则在解析开始前,整个套接字连接将在本地缓冲。

  • reverse

    Quandl 以降序返回值(最新的先)。如果这是True(默认值),请求将告诉 Quandl 以升序(从旧到新)格式返回

  • adjclose

    是否使用股息/拆分调整后的收盘价,并根据其调整所有值。

  • apikey

    在可能需要时的 apikey 标识

  • dataset

    标识要查询的数据集的字符串。默认为 WIKI

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* reverse (True)

* adjclose (True)

* round (False)

* decimals (2)

* baseurl ([`www.quandl.com/api/v3/datasets`](https://www.quandl.com/api/v3/datasets))

* proxies ({})

* buffered (True)

* apikey (None)

* dataset (WIKI)

QuandlCSV

解析预先下载的 Quandl CSV 数据源(或者如果它们符合 Quandl 格式则是本地生成的)

特定参数:

  • dataname:要解析的文件名或类似文件的对象

  • reverse(默认值:False

    假定本地存储的文件已在下载过程中进行了反转

  • adjclose(默认值:True

    是否使用股息/拆分调整后的收盘价,并根据其调整所有值。

  • round(默认值:False

    是否在调整收盘价后将值四舍五入到特定小数位数

  • decimals(默认值:2

    要四舍五入的小数位数

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* reverse (False)

* adjclose (True)

* round (False)

* decimals (2)

RollOver

当满足条件时转到下一个未来的类

参数:

  • checkdate(默认值:None

    这必须是一个可调用对象,具有以下签名:

    checkdate(dt, d):` 
    

    在哪里:

    • dt 是一个 datetime.datetime 对象

    • d 是当前活动期货的当前数据源

    期望返回值:

    • True:只要可调用返回此值,就可以切换到下一个未来

如果商品在三月的第三个星期五到期,checkdate 可能会在到期周的整个周返回 True

* `False`: the expiration cannot take place
  • checkcondition(默认值:None

    注意:仅当 checkdate 返回 True 时才会调用此函数

    如果为 None,则会在内部评估为 True(执行滚动)

    否则,这必须是一个可调用对象,具有以下签名:

    checkcondition(d0, d1)` 
    

    在哪里:

    • d0 是当前活动期货的当前数据源

    • d1 是下一个到期的数据源

    期望返回值:

    • True:切换到下一个未来

跟随 checkdate 的示例,这可能表示仅当 d0 中的 volume 已经小于 d1 中的 volume 时,才能发生滚动

* `False`: the expiration cannot take place

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* checkdate (None)

* checkcondition (None)

SierraChartCSVData

解析 SierraChart 导出的 CSV 文件。

特定参数(或特定含义):

  • dataname:要解析的文件名或类似文件的对象

  • 使用 GenericCSVData 并简单修改日期格式(dtformat)为

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* nullvalue (nan)

* dtformat (%Y/%m/%d)

* tmformat (%H:%M:%S)

* datetime (0)

* time (-1)

* open (1)

* high (2)

* low (3)

* close (4)

* volume (5)

* openinterest (6)

VCData

VisualChart 数据源。

参数:

  • qcheck(默认值:0.5)唤醒重新采样器/重播器检查当前柱状图是否可交付的默认超时时间

    仅当在数据中插入了重新采样/重播过滤器时才使用该值

  • historical(默认值:False)如果没有提供 todate 参数(在基类中定义),则设置为 True 将强制进行历史下载

    如果提供了 todate,则会实现相同的效果

  • milliseconds(默认值:True)由 Visual Chart 构造的柱状图如下所示:HH:MM:59.999000

    如果此参数为 True,则会添加一毫秒到此时间,使其看起来像这样:HH::MM + 1:00.000000

  • tradename(默认:None)连续期货不能交易,但非常适合数据跟踪。如果提供了此参数,则它将是当前期货的名称,这将是交易资产。例如:

    • 001ES -> ES 迷你连续作为dataname提供

    • ESU16 -> ES 迷你 2016-09. 如果在tradename中提供,它将是交易资产。

  • usetimezones(默认:True)对于大多数市场,Visual Chart提供的时间偏移信息允许将日期时间转换为市场时间(backtrader表示的选择)

    一些市场是特殊的(096),需要特殊的内部覆盖和时区支持,以显示用户期望的市场时间。

    如果将此参数设置为True,将尝试导入pytz以使用时区(默认)

    禁用它将删除时区使用(如果负载过大可能有所帮助)

行数:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.5)

* calendar (None)

* historical (False)

* millisecond (True)

* tradename (None)

* usetimezones (True)

VChartCSVData

解析VisualChart导出的 CSV 文件。

特定参数(或特定含义):

  • dataname:要解析的文件名或文件类对象

行数:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

VChartData

支持Visual Chart的二进制磁盘文件,包括每日和日内格式。

注意:

  • dataname:文件或打开的类文件对象

    如果传递了类文件对象,将使用timeframe参数来确定实际时间范围。

    否则,将使用文件扩展名(.fd表示每日,.min表示日内)。

行数:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

VChartFile

支持Visual Chart的二进制磁盘文件,包括每日和日内格式。

注意:

  • dataname:由 Visual Chart 显示的市场代码。例如:015ES 代表 EuroStoxx 50 连续期货

行数:

* close

* low

* high

* open

* volume

* openinterest

* datetime

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

YahooFinanceCSVData

解析预先下载的 Yahoo CSV 数据源(或者如果它们符合 Yahoo 格式,可以是本地生成的)。

特定参数:

  • dataname:要解析的文件名或文件类对象

  • reverse(默认:False

    假设在下载过程中本地存储的文件已经被反转。

  • adjclose(默认:True

    是否使用股息/拆分调整后的收盘价,并根据其调整所有值。

  • adjvolume(默认:True

    如果adjclose也为True,还需调整volume

  • round(默认:True

    在调整收盘价后,是否要将值四舍五入到特定的小数位数。

  • roundvolume(默认:0

    调整后,将结果体积四舍五入到指定的小数位数。

  • decimals(默认:2

    要四舍五入的小数位数

  • swapcloses(默认:False

    [2018-11-16] 看起来closeadjusted close的顺序现在已经固定。参数被保留,以防需要再次交换列。

行数:

* close

* low

* high

* open

* volume

* openinterest

* datetime

* adjclose

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* reverse (False)

* adjclose (True)

* adjvolume (True)

* round (True)

* decimals (2)

* roundvolume (False)

* swapcloses (False)

YahooFinanceData

对给定时间范围从 Yahoo 服务器直接下载数据。

特定参数(或特定含义):

  • dataname

    要下载的股票代码(‘YHOO’用于 Yahoo 自有股票报价)

  • proxies

    一个字典,指示要通过的代理,如{‘http’: ‘myproxy.com’}或{‘http’: ‘127.0.0.1:8080’}

  • period

    下载数据的时间范围。传递‘w’表示每周,‘m’表示每月。

  • reverse

    [2018-11-16] 雅虎在线下载的最新版本按正确顺序返回数据。因此,在线下载的reverse默认值设置为False

  • adjclose

    是否使用股息/拆分调整后的收盘价,并根据其调整所有值。

  • urlhist

    用于获取下载的crumb授权 cookie 的雅虎财经历史行情的 URL

  • urldown

    实际下载服务器的 URL

  • retries

    尝试获取crumb cookie 并下载数据的次数(每次)

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

* adjclose

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* reverse (False)

* adjclose (True)

* adjvolume (True)

* round (True)

* decimals (2)

* roundvolume (False)

* swapcloses (False)

* proxies ({})

* period (d)

* urlhist ([`finance.yahoo.com/quote`](https://finance.yahoo.com/quote)/{}/history)

* urldown ([`query1.finance.yahoo.com/v7/finance/download`](https://query1.finance.yahoo.com/v7/finance/download))

* retries (3)

YahooLegacyCSV

这旨在加载在 2017 年 5 月雅虎停止原始服务之前下载的文件。

行:

* close

* low

* high

* open

* volume

* openinterest

* datetime

* adjclose

参数:

* dataname (None)

* name ()

* compression (1)

* timeframe (5)

* fromdate (None)

* todate (None)

* sessionstart (None)

* sessionend (None)

* filters ([])

* tz (None)

* tzinput (None)

* qcheck (0.0)

* calendar (None)

* headers (True)

* separator (,)

* reverse (False)

* adjclose (True)

* adjvolume (True)

* round (True)

* decimals (2)

* roundvolume (False)

* swapcloses (False)

* version ()

标签:中文,False,BackTrader,data,None,dataname,文档,数据源,True
From: https://www.cnblogs.com/apachecn/p/18135445

相关文章

  • 一种融合指代消解序列标注方法在中文人名识别上的应用(下)
    二、使用了BERT模型和指代消解算法:加入BERT语言预处理模型,获取到高质量动态词向量。融入指代消解算法,根据指代词找出符合要求的子串/短语。【2】融入指代消解算法,根据指代词找出符合要求的子串/短语指代消解算法如图2所示,简单来说,就是考虑文档中子串/短语以及学习子......
  • 数字转中文(含小数点)
    numberToChinese(num){return(num)=>{varAA=newArray('零','一','二','三','四','五','六','七','八','九','十');var......
  • mysql中文全文索引的记录
    在MySQL5.7.6之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库。从MySQL5.7.6开始,MySQL内置了ngram全文解析器,用来支持中文、日文、韩文分词。创建示例--创建表格CREATETABLEarticles(idINTAUTO_INCREME......
  • 如何编写易于访问的技术文档 - 最佳实践与示例
    当你为项目或工具编写技术文档时,你会希望它易于访问。这意味着它将为全球网络上的多样化受众提供服务并可用。网络无障碍旨在使任何人都能访问网络内容。设计师、开发人员和撰写人员有共同的无障碍最佳实践。本文将涵盖一些创建技术内容的最佳实践。(本文视频讲解:java567.com)什......
  • Markdown 文档常用表情
    Markdown文档常用表情目录Markdown文档常用表情❌✅✔️❗❓⭐......
  • 关于中文、字符互转
    序知周所众在计算机中,所有的数据在存储和运算时都要使用二进制数表示例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示于是就产生了编码而我国字符编码也有几套标准,如GB2312、GBK、GB18030等脑......
  • DOM(Document Object Model,文档对象模型)
    DOM(DocumentObjectModel,文档对象模型)是一个跨平台和语言独立的接口,它允许程序和脚本能够动态地访问和更新文档的内容、结构和样式。DOM将文档解析为一个由节点(nodes)和对象(objects)组成的结构集合,这种结构集合是表示文档内容的树形结构。通过DOM,开发者可以创建动态网页,并通过Ja......
  • Go文档:Release History(发布历史)
    本文更新于2024-03-22。官方文档:https://go.dev/doc/devel/release目录泛型go1.22.0(2024-02-06)go1.21.0(2023-08-08)go1.20(2023-02-01)go1.19(2022-08-02)go1.18(2022-03-15)模块go1.17(2021-08-16)go1.16(2021-02-16)go1.15(2020-08-11)go1.14(2020-02-25)go1.13(......
  • java + geotools 读写shp时,中文属性乱码问题
    创建时要注意 :  newDataStore.setCharset(Charset.forName("GBK"));代码如下:FilenewFile=newFile(filepath);Map<String,Serializable>params=newHashMap<>();params.put("url",newFile.toURI().toURL());params.put("createspati......
  • Java 中文官方教程 2022 版(四十一)
    原文:docs.oracle.com/javase/tutorial/reallybigindex.html错误处理原文:docs.oracle.com/javase/tutorial/jaxp/limits/error.html建议应用程序在设置新属性时捕获org.xml.sax.SAXNotRecognizedException异常,以便应用程序在不支持这些属性的旧版本上正常工作。例如,可下载的......