我正在尝试动态调整pandas数据帧的回顾期,以便对不同长度的库存数据运行回归。作为一个简单的例子,需要MA交叉。
date Prices Diff signal
20150101 8.5 -1.5 FALSE
20150101 11.5 0.3 TRUE
20150102 14.5 4.5 FALSE
20150103 16.67 3.66 FALSE
20150104 18 2 FALSE
20150105 18.5 0.5 FALSE
20150106 18.17 -2.17 TRUE
20150107 17 -3 FALSE
Diff是2个移动平均线之间的差异,信号用真/假识别交叉。数字是任意的,只是例子。每个信号之间可能有10,50,100等行。
现在我想对信号之间存在的任何长度的价格进行回归,所以在第6行我想要价格[-4:],第8行我想要价格[-1:]。
有人可以帮我解决这个问题吗?在每一行向后循环,直到找到最新信号似乎效率低下。我是否应该在信号出现时简单地为变量分配索引值,并使用该变量来定义回顾期?我对Python仍然比较陌生,不知道如何解决这个问题。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
我实际上已经解决了这个问题,但解决方案并不是很优雅。如果有人有一个优雅的解决方案,请告诉我。
if diff[-1] > 0 and diff[-2] < 0:
signal = True
over_count += 1
under_count = 0
elif diff[-1] < 0 and diff[-2] > 0:
signal = False
under_count += 1
over_count = 0
elif signal:
over_count += 1
elif not signal:
under_count += 1