2024-09-28 01:25:13 发布
网友
我希望能够创建包含趋势线数据的列,从我的其他列的两个点开始,例如5天后的收盘价到收盘价
我想让趋势线向前和向后看,延伸超过绘制它的2个点
现在我不想在MPLFinancy或matplotlib中绘制它们,我只想要趋势线数字,这样我就可以使用它们了
非常感谢您的帮助:)
基本思想是确定直线公式中的常数,并使用公式向前和/或向后延伸趋势线。直线的公式为:
y = mx + b
其中m是斜率,而b是y截距(当x == 0时y的值)
m
b
x == 0
y
该公式假设x和y都是连续的
给定两个点(两个x,y对),x1,y1和x2,y2,首先计算斜率:
x1
y1
x2
y2
slope = (y2-y1) / (x2-x1)
然后使用两点中的任一点计算y截距:
y-intercept = y1 - slope*x1
现在可以使用y = mx + b计算y的所有相关值的直线x
x
第一个问题是在时间序列中y通常是float而x通常是datetime对象的某种味道。这意味着斜率(y2-y1)/(x2-x1)将是一个float除以一个DatetimeDelta,这是大多数编程语言不允许的(除非您可以重写除法运算符;如果是,使用什么算法?)
float
datetime
(y2-y1)/(x2-x1)
DatetimeDelta
解决此问题的方法是首先将日期时间转换为与时间成比例且连续的float表示形式(例如,UNIX时间或matplotlib日期时间)。现在可以计算坡度和y轴截距
第二个问题发生在时间序列与时间不连续的情况下。如果您选择忽略非交易日,这在交易数据中很常见。忽略非交易日会导致x轴随时间不连续。这意味着坡度计算(y2-y1)/(x2-x1)将不正确
对于这个不连续性问题,有两种解决方案:
嗯
基本思想是确定直线公式中的常数,并使用公式向前和/或向后延伸趋势线。直线的公式为:
其中
m
是斜率,而b
是y截距(当x == 0
时y
的值)该公式假设x和y都是连续的
给定两个点(两个x,y对),
x1
,y1
和x2
,y2
,首先计算斜率:然后使用两点中的任一点计算y截距:
现在可以使用
y = mx + b
计算y
的所有相关值的直线x
对于时间序列数据,上述数据存在两个问题:
第一个问题是在时间序列中
y
通常是float
而x
通常是datetime
对象的某种味道。这意味着斜率(y2-y1)/(x2-x1)
将是一个float
除以一个DatetimeDelta
,这是大多数编程语言不允许的(除非您可以重写除法运算符;如果是,使用什么算法?)解决此问题的方法是首先将日期时间转换为与时间成比例且连续的
float
表示形式(例如,UNIX时间或matplotlib日期时间)。现在可以计算坡度和y轴截距第二个问题发生在时间序列与时间不连续的情况下。如果您选择忽略非交易日,这在交易数据中很常见。忽略非交易日会导致x轴随时间不连续。这意味着坡度计算
(y2-y1)/(x2-x1)
将不正确对于这个不连续性问题,有两种解决方案:
A more detailed discussion, along with some code examples and plots, can be found by clicking here.
嗯
相关问题 更多 >
编程相关推荐