Exemplo n.º 1
0
    volatility = pd.rolling_sum((x - x.shift(1)).abs(), n)
    er = change / volatility
    sc = (er * (2.0 / (pow1 + 1.0) - 2.0 / (pow2 + 1.0)) + 2.0 /
          (pow2 + 1.0))**2.0

    kama = [np.nan] * sc.size
    first_value = True
    for i in range(len(kama)):
        if not pd.isnull(sc[i]):
            if first_value:
                kama[i] = x[i]
                first_value = False
            else:
                kama[i] = kama[i - 1] + sc[i] * (x[i] - kama[i - 1])

    return Series(data=[np.nan] * nan_count + kama,
                  name="KAMA_%d,%d,%d" % (n, pow1, pow2))


def test_kama(closes):
    """KAMA test function."""
    kama10 = kama(closes, 10, 2, 30)
    data = pd.concat([closes, kama10], axis=1)
    #    print(data)
    data.plot(title="KAMA Chart")
    plt.show()


if __name__ == "__main__":
    test_kama(gen_closes())
Exemplo n.º 2
0
    wma = []
    bar_count = len(arg)
    nan_count = window - 1
    if bar_count < nan_count:
        nan_count = bar_count
    for i in range(nan_count):
        wma.append(np.nan)
    div = (window + 1) * window / 2.0
    for i in range(window-1, bar_count):
        sum = 0
        for j in range(window):
            sum += arg[i - j] * (window - j)
        wma.append(sum / div);

    return Series(data = wma, name="wma" + str(window), index = arg.index)


def test_wma(closes):
    """WMA test function."""
    wma5 = wma(closes, 5)
    wma10 = wma(closes, 10)
    data = pd.concat([closes, wma5, wma10], axis=1)
    # print(data)
    data.plot(title = "WMA Chart")
    plt.show()


if __name__ == "__main__":
    test_wma(gen_closes())
Exemplo n.º 3
0
        which will be used in calculating Bollinger Bands.
        """
        sd = [np.nan] * min(closes.size, window - 1)
        for i in range(window - 1, closes.size):
            sum = 0.0
            m = boll_mid[i]
            for j in range(window):
                sum += (closes[i - j] - m) ** 2;
            sd.append(math.sqrt(sum / window))
        return Series(data = sd, name = "sd")

    boll_mid = sma(closes, window)
    sd = calc_sd()
    boll_up = boll_mid + sd * d
    boll_low = boll_mid - sd * d

    return DataFrame({"BOLL_UP":boll_up, "BOLL_MID":boll_mid, "BOLL_LOW":boll_low})


def test_bbands(closes):
    """BBANDS test function."""
    bb = bbands(closes, 20, 2)
    data = pd.concat([DataFrame(closes), bb], axis=1)
    # print(data)
    data.plot(title = "BBANDS Chart")
    plt.show()


if __name__ == "__main__":
    test_bbands(gen_closes(200))
Exemplo n.º 4
0
Arquivo: sma.py Projeto: tianhm/pyta-1

def sma(arg, window):
    """SMA: Simple Moving Average.

    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Simple moving average of arg.
    """

    ma = pd.rolling_mean(arg, window)
    return Series(data=ma, name="SMA" + str(window))


def test_sma(closes):
    """SMA test function."""
    sma5 = sma(closes, 5)
    sma10 = sma(closes, 10)
    data = pd.concat([closes, sma5, sma10], axis=1)
    # print(data)
    data.plot(title="SMA Chart")
    plt.show()


if __name__ == "__main__":
    test_sma(gen_closes())
Exemplo n.º 5
0
    """DEMA: Double Exponential Moving Average.

    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Double exponential moving average of arg.
    """

    ema1 = ema(arg, window)
    ema2 = ema(ema1, window)
    dema = ema1 * 2 - ema2

    return Series(data = dema, name = "dema" + str(window))


def test_dema(closes):
    """DEMA test function."""
    dema5 = dema(closes, 5)
    dema10 = dema(closes, 10)
    data = pd.concat([closes, dema5, dema10], axis=1)
    # print(data)
    data.plot(title = "DEMA Chart")
    plt.show()


if __name__ == "__main__":
    test_dema(gen_closes())
Exemplo n.º 6
0
        "divergence": divergence
    })


def test_macd(closes):
    """MACD test function."""
    macd_indicator = macd(closes)
    data = macd_indicator
    # print(data)

    # Plot the price series.
    ax1 = plt.subplot2grid((6, 4), (0, 0), rowspan=4, colspan=4)
    ax1.grid(True)
    ax1.plot(closes)
    plt.ylabel("CLOSE")
    plt.title("MACD Chart")

    # Plot MACD.
    ax2 = plt.subplot2grid((6, 4), (4, 0), sharex=ax1, rowspan=2, colspan=4)
    ax2.grid(True)
    ax2.plot(data["macd"])
    ax2.plot(data["signal"])
    ax2.fill_between(data.index, data["divergence"], 0, alpha=0.5)
    plt.ylabel("MACD")
    plt.setp(ax1.get_xticklabels(), visible=False)
    plt.show()


if __name__ == "__main__":
    test_macd(gen_closes())
Exemplo n.º 7
0

def sma(arg, window):
    """SMA: Simple Moving Average.

    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Simple moving average of arg.
    """

    ma = arg.rolling(window=window,center=False).mean()
    return Series(data = ma, name = "sma" + str(window))


def test_sma(closes):
    """SMA test function."""
    sma5 = sma(closes, 5)
    sma10 = sma(closes, 10)
    data = pd.concat([closes, sma5, sma10], axis=1)
    # print(data)
    data.plot(title = "SMA Chart")
    plt.show()


if __name__ == "__main__":
    test_sma(gen_closes())
Exemplo n.º 8
0
    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Triple exponential moving average of arg.
    """

    ema1 = ema(arg, window)
    ema2 = ema(ema1, window)
    ema3 = ema(ema2, window)
    tema = ema1 * 3 - ema2 * 3 + ema3

    return Series(data = tema, name = "tema" + str(window))


def test_tema(closes):
    """TEMA test function."""
    tema5 = tema(closes, 5)
    tema10 = tema(closes, 10)
    data = pd.concat([closes, tema5, tema10], axis=1)
    # print(data)
    data.plot(title = "TEMA Chart")
    plt.show()


if __name__ == "__main__":
    test_tema(gen_closes())
Exemplo n.º 9
0
Arquivo: ema.py Projeto: tianhm/pyta-1
    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Exponential moving average of arg.
    """
    arg = Series(arg.dropna().values)
    ema = []
    w = 2.0 / (window + 1)
    ema.append(arg[0])
    for i in range(1, len(arg)):
        ema.append(arg[i] * w + ema[-1] * (1.0 - w))

    return Series(data=ema, name="EMA" + str(window))


def test_ema(closes):
    """EMA test function."""
    ema5 = ema(closes, 5)
    ema10 = ema(closes, 10)
    data = pd.concat([closes, ema5, ema10], axis=1)
    # print(data)
    data.plot(title="EMA Chart")
    plt.show()


if __name__ == "__main__":
    test_ema(gen_closes())
Exemplo n.º 10
0
    """DEMA: Double Exponential Moving Average.

    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Double exponential moving average of arg.
    """

    ema1 = ema(arg, window)
    ema2 = ema(ema1, window)
    dema = ema1 * 2 - ema2

    return Series(data = dema, name = "dema" + str(window))


def test_dema(closes):
    """DEMA test function."""
    dema5 = dema(closes, 5)
    dema10 = dema(closes, 10)
    data = pd.concat([closes, dema5, dema10], axis=1)
    # print(data)
    data.plot(title = "DEMA Chart")
    plt.show()


if __name__ == "__main__":
    test_dema(gen_closes())
Exemplo n.º 11
0
    Params:
        arg (Series): Time series data such as close prices.

        window (int): Moving average window size.

    Returns:
        Series: Exponential moving average of arg.
    """
    arg = Series(arg.dropna().values, index = arg.index)
    ema = []
    w = 2.0 / (window + 1)
    ema.append(arg[0])
    for i in range(1, len(arg)):
        ema.append(arg[i] * w + ema[-1] * (1.0 - w))

    return Series(data = ema, name = "ema" + str(window), index = arg.index)


def test_ema(closes):
    """EMA test function."""
    ema5 = ema(closes, 5)
    ema10 = ema(closes, 10)
    data = pd.concat([closes, ema5, ema10], axis=1)
    # print(data)
    data.plot(title = "EMA Chart")
    plt.show()


if __name__ == "__main__":
    test_ema(gen_closes())
Exemplo n.º 12
0
    change = (x - x.shift(n)).abs()
    volatility = (x - x.shift(1)).abs().rolling(window=n).sum()
    er = change / volatility
    sc = (er * (2.0 /(pow1 + 1.0) - 2.0 / (pow2 + 1.0)) + 2.0 / (pow2 + 1.0)) ** 2.0

    kama = [np.nan] * sc.size
    first_value = True
    for i in range(len(kama)):
        if not pd.isnull(sc[i]):
            if first_value:
                kama[i] = x[i]
                first_value = False
            else:
                kama[i] = kama[i-1] + sc[i] * (x[i] - kama[i-1])

    return Series(data = [np.nan] * nan_count + kama, name = "kama(%d,%d,%d)" % (n, pow1, pow2), index = x.index)


def test_kama(closes):
    """KAMA test function."""
    kama10 = kama(closes, 10, 2, 30)
    data = pd.concat([closes, kama10], axis=1)
#    print(data)
    data.plot(title = "KAMA Chart")
    plt.show()


if __name__ == "__main__":
    test_kama(gen_closes())