也就是找到 macd 出现金叉的位置
![]() | 1 yech1990 2020-09-18 14:21:50 +08:00 via Android ![]() 大概这样 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 ![]() 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 ![]() 不是很清楚“但是 60 分钟以上的失败了”是什么意思。如果 resample 函数不行,你可以试试用 pd.cut 函数 |