也就是找到 macd 出现金叉的位置
1
yech1990 2020-09-18 14:21:50 +08:00 via Android 4
大概这样
df.rolling(window=2).agg(lambda x : x.prod()<0) |
2
yellowtail OP 没有看懂,但是确实实现了...谢谢大哥!
|
3
yellowtail OP @yech1990 没有看懂,但是确实实现了...谢谢大哥!
|
5
imn1 2020-09-18 15:55:59 +08:00
凡是有序的列(主要指 index 有序),值有前后相关的,用 rolling/window 函数就对了
|
6
yellowtail OP @imn1 反正这一套 rolling 后接 agg 加 lambda prod 的操作看得我高山仰止 钦佩之情滔滔不绝...
|
7
clf 2020-09-18 16:20:44 +08:00
对 1 楼大佬写的语句的简单解析:
df.rolling(window=2).agg(lambda x : x.prod()<0) df.rolling(window=2) :window 是计算统计量的观测值的数量,这里是当前量和前一个数值(上一行)。 x.prod() 返回乘积,相当于当前行乘以上一行,小于 0 表示符号不一样。 .agg(lambda x : x.prod()<0) 对传入的数值按 lambda 表达式进行计算。 |
8
imn1 2020-09-18 16:29:30 +08:00
@yellowtail #6
我是觉得奇怪,macd 就是证券计算,那基本上都离不开移动函数,应该都会呀,不然你是怎么算移动平均的? |
9
yellowtail OP @imn1 网上看到的都是 rolling 加 sum 和 mean... 我有样学样抄的 知其然不知其所以然的差距啊
|
10
kifile 2020-09-18 17:19:15 +08:00 1
x[(x*x.shift(1)) < 0]
|
11
yellowtail OP @yech1990 再追问个问题,用 resample 处理 k 线合并(比如一分钟数据的 k 线,按 5 分周期取样,得到 5 分钟 k 线),但是 60 分钟以上的失败了,可能是因为中午休市时间的干扰,想问一下:有没有类似 rolling 的函数可以一段一段切分 df 的,比如窗口是 5,第一段就是 0-4,第二段是 5-9 这样的 谢谢!
|
12
yech1990 2020-09-20 02:10:53 +08:00 via Android 1
不是很清楚“但是 60 分钟以上的失败了”是什么意思。如果 resample 函数不行,你可以试试用 pd.cut 函数
|