diff --git a/README.md b/README.md index 6d69b5a..095b80c 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ $ pip install pandas_ta Latest Version -------------- -Best choice! Version: *0.2.72b* +Best choice! Version: *0.2.73b* ```sh $ pip install -U git+https://github.com/twopirllc/pandas-ta ``` diff --git a/pandas_ta/candles/cdl_inside.py b/pandas_ta/candles/cdl_inside.py index 8c3fde6..fe9ae24 100644 --- a/pandas_ta/candles/cdl_inside.py +++ b/pandas_ta/candles/cdl_inside.py @@ -25,7 +25,6 @@ def cdl_inside(open_, high, low, close, asbool=False, offset=None, **kwargs): # Handle fills if "fillna" in kwargs: inside.fillna(kwargs["fillna"], inplace=True) - if "fill_method" in kwargs: inside.fillna(method=kwargs["fill_method"], inplace=True) diff --git a/pandas_ta/momentum/td_seq.py b/pandas_ta/momentum/td_seq.py index 8bd12fd..9467983 100644 --- a/pandas_ta/momentum/td_seq.py +++ b/pandas_ta/momentum/td_seq.py @@ -66,11 +66,7 @@ def td_seq(close, asint=None, offset=None, **kwargs): up_seq.category = down_seq.category = "momentum" # Prepare Dataframe to return - data = { - up_seq.name: up_seq, - down_seq.name: down_seq - } - df = DataFrame(data) + df = DataFrame({up_seq.name: up_seq, down_seq.name: down_seq}) df.name = "TD_SEQ" df.category = up_seq.category diff --git a/pandas_ta/overlap/dema.py b/pandas_ta/overlap/dema.py index afaf020..504d5dd 100644 --- a/pandas_ta/overlap/dema.py +++ b/pandas_ta/overlap/dema.py @@ -21,6 +21,12 @@ def dema(close, length=None, offset=None, **kwargs): if offset != 0: dema = dema.shift(offset) + # Handle fills + if "fillna" in kwargs: + dema.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + dema.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category dema.name = f"DEMA_{length}" dema.category = "overlap" diff --git a/pandas_ta/overlap/ema.py b/pandas_ta/overlap/ema.py index aa7721f..748ac24 100644 --- a/pandas_ta/overlap/ema.py +++ b/pandas_ta/overlap/ema.py @@ -26,6 +26,12 @@ def ema(close, length=None, offset=None, **kwargs): if offset != 0: ema = ema.shift(offset) + # Handle fills + if "fillna" in kwargs: + ema.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + ema.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category ema.name = f"EMA_{length}" ema.category = "overlap" diff --git a/pandas_ta/overlap/fwma.py b/pandas_ta/overlap/fwma.py index 1e060cc..807fc50 100644 --- a/pandas_ta/overlap/fwma.py +++ b/pandas_ta/overlap/fwma.py @@ -20,6 +20,12 @@ def fwma(close, length=None, asc=None, offset=None, **kwargs): if offset != 0: fwma = fwma.shift(offset) + # Handle fills + if "fillna" in kwargs: + fwma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + fwma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category fwma.name = f"FWMA_{length}" fwma.category = "overlap" diff --git a/pandas_ta/overlap/hma.py b/pandas_ta/overlap/hma.py index d6d55eb..46068b6 100644 --- a/pandas_ta/overlap/hma.py +++ b/pandas_ta/overlap/hma.py @@ -25,6 +25,12 @@ def hma(close, length=None, offset=None, **kwargs): if offset != 0: hma = hma.shift(offset) + # Handle fills + if "fillna" in kwargs: + hma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + hma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category hma.name = f"HMA_{length}" hma.category = "overlap" diff --git a/pandas_ta/overlap/kama.py b/pandas_ta/overlap/kama.py index 1c71266..ab5ec8c 100644 --- a/pandas_ta/overlap/kama.py +++ b/pandas_ta/overlap/kama.py @@ -41,6 +41,12 @@ def kama(close, length=None, fast=None, slow=None, drift=None, offset=None, **kw if offset != 0: kama = kama.shift(offset) + # Handle fills + if "fillna" in kwargs: + kama.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + kama.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category kama.name = f"KAMA_{length}_{fast}_{slow}" kama.category = "overlap" diff --git a/pandas_ta/overlap/pwma.py b/pandas_ta/overlap/pwma.py index f3867d1..fe10aeb 100644 --- a/pandas_ta/overlap/pwma.py +++ b/pandas_ta/overlap/pwma.py @@ -20,6 +20,12 @@ def pwma(close, length=None, asc=None, offset=None, **kwargs): if offset != 0: pwma = pwma.shift(offset) + # Handle fills + if "fillna" in kwargs: + pwma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + pwma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category pwma.name = f"PWMA_{length}" pwma.category = "overlap" diff --git a/pandas_ta/overlap/rma.py b/pandas_ta/overlap/rma.py index 41d1845..36bcdfc 100644 --- a/pandas_ta/overlap/rma.py +++ b/pandas_ta/overlap/rma.py @@ -19,6 +19,12 @@ def rma(close, length=None, offset=None, **kwargs): if offset != 0: rma = rma.shift(offset) + # Handle fills + if "fillna" in kwargs: + rma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + rma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category rma.name = f"RMA_{length}" rma.category = "overlap" diff --git a/pandas_ta/overlap/sinwma.py b/pandas_ta/overlap/sinwma.py index 44d05ca..3ff8ba5 100644 --- a/pandas_ta/overlap/sinwma.py +++ b/pandas_ta/overlap/sinwma.py @@ -24,6 +24,12 @@ def sinwma(close, length=None, offset=None, **kwargs): if offset != 0: sinwma = sinwma.shift(offset) + # Handle fills + if "fillna" in kwargs: + sinwma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + sinwma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category sinwma.name = f"SINWMA_{length}" sinwma.category = "overlap" diff --git a/pandas_ta/overlap/ssf.py b/pandas_ta/overlap/ssf.py index 04c7a61..8d925af 100644 --- a/pandas_ta/overlap/ssf.py +++ b/pandas_ta/overlap/ssf.py @@ -48,6 +48,12 @@ def ssf(close, length=None, poles=None, offset=None, **kwargs): if offset != 0: ssf = ssf.shift(offset) + # Handle fills + if "fillna" in kwargs: + ssf.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + ssf.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category ssf.name = f"SSF_{length}_{poles}" ssf.category = "overlap" diff --git a/pandas_ta/overlap/swma.py b/pandas_ta/overlap/swma.py index 7eedea5..1814a40 100644 --- a/pandas_ta/overlap/swma.py +++ b/pandas_ta/overlap/swma.py @@ -22,6 +22,12 @@ def swma(close, length=None, asc=None, offset=None, **kwargs): if offset != 0: swma = swma.shift(offset) + # Handle fills + if "fillna" in kwargs: + swma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + swma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category swma.name = f"SWMA_{length}" swma.category = "overlap" diff --git a/pandas_ta/overlap/t3.py b/pandas_ta/overlap/t3.py index d8b5663..77489b5 100644 --- a/pandas_ta/overlap/t3.py +++ b/pandas_ta/overlap/t3.py @@ -31,6 +31,12 @@ def t3(close, length=None, a=None, offset=None, **kwargs): if offset != 0: t3 = t3.shift(offset) + # Handle fills + if "fillna" in kwargs: + t3.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + t3.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category t3.name = f"T3_{length}_{a}" t3.category = "overlap" diff --git a/pandas_ta/overlap/tema.py b/pandas_ta/overlap/tema.py index 19afe54..f22e7b8 100644 --- a/pandas_ta/overlap/tema.py +++ b/pandas_ta/overlap/tema.py @@ -22,6 +22,12 @@ def tema(close, length=None, offset=None, **kwargs): if offset != 0: tema = tema.shift(offset) + # Handle fills + if "fillna" in kwargs: + tema.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + tema.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category tema.name = f"TEMA_{length}" tema.category = "overlap" diff --git a/pandas_ta/overlap/trima.py b/pandas_ta/overlap/trima.py index 151672b..3839808 100644 --- a/pandas_ta/overlap/trima.py +++ b/pandas_ta/overlap/trima.py @@ -21,6 +21,12 @@ def trima(close, length=None, offset=None, **kwargs): if offset != 0: trima = trima.shift(offset) + # Handle fills + if "fillna" in kwargs: + trima.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + trima.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category trima.name = f"TRIMA_{length}" trima.category = "overlap" diff --git a/pandas_ta/overlap/vidya.py b/pandas_ta/overlap/vidya.py index 939654f..a64186e 100644 --- a/pandas_ta/overlap/vidya.py +++ b/pandas_ta/overlap/vidya.py @@ -41,6 +41,12 @@ def vidya(close, length=None, drift=None, offset=None, **kwargs): if offset != 0: vidya = vidya.shift(offset) + # Handle fills + if "fillna" in kwargs: + vidya.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + vidya.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category vidya.name = f"VIDYA_{length}" vidya.category = "overlap" diff --git a/pandas_ta/overlap/vwap.py b/pandas_ta/overlap/vwap.py index 8ed1517..e9cb3a7 100644 --- a/pandas_ta/overlap/vwap.py +++ b/pandas_ta/overlap/vwap.py @@ -27,6 +27,12 @@ def vwap(high, low, close, volume, anchor=None, offset=None, **kwargs): if offset != 0: vwap = vwap.shift(offset) + # Handle fills + if "fillna" in kwargs: + vwap.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + vwap.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category vwap.name = f"VWAP_{anchor}" vwap.category = "overlap" diff --git a/pandas_ta/overlap/vwma.py b/pandas_ta/overlap/vwma.py index a77cd74..a9ee6a7 100644 --- a/pandas_ta/overlap/vwma.py +++ b/pandas_ta/overlap/vwma.py @@ -21,6 +21,12 @@ def vwma(close, volume, length=None, offset=None, **kwargs): if offset != 0: vwma = vwma.shift(offset) + # Handle fills + if "fillna" in kwargs: + vwma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + vwma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category vwma.name = f"VWMA_{length}" vwma.category = "overlap" diff --git a/pandas_ta/overlap/wcp.py b/pandas_ta/overlap/wcp.py index 90b13c9..43a17e5 100644 --- a/pandas_ta/overlap/wcp.py +++ b/pandas_ta/overlap/wcp.py @@ -17,6 +17,12 @@ def wcp(high, low, close, offset=None, **kwargs): if offset != 0: wcp = wcp.shift(offset) + # Handle fills + if "fillna" in kwargs: + wcp.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + wcp.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category wcp.name = "WCP" wcp.category = "overlap" diff --git a/pandas_ta/overlap/wma.py b/pandas_ta/overlap/wma.py index 4e4b9b0..c985d7a 100644 --- a/pandas_ta/overlap/wma.py +++ b/pandas_ta/overlap/wma.py @@ -32,6 +32,12 @@ def wma(close, length=None, asc=None, offset=None, **kwargs): if offset != 0: wma = wma.shift(offset) + # Handle fills + if "fillna" in kwargs: + wma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + wma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category wma.name = f"WMA_{length}" wma.category = "overlap" diff --git a/pandas_ta/overlap/zlma.py b/pandas_ta/overlap/zlma.py index 0dabfeb..75e08e6 100644 --- a/pandas_ta/overlap/zlma.py +++ b/pandas_ta/overlap/zlma.py @@ -35,6 +35,12 @@ def zlma(close, length=None, mamode=None, offset=None, **kwargs): if offset != 0: zlma = zlma.shift(offset) + # Handle fills + if "fillna" in kwargs: + zlma.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + zlma.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category zlma.name = f"ZL_{zlma.name}" zlma.category = "overlap" diff --git a/pandas_ta/statistics/entropy.py b/pandas_ta/statistics/entropy.py index 175bda2..27f33fd 100644 --- a/pandas_ta/statistics/entropy.py +++ b/pandas_ta/statistics/entropy.py @@ -21,6 +21,12 @@ def entropy(close, length=None, base=None, offset=None, **kwargs): if offset != 0: entropy = entropy.shift(offset) + # Handle fills + if "fillna" in kwargs: + entropy.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + entropy.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category entropy.name = f"ENTP_{length}" entropy.category = "statistics" diff --git a/pandas_ta/statistics/kurtosis.py b/pandas_ta/statistics/kurtosis.py index 6db14ba..beaeeb7 100644 --- a/pandas_ta/statistics/kurtosis.py +++ b/pandas_ta/statistics/kurtosis.py @@ -19,6 +19,12 @@ def kurtosis(close, length=None, offset=None, **kwargs): if offset != 0: kurtosis = kurtosis.shift(offset) + # Handle fills + if "fillna" in kwargs: + kurtosis.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + kurtosis.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category kurtosis.name = f"KURT_{length}" kurtosis.category = "statistics" diff --git a/pandas_ta/statistics/mad.py b/pandas_ta/statistics/mad.py index 3319dd7..1d6a379 100644 --- a/pandas_ta/statistics/mad.py +++ b/pandas_ta/statistics/mad.py @@ -24,6 +24,12 @@ def mad(close, length=None, offset=None, **kwargs): if offset != 0: mad = mad.shift(offset) + # Handle fills + if "fillna" in kwargs: + mad.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + mad.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category mad.name = f"MAD_{length}" mad.category = "statistics" diff --git a/pandas_ta/statistics/median.py b/pandas_ta/statistics/median.py index d7bf291..9190b05 100644 --- a/pandas_ta/statistics/median.py +++ b/pandas_ta/statistics/median.py @@ -19,6 +19,12 @@ def median(close, length=None, offset=None, **kwargs): if offset != 0: median = median.shift(offset) + # Handle fills + if "fillna" in kwargs: + median.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + median.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category median.name = f"MEDIAN_{length}" median.category = "statistics" diff --git a/pandas_ta/statistics/quantile.py b/pandas_ta/statistics/quantile.py index 531a0df..70a1d88 100644 --- a/pandas_ta/statistics/quantile.py +++ b/pandas_ta/statistics/quantile.py @@ -20,6 +20,12 @@ def quantile(close, length=None, q=None, offset=None, **kwargs): if offset != 0: quantile = quantile.shift(offset) + # Handle fills + if "fillna" in kwargs: + quantile.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + quantile.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category quantile.name = f"QTL_{length}_{q}" quantile.category = "statistics" diff --git a/pandas_ta/statistics/stdev.py b/pandas_ta/statistics/stdev.py index c5d2703..df54f88 100644 --- a/pandas_ta/statistics/stdev.py +++ b/pandas_ta/statistics/stdev.py @@ -21,6 +21,12 @@ def stdev(close, length=None, ddof=None, offset=None, **kwargs): if offset != 0: stdev = stdev.shift(offset) + # Handle fills + if "fillna" in kwargs: + stdev.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + stdev.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category stdev.name = f"STDEV_{length}" stdev.category = "statistics" diff --git a/pandas_ta/statistics/variance.py b/pandas_ta/statistics/variance.py index 61d35de..c824fb8 100644 --- a/pandas_ta/statistics/variance.py +++ b/pandas_ta/statistics/variance.py @@ -20,6 +20,12 @@ def variance(close, length=None, ddof=None, offset=None, **kwargs): if offset != 0: variance = variance.shift(offset) + # Handle fills + if "fillna" in kwargs: + variance.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + variance.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category variance.name = f"VAR_{length}" variance.category = "statistics" diff --git a/pandas_ta/statistics/zscore.py b/pandas_ta/statistics/zscore.py index cc44f5e..35796f9 100644 --- a/pandas_ta/statistics/zscore.py +++ b/pandas_ta/statistics/zscore.py @@ -23,6 +23,12 @@ def zscore(close, length=None, std=None, offset=None, **kwargs): if offset != 0: zscore = zscore.shift(offset) + # Handle fills + if "fillna" in kwargs: + zscore.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + zscore.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category zscore.name = f"Z_{length}" zscore.category = "statistics" diff --git a/pandas_ta/volatility/pdist.py b/pandas_ta/volatility/pdist.py index 1a75439..978b8e2 100644 --- a/pandas_ta/volatility/pdist.py +++ b/pandas_ta/volatility/pdist.py @@ -21,6 +21,12 @@ def pdist(open_, high, low, close, drift=None, offset=None, **kwargs): if offset != 0: pdist = pdist.shift(offset) + # Handle fills + if "fillna" in kwargs: + pdist.fillna(kwargs["fillna"], inplace=True) + if "fill_method" in kwargs: + pdist.fillna(method=kwargs["fill_method"], inplace=True) + # Name & Category pdist.name = "PDIST" pdist.category = "volatility" diff --git a/pandas_ta/volume/pvr.py b/pandas_ta/volume/pvr.py index bb796db..0fdd57f 100644 --- a/pandas_ta/volume/pvr.py +++ b/pandas_ta/volume/pvr.py @@ -39,14 +39,11 @@ Sources: https://www.fmlabs.com/reference/default.htm?url=PVrank.htm Calculation: - if 'close change' >= 0 and 'volume change' >= 0 - return 1 - if 'close change' >= 0 and 'volume change' < 0 - return 2 - if 'close change' < 0 and 'volume change' >= 0 - return 3 - if 'close change' < 0 and 'volume change' < 0 - return 4 + return 1 if 'close change' >= 0 and 'volume change' >= 0 + return 2 if 'close change' >= 0 and 'volume change' < 0 + return 3 if 'close change' < 0 and 'volume change' >= 0 + return 4 if 'close change' < 0 and 'volume change' < 0 + Args: close (pd.Series): Series of 'close's volume (pd.Series): Series of 'volume's diff --git a/setup.py b/setup.py index 3b22ee8..9772051 100644 --- a/setup.py +++ b/setup.py @@ -18,7 +18,7 @@ setup( "pandas_ta.volatility", "pandas_ta.volume" ], - version=".".join(("0", "2", "72b")), + version=".".join(("0", "2", "73b")), description=long_description, long_description=long_description, author="Kevin Johnson",