按代码分组后查找股票价格的枢轴点。枢轴点前后 10 个值都很高
Finding Pivot Points for stock price, after grouping by symbol. Pivot Point is high for 10 values before and after point
Date Symbol Close Volume
1259 2021-10-29 AA 45.950 6350815.000
1260 2021-10-28 AA 46.450 10265029.000
1261 2021-10-27 AA 45.790 12864700.000
1262 2021-10-26 AA 49.442 6153100.000
1263 2021-10-25 AA 51.058 11070100.000
1264 2021-10-22 AA 49.143 7453300.000
1265 2021-10-21 AA 49.881 9066900.000
1266 2021-10-20 AA 52.396 7330400.000
1267 2021-10-19 AA 53.563 10860800.000
1268 2021-10-18 AA 57.115 9883800.000
也在寻找类似的结果...
Date Symbol Close Volume High Points Pivot Point
1379 2021-05-11 AA 41.230 9042100.000 41.230 True
1568 2020-08-10 AA 15.536 8087800.000 15.536 True
1760 2019-11-04 AA 22.860 3741000.000 22.860 True
1934 2019-02-27 AA 30.912 2880100.000 30.912 True
2149 2018-04-19 AA 60.099 11779200.00 60.099 True
2213 2018-01-17 AA 56.866 8189700.000 56.866 True
2445 2017-02-14 AA 38.476 3818600.000 38.476 True
5406 2021-06-02 AAL 25.820 58094598.00 25.820 True
5461 2021-03-15 AAL 25.170 93746800.00 25.170 True
5654 2020-06-08 AAL 20.310 175418900.0 20.310 True
5734 2020-02-12 AAL 30.470 9315400.000 30.470 True
5807 2019-10-28 AAL 31.144 10298500.00 31.144 True
5874 2019-07-24 AAL 34.231 7315300.000 34.231 True
6083 2018-09-21 AAL 42.788 10743100.00 42.788 True
6257 2018-01-12 AAL 56.989 7505800.000 56.989 True
6322 2017-10-10 AAL 51.574 9387100.000 51.574 True
6383 2017-07-14 AAL 52.624 4537900.000 52.624 True
我是编程新手,一直在这方面苦苦挣扎。我正在尝试找到局部最大值点,该点必须高于前后 10 个收盘价。数据框上有大约 320 只股票,需要按代码分组。我已经尝试了几种不同的方法来解决这个问题,但一直无法找到可行的方法。任何见解将不胜感激。
#读入数据,vol_list 是一个现有的屏幕,用于减少不符合数量标准的库存数量
df_prices = pd.read_csv('/Users/kylemerrick/Desktop/Stock Screener/price_data.csv')
include_pivot_points = df_prices[df_prices['Symbol'].isin(vol_list)]
n=10
pivot_points = include_pivot_points.groupby('Symbol')['Close'].apply(lambda x : iloc[argrelextrema(x.values, np.greater_equal, axis=1, order=n)
我也曾尝试编写自己的函数来执行此操作,但无法弄清楚如何将当前值与前后的 10 个值进行比较
include_pivot_points.groupby('Symbol').iloc['Close'] + 10:['Close'] -10]
我最终能够用下面的代码解决,并且想分享,因为我没有收到回复。对于枢轴点或 (support/resistance 点) 存在许多其他解决方案,将每个价格点附加到列表或仅针对一个符号。我本来想保留包含多个符号的数据框。
先用apply,21再shift,这样两边都是偶数
include_pivot_points['High Points'] = include_pivot_points.groupby('Symbol').rolling(21)['Close'].max().shift(-11).reset_index(level = 'Symbol', drop = True)
如果最高点等于当前收盘价,那么我就知道这是枢轴点并为枢轴点添加了 true 或 false 列
include_pivot_points['Pivot Point'] = include_pivot_points['High Points'] == include_pivot_points['Close']
然后删除错误值以获得所有股票的所有过去枢轴点
pivot_points = include_pivot_points[include_pivot_points['Pivot Point'] == True]
Date Symbol Close Volume
1259 2021-10-29 AA 45.950 6350815.000
1260 2021-10-28 AA 46.450 10265029.000
1261 2021-10-27 AA 45.790 12864700.000
1262 2021-10-26 AA 49.442 6153100.000
1263 2021-10-25 AA 51.058 11070100.000
1264 2021-10-22 AA 49.143 7453300.000
1265 2021-10-21 AA 49.881 9066900.000
1266 2021-10-20 AA 52.396 7330400.000
1267 2021-10-19 AA 53.563 10860800.000
1268 2021-10-18 AA 57.115 9883800.000
也在寻找类似的结果...
Date Symbol Close Volume High Points Pivot Point
1379 2021-05-11 AA 41.230 9042100.000 41.230 True
1568 2020-08-10 AA 15.536 8087800.000 15.536 True
1760 2019-11-04 AA 22.860 3741000.000 22.860 True
1934 2019-02-27 AA 30.912 2880100.000 30.912 True
2149 2018-04-19 AA 60.099 11779200.00 60.099 True
2213 2018-01-17 AA 56.866 8189700.000 56.866 True
2445 2017-02-14 AA 38.476 3818600.000 38.476 True
5406 2021-06-02 AAL 25.820 58094598.00 25.820 True
5461 2021-03-15 AAL 25.170 93746800.00 25.170 True
5654 2020-06-08 AAL 20.310 175418900.0 20.310 True
5734 2020-02-12 AAL 30.470 9315400.000 30.470 True
5807 2019-10-28 AAL 31.144 10298500.00 31.144 True
5874 2019-07-24 AAL 34.231 7315300.000 34.231 True
6083 2018-09-21 AAL 42.788 10743100.00 42.788 True
6257 2018-01-12 AAL 56.989 7505800.000 56.989 True
6322 2017-10-10 AAL 51.574 9387100.000 51.574 True
6383 2017-07-14 AAL 52.624 4537900.000 52.624 True
我是编程新手,一直在这方面苦苦挣扎。我正在尝试找到局部最大值点,该点必须高于前后 10 个收盘价。数据框上有大约 320 只股票,需要按代码分组。我已经尝试了几种不同的方法来解决这个问题,但一直无法找到可行的方法。任何见解将不胜感激。
#读入数据,vol_list 是一个现有的屏幕,用于减少不符合数量标准的库存数量
df_prices = pd.read_csv('/Users/kylemerrick/Desktop/Stock Screener/price_data.csv')
include_pivot_points = df_prices[df_prices['Symbol'].isin(vol_list)]
n=10
pivot_points = include_pivot_points.groupby('Symbol')['Close'].apply(lambda x : iloc[argrelextrema(x.values, np.greater_equal, axis=1, order=n)
我也曾尝试编写自己的函数来执行此操作,但无法弄清楚如何将当前值与前后的 10 个值进行比较
include_pivot_points.groupby('Symbol').iloc['Close'] + 10:['Close'] -10]
我最终能够用下面的代码解决,并且想分享,因为我没有收到回复。对于枢轴点或 (support/resistance 点) 存在许多其他解决方案,将每个价格点附加到列表或仅针对一个符号。我本来想保留包含多个符号的数据框。
先用apply,21再shift,这样两边都是偶数
include_pivot_points['High Points'] = include_pivot_points.groupby('Symbol').rolling(21)['Close'].max().shift(-11).reset_index(level = 'Symbol', drop = True)
如果最高点等于当前收盘价,那么我就知道这是枢轴点并为枢轴点添加了 true 或 false 列
include_pivot_points['Pivot Point'] = include_pivot_points['High Points'] == include_pivot_points['Close']
然后删除错误值以获得所有股票的所有过去枢轴点
pivot_points = include_pivot_points[include_pivot_points['Pivot Point'] == True]