【发布时间】:2018-05-28 17:01:42
【问题描述】:
我很难理解这个 pandas/numpy 数据帧/系列的详细工作原理。
我要解决的问题是我有两个指标 - MACD 和 AROON。
如果 MACD 高于零(时间 t0),则 AROON 应该是 100 的两倍(t0、t1、t2 等),而 MACD 不会低于零(t1、t2 等)。如果计数器为 2 且 MACD 持续高于零,则应生成买入信号。
def find_buy_signal(xDate, xMacd, xAroon):
for n in range(0, len(xDate)):
if (xMacd.shift(n).macd > 0)[n]:
for m in range(n, len(xDate)):
buy_signal_counter = 0
if (xMacd.shift(m).macd > 0):
if (xAroon.shift(m).up == 100):
buy_signal_counter += 1
if buy_signal_counter == 2:
return True
else:
return False
else:
return False
data = read_data()
xMacd = macd(data, 10, 15, 1)
xAroon = aroon(data, 12)
buy = find_buy_date(xMacd.index, xMacd, xAroon)
print(buy) # The result is False but should be a series
即使我知道伪代码,我也能够将两个时间框架放在一起。
以下是 MACD 的一些示例数据:
fast hist macd signal slow
Date
2018-04-08 12358.294033 0.0 -96.857954 -96.857954 12455.151987
2018-04-15 12391.422390 0.0 -74.398098 -74.398098 12465.820488
2018-04-22 12425.867432 0.0 -54.334260 -54.334260 12480.201692
2018-04-29 12497.455100 0.0 -25.171331 -25.171331 12522.626432
2018-05-04 12556.026829 0.0 -3.721250 -3.721250 12559.748079
这里有一些 Aroon 的示例数据:
down up
Date
2018-04-08 83.333333 8.333333
2018-04-15 75.000000 0.000000
2018-04-22 66.666667 0.000000
2018-04-29 58.333333 100.000000
我知道我可以将两个数据帧合并为一个数据帧。
这里是信号的预期结果,而不是:
macd up
Date
t0 macd > 0 100.00 (counter == 1)
t1 macd > 0 96.00
t2 macd > 0 100.00 (counter == 2) signal
macd up
Date
t0 macd > 0 100.00 (counter == 1)
t1 macd > 0 96.00
t2 macd < 0 100.00 (counter == 0)
【问题讨论】:
标签: python pandas numpy series