mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-06-27 16:10:07 +08:00
Allow to use non TA-Lib way of calculating CMO with TA-Lib installed
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user