# Technical


[](https://pypi.org/project/technical/)
[](https://github.com/astral-sh/ruff)
Technical is a companion project for Freqtrade.
It includes technical indicators, as well as helpful utilities (e.g. timeframe resampling) aimed to assist in strategy development for Freqtrade.
## What does it do for you
Technical provides easy to use indicators, collected from all over github, as well as custom methods.
Over time we plan to provide a simple API wrapper around TA-Lib, PyTi and others, as we find them. So you have one place, to find 100s of indicators.
### Custom indicators
* Consensus - an indicator which is based on a consensus model, across several indicators
you can easily customize these. It is based on the [TradingView](https://www.tradingview.com/symbols/BTCUSD/technicals/)
buy/sell graph. - MovingAverage Consensus - Oscillator Consensus - Summary Consensus
* [vfi](https://www.tradingview.com/script/MhlDpfdS-Volume-Flow-Indicator-LazyBear/) - a modified version of On-Balance Volume (OBV) created by Markos Katsanos that gives better interpretation of current market trend.
* [mmar](https://www.tradingview.com/script/1JKqmEKy-Madrid-Moving-Average-Ribbon/) - an indicator that uses multiple MAs of different length to categorize the market trend into 4 different categories
* [madrid_sqz](https://www.tradingview.com/script/9bUUSzM3-Madrid-Trend-Squeeze/) - an indicator that uses multiple MAs to categorize the market trend into 6 different categories and to spot a squeeze
* [stc](https://www.investopedia.com/articles/forex/10/schaff-trend-cycle-indicator.asp)
* [ichimoku cloud](http://stockcharts.com/school/doku.php?id=chart_school:trading_strategies:ichimoku_cloud)
* [volume weighted moving average](https://trendspider.com/learning-center/what-is-the-volume-weighted-moving-average-vwma/) - a variation of the Simple Moving Average (SMA) that taking into account both price and volume
* [laguerre](https://www.tradingview.com/script/iUl3zTql-Ehlers-Laguerre-Relative-Strength-Index-CC/) - an indicator developed by John Ehlers as a way to minimize both the noise and lag of the regular RSI
* [vpci](https://www.tradingview.com/script/lmTqKOsa-Indicator-Volume-Price-Confirmation-Indicator-VPCI/)
* [trendlines](https://en.wikipedia.org/wiki/Trend_line_(technical_analysis)) - 2 different algorithms to calculate trendlines
* [fibonacci_retracements](https://www.investopedia.com/terms/f/fibonacciretracement.asp) - an indicator showing the fibonacci level which each candle exceeds
* [pivots points](https://www.tradingview.com/support/solutions/43000521824-pivot-points-standard/)
* [TKE Indicator](https://www.tradingview.com/script/Pcbvo0zG/) - Arithmetical mean of 7 oscilators
* [Volume Weighted MACD](https://www.tradingview.com/script/wVe6AfGA) - Volume Weighted MACD indicator
* [RMI](https://www.marketvolume.com/technicalanalysis/relativemomentumindex.asp) - Relative Momentum indicator
* [VIDYA](https://www.tradingview.com/script/64ynXU2e/) - Variable Index Dynamic Average
* [MADR](https://www.tradingview.com/script/25KCgL9H/) - Moving Average Deviation Rate
* [SSL](https://www.tradingview.com/script/xzIoaIJC-SSL-channel/) - SSL Channel
* [PMAX](https://www.tradingview.com/script/sU9molfV/) - PMAX indicator
* [ALMA](https://www.tradingview.com/pine-script-reference/v5/#fun_ta.alma) - Arnaud Legoux Moving Average
### Utilities
* resample - easily resample your dataframe to a larger interval
* merge - merge your resampled dataframe into your original dataframe, so you can build triggers on more than 1 interval!
### Wrapped Indicators
The following indicators are available and have been 'wrapped' to be used on a dataframe with the standard open/close/high/low/volume columns:
* [chaikin_money_flow](https://www.tradingview.com/wiki/Chaikin_Money_Flow_(CMF)) - Chaikin Money Flow, requires dataframe and period
* [accumulation_distribution](https://www.investopedia.com/terms/a/accumulationdistribution.asp) - requires a dataframe
* osc - requires a dataframe and the periods
* [atr](https://www.investopedia.com/terms/a/atr.asp) - dataframe, period, field
* [atr_percent](https://www.investopedia.com/terms/a/atr.asp) - dataframe, period, field
* [bollinger_bands](https://www.investopedia.com/terms/b/bollingerbands.asp) - dataframe, period, stdv, field, prefix
* [cmo](https://www.investopedia.com/terms/c/chandemomentumoscillator.asp) - dataframe, period, field
* [cci](https://www.investopedia.com/terms/c/commoditychannelindex.asp) - dataframe, period
* [williams percent](https://www.investopedia.com/terms/w/williamsr.asp)
* momentum oscillator
* [hull moving average](https://www.fidelity.com/learning-center/trading-investing/technical-analysis/technical-indicator-guide/hull-moving-average)
* ultimate oscillator
* [sma](https://www.investopedia.com/terms/s/sma.asp)
* [ema](https://www.investopedia.com/terms/e/ema.asp)
* [tema](https://www.investopedia.com/terms/t/triple-exponential-moving-average.asp)
We will try to add more and more wrappers as we get to it, but please be patient or help out with PR's! It's super easy, but also super boring work.
### Usage
to use the library, please install it with pip
```bash
pip install technical
```
To get the latest version, install directly from github:
```bash
pip install git+https://github.com/freqtrade/technical
```
and then import the required packages
```python
from technical.indicators import accumulation_distribution, ...
from technical.util import resample_to_interval, resampled_merge
# Assuming 1h dataframe -resampling to 4h:
dataframe_long = resample_to_interval(dataframe, 240) # 240 = 4 * 60 = 4h
dataframe_long['rsi'] = ta.RSI(dataframe_long)
# Combine the 2 dataframes
dataframe = resampled_merge(dataframe, dataframe_long, fill_na=True)
"""
The resulting dataframe will have 5 resampled columns in addition to the regular columns,
following the template resample_<interval_in_minutes>_<orig_column_name>.
So in the above example:
['resample_240_open', 'resample_240_high', 'resample_240_low','resample_240_close', 'resample_240_rsi']
"""
```
### Contributions
We will happily add your custom indicators to this repo!
Just clone this repository and implement your favorite indicator to use with Freqtrade and create a Pull Request.
Please run both `ruff check .` and `ruff format .` before creating a PR to avoid unnecessary failures in CI.
Have fun!
Raw data
{
"_id": null,
"home_page": null,
"name": "technical",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Freqtrade Team",
"author_email": "Freqtrade Team <freqtrade@protonmail.com>",
"download_url": "https://files.pythonhosted.org/packages/af/21/96fe4e81eb41e7a3fef6e97208ba3a87f31806bdf5149b5aea426f953897/technical-1.5.0.tar.gz",
"platform": null,
"description": "# Technical\n\n\n\n[](https://pypi.org/project/technical/)\n[](https://github.com/astral-sh/ruff)\n\nTechnical is a companion project for Freqtrade.\nIt includes technical indicators, as well as helpful utilities (e.g. timeframe resampling) aimed to assist in strategy development for Freqtrade.\n\n## What does it do for you\n\nTechnical provides easy to use indicators, collected from all over github, as well as custom methods.\nOver time we plan to provide a simple API wrapper around TA-Lib, PyTi and others, as we find them. So you have one place, to find 100s of indicators.\n\n### Custom indicators\n\n* Consensus - an indicator which is based on a consensus model, across several indicators\nyou can easily customize these. It is based on the [TradingView](https://www.tradingview.com/symbols/BTCUSD/technicals/)\nbuy/sell graph. - MovingAverage Consensus - Oscillator Consensus - Summary Consensus\n* [vfi](https://www.tradingview.com/script/MhlDpfdS-Volume-Flow-Indicator-LazyBear/) - a modified version of On-Balance Volume (OBV) created by Markos Katsanos that gives better interpretation of current market trend.\n* [mmar](https://www.tradingview.com/script/1JKqmEKy-Madrid-Moving-Average-Ribbon/) - an indicator that uses multiple MAs of different length to categorize the market trend into 4 different categories\n* [madrid_sqz](https://www.tradingview.com/script/9bUUSzM3-Madrid-Trend-Squeeze/) - an indicator that uses multiple MAs to categorize the market trend into 6 different categories and to spot a squeeze\n* [stc](https://www.investopedia.com/articles/forex/10/schaff-trend-cycle-indicator.asp)\n* [ichimoku cloud](http://stockcharts.com/school/doku.php?id=chart_school:trading_strategies:ichimoku_cloud)\n* [volume weighted moving average](https://trendspider.com/learning-center/what-is-the-volume-weighted-moving-average-vwma/) - a variation of the Simple Moving Average (SMA) that taking into account both price and volume\n* [laguerre](https://www.tradingview.com/script/iUl3zTql-Ehlers-Laguerre-Relative-Strength-Index-CC/) - an indicator developed by John Ehlers as a way to minimize both the noise and lag of the regular RSI\n* [vpci](https://www.tradingview.com/script/lmTqKOsa-Indicator-Volume-Price-Confirmation-Indicator-VPCI/)\n* [trendlines](https://en.wikipedia.org/wiki/Trend_line_(technical_analysis)) - 2 different algorithms to calculate trendlines\n* [fibonacci_retracements](https://www.investopedia.com/terms/f/fibonacciretracement.asp) - an indicator showing the fibonacci level which each candle exceeds\n* [pivots points](https://www.tradingview.com/support/solutions/43000521824-pivot-points-standard/)\n* [TKE Indicator](https://www.tradingview.com/script/Pcbvo0zG/) - Arithmetical mean of 7 oscilators\n* [Volume Weighted MACD](https://www.tradingview.com/script/wVe6AfGA) - Volume Weighted MACD indicator\n* [RMI](https://www.marketvolume.com/technicalanalysis/relativemomentumindex.asp) - Relative Momentum indicator\n* [VIDYA](https://www.tradingview.com/script/64ynXU2e/) - Variable Index Dynamic Average\n* [MADR](https://www.tradingview.com/script/25KCgL9H/) - Moving Average Deviation Rate\n* [SSL](https://www.tradingview.com/script/xzIoaIJC-SSL-channel/) - SSL Channel\n* [PMAX](https://www.tradingview.com/script/sU9molfV/) - PMAX indicator\n* [ALMA](https://www.tradingview.com/pine-script-reference/v5/#fun_ta.alma) - Arnaud Legoux Moving Average\n\n### Utilities\n\n* resample - easily resample your dataframe to a larger interval\n* merge - merge your resampled dataframe into your original dataframe, so you can build triggers on more than 1 interval!\n\n### Wrapped Indicators\n\nThe following indicators are available and have been 'wrapped' to be used on a dataframe with the standard open/close/high/low/volume columns:\n\n* [chaikin_money_flow](https://www.tradingview.com/wiki/Chaikin_Money_Flow_(CMF)) - Chaikin Money Flow, requires dataframe and period\n* [accumulation_distribution](https://www.investopedia.com/terms/a/accumulationdistribution.asp) - requires a dataframe\n* osc - requires a dataframe and the periods\n* [atr](https://www.investopedia.com/terms/a/atr.asp) - dataframe, period, field\n* [atr_percent](https://www.investopedia.com/terms/a/atr.asp) - dataframe, period, field\n* [bollinger_bands](https://www.investopedia.com/terms/b/bollingerbands.asp) - dataframe, period, stdv, field, prefix\n* [cmo](https://www.investopedia.com/terms/c/chandemomentumoscillator.asp) - dataframe, period, field\n* [cci](https://www.investopedia.com/terms/c/commoditychannelindex.asp) - dataframe, period\n* [williams percent](https://www.investopedia.com/terms/w/williamsr.asp)\n* momentum oscillator\n* [hull moving average](https://www.fidelity.com/learning-center/trading-investing/technical-analysis/technical-indicator-guide/hull-moving-average)\n* ultimate oscillator\n* [sma](https://www.investopedia.com/terms/s/sma.asp)\n* [ema](https://www.investopedia.com/terms/e/ema.asp)\n* [tema](https://www.investopedia.com/terms/t/triple-exponential-moving-average.asp)\n\nWe will try to add more and more wrappers as we get to it, but please be patient or help out with PR's! It's super easy, but also super boring work.\n\n### Usage\n\nto use the library, please install it with pip\n\n```bash\npip install technical\n```\n\nTo get the latest version, install directly from github:\n\n```bash\npip install git+https://github.com/freqtrade/technical\n```\n\nand then import the required packages\n\n```python\nfrom technical.indicators import accumulation_distribution, ...\nfrom technical.util import resample_to_interval, resampled_merge\n\n# Assuming 1h dataframe -resampling to 4h:\ndataframe_long = resample_to_interval(dataframe, 240) # 240 = 4 * 60 = 4h\n\ndataframe_long['rsi'] = ta.RSI(dataframe_long)\n# Combine the 2 dataframes\ndataframe = resampled_merge(dataframe, dataframe_long, fill_na=True)\n\n\"\"\"\nThe resulting dataframe will have 5 resampled columns in addition to the regular columns,\nfollowing the template resample_<interval_in_minutes>_<orig_column_name>.\nSo in the above example:\n['resample_240_open', 'resample_240_high', 'resample_240_low','resample_240_close', 'resample_240_rsi']\n\"\"\"\n\n```\n\n### Contributions\n\nWe will happily add your custom indicators to this repo!\nJust clone this repository and implement your favorite indicator to use with Freqtrade and create a Pull Request.\n\nPlease run both `ruff check .` and `ruff format .` before creating a PR to avoid unnecessary failures in CI.\n\nHave fun!\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Technical Indicators for Financial Analysis",
"version": "1.5.0",
"project_urls": {
"Bug Tracker": "https://github.com/freqtrade/technical/issues",
"Homepage": "https://github.com/freqtrade/technical"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "02d62d443e94dc7d1fd9a4f87fafa8caa87e7ce62f564ed5193271c4d7e32e42",
"md5": "628226355f21c8747894efb0000d6df8",
"sha256": "640e0ed6f425c613efc1f4e89b843442ac440ef9acd32aa360b007f66f2996dc"
},
"downloads": -1,
"filename": "technical-1.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "628226355f21c8747894efb0000d6df8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 52125,
"upload_time": "2024-12-22T09:19:25",
"upload_time_iso_8601": "2024-12-22T09:19:25.910747Z",
"url": "https://files.pythonhosted.org/packages/02/d6/2d443e94dc7d1fd9a4f87fafa8caa87e7ce62f564ed5193271c4d7e32e42/technical-1.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "af2196fe4e81eb41e7a3fef6e97208ba3a87f31806bdf5149b5aea426f953897",
"md5": "8a96c37c4ba9387cf1ffdbaeb730b694",
"sha256": "990251c66e10efeeea5be41e841a907d9ec841344361ce0d3a2178048b65583a"
},
"downloads": -1,
"filename": "technical-1.5.0.tar.gz",
"has_sig": false,
"md5_digest": "8a96c37c4ba9387cf1ffdbaeb730b694",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 52257,
"upload_time": "2024-12-22T09:19:28",
"upload_time_iso_8601": "2024-12-22T09:19:28.668406Z",
"url": "https://files.pythonhosted.org/packages/af/21/96fe4e81eb41e7a3fef6e97208ba3a87f31806bdf5149b5aea426f953897/technical-1.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-22 09:19:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "freqtrade",
"github_project": "technical",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "TA-Lib",
"specs": [
[
"==",
"0.4.34"
]
]
},
{
"name": "pandas",
"specs": [
[
"==",
"2.2.3"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"1.26.4"
]
]
}
],
"lcname": "technical"
}