【问题标题】:Result calculation from a fix date and an expected future event从固定日期和预期的未来事件计算结果
【发布时间】: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


    【解决方案1】:

    我找到了一个不是我最初要求的解决方案。这两个数据帧被连接起来并命名为 concat。与

    concat[(concat.macd > 0) & (concat.shift(-1).macd > 0) & (concat.up == 100) & (concat.shift(-1).up == 100)]
    

    至少我能够找到up值为2倍100的条目。也许我将来会找到正确的解决方案。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 2018-05-11
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多