1

我正在寻求实施一种使用两条移动平均线的交易策略。慢速(60 天 SMA)和快速(10 天 SMA)。一般来说,只要价格高于慢速均线,我就想做多,但如果价格高于慢速均线超过 5%,并且跌破快速均线,我将卖出,并在何时/如果再次买入价格上穿快速均线。

慢速 MA 的位置和信号是微不足道的:

df["slowma"] = df["AdjClose"].rolling(60).mean()
df['positions'] = 0.0
df['positions'] = np.where(df["AdjClose"] > df['slowma'], 1.0, 0.0)
df['signal'] = df['positions'].diff()

以价格高于 5% 为条件的快速 MA 交叉有点棘手,因为我只对之前有卖出信号的情况下产生买入信号感兴趣。

df["fastma"] = df["AdjClose"].rolling(10).mean()
df['positions_fast'] = 0.0
df['positions_fast'] = np.where(df["AdjClose"] > df['fastma'], 1.0, 0.0)

添加“逻辑与”并检查价格是否高于慢速 MA 的 5% 对我没有帮助,因为只有在快速 MA 信号发生时才应进行此检查。任何可以为我指明正确方向的帮助将不胜感激。

编辑:这是一些测试数据和一张图片,希望能在一定程度上描述我想要实现的目标。请不要注意慢速和快速均线根本不是平均线。我手动输入的。

图形 我们的想法是,我们只有在价格第二次下穿快速均线时才会收到卖出信号。

对于此数据,我将 5% 阈值更改为 50%。 数据

这是python格式的数据:

close = [1,5,8,12,19,24,26,25,20,25,30,35,40,35,30,25,40,45,50,55,50,40,30,20]
slow_ma = [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]
fast_ma = [5, 6, 8, 9, 12, 15, 19, 24, 22, 24, 27, 31, 35, 39, 34, 30, 33, 37, 41, 46, 50, 50, 46, 40]
4

0 回答 0