【问题标题】:Python Pyalgotrade find most recent peak (min or max) in DataseriesPython Pyalgotrade 在数据系列中找到最近的峰值(最小值或最大值)
【发布时间】:2017-10-06 22:03:22
【问题描述】:

我正在使用 Pyalgotrade(通常与 ta-lib 指标结合使用),但我缺少一个在数据系列中查找局部最大值和最小值的函数。

我知道 min 和 max 函数,但这不是我想要的。 例如。 MIN(low, count=5) 会给我 5 个柱中的最低值,但这看起来并不超出 5 个值。我正在寻找一个在一定时期内返回“局部低点”值的函数,即。 e.该值低于该天前后两天。

例子

Series [2,3,2,1,3,4,5,6,6]

MIN(5) -> returns 3, but the lowest value is on the left border of the observed window
          and the day before, the value was even lower!

whatiamlookingfor() -> should return 1, 
                       because it is the last local low over a +/-2 days period

我希望我的意思很清楚。是否有任何我可能忽略的用于此目的的功能。

编辑

为了在数据系列中找到一个低点,我想出了这样的东西......

def min_peak(series, interval):
    reference = -1
    left = reference - interval
    while -reference < len(series):
        if min(series[left:]) == min(series[reference:]):
            return min(series[left:])
        reference -= 1
        left -= 1

...但是我对这个解决方案不是很满意,因为我认为向后解析系列不是很有效。我认为在本机运行的内置功能可能会更快。

亲切的问候,

麦芽酒

【问题讨论】:

    标签: python ta-lib pyalgotrade


    【解决方案1】:

    我想在这里帮助你感觉我们有共同的兴趣(algotrading),虽然我坐在 node.js 中并且我不熟悉 python,但我有一些经验......

    ...无论如何,解决方案很简单,只需对数组进行切片即可。
    ...感觉这很容易,我可能误解了这个问题。如果是这样,请发表评论,我看看我是否可以更新我的答案来帮助你。


    编辑


    MIN/MAX 需要一些参数:

    • inReal :数据数组
    • startIdx :从哪里开始查找
    • endIdx :停止查找的位置
    • optInTimePeriod :不确定它在这种情况下的作用:/

    如果这些都暴露给你,我不知道......?但听起来这是你应该解决你想做的事情的地方..

    【讨论】:

    • 当然解决方案很简单,但是使用优化的包或像 ta-lib 这样的外部库通常在执行过程中会快一个数量级。我的希望是,有些东西我可以重复使用
    【解决方案2】:

    PyAlgoTrade 有一种方法可以帮助您处理 ta-lib,称为 bar_ds_close_to_numpy 或更一般地称为 value_ds_to_numpy,其中 count 是您正在回顾的柱数。将您的 Dataseries 转换为 numpy 数组,只需使用 minmax 函数

    from pyalgotrade.talibext.indicator import bar_ds_close_to_numpy
    
    prices_close = bar_ds_close_to_numpy(resampled_bars, count)
    highest_price = np.max(prices_close)
    lowest_price = np.min(prices_close)
    

    【讨论】:

      【解决方案3】:

      我正在寻找类似的东西,但一个简单的解决方案是按数字升序排列数据数组。

      然后将数组中的第一项作为MIN 并将数组中的最后一项作为 MAX 值。

      我不确定这是否是最好的方法,但它似乎在逻辑上是正确的。

      我面临的问题是如何知道每次需要测量峰值和楼层以匹配图表。然而,这可能是一种准确的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-15
        • 2023-03-08
        • 2013-06-01
        • 2012-06-21
        • 2014-05-15
        相关资源
        最近更新 更多