我算斜率的时候,明明ema在图表上看起来很平滑,但是用坐标轴算因为x太小导致算出来值很大。 各位大佬是怎么解决这个问题的。 def 角度(v1):
bx = 3502 -3516
by = 4
angle1 = math.atan2(bx, by)
print(angle1)
angle1 = int(angle1 * 180/math.pi)
print(angle1)
就这样14点的差距,斜率和角度非常大 -1.2924966677897853 -74
陈木 加个微,一起研究一下
墨色 def 角度(v1,取长): r = _C(exchange.GetRecords) 数据长度 = len(v1) 数据长度 = int(数据长度-1) 取长 = int(取长) dx1 = v1[数据长度] dy1 = 数据长度 + 1 dx2 = v1[数据长度-取长] while dx2 is None: 取长=取长 - 1 dx2 = v1[数据长度-取长] dy2 = 数据长度 - 取长 bx = dx1 -dx2 #by = dy1 -dy2 by = zhou*2 angle1 = math.atan2(bx, by) angle1 = int(angle1 * 90/math.pi) return angle1
墨色 我目前将dy这个y轴数拉大,看起来稍微正常一点了
墨色 /upload/asset/21c62a2668df9cf81eb98.png
墨色 计算角度的取值范围我改成90,就对了。原先想着第二和第四象限加起来是180.结果是分正负的话只要90就行了
发明者量化-小小梦 时间序列上的数据计算斜率,可不是简单的三角函数图形。因为X轴Y轴表示的根本是两种定义的数值。这样用三角函数算出的斜率感觉没有什么意义。 参考talib的线性回归斜率算法,LINEARREG_SLOPE(Records[Close],Time Period = 14) = Array(outReal)
墨色 所以我才在问,这种角度要怎么算嘛。就是均线类似肉眼看到的那种倾斜度。目的是判断表现这根线是向上还是向下,然后根据幅度来做判断
发明者量化-小小梦 😂,本身就不行哇,一个是K线BAR数量,一个是价格数据,都不是一个维度的,算出的斜率有什么意义。。。
墨色 是指3502 3516 和之间的k线数,我现在在画图表试,确实还感觉不太行。并不能很好的表现倾斜度
发明者量化-小小梦 这个 by = 4 具体是什么?4根BAR?还是?感觉这样算不太对。
墨色 大佬用线性回归SLOPE算出来的斜率,和我想表达的数据不太一样,我想表达均线类似肉眼看到的那种倾斜度。
墨色 好的,谢谢。我用这个函数试试看