
也就是找到 macd 出现金叉的位置
1 yech1990 2020 年 9 月 18 日 via Android 大概这样 df.rolling(window=2).agg(lambda x : x.prod()<0) |
2 yellowtail OP 没有看懂,但是确实实现了...谢谢大哥! |
3 yellowtail OP @yech1990 没有看懂,但是确实实现了...谢谢大哥! |
5 imn1 2020 年 9 月 18 日 凡是有序的列(主要指 index 有序),值有前后相关的,用 rolling/window 函数就对了 |
6 yellowtail OP @imn1 反正这一套 rolling 后接 agg 加 lambda prod 的操作看得我高山仰止 钦佩之情滔滔不绝... |
对 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 年 9 月 18 日 @yellowtail #6 我是觉得奇怪,macd 就是证券计算,那基本上都离不开移动函数,应该都会呀,不然你是怎么算移动平均的? |
9 yellowtail OP @imn1 网上看到的都是 rolling 加 sum 和 mean... 我有样学样抄的 知其然不知其所以然的差距啊 |
10 kifile 2020 年 9 月 18 日 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 年 9 月 20 日 via Android 不是很清楚“但是 60 分钟以上的失败了”是什么意思。如果 resample 函数不行,你可以试试用 pd.cut 函数 |