Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在熊猫中使用带移位功能的最小/最大值?_Python_Pandas_Forex - Fatal编程技术网

Python 如何在熊猫中使用带移位功能的最小/最大值?

Python 如何在熊猫中使用带移位功能的最小/最大值?,python,pandas,forex,Python,Pandas,Forex,我有timeseries数据(欧元/美元)。 我想用以下条件创建新列: (在我的代码中更容易阅读以理解条件。) 如果至少有3个先前高价低于或等于当前价格,则为“买入信号”;如果最多有3个先前低价高于或等于当前价格,则为“卖出信号” 这是我的桌子 DATE OPEN HIGH LOW CLOSE 0 1990.09.28 1.25260 1.25430 1.24680 1.24890 1 1990.10.01 1.25170 1.26500 1.25170 1.254

我有timeseries数据(欧元/美元)。 我想用以下条件创建新列:

(在我的代码中更容易阅读以理解条件。) 如果至少有3个先前高价低于或等于当前价格,则为“买入信号”;如果最多有3个先前低价高于或等于当前价格,则为“卖出信号”

这是我的桌子

DATE    OPEN    HIGH    LOW CLOSE
0   1990.09.28  1.25260 1.25430 1.24680 1.24890
1   1990.10.01  1.25170 1.26500 1.25170 1.25480
2   1990.10.02  1.25520 1.26390 1.25240 1.26330
3   1990.10.03  1.26350 1.27000 1.26030 1.26840
4   1990.10.04  1.26810 1.27750 1.26710 1.27590
这是我的代码(我尝试创建两个函数,但它不起作用)

def目标标签(df):
如果df['HIGH']>=[df['HIGH'].shift(1),df['HIGH'].shift(2),df['HIGH'].shift(3)].min(轴=1):
返回“买入信号”
如果df['LOW']>=[df['LOW'].shift(1),df['LOW'].shift(2),df['LOW'].shift(3)].min(轴=1):
返回“卖出信号”
其他:
返回“无信号”
def目标_标签(df):
如果df['HIGH']>=df['HIGH1'、'HIGH2'、'HIGH3'].min(轴=1):
返回“买入信号”
如果df['LOW']您可以使用
rolling(3).min()
获取前3行的最小值。这同样适用于其他函数,如
max
mean
,等等。如下所示:

df['signal'] = np.where(
    df['HIGH'] >= df.shift(1).rolling(3)['HIGH'].min(), 'BUY_SIGNAL',
    np.where(
        df['LOW'] >= df.shift(1).rolling(3)['LOW'].min(), 'SELL_SIGNAL',
        'NO_SIGNAL'
    )
)
df['signal'] = np.where(
    df['HIGH'] >= df.shift(1).rolling(3)['HIGH'].min(), 'BUY_SIGNAL',
    np.where(
        df['LOW'] >= df.shift(1).rolling(3)['LOW'].min(), 'SELL_SIGNAL',
        'NO_SIGNAL'
    )
)