diff --git a/README.md b/README.md index bc54e39..f1d2e41 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,7 @@ Last but not least, `talipp` is a community project and therefore open to any su ### What's new in the recent versions -- Normalized Average True Range indicator -- Rogers-Satchell volatility indicator +- Williams %R indicator - auto-sampling of input values For the full history of changes see [Release Notes](https://github.com/nardew/talipp/releases). @@ -86,6 +85,7 @@ For the full history of changes see [Release Notes](https://github.com/nardew/ta - Ultimate Oscillator (UO) - Vortex Indicator (VTX) - Volume Weighted Average Price (VWAP) +- Williams %R - ZigZag ### Installation diff --git a/docs/indicator-catalogue.md b/docs/indicator-catalogue.md index 94ffc0f..bdfad09 100644 --- a/docs/indicator-catalogue.md +++ b/docs/indicator-catalogue.md @@ -1,65 +1,66 @@ # Indicator catalogue -| Name | Full name | Description | -|-------------------------------------------------------------------------|---------------------------------------|----------------------------------------------------------------------------------------------------------------| -| [ADL][talipp.indicators.AccuDist.AccuDist] | Accumulation Distribution Line | [](https://school.stockcharts.com/doku.php?id=technical_indicators:accumulation_distribution_line) | -| [ADX][talipp.indicators.ADX.ADX] | Average Directional Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:average_directional_index_adx) | -| [ALMA][talipp.indicators.ALMA.ALMA] | Arnaud Legoux Moving Average | | -| [AO][talipp.indicators.AO.AO] | Awesome Oscillator | [](https://www.babypips.com/forexpedia/awesome-oscillator) | -| [Aroon][talipp.indicators.Aroon.Aroon] | Aroon Indicator | [](https://www.investopedia.com/terms/a/aroon.asp) | -| [ATR][talipp.indicators.ATR.ATR] | Average True Range | [](https://school.stockcharts.com/doku.php?id=technical_indicators:average_true_range_atr) | -| [BB][talipp.indicators.BB.BB] | Bollinger Bands | [](https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands) | -| [BOP][talipp.indicators.BOP.BOP] | Balance of Power | [](https://school.stockcharts.com/doku.php?id=technical_indicators:balance_of_power) | -| [CCI][talipp.indicators.CCI.CCI] | Commodity Channel Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:commodity_channel_index_cci) | -| [ChaikinOsc][talipp.indicators.ChaikinOsc.ChaikinOsc] | Chaikin Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:chaikin_oscillator) | -| [ChandeKrollStop][talipp.indicators.ChandeKrollStop.ChandeKrollStop] | Chande Kroll Stop | [](https://trendspider.com/learning-center/chande-kroll-stop-a-comprehensive-guide/) | -| [CHOP][talipp.indicators.CHOP.CHOP] | Choppiness Index | [](https://www.incrediblecharts.com/indicators/choppiness-index.php) | -| [CoppockCurve][talipp.indicators.CoppockCurve.CoppockCurve] | Coppock Curve | [](https://school.stockcharts.com/doku.php?id=technical_indicators:coppock_curve) | -| [DEMA][talipp.indicators.DEMA.DEMA] | Double Exponential Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:dema) | -| [DonchianChannels][talipp.indicators.DonchianChannels.DonchianChannels] | Donchian Channels | [](https://www.investopedia.com/terms/d/donchianchannels.asp) | -| [DPO][talipp.indicators.DPO.DPO] | Detrended Price Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:detrended_price_osci) | -| [EMA][talipp.indicators.EMA.EMA] | Exponential Moving Average | [](https://www.investopedia.com/terms/e/ema.asp) | -| [EMV][talipp.indicators.EMV.EMV] | Ease of Movement | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ease_of_movement_emv) | -| [ForceIndex][talipp.indicators.ForceIndex.ForceIndex] | Force Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:force_index) | -| [HMA][talipp.indicators.HMA.HMA] | Hull Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:hull_moving_average) | -| [IBS][talipp.indicators.IBS.IBS] | Internal Bar Strength | [](https://www.coingecko.com/learn/internal-bar-strength-ibs) | -| [IchimokuCloud][talipp.indicators.Ichimoku.Ichimoku] | Ichimoku Cloud | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ichimoku_cloud) | -| [KAMA][talipp.indicators.KAMA.KAMA] | Kauffman's Adaptive Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:kaufman_s_adaptive_moving_average) | -| [KeltnerChannels][talipp.indicators.KeltnerChannels.KeltnerChannels] | Keltner Channels | [](https://school.stockcharts.com/doku.php?id=technical_indicators:keltner_channels) | -| [KST][talipp.indicators.KST.KST] | Know Sure Thing | [](https://school.stockcharts.com/doku.php?id=technical_indicators:know_sure_thing_kst) | -| [KVO][talipp.indicators.KVO.KVO] | Klinger Volume Oscilator | [](https://www.investopedia.com/terms/k/klingeroscillator.asp) | -| [MACD][talipp.indicators.MACD.MACD] | Moving Average Convergence Divergence | [](https://school.stockcharts.com/doku.php?id=technical_indicators:moving_average_convergence_divergence_macd) | -| [MassIndex][talipp.indicators.MassIndex.MassIndex] | Mass Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:mass_index) | -| [McGinleyDynamic][talipp.indicators.McGinleyDynamic.McGinleyDynamic] | McGinley Dynamic | [](https://www.investopedia.com/terms/m/mcginley-dynamic.asp) | -| [MeanDev][talipp.indicators.MeanDev.MeanDev] | Mean Deviation | [](https://school.stockcharts.com/doku.php?id=technical_indicators:accumulation_distribution_line) | -| [NATR][talipp.indicators.NATR.NATR] | Normalized Average True Range | [](https://www.macroption.com/normalized-atr/) | -| [OBV][talipp.indicators.OBV.OBV] | On-balacen Volume | [](https://school.stockcharts.com/doku.php?id=technical_indicators:on_balance_volume_obv) | -| [ParabolicSAR][talipp.indicators.ParabolicSAR.ParabolicSAR] | Parabolic Stop and Reverse | [](https://school.stockcharts.com/doku.php?id=technical_indicators:parabolic_sar) | -| [PivotsHL][talipp.indicators.PivotsHL.PivotsHL][^1][^2] | Pivot High Low Points | | -| [ROC][talipp.indicators.ROC.ROC] | Rate of Change | [](https://school.stockcharts.com/doku.php?id=technical_indicators:rate_of_change_roc_and_momentum) | -| [RogersSatchell][talipp.indicators.RogersSatchell.RogersSatchell] | Rogers-Satchell volatility indicator | [](https://portfolioslab.com/tools/rogers-satchell) | -| [RSI][talipp.indicators.RSI.RSI] | Relative Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:relative_strength_index_rsi) | -| [SFX][talipp.indicators.SFX.SFX] | | | -| [SMA][talipp.indicators.SMA.SMA] | Simple Moving Average | [](https://www.investopedia.com/terms/s/sma.asp) | -| [SMMA][talipp.indicators.SMMA.SMMA] | Smoothed Simple Moving Average | | -| [SOBV][talipp.indicators.SOBV.SOBV] | Smoothed On-Balance Volume | | -| [STC][talipp.indicators.STC.STC] | Schaff Trend Cycle | [](https://howtotrade.com/indicators/schaff-trend-cycle/) | -| [StdDev][talipp.indicators.StdDev.StdDev] | Standard Deviation | | -| [Stoch][talipp.indicators.Stoch.Stoch] | Stochastic Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:stochastic_oscillator_fast_slow_and_full) | -| [StochRSI][talipp.indicators.StochRSI.StochRSI] | Stochastic Relative Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:stochrsi) | -| [SuperTrend][talipp.indicators.SuperTrend.SuperTrend] | Super Trend | [](https://www.investopedia.com/supertrend-indicator-7976167) | -| [T3][talipp.indicators.T3.T3] | T3 Moving Average | [](https://www.tradingpedia.com/forex-trading-indicators/t3-moving-average-indicator/) | -| [TEMA][talipp.indicators.TEMA.TEMA] | Triple Exponential Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:tema) | -| [TRIX][talipp.indicators.TRIX.TRIX] | TRIX | [](https://school.stockcharts.com/doku.php?id=technical_indicators:trix) | -| [TSI][talipp.indicators.TSI.TSI] | True Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:true_strength_index) | -| [TTM][talipp.indicators.TTM.TTM] | TTM Squeeze | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ttm_squeeze) | -| [UO][talipp.indicators.UO.UO] | Ultimate Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ultimate_oscillator) | -| [VTX][talipp.indicators.VTX.VTX] | Vortex Indicator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:vortex_indicator) | -| [VWAP][talipp.indicators.VWAP.VWAP] | Volume-weighted Average Price | [](https://school.stockcharts.com/doku.php?id=technical_indicators:vwap_intraday) | -| [VWMA][talipp.indicators.VWMA.VWMA] | Volume-weighted Moving Average | [](https://www.tradingsetupsreview.com/volume-weighted-moving-average-vwma/) | -| [WMA][talipp.indicators.WMA.WMA] | Weighted Moving Average | [](https://fxopen.com/blog/en/what-is-a-weighted-moving-average-and-how-do-you-calculate-it/) | -| [ZigZag][talipp.indicators.ZigZag.ZigZag][^1] | ZigZag | [](https://school.stockcharts.com/doku.php?id=technical_indicators:zigzag) | -| [ZLEMA][talipp.indicators.ZLEMA.ZLEMA] | Zero-lag Exponential Moving Average | [](https://en.wikipedia.org/wiki/Zero_lag_exponential_moving_average) | +| Name | Full name | Description | +|-------------------------------------------------------------------------|---------------------------------------|-----------------------------------------------------------------------------------------------------------------------------| +| [ADL][talipp.indicators.AccuDist.AccuDist] | Accumulation Distribution Line | [](https://school.stockcharts.com/doku.php?id=technical_indicators:accumulation_distribution_line) | +| [ADX][talipp.indicators.ADX.ADX] | Average Directional Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:average_directional_index_adx) | +| [ALMA][talipp.indicators.ALMA.ALMA] | Arnaud Legoux Moving Average | | +| [AO][talipp.indicators.AO.AO] | Awesome Oscillator | [](https://www.babypips.com/forexpedia/awesome-oscillator) | +| [Aroon][talipp.indicators.Aroon.Aroon] | Aroon Indicator | [](https://www.investopedia.com/terms/a/aroon.asp) | +| [ATR][talipp.indicators.ATR.ATR] | Average True Range | [](https://school.stockcharts.com/doku.php?id=technical_indicators:average_true_range_atr) | +| [BB][talipp.indicators.BB.BB] | Bollinger Bands | [](https://school.stockcharts.com/doku.php?id=technical_indicators:bollinger_bands) | +| [BOP][talipp.indicators.BOP.BOP] | Balance of Power | [](https://school.stockcharts.com/doku.php?id=technical_indicators:balance_of_power) | +| [CCI][talipp.indicators.CCI.CCI] | Commodity Channel Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:commodity_channel_index_cci) | +| [ChaikinOsc][talipp.indicators.ChaikinOsc.ChaikinOsc] | Chaikin Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:chaikin_oscillator) | +| [ChandeKrollStop][talipp.indicators.ChandeKrollStop.ChandeKrollStop] | Chande Kroll Stop | [](https://trendspider.com/learning-center/chande-kroll-stop-a-comprehensive-guide/) | +| [CHOP][talipp.indicators.CHOP.CHOP] | Choppiness Index | [](https://www.incrediblecharts.com/indicators/choppiness-index.php) | +| [CoppockCurve][talipp.indicators.CoppockCurve.CoppockCurve] | Coppock Curve | [](https://school.stockcharts.com/doku.php?id=technical_indicators:coppock_curve) | +| [DEMA][talipp.indicators.DEMA.DEMA] | Double Exponential Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:dema) | +| [DonchianChannels][talipp.indicators.DonchianChannels.DonchianChannels] | Donchian Channels | [](https://www.investopedia.com/terms/d/donchianchannels.asp) | +| [DPO][talipp.indicators.DPO.DPO] | Detrended Price Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:detrended_price_osci) | +| [EMA][talipp.indicators.EMA.EMA] | Exponential Moving Average | [](https://www.investopedia.com/terms/e/ema.asp) | +| [EMV][talipp.indicators.EMV.EMV] | Ease of Movement | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ease_of_movement_emv) | +| [ForceIndex][talipp.indicators.ForceIndex.ForceIndex] | Force Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:force_index) | +| [HMA][talipp.indicators.HMA.HMA] | Hull Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:hull_moving_average) | +| [IBS][talipp.indicators.IBS.IBS] | Internal Bar Strength | [](https://www.coingecko.com/learn/internal-bar-strength-ibs) | +| [IchimokuCloud][talipp.indicators.Ichimoku.Ichimoku] | Ichimoku Cloud | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ichimoku_cloud) | +| [KAMA][talipp.indicators.KAMA.KAMA] | Kauffman's Adaptive Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:kaufman_s_adaptive_moving_average) | +| [KeltnerChannels][talipp.indicators.KeltnerChannels.KeltnerChannels] | Keltner Channels | [](https://school.stockcharts.com/doku.php?id=technical_indicators:keltner_channels) | +| [KST][talipp.indicators.KST.KST] | Know Sure Thing | [](https://school.stockcharts.com/doku.php?id=technical_indicators:know_sure_thing_kst) | +| [KVO][talipp.indicators.KVO.KVO] | Klinger Volume Oscilator | [](https://www.investopedia.com/terms/k/klingeroscillator.asp) | +| [MACD][talipp.indicators.MACD.MACD] | Moving Average Convergence Divergence | [](https://school.stockcharts.com/doku.php?id=technical_indicators:moving_average_convergence_divergence_macd) | +| [MassIndex][talipp.indicators.MassIndex.MassIndex] | Mass Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:mass_index) | +| [McGinleyDynamic][talipp.indicators.McGinleyDynamic.McGinleyDynamic] | McGinley Dynamic | [](https://www.investopedia.com/terms/m/mcginley-dynamic.asp) | +| [MeanDev][talipp.indicators.MeanDev.MeanDev] | Mean Deviation | [](https://school.stockcharts.com/doku.php?id=technical_indicators:accumulation_distribution_line) | +| [NATR][talipp.indicators.NATR.NATR] | Normalized Average True Range | [](https://www.macroption.com/normalized-atr/) | +| [OBV][talipp.indicators.OBV.OBV] | On-balacen Volume | [](https://school.stockcharts.com/doku.php?id=technical_indicators:on_balance_volume_obv) | +| [ParabolicSAR][talipp.indicators.ParabolicSAR.ParabolicSAR] | Parabolic Stop and Reverse | [](https://school.stockcharts.com/doku.php?id=technical_indicators:parabolic_sar) | +| [PivotsHL][talipp.indicators.PivotsHL.PivotsHL][^1][^2] | Pivot High Low Points | | +| [ROC][talipp.indicators.ROC.ROC] | Rate of Change | [](https://school.stockcharts.com/doku.php?id=technical_indicators:rate_of_change_roc_and_momentum) | +| [RogersSatchell][talipp.indicators.RogersSatchell.RogersSatchell] | Rogers-Satchell volatility indicator | [](https://portfolioslab.com/tools/rogers-satchell) | +| [RSI][talipp.indicators.RSI.RSI] | Relative Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:relative_strength_index_rsi) | +| [SFX][talipp.indicators.SFX.SFX] | | | +| [SMA][talipp.indicators.SMA.SMA] | Simple Moving Average | [](https://www.investopedia.com/terms/s/sma.asp) | +| [SMMA][talipp.indicators.SMMA.SMMA] | Smoothed Simple Moving Average | | +| [SOBV][talipp.indicators.SOBV.SOBV] | Smoothed On-Balance Volume | | +| [STC][talipp.indicators.STC.STC] | Schaff Trend Cycle | [](https://howtotrade.com/indicators/schaff-trend-cycle/) | +| [StdDev][talipp.indicators.StdDev.StdDev] | Standard Deviation | | +| [Stoch][talipp.indicators.Stoch.Stoch] | Stochastic Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:stochastic_oscillator_fast_slow_and_full) | +| [StochRSI][talipp.indicators.StochRSI.StochRSI] | Stochastic Relative Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:stochrsi) | +| [SuperTrend][talipp.indicators.SuperTrend.SuperTrend] | Super Trend | [](https://www.investopedia.com/supertrend-indicator-7976167) | +| [T3][talipp.indicators.T3.T3] | T3 Moving Average | [](https://www.tradingpedia.com/forex-trading-indicators/t3-moving-average-indicator/) | +| [TEMA][talipp.indicators.TEMA.TEMA] | Triple Exponential Moving Average | [](https://school.stockcharts.com/doku.php?id=technical_indicators:tema) | +| [TRIX][talipp.indicators.TRIX.TRIX] | TRIX | [](https://school.stockcharts.com/doku.php?id=technical_indicators:trix) | +| [TSI][talipp.indicators.TSI.TSI] | True Strength Index | [](https://school.stockcharts.com/doku.php?id=technical_indicators:true_strength_index) | +| [TTM][talipp.indicators.TTM.TTM] | TTM Squeeze | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ttm_squeeze) | +| [UO][talipp.indicators.UO.UO] | Ultimate Oscillator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:ultimate_oscillator) | +| [VTX][talipp.indicators.VTX.VTX] | Vortex Indicator | [](https://school.stockcharts.com/doku.php?id=technical_indicators:vortex_indicator) | +| [VWAP][talipp.indicators.VWAP.VWAP] | Volume-weighted Average Price | [](https://school.stockcharts.com/doku.php?id=technical_indicators:vwap_intraday) | +| [VWMA][talipp.indicators.VWMA.VWMA] | Volume-weighted Moving Average | [](https://www.tradingsetupsreview.com/volume-weighted-moving-average-vwma/) | +| [Williams %R][talipp.indicators.Williams.Williams] | Williams %R | [](https://chartschool.stockcharts.com/table-of-contents/technical-indicators-and-overlays/technical-indicators/williams-r) | +| [WMA][talipp.indicators.WMA.WMA] | Weighted Moving Average | [](https://fxopen.com/blog/en/what-is-a-weighted-moving-average-and-how-do-you-calculate-it/) | +| [ZigZag][talipp.indicators.ZigZag.ZigZag][^1] | ZigZag | [](https://school.stockcharts.com/doku.php?id=technical_indicators:zigzag) | +| [ZLEMA][talipp.indicators.ZLEMA.ZLEMA] | Zero-lag Exponential Moving Average | [](https://en.wikipedia.org/wiki/Zero_lag_exponential_moving_average) | Request a new indicator via [GitHub Issues](https://github.com/nardew/talipp/issues/new). diff --git a/examples/binance_online.py b/examples/binance_online.py index 75e6e84..d814748 100644 --- a/examples/binance_online.py +++ b/examples/binance_online.py @@ -7,11 +7,10 @@ from cryptoxlib.version_conversions import async_run from talipp.indicators import AccuDist, ADX, ALMA, AO, Aroon, ATR, BB, BOP, CCI, ChaikinOsc, ChandeKrollStop, CHOP, \ - CoppockCurve, DEMA, DonchianChannels, DPO, EMA, EMV, ForceIndex, HMA, IBS, Ichimoku, \ - KAMA, KeltnerChannels, KST, KVO, MACD, MassIndex, McGinleyDynamic, MeanDev, NATR, OBV, ROC, RogersSatchell, RSI, \ - ParabolicSAR, \ - SFX, SMA, SMMA, SOBV, STC, StdDev, \ - Stoch, StochRSI, SuperTrend, T3, TEMA, TRIX, TSI, TTM, UO, VTX, VWAP, VWMA, WMA, ZigZag, ZLEMA + CoppockCurve, DEMA, DonchianChannels, DPO, EMA, EMV, ForceIndex, HMA, IBS, Ichimoku, KAMA, KeltnerChannels, KST, \ + KVO, MACD, MassIndex, McGinleyDynamic, MeanDev, NATR, OBV, ROC, RogersSatchell, RSI, ParabolicSAR, SFX, SMA, SMMA, \ + SOBV, STC, StdDev, Stoch, StochRSI, SuperTrend, T3, TEMA, TRIX, TSI, TTM, UO, VTX, VWAP, VWMA, Williams, WMA, \ + ZigZag, ZLEMA from talipp.ohlcv import OHLCV @@ -85,6 +84,7 @@ async def run(): print(f'VTX: {VTX(14, ohlcv)[-1]}') print(f'VWAP: {VWAP(ohlcv)[-1]}') print(f'VWMA: {VWMA(20, ohlcv)[-1]}') + print(f'Williams: {Williams(14, ohlcv)[-5:]}') print(f'WMA: {WMA(9, close)[-1]}') print(f'ZigZag: {ZigZag(0.1, 4, ohlcv)[-15:]}') print(f'ZLEMA: {ZLEMA(14, close)[-1]}') diff --git a/examples/indicators.py b/examples/indicators.py index c405081..885ef76 100644 --- a/examples/indicators.py +++ b/examples/indicators.py @@ -3,7 +3,7 @@ from talipp.indicators import AccuDist, ADX, ALMA, AO, Aroon, ATR, BB, BOP, CCI, ChaikinOsc, ChandeKrollStop, CHOP, \ CoppockCurve, DEMA, DonchianChannels, DPO, EMA, EMV, ForceIndex, HMA, IBS, Ichimoku, KAMA, KeltnerChannels, KST, KVO, \ MACD, MassIndex, MeanDev, NATR, OBV, ROC, RogersSatchell, RSI, ParabolicSAR, SFX, SMA, SMMA, SOBV, STC, StdDev, Stoch, StochRSI, \ - SuperTrend, T3, TEMA, TRIX, TSI, TTM, UO, VTX, VWAP, VWMA, WMA, ZigZag, ZLEMA + SuperTrend, T3, TEMA, TRIX, TSI, TTM, UO, VTX, VWAP, VWMA, Williams, WMA, ZigZag, ZLEMA from talipp.ohlcv import OHLCVFactory if __name__ == "__main__": @@ -71,6 +71,7 @@ print(f'VTX: {VTX(14, ohlcv)[-1]}') print(f'VWAP: {VWAP(ohlcv)[-1]}') print(f'VWMA: {VWMA(20, ohlcv)[-1]}') + print(f'Williams: {Williams(9, ohlcv)[-1]}') print(f'WMA: {WMA(9, close)[-1]}') print(f'ZigZag: {ZigZag(0.1, 10, ohlcv)[-5:]}') print(f'ZLEMA: {ZLEMA(9, close)[-1]}') diff --git a/talipp/indicators/Williams.py b/talipp/indicators/Williams.py new file mode 100644 index 0000000..d020477 --- /dev/null +++ b/talipp/indicators/Williams.py @@ -0,0 +1,54 @@ +from typing import List, Any + +from talipp.indicator_util import has_valid_values +from talipp.indicators.Indicator import Indicator, InputModifierType +from talipp.input import SamplingPeriodType +from talipp.ohlcv import OHLCV + + +class Williams(Indicator): + """Williams %R. + + Input type: [OHLCV][talipp.ohlcv.OHLCV] + + Output type: `float` + + Args: + period: Period. + input_values: List of input values. + input_indicator: Input indicator. + input_modifier: Input modifier. + input_sampling: Input sampling type. + """ + + def __init__(self, period: int, + input_values: List[OHLCV] = None, + input_indicator: Indicator = None, + input_modifier: InputModifierType = None, + input_sampling: SamplingPeriodType = None): + super().__init__(input_modifier=input_modifier, + input_sampling=input_sampling) + + self.period = period + + self.initialize(input_values, input_indicator) + + def _calculate_new_value(self) -> Any: + if not has_valid_values(self.input_values, self.period): + return None + + input_period = self.input_values[-1 * self.period:] + + highs = [value.high for value in input_period if value.high is not None] + lows = [value.low for value in input_period if value.low is not None] + + max_high = max(highs) + min_low = min(lows) + + if max_high == min_low: + if has_valid_values(self.output_values, 1): + return self.output_values[-1] + else: + return None + + return -100.0 * (max_high - self.input_values[-1].close) / (max_high - min_low) diff --git a/talipp/indicators/__init__.py b/talipp/indicators/__init__.py index 88383fc..194a87b 100644 --- a/talipp/indicators/__init__.py +++ b/talipp/indicators/__init__.py @@ -54,6 +54,7 @@ from .VTX import VTX as VTX from .VWAP import VWAP as VWAP from .VWMA import VWMA as VWMA +from .Williams import Williams as Williams from .WMA import WMA as WMA from .ZigZag import ZigZag as ZigZag from .ZLEMA import ZLEMA as ZLEMA @@ -115,6 +116,7 @@ "VTX", "VWAP", "VWMA", + "Williams", "WMA", "ZigZag", "ZLEMA" diff --git a/test/test_Williams.py b/test/test_Williams.py new file mode 100644 index 0000000..b58810d --- /dev/null +++ b/test/test_Williams.py @@ -0,0 +1,32 @@ +import unittest + +from talipp.indicators import Williams + +from TalippTest import TalippTest + + +class Test(TalippTest): + def setUp(self) -> None: + self.input_values = list(TalippTest.OHLCV_TMPL) + + def test_init(self): + ind = Williams(14, self.input_values) + + print(ind) + + self.assertAlmostEqual(ind[-3], -11.065573, places = 5) + self.assertAlmostEqual(ind[-2], -25.819672, places = 5) + self.assertAlmostEqual(ind[-1], -35.245901, places = 5) + + def test_update(self): + self.assertIndicatorUpdate(Williams(14, self.input_values)) + + def test_delete(self): + self.assertIndicatorDelete(Williams(14, self.input_values)) + + def test_purge_oldest(self): + self.assertIndicatorPurgeOldest(Williams(143, self.input_values)) + + +if __name__ == '__main__': + unittest.main()