mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-08-11 11:22:48 +08:00
Merge branch 'pr/533' into development
This commit is contained in:
@@ -53,7 +53,7 @@ def stoch(
|
||||
fill_method (value, optional): Type of fill method
|
||||
|
||||
Returns:
|
||||
pd.DataFrame: %K, %D columns.
|
||||
pd.DataFrame: %K, %D, Histogram columns.
|
||||
"""
|
||||
# Validate
|
||||
k = v_pos_default(k, 14)
|
||||
@@ -94,27 +94,37 @@ def stoch(
|
||||
stochk_fvi = stoch_k.loc[stoch_k.first_valid_index():, ]
|
||||
stoch_d = ma(mamode, stochk_fvi, length=d)
|
||||
|
||||
stoch_h = stoch_k - stoch_d # Histogram
|
||||
|
||||
# Offset
|
||||
if offset != 0:
|
||||
stoch_k = stoch_k.shift(offset)
|
||||
stoch_d = stoch_d.shift(offset)
|
||||
stoch_h = stoch_h.shift(offset)
|
||||
|
||||
# Fill
|
||||
if "fillna" in kwargs:
|
||||
stoch_k.fillna(kwargs["fillna"], inplace=True)
|
||||
stoch_d.fillna(kwargs["fillna"], inplace=True)
|
||||
stoch_h.fillna(kwargs["fillna"], inplace=True)
|
||||
if "fill_method" in kwargs:
|
||||
stoch_k.fillna(method=kwargs["fill_method"], inplace=True)
|
||||
stoch_d.fillna(method=kwargs["fill_method"], inplace=True)
|
||||
stoch_h.fillna(method=kwargs["fill_method"], inplace=True)
|
||||
|
||||
# Name and Category
|
||||
_name = "STOCH"
|
||||
_props = f"_{k}_{d}_{smooth_k}"
|
||||
stoch_k.name = f"{_name}k{_props}"
|
||||
stoch_d.name = f"{_name}d{_props}"
|
||||
stoch_k.category = stoch_d.category = "momentum"
|
||||
stoch_h.name = f"{_name}h{_props}"
|
||||
stoch_k.category = stoch_d.category = stoch_h.category = "momentum"
|
||||
|
||||
data = {stoch_k.name: stoch_k, stoch_d.name: stoch_d}
|
||||
data = {
|
||||
stoch_k.name: stoch_k,
|
||||
stoch_d.name: stoch_d,
|
||||
stoch_h.name: stoch_h
|
||||
}
|
||||
df = DataFrame(data, index=close.index)
|
||||
df.name = f"{_name}{_props}"
|
||||
df.category = stoch_k.category
|
||||
|
||||
@@ -97,7 +97,10 @@ def stochf(
|
||||
stochf_d.name = f"{_name}d{_props}"
|
||||
stochf_k.category = stochf_d.category = "momentum"
|
||||
|
||||
data = {stochf_k.name: stochf_k, stochf_d.name: stochf_d}
|
||||
data = {
|
||||
stochf_k.name: stochf_k,
|
||||
stochf_d.name: stochf_d
|
||||
}
|
||||
df = DataFrame(data, index=close.index)
|
||||
df.name = f"{_name}{_props}"
|
||||
df.category = stochf_k.category
|
||||
|
||||
@@ -94,7 +94,10 @@ def stochrsi(
|
||||
stochrsi_d.name = f"{_name}d{_props}"
|
||||
stochrsi_k.category = stochrsi_d.category = "momentum"
|
||||
|
||||
data = {stochrsi_k.name: stochrsi_k, stochrsi_d.name: stochrsi_d}
|
||||
data = {
|
||||
stochrsi_k.name: stochrsi_k,
|
||||
stochrsi_d.name: stochrsi_d
|
||||
}
|
||||
df = DataFrame(data)
|
||||
df.name = f"{_name}{_props}"
|
||||
df.category = stochrsi_k.category
|
||||
|
||||
@@ -91,10 +91,11 @@ def yf(ticker: str, **kwargs) -> DataFrame:
|
||||
df = DataFrame()
|
||||
try:
|
||||
df = yfd.history(
|
||||
period=period,
|
||||
interval=interval,
|
||||
proxy=proxy,
|
||||
**kwargs)
|
||||
period=period,
|
||||
interval=interval,
|
||||
proxy=proxy,
|
||||
**kwargs
|
||||
)
|
||||
except BaseException:
|
||||
if yfra.__version__ == "0.1.60":
|
||||
_yfv1_60 = f"[!] If history is not downloading, see yfinance Issue #760 by user djl0.\n" + \
|
||||
|
||||
@@ -222,7 +222,7 @@ class TestMomentumExtension(TestCase):
|
||||
def test_stoch_ext(self):
|
||||
self.data.ta.stoch(append=True)
|
||||
self.assertIsInstance(self.data, DataFrame)
|
||||
self.assertEqual(list(self.data.columns[-2:]), ["STOCHk_14_3_3", "STOCHd_14_3_3"])
|
||||
self.assertEqual(list(self.data.columns[-3:]), ["STOCHk_14_3_3", "STOCHd_14_3_3", "STOCHh_14_3_3"])
|
||||
|
||||
def test_stochf_ext(self):
|
||||
self.data.ta.stochf(append=True)
|
||||
|
||||
Reference in New Issue
Block a user