Allow to use non TA-Lib way of calculating CMO with TA-Lib installed

This commit is contained in:
Olaf Tomczak
2021-07-09 19:59:28 +02:00
parent 1deb7559f6
commit ac4b239cae
2 changed files with 10 additions and 3 deletions
+3 -3
View File
@@ -12,11 +12,12 @@ def cmo(close, length=None, scalar=None, drift=None, offset=None, **kwargs):
close = verify_series(close, length)
drift = get_drift(drift)
offset = get_offset(offset)
talib_mode = kwargs.pop("talib", True)
if close is None: return
# Calculate Result
if Imports["talib"]:
if talib_mode and Imports["talib"]:
from talib import CMO
cmo = CMO(close, length)
else:
@@ -24,8 +25,7 @@ def cmo(close, length=None, scalar=None, drift=None, offset=None, **kwargs):
positive = mom.copy().clip(lower=0)
negative = mom.copy().clip(upper=0).abs()
talib = kwargs.pop("talib", True)
if talib:
if talib_mode:
pos_ = rma(positive, length)
neg_ = rma(negative, length)
else:
+7
View File
@@ -144,6 +144,13 @@ class TestMomentum(TestCase):
except Exception as ex:
error_analysis(result, CORRELATION, ex)
def test_cmo_no_talib(self):
result = pandas_ta.cmo(self.close, talib=False)
talib_result = tal.CMO(self.close)
corr = pandas_ta.utils.df_error_analysis(result, talib_result, col=CORRELATION)
self.assertLess(corr, CORRELATION_THRESHOLD)
def test_coppock(self):
result = pandas_ta.coppock(self.close)
self.assertIsInstance(result, Series)