我正在使用Pyalgotrade(通常与ta-lib指标结合使用),但我错过了在数据系列中找到局部最大值和最小值的功能。
我知道最小和最大功能,但这不是我想要的。 E. g。 MIN(低,计数= 5)会给我5个柱中的最低值,但这并不会超出5个值。我正在寻找一个函数,在一定时期内返回“本地低”的值,i。即那天之前和之后两天的价值都低了。
实施例
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
...但我对这个解决方案不是很满意,因为我觉得向后解析这个系列并不是很有效。我假设内置的内置运行可能会更快。
亲切的问候,
啤酒
答案 0 :(得分:0)
我喜欢在这里帮助你感觉我们分享兴趣(algotrading),虽然我坐在node.js并且我不熟悉python,虽然我有一些经验...
...无论如何,解决方案非常简单,只需切片即可 ......感觉它很容易,我可能会误解这个问题。如果是这样,请发表评论,我看看是否可以更新我的答案以帮助您。
修改的
MIN / MAX采用一些参数:
如果这些是暴露给你的话......但听起来这就是你应该寻找解决你想做的事情的地方..
答案 1 :(得分:0)
PyAlgoTrade提供了一种可以帮助您找到称为bar_ds_close_to_numpy
或更普遍的value_ds_to_numpy
的ta-lib的方法,其中count是您要回溯的柱线数。将您的数据系列转换为numpy数组,只需使用min
和max
函数
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)