def test_data():
    n = 100
    t = np.arange(n)  # [0 .. n-1]

    # triangle
    # x = np.concatenate((np.arange(0,n/2,1), np.arange(n/2,0,-1)))

    # step
    x = ti.step(t - n/2) * 10

    # ramp
    # x = ramp(t - n/2)

    # normalized random
    # x = np.cumsum(np.random.randn(n))

    # x = np.sin(8 * np.pi/n * t) + (.1 * t)

    # x = 20 * np.sin(2 * 2*np.pi/n * t)

    # Add noise:
    x = x + 1.2 * np.random.randn(len(x))

    assert len(ti.sma(x, 10)) == len(x)
    assert len(ti.ema(x, 10)) == len(x)
    assert len(ti.linear_fit(x, 10)) == len(x)
    assert len(ti.iir_lowpass(x, 2, 10)) == len(x)
    assert len(ti.moving_min(x, 10)) == len(x)
    assert len(ti.moving_max(x, 10)) == len(x)
    assert len(ti.aema(x, 10)) == len(x)

    assert len(ti.rate_of_change(x, 20)) == len(x)
    assert len(ti.acceleration(x, 20)) == len(x)
def test_step():
    t = np.arange(-5, 5, 1)
    s = ti.step(t)
    assert len(s) == len(t)
def _main():

    print("test_indicator = {}".format(ti.test_indicator('XBB.TO')))

    t = np.arange(-5, 5, 1)
    s = ti.step(t)
    r = ti.ramp(t)

    plt.plot(t, s, marker='x', linestyle='None', label='step')
    plt.plot(t,
             r,
             marker='o',
             markerfacecolor='None',
             linestyle='None',
             label='ramp')
    plt.legend()
    plt.show()

    t = np.linspace(0, 4 * np.pi, 50)
    s = np.sin(t)
    c = np.cos(t)
    o = ti.cross_over(s, c)
    u = ti.cross_under(s, c)

    fig = plt.figure()
    ax = fig.add_subplot(211)
    ax.plot(t, s, marker='.', label='sin')
    ax.plot(t, c, marker='x', label='cos')
    ax.legend()

    ax2 = fig.add_subplot(212)
    ax2.plot(t,
             o,
             marker='^',
             markerfacecolor='None',
             linestyle='None',
             label='cross over')
    ax2.plot(t,
             u,
             marker='v',
             markerfacecolor='None',
             linestyle='None',
             label='cross under')
    ax2.legend()
    plt.show()

    n = 100
    t = np.arange(n)  # [0 .. n-1]

    # triangle
    # x = np.concatenate((np.arange(0,n/2,1), np.arange(n/2,0,-1)))

    # step
    x = ti.step(t - n / 2) * 10

    # ramp
    #x = ramp(t - n/2)

    # normalized random
    # x = np.cumsum(np.random.randn(n))

    # x = np.sin(8 * np.pi/n * t) + (.1 * t)

    # x = 20 * np.sin(2 * 2*np.pi/n * t)

    # Add noise:
    x = x + 1.2 * np.random.randn(len(x))

    fig = plt.figure()
    ax = fig.add_subplot(211)
    ax.plot(t, x, 'o', label='raw')
    ax.plot(t, ti.sma(x, 10), label='sma')
    ax.plot(t, ti.ema(x, 10), label='ema')
    ax.plot(t, ti.linear_fit(x, 10), label='linear_fit')
    ax.plot(t, ti.iir_lowpass(x, 1, 10), label='iir_lowpass')
    ax.plot(t, ti.moving_min(x, 10), label='moving_min')
    ax.plot(t, ti.moving_max(x, 10), label='moving_max')
    ax.plot(t, ti.aema(x, 10), label='aema')
    ax.grid(True)
    ax.legend()

    ax2 = fig.add_subplot(212)
    ax2.plot(t, ti.rate_of_change(x, 20), 'x', label='rate_of_change')
    ax2.plot(t, ti.acceleration(x, 20), 'o--', label='acceleration')
    ax2.grid(True)
    ax2.legend()
    plt.show()