mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-07-11 00:40:06 +08:00
335 lines
12 KiB
Python
335 lines
12 KiB
Python
from .config import CORRELATION, CORRELATION_THRESHOLD, error_analysis, sample_data, VERBOSE
|
|
from .context import pandas_ta
|
|
|
|
from unittest import TestCase
|
|
import pandas.testing as pdt
|
|
from pandas import DataFrame, Series
|
|
|
|
import pandas as pd
|
|
import talib as tal
|
|
|
|
|
|
|
|
class TestOverlap(TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
cls.data = sample_data
|
|
cls.data.columns = cls.data.columns.str.lower()
|
|
cls.open = cls.data['open']
|
|
cls.high = cls.data['high']
|
|
cls.low = cls.data['low']
|
|
cls.close = cls.data['close']
|
|
if 'volume' in cls.data.columns: cls.volume = cls.data['volume']
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
del cls.open
|
|
del cls.high
|
|
del cls.low
|
|
del cls.close
|
|
if hasattr(cls, 'volume'): del cls.volume
|
|
del cls.data
|
|
|
|
|
|
|
|
def setUp(self): pass
|
|
def tearDown(self): pass
|
|
|
|
|
|
def test_dema(self):
|
|
result = pandas_ta.dema(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'DEMA_10')
|
|
|
|
try:
|
|
expected = tal.DEMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_ema(self):
|
|
result = pandas_ta.ema(self.close, presma=False)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'EMA_10')
|
|
|
|
try:
|
|
expected = tal.EMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_fwma(self):
|
|
result = pandas_ta.fwma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'FWMA_10')
|
|
|
|
def test_hl2(self):
|
|
result = pandas_ta.hl2(self.high, self.low)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'HL2')
|
|
|
|
def test_hlc3(self):
|
|
result = pandas_ta.hlc3(self.high, self.low, self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'HLC3')
|
|
|
|
try:
|
|
expected = tal.TYPPRICE(self.high, self.low, self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_hma(self):
|
|
result = pandas_ta.hma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'HMA_10')
|
|
|
|
def test_kama(self):
|
|
result = pandas_ta.kama(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'KAMA_10_2_30')
|
|
|
|
def test_ichimoku(self):
|
|
ichimoku, span = pandas_ta.ichimoku(self.high, self.low, self.close)
|
|
self.assertIsInstance(ichimoku, DataFrame)
|
|
self.assertIsInstance(span, DataFrame)
|
|
self.assertEqual(ichimoku.name, 'ICHIMOKU_9_26_52')
|
|
self.assertEqual(span.name, 'ICHISPAN_9_26')
|
|
|
|
def test_linreg(self):
|
|
result = pandas_ta.linreg(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'LR_14')
|
|
|
|
try:
|
|
expected = tal.LINEARREG(self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_linreg_angle(self):
|
|
result = pandas_ta.linreg(self.close, angle=True)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'LRa_14')
|
|
|
|
try:
|
|
expected = tal.LINEARREG_ANGLE(self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_linreg_intercept(self):
|
|
result = pandas_ta.linreg(self.close, intercept=True)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'LRb_14')
|
|
|
|
try:
|
|
expected = tal.LINEARREG_INTERCEPT(self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_linreg_r(self):
|
|
result = pandas_ta.linreg(self.close, r=True)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'LRr_14')
|
|
|
|
def test_linreg_slope(self):
|
|
result = pandas_ta.linreg(self.close, slope=True)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'LRm_14')
|
|
|
|
try:
|
|
expected = tal.LINEARREG_SLOPE(self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_midpoint(self):
|
|
result = pandas_ta.midpoint(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'MIDPOINT_2')
|
|
|
|
try:
|
|
expected = tal.MIDPOINT(self.close, 2)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_midprice(self):
|
|
result = pandas_ta.midprice(self.high, self.low)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'MIDPRICE_2')
|
|
|
|
try:
|
|
expected = tal.MIDPRICE(self.high, self.low, 2)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_ohlc4(self):
|
|
result = pandas_ta.ohlc4(self.open, self.high, self.low, self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'OHLC4')
|
|
|
|
def test_pwma(self):
|
|
result = pandas_ta.pwma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'PWMA_10')
|
|
|
|
def test_rma(self):
|
|
result = pandas_ta.rma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'RMA_10')
|
|
|
|
def test_sinwma(self):
|
|
result = pandas_ta.sinwma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'SINWMA_14')
|
|
|
|
def test_sma(self):
|
|
result = pandas_ta.sma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'SMA_10')
|
|
|
|
try:
|
|
expected = tal.SMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_swma(self):
|
|
result = pandas_ta.swma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'SWMA_10')
|
|
|
|
def test_t3(self):
|
|
result = pandas_ta.t3(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'T3_10_0.7')
|
|
|
|
try:
|
|
expected = tal.T3(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_tema(self):
|
|
result = pandas_ta.tema(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'TEMA_10')
|
|
|
|
try:
|
|
expected = tal.TEMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_trima(self):
|
|
result = pandas_ta.trima(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'TRIMA_10')
|
|
|
|
try:
|
|
expected = tal.TRIMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_vwap(self):
|
|
result = pandas_ta.vwap(self.high, self.low, self.close, self.volume)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'VWAP')
|
|
|
|
def test_vwma(self):
|
|
result = pandas_ta.vwma(self.close, self.volume)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'VWMA_10')
|
|
|
|
def test_wcp(self):
|
|
result = pandas_ta.wcp(self.high, self.low, self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'WCP')
|
|
|
|
try:
|
|
expected = tal.WCLPRICE(self.high, self.low, self.close)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_wma(self):
|
|
result = pandas_ta.wma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'WMA_10')
|
|
|
|
try:
|
|
expected = tal.WMA(self.close, 10)
|
|
pdt.assert_series_equal(result, expected, check_names=False)
|
|
except AssertionError as ae:
|
|
try:
|
|
corr = pandas_ta.utils.df_error_analysis(result, expected, col=CORRELATION)
|
|
self.assertGreater(corr, CORRELATION_THRESHOLD)
|
|
except Exception as ex:
|
|
error_analysis(result, CORRELATION, ex)
|
|
|
|
def test_zlma(self):
|
|
result = pandas_ta.zlma(self.close)
|
|
self.assertIsInstance(result, Series)
|
|
self.assertEqual(result.name, 'ZL_EMA_10')
|