def test_SMA(): expected = func.SMA(ford_2012['close'], 10) assert_np_arrays_equal(expected, abstract.Function('sma', ford_2012, 10).outputs) assert_np_arrays_equal( expected, abstract.Function('sma')(ford_2012, 10, price='close')) assert_np_arrays_equal(expected, abstract.Function('sma')(ford_2012, timeperiod=10)) expected = func.SMA(ford_2012['open'], 10) assert_np_arrays_equal( expected, abstract.Function('sma', ford_2012, 10, price='open').outputs) assert_np_arrays_equal( expected, abstract.Function('sma', price='low')(ford_2012, 10, price='open')) assert_np_arrays_not_equal( expected, abstract.Function('sma', ford_2012, 10, price='open')(timeperiod=20)) assert_np_arrays_not_equal( expected, abstract.Function('sma', ford_2012)(10, price='close')) assert_np_arrays_not_equal( expected, abstract.Function('sma', 10)(ford_2012, price='high')) assert_np_arrays_not_equal( expected, abstract.Function('sma', price='low')(ford_2012, 10)) input_arrays = {'foobarbaz': ford_2012['open']} assert_np_arrays_equal(expected, abstract.SMA(input_arrays, 10, price='foobarbaz'))
def test_call_doesnt_cache_parameters(): sma = abstract.Function('SMA', timeperiod=10) expected = func.SMA(ford_2012['close'], 20) output = sma(ford_2012, timeperiod=20) assert_np_arrays_equal(expected, output) expected = func.SMA(ford_2012['close'], 10) output = sma(ford_2012) assert_np_arrays_equal(expected, output)
def test_MAVP(): a = np.array([1, 5, 3, 4, 7, 3, 8, 1, 4, 6], dtype=float) b = np.array([2, 4, 2, 4, 2, 4, 2, 4, 2, 4], dtype=float) result = func.MAVP(a, b, minperiod=2, maxperiod=4) assert_np_arrays_equal( result, [np.nan, np.nan, np.nan, 3.25, 5.5, 4.25, 5.5, 4.75, 2.5, 4.75]) sma2 = func.SMA(a, 2) assert_np_arrays_equal(result[4::2], sma2[4::2]) sma4 = func.SMA(a, 4) assert_np_arrays_equal(result[3::2], sma4[3::2]) result = func.MAVP(a, b, minperiod=2, maxperiod=3) assert_np_arrays_equal(result, [ np.nan, np.nan, 4, 4, 5.5, 4.666666666666667, 5.5, 4, 2.5, 3.6666666666666665 ]) sma3 = func.SMA(a, 3) assert_np_arrays_equal(result[2::2], sma2[2::2]) assert_np_arrays_equal(result[3::2], sma3[3::2])
def test_pandas_series(): import pandas input_df = pandas.DataFrame(ford_2012) output = talib.SMA(input_df['close'], 10) expected = pandas.Series(func.SMA(ford_2012['close'], 10), index=input_df.index) pandas.util.testing.assert_series_equal(output, expected) # Test kwargs output = talib.SMA(real=input_df['close'], timeperiod=10) pandas.util.testing.assert_series_equal(output, expected) # Test talib.func API output = func.SMA(input_df['close'], timeperiod=10) pandas.util.testing.assert_series_equal(output, expected) # Test multiple outputs such as from BBANDS _, output, _ = talib.BBANDS(input_df['close'], 10) expected = pandas.Series(func.BBANDS(ford_2012['close'], 10)[1], index=input_df.index) pandas.util.testing.assert_series_equal(output, expected)
def test_pandas(): import pandas input_df = pandas.DataFrame(ford_2012) input_dict = dict((k, pandas.Series(v)) for k, v in ford_2012.items()) expected_k, expected_d = func.STOCH(ford_2012['high'], ford_2012['low'], ford_2012['close']) # 5, 3, 0, 3, 0 output = abstract.Function('stoch', input_df).outputs assert_true(isinstance(output, pandas.DataFrame)) assert_np_arrays_equal(expected_k, output['slowk']) assert_np_arrays_equal(expected_d, output['slowd']) output = abstract.Function('stoch', input_dict).outputs assert_true(isinstance(output, list)) assert_np_arrays_equal(expected_k, output[0]) assert_np_arrays_equal(expected_d, output[1]) expected = func.SMA(ford_2012['close'], 10) output = abstract.Function('sma', input_df, 10).outputs assert_true(isinstance(output, pandas.Series)) assert_np_arrays_equal(expected, output) output = abstract.Function('sma', input_dict, 10).outputs assert_true(isinstance(output, np.ndarray)) assert_np_arrays_equal(expected, output)