【问题标题】:how to detect when a price higher than previous high如何检测价格何时高于先前的高点
【发布时间】:2020-12-15 10:13:25
【问题描述】:

我试图找到价格值何时超过高点,我可以找到高点,但是当我将它与当前价格进行比较时,它给了我全部 1
我的代码:

peak = df[(df[‘price’] > df[‘price’].shift(-1)) & (df[‘price’] > df[‘price’].shift(1))]
df[‘peak’] = peak
df[‘breakout’] = df[‘price’] > df[‘peak’]
print(df)

出来:

price peak breakout
1 2 NaN 1
2 2 NaN 1
3 4 NaN 1
4 5 NaN 1
5 6 6.0 1
6 5 NaN 1
7 4 NaN 1
8 3 NaN 1
9 12 12.0 1
10 10 NaN 1
11 50 NaN 1
12 100 NaN 1
13 110 110 1
14 84 NaN 1

预期:

price peak high breakout
1 2 NaN 0 0
2 2 NaN 0 0
3 4 NaN 0 0
4 5 NaN 0 0
5 6 6.0 1 1
6 5 NaN 0 0
7 4 NaN 0 0
8 3 NaN 0 0
9 12 12.0 1 1
10 10 NaN 0 0
11 50 NaN 0 1
12 100 NaN 0 1
13 110 110 1 1
14 84 NaN 0 0

使用填充:

 price   peak   look  breakout
0       2    NaN    NaN     False
1       4    NaN    NaN     False
2       5    NaN    NaN     False
3       6    6.0    6.0     False
4       5    NaN    6.0     False
5       4    NaN    6.0     False
6       3    NaN    6.0     False
7      12   12.0   12.0     False  ----> this should be True because it it higher than 6  and it also the high for shift(-1) and shift(1)
8      10    NaN   12.0     False
9      50    NaN   12.0      True
10    100  100.0  100.0     False
11     40    NaN  100.0     False
12     45   45.0   45.0     False
13     30    NaN   45.0     False
14    200    NaN   45.0      True

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    试试pandas.DataFrame.fillna:

    df["breakout"] =  df["price"] >= df["peak"].fillna(method = "ffill")
    

    如果你希望它带有 1 和 0,请添加以下行:

    df["breakout"] = df["breakout"].replace([True, False],[1,0])
    

    注意df["peak"].fillna(method = "ffill") 返回:

    0       NaN
    1       NaN
    2       NaN
    3       NaN
    4       6.0
    5       6.0
    6       6.0
    7       6.0
    8      12.0
    9      12.0
    10     12.0
    11     12.0
    12    110.0
    13    110.0
    Name: peak, dtype: float64
    

    这样您就可以轻松地将其与价格列进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 2022-11-16
      相关资源
      最近更新 更多