PyAlgoTrade 0.20 中文文档(一)(3)https://developer.aliyun.com/article/1524142
CSV 支持
class pyalgotrade.feed.csvfeed.``Feed(dateTimeColumn, dateTimeFormat, converter=None, delimiter=', ', timezone=None, maxLen=None)
基类:pyalgotrade.feed.csvfeed.BaseFeed
一个从 CSV 格式文件加载值的数据源。
| 参数: |
- dateTimeColumn (string.) – 具有日期时间信息的列的名称。
- dateTimeFormat (string.) – 日期时间格式。将使用 datetime.datetime.strptime 来解析列。
- converter (function.) – 具有两个参数(列名和值)的函数,用于将字符串值转换为其他值。默认转换器将尝试将值转换为浮点数。如果失败,则返回原始字符串。
- delimiter (string.) – 用于分隔值的字符串。
- timezone (一个 pytz 时区.) – 用于本地化日期时间的时区。检查
pyalgotrade.marketsession。 - maxLen (int.) – 每个
pyalgotrade.dataseries.DataSeries将保存的值的最大数量。一旦有界长度已满,当添加新项时,相应数量的项将从另一端丢弃。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
addValuesFromCSV(path)
从文件中加载值。
| 参数: | path (string.) – CSV 文件的路径。 |
CSV 支持示例
以下是格式如下的文件
Date,USD,GBP,EUR 2013-09-29,1333.0,831.203,986.75 2013-09-22,1349.25,842.755,997.671 2013-09-15,1318.5,831.546,993.969 2013-09-08,1387.0,886.885,1052.911 . . .
可以这样加载:
from __future__ import print_function from pyalgotrade.feed import csvfeed feed = csvfeed.Feed("Date", "%Y-%m-%d") feed.addValuesFromCSV("quandl_gold_2.csv") for dateTime, value in feed: print(dateTime, value)
输出应该是这样的:
1968-04-07 00:00:00 {'USD': 37.0, 'GBP': 15.3875, 'EUR': ''} 1968-04-14 00:00:00 {'USD': 38.0, 'GBP': 15.8208, 'EUR': ''} 1968-04-21 00:00:00 {'USD': 37.65, 'GBP': 15.6833, 'EUR': ''} 1968-04-28 00:00:00 {'USD': 38.65, 'GBP': 16.1271, 'EUR': ''} 1968-05-05 00:00:00 {'USD': 39.1, 'GBP': 16.3188, 'EUR': ''} 1968-05-12 00:00:00 {'USD': 39.6, 'GBP': 16.5625, 'EUR': ''} 1968-05-19 00:00:00 {'USD': 41.5, 'GBP': 17.3958, 'EUR': ''} 1968-05-26 00:00:00 {'USD': 41.75, 'GBP': 17.5104, 'EUR': ''} 1968-06-02 00:00:00 {'USD': 41.95, 'GBP': 17.6, 'EUR': ''} 1968-06-09 00:00:00 {'USD': 41.25, 'GBP': 17.3042, 'EUR': ''} . . . 2013-07-28 00:00:00 {'USD': 1331.0, 'GBP': 864.23, 'EUR': 1001.505} 2013-08-04 00:00:00 {'USD': 1309.25, 'GBP': 858.637, 'EUR': 986.921} 2013-08-11 00:00:00 {'USD': 1309.0, 'GBP': 843.156, 'EUR': 979.79} 2013-08-18 00:00:00 {'USD': 1369.25, 'GBP': 875.424, 'EUR': 1024.964} 2013-08-25 00:00:00 {'USD': 1377.5, 'GBP': 885.738, 'EUR': 1030.6} 2013-09-01 00:00:00 {'USD': 1394.75, 'GBP': 901.292, 'EUR': 1055.749} 2013-09-08 00:00:00 {'USD': 1387.0, 'GBP': 886.885, 'EUR': 1052.911} 2013-09-15 00:00:00 {'USD': 1318.5, 'GBP': 831.546, 'EUR': 993.969} 2013-09-22 00:00:00 {'USD': 1349.25, 'GBP': 842.755, 'EUR': 997.671} 2013-09-29 00:00:00 {'USD': 1333.0, 'GBP': 831.203, 'EUR': 986.75}
目录
- feed – 基本 feeds
- CSV 支持
- CSV 支持示例
barfeed – 条形提供者
原文:
gbeced.github.io/pyalgotrade/docs/v0.20/html/barfeed.html
class pyalgotrade.barfeed. BaseBarFeed(frequency, maxLen=None)
基类:pyalgotrade.feed.BaseFeed
提供源的 pyalgotrade.bar.Bar 的基类。
| 参数: |
- frequency – 条的频率。在
pyalgotrade.bar.Frequency中定义的有效值。 - maxLen (int.) –
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦有限长度满了,当添加新项目时,相应数量的项目将从对立端丢弃。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
注
这是一个基类,不应直接使用。
getNextBars()
重写以返回源中的下一个 pyalgotrade.bar.Bars ,如果没有条则返回 None。
注
这是给 BaseBarFeed 子类的,不应直接调用。
getCurrentBars()
返回当前的pyalgotrade.bar.Bars。
getLastBar(instrument)
返回给定仪器的最后一个 pyalgotrade.bar.Bar ,或 None。
getDefaultInstrument()
返回最后一个注册的仪器。
getRegisteredInstruments()
返回注册的仪器名称列表。
getDataSeries(instrument=None)
返回给定仪器的 pyalgotrade.dataseries.bards.BarDataSeries。
| 参数: | instrument (string.) – 仪器标识符。如果为 None,则返回默认仪器。 |
| 返回类型: | pyalgotrade.dataseries.bards.BarDataSeries。 |
CSV
class pyalgotrade.barfeed.csvfeed. BarFeed(frequency, maxLen=None)
基类:pyalgotrade.barfeed.membf.BarFeed
基类为基于 CSV 文件的 pyalgotrade.barfeed.BarFeed。
注
这是一个基类,不应直接使用。
class pyalgotrade.barfeed.csvfeed. GenericBarFeed(frequency, timezone=None, maxLen=None)
基类:pyalgotrade.barfeed.csvfeed.BarFeed
一个从 CSV 文件加载条的 BarFeed,格式如下:
Date Time,Open,High,Low,Close,Volume,Adj Close 2013-01-01 13:59:00,13.51001,13.56,13.51,13.56,273.88014126,13.51001
| 参数: |
- frequency – 条的频率。检查
pyalgotrade.bar.Frequency。 - timezone (A pytz timezone.) – 用于本地化条形图的默认时区。请检查
pyalgotrade.marketsession。 - maxLen (int.) –
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦有界长度满了,当添加新项时,相应数量的项将从另一端丢弃。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
注意
- CSV 文件必须在第一行中具有列名。
- 如果Adj Close列为空,也没关系。
- 当使用多个工具时:
- 如果加载的所有工具都位于相同的时区,则可能不需要指定时区参数。
- 如果加载的任何工具位于不同的时区,则应设置时区参数。
addBarsFromCSV(instrument, path, timezone=None, skipMalformedBars=False)
从 CSV 格式文件中加载给定工具的条形图。该工具将在条形图数据源中注册。
| 参数: |
- instrument (string.) – 工具标识符。
- path (string.) – CSV 文件的路径。
- timezone (A pytz timezone.) – 用于本地化条形图的时区。请检查
pyalgotrade.marketsession。 - skipMalformedBars (boolean.) – 设置为 True 以跳过解析条形图时的错误。
|
setDateTimeFormat(dateTimeFormat)
设置要与 strptime 一起使用的格式字符串以解析日期时间列。## 雅虎财经
class pyalgotrade.barfeed.yahoofeed.``Feed(frequency=86400, timezone=None, maxLen=None)
基类:pyalgotrade.barfeed.csvfeed.BarFeed
从从雅虎财经下载的 CSV 文件中加载条形图的pyalgotrade.barfeed.csvfeed.BarFeed。
| 参数: |
- frequency – 条形图的频率。仅支持 pyalgotrade.bar.Frequency.DAY 或 pyalgotrade.bar.Frequency.WEEK。
- timezone (A pytz timezone.) – 用于本地化条形图的默认时区。请检查
pyalgotrade.marketsession。 - maxLen (int.) –
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦有界长度满了,当添加新项时,相应数量的项将从另一端丢弃。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
注意
雅虎财经 CSV 文件缺乏时区信息。当使用多个工具时:
- 如果加载的所有仪器都在同一个时区,则可能不需要指定时区参数。
- 如果加载的任何仪器处于不同的时区,则必须设置时区参数。
addBarsFromCSV(instrument, path, timezone=None)
从 CSV 格式文件中加载给定仪器的条形图。该仪器将在条形图 feed 中注册。
| 参数: |
- instrument (string.) – 仪器标识符。
- path (string.) – CSV 文件的路径。
- timezone (一个 pytz 时区.) – 用于本地化条形图的时区。查看
pyalgotrade.marketsession。
| ## Google Finance
class pyalgotrade.barfeed.googlefeed.``Feed(frequency=86400, timezone=None, maxLen=None)
Bases: pyalgotrade.barfeed.csvfeed.BarFeed
从 Google Finance 下载的 CSV 文件加载条形图的pyalgotrade.barfeed.csvfeed.BarFeed。
| 参数: |
- frequency – 条形图的频率。目前仅支持pyalgotrade.bar.Frequency.DAY。
- timezone (一个 pytz 时区.) – 用于本地化条形图的默认时区。查看
pyalgotrade.marketsession。 - maxLen (int.) –
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦达到有界长度,当添加新项时,相应数量的项将从另一端丢弃。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
注意
Google Finance csv 文件缺少时区信息。在处理多个仪器时:
- 如果加载的所有仪器都在同一个时区,则可能不需要指定时区参数。
- 如果加载的任何仪器处于不同的时区,则必须设置时区参数。
addBarsFromCSV(instrument, path, timezone=None, skipMalformedBars=False)
从 CSV 格式文件中加载给定仪器的条形图。该仪器将在条形图 feed 中注册。
| 参数: |
- instrument (string.) – 仪器标识符。
- path (string.) – CSV 文件的路径。
- timezone (一个 pytz 时区.) – 用于本地化条形图的时区。查看
pyalgotrade.marketsession。 - skipMalformedBars (boolean.) – 如果在解析条形图时跳过错误,则为 True。
| ## Quandl
class pyalgotrade.barfeed.quandlfeed.``Feed(frequency=86400, timezone=None, maxLen=None)
Bases: pyalgotrade.barfeed.csvfeed.GenericBarFeed
从 Quandl 下载的 CSV 文件加载 bars 的 pyalgotrade.barfeed.csvfeed.BarFeed。
| 参数: |
- frequency – bars 的频率。仅支持 pyalgotrade.bar.Frequency.DAY 或 pyalgotrade.bar.Frequency.WEEK。
- timezone(一个 pytz 时区。)– 用于本地化 bars 的默认时区。请查看
pyalgotrade.marketsession。 - maxLen(整数。)–
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦有限长度满了,当添加新项时,将从另一端丢弃相应数量的项。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
注意
在处理多个仪器时:
- 如果加载的所有仪器都位于同一时区,则可能不需要指定时区参数。
- 如果加载的任何仪器位于不同的时区,则必须设置时区参数。 ## Ninja Trader
类 pyalgotrade.barfeed.ninjatraderfeed. Feed(frequency,timezone=None,maxLen=None)
基类:pyalgotrade.barfeed.csvfeed.BarFeed
一个从 NinjaTrader 导出的 CSV 文件加载 bars 的 pyalgotrade.barfeed.csvfeed.BarFeed。
| 参数: |
- frequency – bars 的频率。仅支持 pyalgotrade.bar.Frequency.MINUTE 或 pyalgotrade.bar.Frequency.DAY。
- timezone(一个 pytz 时区。)– 用于本地化 bars 的默认时区。请查看
pyalgotrade.marketsession。 - maxLen(整数。)–
pyalgotrade.dataseries.bards.BarDataSeries将保存的值的最大数量。一旦有限长度满了,当添加新项时,将从另一端丢弃相应数量的项。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
addBarsFromCSV(instrument,path,timezone=None)
从 CSV 格式文件加载给定仪器的 bars。该仪器将在 bar feed 中注册。
| 参数: |
- instrument(字符串。)– 仪器标识符。
- path(字符串。)– 文件的路径。
- timezone(一个 pytz 时区。)– 用于本地化 bars 的时区。请查看
pyalgotrade.marketsession。
|
目录
- barfeed – Bar providers
- CSV
- Yahoo! Finance
- 谷歌财经
- Quandl
- 忍者交易员
技术 - 技术指标
原文:
gbeced.github.io/pyalgotrade/docs/v0.20/html/technical.html
class pyalgotrade.technical.``EventWindow(windowSize, dtype=, skipNone=True)
基类:object
一个 EventWindow 类负责在一系列值的移动窗口上进行计算。
| 参数: |
- windowSize(int.) - 窗口的大小。必须大于 0。
- dtype(数据类型.) - 数组的期望数据类型。
- skipNone(布尔.) - 如果 None 值不应包含在窗口中,则为 True。
|
注意
这是一个基类,不应直接使用。
getValue()
重写以使用窗口中的值计算值。
getValues()
返回一个具有窗口中值的 numpy.array。
getWindowSize()
返回窗口大小。
class pyalgotrade.technical.``EventBasedFilter(dataSeries, eventWindow, maxLen=None)
基类:pyalgotrade.dataseries.SequenceDataSeries
EventBasedFilter 类负责捕获 pyalgotrade.dataseries.DataSeries 中的新值,并使用 EventWindow 计算新值。
| 参数: |
- dataSeries(
pyalgotrade.dataseries.DataSeries.) - 正在过滤的 DataSeries 实例。 - eventWindow(
EventWindow.) - 用于计算新值的 EventWindow 实例。 - maxLen(int.) - 要保持的最大值数。一旦有限长度已满,添加新项时,将从对端丢弃相应数量的项。如果为 None,则使用 dataseries.DEFAULT_MAX_LEN。
|
示例
以下示例显示如何组合 EventWindow 和 EventBasedFilter 来构建自定义过滤器:
from __future__ import print_function from pyalgotrade import dataseries from pyalgotrade import technical # An EventWindow is responsible for making calculations using a window of values. class Accumulator(technical.EventWindow): def getValue(self): ret = None if self.windowFull(): ret = self.getValues().sum() return ret # Build a sequence based DataSeries. seqDS = dataseries.SequenceDataSeries() # Wrap it with a filter that will get fed as new values get added to the underlying DataSeries. accum = technical.EventBasedFilter(seqDS, Accumulator(3)) # Put in some values. for i in range(0, 50): seqDS.append(i) # Get some values. print(accum[0]) # Not enough values yet. print(accum[1]) # Not enough values yet. print(accum[2]) # Ok, now we should have at least 3 values. print(accum[3]) # Get the last value, which should be equal to 49 + 48 + 47. print(accum[-1])
PyAlgoTrade 0.20 中文文档(一)(5)https://developer.aliyun.com/article/1524144