python函数,用于将股票市场收盘价标记为买入[已关闭]

python function for labelling stock market close prices as Buy [closed]

提问人:tlasdjf adfADF 提问时间:11/12/2023 最后编辑:quamranatlasdjf adfADF 更新时间:11/12/2023 访问量:29

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

8天前关闭。

我在股票市场交易中,我想在 ML 模型的“标签”列中标记点。我的模型将预测一个点是否为买入。现在,我想要一个将数据标记为购买或不购买的函数。技术很简单,如果我们在时间指数 X 中,并且在接下来的 96 时间指数中收盘价上涨了 5% 或更多,那么我们应该在该指数 X 买入,因此将其标记为买入,然后我们转移到我们发现高价的指数,然后我们再次做我们所做的直到我们结束, 如果我们没有找到一个满足该条件的元素,我们只移动“一个”元素,然后我们再次查看 96 元素(请注意,我们只移动了 1 个元素,因为我们不满足条件),但如果我们找到一个满足的元素,那么我们移动整个 96 点的窗口并重复。

我尝试了这段代码,但它只打印 96,然后不断增加 1 直到行尾,这是错误的。

def BuyFunction(df, close_col, size=96, percent=0.05):
    total_rows = len(df)
    labels = np.zeros(total_rows)
    labels[:] = np.nan
    print("Calculating labels")
    
    row_counter = 0
    while row_counter < total_rows:
        flag = 0
        for i in range(size):
            if row_counter + i + 1 < total_rows:
                if ((df[close_col][row_counter + i + 1] - df[close_col][row_counter]) / df[close_col][row_counter]) >= percent:
                    labels[row_counter] = 1
                    row_counter += size
                    flag = 1
                    break
        if flag == 0:
            row_counter += 1
        else:
            row_counter += size
        
        print(row_counter)
    return labels

DF['Label'] = BuyFunction(DF, 'close')
DF['Label'][DF['Label'] == 1.0] = 'Buy'
Python 数据分析 金融

评论


答: 暂无答案