不同条件的买卖信号

时间:2018-11-20 13:42:21

标签: pandas quantitative-finance financial

我正在寻找一种采用两个移动均线的交易策略。 缓慢的(60天SMA)和快速的(10天SMA)。通常,只要价格高于慢速移动平均线,我都希望做多,但如果价格比慢速移动平均线高5%以上,而移动到快速移动平均线以下,我会卖出,并在/如果价格超过了最快的价格。

慢速移动平均线的位置和信号微不足道:

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)

添加“逻辑与”,并检查价格是否比慢速移动平均线高出5%,这对我没有帮助,因为仅当发生快速移动平均线信号时才进行此检查。任何能帮助我指出正确方向的帮助将不胜感激。

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

Graph 这个想法是,我们只有在第二次价格超过快速移动价格时才收到卖出信号。

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

以下是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]

0 个答案:

没有答案