逆向BollingerBand

使用bollinger band作为indicator,使用过去几天的收盘价来,来计算今天买入和卖出价格. 这两个价格正好是bollinger band的-1和+1的位置.

def reverse_bollinger_band(df_price, ratio=2):
    A = df_price.shape[0] + 1
    B = ratio
    mean = np.mean(df_price, axis=0)
    std = np.std(df_price, axis=0)
    C = (A - 1) * mean
    D = (A - 1) * (std ** 2 + mean ** 2)
    B2 = B ** 2
    a = (B2 - (A - 1)) * (A - 1)
    b = 2 * C * (A - B2 - 1)
    c = A * B2 * D - (B2 + 1) * (C ** 2)

    common = np.sqrt(b ** 2 - 4 * a * c)
    r0 = (common - b) * 0.5 / a
    r1 = (-common - b) * 0.5 / a
    return (r0, r1)

UPDATE: 完全使用BollingerBand是有问题的。股价在下跌的过程中可能会有很多次buy signal, 但是如果资金不够多的话,只能完全前面几次buy操作,而后面却正是更低的价格。同样在上涨过程中会出现多次sell signal, 但是如果之前持有不够多的话,也会错过在高点卖出。