TEST 箱体区间

def z(df):
    high_jugg=(
            (df['high']>df['high'].shift(1))&(df['high']>df['high'].shift(2))&(df['high']>df['high'].shift(3))&(df['high']>df['high'].shift(4))&
            (df['high']>df['high'].shift(-1))&(df['high']>df['high'].shift(-2))&(df['high']>df['high'].shift(-3))&(df['high']>df['high'].shift(-4))
        )
    low_jugg=(
        (df['low']<df['low'].shift(1))&(df['low']<df['low'].shift(2))&(df['low']<df['low'].shift(3))&(df['low']<df['low'].shift(4))&
        (df['low']<df['low'].shift(-1))&(df['low']<df['low'].shift(-2))&(df['low']<df['low'].shift(-3))&(df['low']<df['low'].shift(-4))
    )
    hp=df[high_jugg]
    lp=df[low_jugg]
    if len(hp)<2 or len(lp)<2:
        return False
    point_max=max(len(hp),len(lp))
    point_min=min(len(hp),len(lp))
    for i in range(point_min-1):
        h_index=hp.index[i]
        l_index=lp.index[i]

        if abs(hp.iloc[i+1]['high']-hp.iloc[i]['high'])/hp.iloc[i]['high']>0.03:
            return False
        if abs(lp.iloc[i+1]['low']-lp.iloc[i]['low'])/lp.iloc[i]['low']>0.03:
            return False

        if (hp.iloc[i]['high']-lp.iloc[i]['low'])/lp.iloc[i]['low']>0.15 or (hp.iloc[i]['high']-lp.iloc[i]['low'])/lp.iloc[i]['low']<0.08:
            return False
        
        if 1.8*df['vol_ma20'].shift(1).loc[h_index]>hp.iloc[i]['volume']:
            return False
        if 1.8*df['vol_ma20'].shift(1).loc[l_index]>lp.iloc[i]['volume']:
            return False
    return [hp,lp]
此条目发表在None分类目录。将固定链接加入收藏夹。

发表回复