mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-07-18 12:30:18 +08:00
all volume indicators fully typed
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta import Imports
|
||||
from pandas_ta.utils import get_offset, non_zero_range, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def ad(high, low, close, volume, open_=None, talib=None, offset=None, **kwargs):
|
||||
def ad(high: Series, low: Series, close: Series, volume: Series, open_: Series = None, talib: bool = None,
|
||||
offset: int = None, **kwargs) -> Series:
|
||||
"""Accumulation/Distribution (AD)
|
||||
|
||||
Accumulation/Distribution indicator utilizes the relative position
|
||||
@@ -17,7 +19,7 @@ def ad(high, low, close, volume, open_=None, talib=None, offset=None, **kwargs):
|
||||
low (pd.Series): Series of 'low's
|
||||
close (pd.Series): Series of 'close's
|
||||
volume (pd.Series): Series of 'volume's
|
||||
open (pd.Series): Series of 'open's
|
||||
open_ (pd.Series): Series of 'open's
|
||||
talib (bool): If TA Lib is installed and talib is True, Returns the TA Lib
|
||||
version. Default: True
|
||||
offset (int): How many periods to offset the result. Default: 0
|
||||
|
||||
@@ -3,9 +3,11 @@ from .ad import ad
|
||||
from pandas_ta import Imports
|
||||
from pandas_ta.overlap import ema
|
||||
from pandas_ta.utils import get_offset, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def adosc(high, low, close, volume, open_=None, fast=None, slow=None, talib=None, offset=None, **kwargs):
|
||||
def adosc(high: Series, low: Series, close: Series, volume: Series, open_: Series = None, fast: int = None,
|
||||
slow: int = None, talib: bool = None, offset: int = None, **kwargs) -> Series:
|
||||
"""Accumulation/Distribution Oscillator or Chaikin Oscillator
|
||||
|
||||
Accumulation/Distribution Oscillator indicator utilizes
|
||||
@@ -19,7 +21,7 @@ def adosc(high, low, close, volume, open_=None, fast=None, slow=None, talib=None
|
||||
high (pd.Series): Series of 'high's
|
||||
low (pd.Series): Series of 'low's
|
||||
close (pd.Series): Series of 'close's
|
||||
open (pd.Series): Series of 'open's
|
||||
open_ (pd.Series): Series of 'open's
|
||||
volume (pd.Series): Series of 'volume's
|
||||
fast (int): The short period. Default: 12
|
||||
slow (int): The long period. Default: 26
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas import DataFrame
|
||||
from pandas import DataFrame, Series
|
||||
from .obv import obv
|
||||
from pandas_ta.overlap import ma
|
||||
from pandas_ta.trend import long_run, short_run
|
||||
from pandas_ta.utils import get_offset, verify_series
|
||||
|
||||
|
||||
def aobv(close, volume, fast=None, slow=None, max_lookback=None, min_lookback=None, mamode=None, offset=None, **kwargs):
|
||||
def aobv(close: Series, volume: Series, fast: int = None, slow: int = None, max_lookback: int = None,
|
||||
min_lookback: int = None, mamode: str = None, offset: int = None, **kwargs) -> DataFrame:
|
||||
"""Archer On Balance Volume (AOBV)
|
||||
|
||||
Archer On Balance Volume (AOBV) developed by Kevin Johnson provides
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.utils import get_offset, non_zero_range, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def cmf(high, low, close, volume, open_=None, length=None, offset=None, **kwargs):
|
||||
def cmf(high: Series, low: Series, close: Series, volume: Series, open_: Series = None, length: int = None,
|
||||
offset: int = None, **kwargs) -> Series:
|
||||
"""Chaikin Money Flow (CMF)
|
||||
|
||||
Chailin Money Flow measures the amount of money flow volume over a specific
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.overlap import ma
|
||||
from pandas_ta.utils import get_drift, get_offset, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def efi(close, volume, length=None, mamode=None, drift=None, offset=None, **kwargs):
|
||||
def efi(close: Series, volume: Series, length: int = None, mamode: str = None, drift: int = None, offset: int = None,
|
||||
**kwargs) -> Series:
|
||||
"""Elder's Force Index (EFI)
|
||||
|
||||
Elder's Force Index measures the power behind a price movement using price
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.overlap import hl2, sma
|
||||
from pandas_ta.utils import get_drift, get_offset, non_zero_range, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def eom(high, low, close, volume, length=None, divisor=None, drift=None, offset=None, **kwargs):
|
||||
def eom(high: Series, low: Series, close: Series, volume: Series, length: int = None, divisor=None, drift: int = None,
|
||||
offset: int = None, **kwargs) -> Series:
|
||||
"""Ease of Movement (EOM)
|
||||
|
||||
Ease of Movement is a volume based oscillator that is designed to measure the
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas import DataFrame
|
||||
from pandas import DataFrame, Series
|
||||
from pandas_ta.overlap import hlc3, ma
|
||||
from pandas_ta.utils import get_drift, get_offset, signed_series, verify_series
|
||||
|
||||
|
||||
def kvo(high, low, close, volume, fast=None, slow=None, signal=None, mamode=None, drift=None, offset=None, **kwargs):
|
||||
def kvo(high: Series, low: Series, close: Series, volume: Series, fast: int = None, slow: int = None,
|
||||
signal=None, mamode: str = None, drift: int = None, offset: int = None, **kwargs) -> DataFrame:
|
||||
"""Klinger Volume Oscillator (KVO)
|
||||
|
||||
This indicator was developed by Stephen J. Klinger. It is designed to predict
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas import DataFrame
|
||||
from pandas import DataFrame, Series
|
||||
from pandas_ta import Imports
|
||||
from pandas_ta.overlap import hlc3
|
||||
from pandas_ta.utils import get_drift, get_offset, verify_series
|
||||
|
||||
|
||||
def mfi(high, low, close, volume, length=None, talib=None, drift=None, offset=None, **kwargs):
|
||||
def mfi(high: Series, low: Series, close: Series, volume: Series, length: int = None, talib: bool = None,
|
||||
drift: int = None, offset: int = None, **kwargs) -> Series:
|
||||
"""Money Flow Index (MFI)
|
||||
|
||||
Money Flow Index is an oscillator indicator that is used to measure buying and
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.momentum import roc
|
||||
from pandas_ta.utils import get_offset, signed_series, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def nvi(close, volume, length=None, initial=None, offset=None, **kwargs):
|
||||
def nvi(close: Series, volume: Series, length: int = None, initial: int = None, offset: int = None,
|
||||
**kwargs) -> Series:
|
||||
"""Negative Volume Index (NVI)
|
||||
|
||||
The Negative Volume Index is a cumulative indicator that uses volume change in
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta import Imports
|
||||
from pandas_ta.utils import get_offset, signed_series, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def obv(close, volume, talib=None, offset=None, **kwargs):
|
||||
def obv(close: Series, volume: Series, talib: bool = None, offset: int = None, **kwargs) -> Series:
|
||||
"""On Balance Volume (OBV)
|
||||
|
||||
On Balance Volume is a cumulative indicator to measure buying and selling
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.momentum import roc
|
||||
from pandas_ta.utils import get_offset, signed_series, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def pvi(close, volume, length=None, initial=None, offset=None, **kwargs):
|
||||
def pvi(close: Series, volume: Series, length: int = None, initial: int = None, offset: int = None,
|
||||
**kwargs) -> Series:
|
||||
"""Positive Volume Index (PVI)
|
||||
|
||||
The Positive Volume Index is a cumulative indicator that uses volume change in
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.utils import get_offset, signed_series, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def pvol(close, volume, offset=None, **kwargs):
|
||||
def pvol(close: Series, volume: Series, offset: int = None, **kwargs) -> Series:
|
||||
"""Price-Volume (PVOL)
|
||||
|
||||
Returns a series of the product of price and volume.
|
||||
|
||||
@@ -4,7 +4,7 @@ from numpy import nan as npNaN
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def pvr(close, volume):
|
||||
def pvr(close: Series, volume: Series) -> Series:
|
||||
"""Price Volume Rank
|
||||
|
||||
The Price Volume Rank was developed by Anthony J. Macek and is described in his
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from pandas_ta.momentum import roc
|
||||
from pandas_ta.utils import get_drift, get_offset, verify_series
|
||||
from pandas import Series
|
||||
|
||||
|
||||
def pvt(close, volume, drift=None, offset=None, **kwargs):
|
||||
def pvt(close: Series, volume: Series, drift: int = None, offset: int = None, **kwargs) -> Series:
|
||||
"""Price-Volume Trend (PVT)
|
||||
|
||||
The Price-Volume Trend utilizes the Rate of Change with volume to
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from numpy import array_split
|
||||
from numpy import mean
|
||||
from pandas import cut, concat, DataFrame
|
||||
from pandas import cut, concat, DataFrame, Series
|
||||
from pandas_ta.utils import signed_series, verify_series
|
||||
|
||||
|
||||
def vp(close, volume, width=None, **kwargs):
|
||||
def vp(close: Series, volume: Series, width: int = None, **kwargs) -> DataFrame:
|
||||
"""Volume Profile (VP)
|
||||
|
||||
Calculates the Volume Profile by slicing price into ranges.
|
||||
|
||||
@@ -4,7 +4,8 @@ from pandas_ta.overlap import ma
|
||||
from pandas_ta.utils import get_drift, get_offset, verify_series, signed_series, zero
|
||||
|
||||
|
||||
def wb_tsv(close=None, volume=None, length=None, signal=None, mamode=None, drift=None, offset=None, **kwargs):
|
||||
def wb_tsv(close: Series, volume: Series, length: int = None, signal: int = None, mamode: str = None,
|
||||
drift: int = None, offset: int = None, **kwargs) -> DataFrame:
|
||||
"""Time Segmented Value (TSV)
|
||||
|
||||
TSV is a proprietary technical indicator developed by Worden Brothers Inc.,
|
||||
@@ -44,7 +45,7 @@ def wb_tsv(close=None, volume=None, length=None, signal=None, mamode=None, drift
|
||||
|
||||
# Calculate Result
|
||||
signed_volume = volume * signed_series(close, 1) # > 0
|
||||
signed_volume[signed_volume < 0 ] = -signed_volume # < 0
|
||||
signed_volume[signed_volume < 0] = -signed_volume # < 0
|
||||
signed_volume.apply(zero) # ~ 0
|
||||
cvd = signed_volume * close.diff(drift)
|
||||
|
||||
@@ -81,4 +82,4 @@ def wb_tsv(close=None, volume=None, length=None, signal=None, mamode=None, drift
|
||||
df.name = f"TSV{_props}"
|
||||
df.category = tsv.category
|
||||
|
||||
return df
|
||||
return df
|
||||
|
||||
Reference in New Issue
Block a user