【问题标题】:Python Pandas Dataframe: How to get Trend Lines data from existing dataframe columns?Python Pandas Dataframe:如何从现有数据框列中获取趋势线数据?
【发布时间】:2021-04-26 21:08:32
【问题描述】:

我希望能够从我的其他列的两个点创建包含趋势线数据的列,例如收盘价到 5 天后的收盘价。

我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。

现在我不介意在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线编号以便我可以使用它们。

非常感谢任何帮助:)

【问题讨论】:

    标签: python pandas dataframe algorithmic-trading trading


    【解决方案1】:

    基本思想是确定直线公式中的常数,并使用该公式向前和/或向后扩展趋势线。直线的公式为:

    y = mx + b
    

    其中m斜率by 截距y 的值当x == 0 时)。

    这个公式假设 x 和 y 都是连续的。


    给定两个点(两个 x,y 对)x1,y1x2,y2,首先计算斜率:

    slope = (y2-y1) / (x2-x1)
    

    然后使用两个点中的任何一个来计算 y 截距:

    y-intercept = y1 - slope*x1
    

    现在您可以使用y = mx + bx 的所有相关值计算直线y


    对于时间序列数据,上面有两个问题:


    第一个问题是在时间序列中 y 通常是 floatx 通常是 datetime 对象的某种风格。这意味着斜率(y2-y1)/(x2-x1) 将是float 除以DatetimeDelta,这是大多数编程语言不允许的(除非您可以覆盖除法运算符;但如果可以,使用什么算法?)。

    该问题的解决方案首先将日期时间转换为与时间成比例且连续的float 表示(例如,UNIX 时间,或 matplotlib 日期时间)。现在您可以计算斜率和 y 截距了。


    第二个问题如果你的时间序列是不连续的时间。这在交易数据中很常见如果您选择忽略非交易日。忽略非交易日会导致 x 轴与时间不连续。这意味着斜率计算(y2-y1)/(x2-x1) 将不正确。

    这个不连续性问题有两种解决方案

    1. 不用担心,因为在短时间内,即使有一些不连续,斜率计算可能 是一个足够接近的近似值.
    2. 如果您的数据框架中完全缺少非交易日,请认识到,虽然数据在时间上可能是不连续的,它是连续的 你的数据框的行号。因此,可以使用分母中的数据帧行数来计算斜率。

    A more detailed discussion, along with some code examples and plots, can be found by clicking here.

    【讨论】:

    • 谢谢!一如既往地提供信息和帮助,就像在 github 上的 mplfinance :)
    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多