为算法交易创建信号序列

时间:2018-06-12 20:17:57

标签: python

我有一个如下所示的数据列表:

signal = [-1, -1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1]

其中-1表示卖出信号,1表示买入信号。 我现在想将此信号列表转换为如下所示:

signal = [-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]

这基本上要求如果信号的方向没有从前一个信号改变(或者它已经是0),那么它应该是0.

我找不到任何类似的答案,所以感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

另一种基于列表理解的风格:

[j if i != j else 0 for i,j in zip([0] + signal, signal)]
#[-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]

答案 1 :(得分:1)

尝试:

_list = []
signal = [-1, -1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1]
_list.append(signal[0])
for i in range(1,len(signal)):
    if signal[i] == signal[i-1]:
        _list.append(0)
    else:
        _list.append(signal[i])
signal = _list
print(signal)

输出:[-1, 0, 0, 1, -1, 1, 0, -1, 1, -1, 1, 0]