马克序列 Demark Sequential (TD 序列 ) 也算是一个常见的趋势指标,但是Vnpy中默认没有实现。
在Vnpy的安装目录Lib\site-packages\vnpy\trader下的utilty.py的ArrayManager中增加具体实现即可。
def td(self, array=False):
close_np = self.close
close_shift = np.empty_like(self.close)
close_shift[:4] = 0
close_shift[4:] = close_np[:-4]
compare_array = close_np > close_shift
result = np.empty(len(close_np), int)
counting_number: int = 0
for i in range(len(close_np)):
if np.isnan(close_shift[i]):
result[i] = 0
else:
compare_bool = compare_array[i]
if compare_bool:
if counting_number >= 0:
counting_number += 1
else:
counting_number = 1
else:
if counting_number <= 0:
counting_number -= 1
else:
counting_number = -1