BackTrader 中文文档(二十九)(4)

简介: BackTrader 中文文档(二十九)

BackTrader 中文文档(二十九)(3)https://developer.aliyun.com/article/1505507

随机指标(通用)

原文:www.backtrader.com/recipes/indicators/stochastic/stochastic/

backtrader已经包含了一个Stochastic指标(包括一种显示三条计算线而不仅仅是通常的两条%k%d线的变体)

但这种指标假设用于计算的数据源具有highlowclose组件。这是因为原始定义使用了这些组件。

如果想要使用不同的组件,一个首要的方法可能是创建一个数据源,将不同的组件存储在数据源的highlowclose行中。

但一个更直接的方法是拥有一个通用Stochastic指标,它接受三(3)个数据组件,并将它们用作如果它们是highlowclose组件。

下面的代码执行此操作,并通过允许自定义第二次平滑的移动平均值添加了一个不错的功能。

class Stochastic_Generic(bt.Indicator):
  '''
 This generic indicator doesn't assume the data feed has the components
 ``high``, ``low`` and ``close``. It needs three data sources passed to it,
 which whill considered in that order. (following the OHLC standard naming)
 '''
    lines = ('k', 'd', 'dslow',)
    params = dict(
        pk=14,
        pd=3,
        pdslow=3,
        movav=bt.ind.SMA,
        slowav=None,
    )
    def __init__(self):
        # Get highest from period k from 1st data
        highest = bt.ind.Highest(self.data0, period=self.p.pk)
        # Get lowest from period k from 2nd data
        lowest = bt.ind.Lowest(self.data1, period=self.p.pk)
        # Apply the formula to get raw K
        kraw = 100.0 * (self.data2 - lowest) / (highest - lowest)
        # The standard k in the indicator is a smoothed versin of K
        self.l.k = k = self.p.movav(kraw, period=self.p.pd)
        # Smooth k => d
        slowav = self.p.slowav or self.p.movav  # chose slowav
        self.l.d = slowav(k, period=self.p.pdslow)

当然,需要验证当给定相同的输入集时,该指标是否确实产生与标准指标相同的结果。下面的图表是使用这组指令创建的。

# Generate 3 data feeds
        d0 = bt.ind.EMA(self.data.high, period=14)
        d1 = bt.ind.EMA(self.data.low, period=14)
        d2 = bt.ind.EMA(self.data.close, period=14)
        Stochastic_Generic(d0, d1, d2)  # customized stochastic
        # These two have generate the same results
        Stochastic_Generic(self.data.high, self.data.low, self.data.close)
        bt.ind.Stochastic(self.data)

这里是指标如何工作的视图


绝对强度柱

原文:www.backtrader.com/recipes/indicators/stochrsi/stochrsi/

StockchartsInvestopedia 关于此指标有文献。

公式如下:

  • StochRSI = (RSI - min(RSI, period)) / (max(RSI, period) - min(RSI, period))

理论上,用于计算RSI的周期与随后用于查找RSI的最小值和最大值的周期相同。这意味着如果选择的周期是14(事实上的标准)用于RSI,则指标的总回溯期将为28

注意

实际回溯期将稍长,因为 14RSI 的有效回溯期为 15,因为需要比较前两个周期的收盘价格来启动计算

在任何情况下,backtrader 会自动计算所有必需的回溯期和预热期。

考虑到以下是 backtrader 中的内置指标:

  • RSI
  • Lowest(又称MaxN
  • Highest(又称MinN

根据上述公式开发StochRSI是直接的。

class StochRSI(bt.Indicator):
    lines = ('stochrsi',)
    params = dict(
        period=14,  # to apply to RSI
        pperiod=None,  # if passed apply to HighestN/LowestN, else "period"
    )
    def __init__(self):
        rsi = bt.ind.RSI(self.data, period=self.p.period)
        pperiod = self.p.pperiod or self.p.period
        maxrsi = bt.ind.Highest(rsi, period=pperiod)
        minrsi = bt.ind.Lowest(rsi, period=pperiod)
        self.l.stochrsi = (rsi - minrsi) / (maxrsi - minrsi)

这里是指标工作原理的一瞥

商店/经纪人/数据源

介绍

原文:www.backtrader.com/recipes/storesbrokersdata/intro/

这一部分托管了一系列第三方存储(或单独的经纪人 / 数据源)的实现,它们不是backtrader核心的一部分。

bt-ccxt-store

原文:www.backtrader.com/recipes/storesbrokersdata/bt-ccxt-store/bt-ccxt-store/

bt-ccxt-store

作者 Dave Vallance

仓库链接:

Metaquotes MQL 5 - API

原文:www.backtrader.com/recipes/storesbrokersdata/mql5/mql5/

首次由用户 Nikolai 在这里宣布。

仓库链接:

NorgateData

原文:www.backtrader.com/recipes/storesbrokersdata/norgatedata/norgatedata/

包的链接:

Oanda v20

原文:www.backtrader.com/recipes/storesbrokersdata/oandav20/oandav20/

由用户 ftomassetti

仓库链接:

TradingView

原文:www.backtrader.com/recipes/storesbrokersdata/tradingview/tradingview/

用户为 Dave-Vallance

仓库链接:

相关文章
|
5天前
BackTrader 中文文档(二十九)(2)
BackTrader 中文文档(二十九)
11 0
|
5天前
BackTrader 中文文档(二十九)(3)
BackTrader 中文文档(二十九)
10 0
|
5天前
|
算法 索引
BackTrader 中文文档(二十九)(1)
BackTrader 中文文档(二十九)
11 0
|
5天前
|
存储 数据库连接 数据库
BackTrader 中文文档(二十七)(4)
BackTrader 中文文档(二十七)
10 0
|
5天前
|
算法 索引 Python
BackTrader 中文文档(二十七)(2)
BackTrader 中文文档(二十七)
15 0
|
5天前
BackTrader 中文文档(二十七)(1)
BackTrader 中文文档(二十七)
10 0
|
5天前
|
索引
BackTrader 中文文档(二十七)(3)
BackTrader 中文文档(二十七)
10 0
|
5天前
|
存储 算法 C++
BackTrader 中文文档(二十八)(3)
BackTrader 中文文档(二十八)
11 0
|
5天前
BackTrader 中文文档(二十八)(2)
BackTrader 中文文档(二十八)
11 0
|
5天前
|
测试技术 C语言 Python
BackTrader 中文文档(二十八)(4)
BackTrader 中文文档(二十八)
14 0