├── requirements.txt ├── setup.cfg ├── doc ├── license.rst ├── codeauthors.rst ├── changelog.rst ├── reference.rst ├── index.rst ├── Makefile ├── make.bat └── conf.py ├── technical_indicators ├── doc │ ├── _sources │ │ ├── license.txt │ │ ├── codeauthors.txt │ │ ├── changelog.txt │ │ ├── reference.txt │ │ └── index.txt │ ├── objects.inv │ ├── _static │ │ ├── up.png │ │ ├── down.png │ │ ├── file.png │ │ ├── plus.png │ │ ├── comment.png │ │ ├── minus.png │ │ ├── ajax-loader.gif │ │ ├── down-pressed.png │ │ ├── up-pressed.png │ │ ├── comment-bright.png │ │ ├── comment-close.png │ │ ├── pygments.css │ │ ├── default.css │ │ ├── sidebar.js │ │ ├── doctools.js │ │ ├── basic.css │ │ └── underscore.js │ ├── technical_indicators.pdf │ ├── .buildinfo │ ├── _modules │ │ └── index.html │ ├── search.html │ ├── py-modindex.html │ ├── codeauthors.html │ ├── index.html │ ├── genindex.html │ ├── changelog.html │ └── searchindex.js ├── AUTHORS.txt ├── README.txt ├── ChangeLog.txt ├── __init__.py └── LICENSE.txt ├── AUTHORS.rst ├── AUTHORS.txt ├── pythonhosted.org ├── index.zip └── index.html ├── MANIFEST.in ├── .travis.yml ├── shippable.yml ├── .gitattributes ├── README.rst ├── README.txt ├── prep_rst2pdf.py ├── py_app_ver.py ├── ChangeLog.rst ├── ChangeLog.txt ├── cxf_setup.py ├── setup.py ├── .gitignore ├── test └── test.rst ├── LICENSE.TXT └── LICENSE.rst /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.6.1 2 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [wheel] 2 | universal = 1 3 | -------------------------------------------------------------------------------- /doc/license.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../LICENSE.rst 2 | -------------------------------------------------------------------------------- /doc/codeauthors.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../AUTHORS.rst 2 | -------------------------------------------------------------------------------- /technical_indicators/doc/_sources/license.txt: -------------------------------------------------------------------------------- 1 | .. include:: ../LICENSE.rst 2 | -------------------------------------------------------------------------------- /technical_indicators/doc/_sources/codeauthors.txt: -------------------------------------------------------------------------------- 1 | .. include:: ../AUTHORS.rst 2 | -------------------------------------------------------------------------------- /doc/changelog.rst: -------------------------------------------------------------------------------- 1 | ChangeLog 2 | ========= 3 | 4 | .. include:: ../ChangeLog.rst 5 | -------------------------------------------------------------------------------- /AUTHORS.rst: -------------------------------------------------------------------------------- 1 | Code authors 2 | ============ 3 | 4 | :: 5 | 6 | Joao Matos 7 | 8 | -------------------------------------------------------------------------------- /AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Code authors 2 | ============ 3 | 4 | :: 5 | 6 | Joao Matos 7 | 8 | -------------------------------------------------------------------------------- /pythonhosted.org/index.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/pythonhosted.org/index.zip -------------------------------------------------------------------------------- /technical_indicators/doc/_sources/changelog.txt: -------------------------------------------------------------------------------- 1 | ChangeLog 2 | ========= 3 | 4 | .. include:: ../ChangeLog.rst 5 | -------------------------------------------------------------------------------- /technical_indicators/AUTHORS.txt: -------------------------------------------------------------------------------- 1 | Code authors 2 | ============ 3 | 4 | :: 5 | 6 | Joao Matos 7 | 8 | -------------------------------------------------------------------------------- /technical_indicators/doc/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/objects.inv -------------------------------------------------------------------------------- /technical_indicators/doc/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/up.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/down.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/file.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/plus.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/comment.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/minus.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/ajax-loader.gif -------------------------------------------------------------------------------- /technical_indicators/doc/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/down-pressed.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/up-pressed.png -------------------------------------------------------------------------------- /technical_indicators/doc/technical_indicators.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/technical_indicators.pdf -------------------------------------------------------------------------------- /technical_indicators/doc/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/comment-bright.png -------------------------------------------------------------------------------- /technical_indicators/doc/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jcrmatos/technical_indicators/HEAD/technical_indicators/doc/_static/comment-close.png -------------------------------------------------------------------------------- /doc/reference.rst: -------------------------------------------------------------------------------- 1 | Reference 2 | ========= 3 | 4 | technical_indicators 5 | -------------------- 6 | 7 | .. automodule:: technical_indicators.technical_indicators 8 | :members: 9 | -------------------------------------------------------------------------------- /pythonhosted.org/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Redirecting to ReadTheDocs. 6 | 7 | -------------------------------------------------------------------------------- /technical_indicators/doc/_sources/reference.txt: -------------------------------------------------------------------------------- 1 | Reference 2 | ========= 3 | 4 | technical_indicators 5 | -------------------- 6 | 7 | .. automodule:: technical_indicators.technical_indicators 8 | :members: 9 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include *.txt *.rst *.py *.bat *.yml 2 | include doc/*.rst doc/*.py 3 | include pythonhosted.org/* 4 | include test/*.rst 5 | include technical_indicators/*.txt 6 | recursive-include technical_indicators/doc * 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.7" 4 | - "3.4" 5 | install: pip install --use-mirrors -r requirements.txt 6 | script: python -m doctest -v test/test.rst 7 | notifications: 8 | email: 9 | on_success: always 10 | on_failure: always 11 | -------------------------------------------------------------------------------- /technical_indicators/doc/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 179195676a09b1e14321667f14f6678e 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /doc/index.rst: -------------------------------------------------------------------------------- 1 | .. include:: ../README.rst 2 | 3 | **Contents:** 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | reference 9 | license 10 | changelog 11 | codeauthors 12 | 13 | Indices and tables 14 | ================== 15 | 16 | * :ref:`genindex` 17 | * :ref:`modindex` 18 | * :ref:`search` 19 | -------------------------------------------------------------------------------- /shippable.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.7" 4 | - "3.4" 5 | before_script: mkdir -p shippable/codecoverage shippable/testresults 6 | install: pip install --use-mirrors -r requirements.txt 7 | script: python -m doctest -v test/test.rst 8 | notifications: 9 | email: 10 | on_success: always 11 | on_failure: always 12 | -------------------------------------------------------------------------------- /technical_indicators/doc/_sources/index.txt: -------------------------------------------------------------------------------- 1 | .. include:: ../README.rst 2 | 3 | **Contents:** 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | reference 9 | license 10 | changelog 11 | codeauthors 12 | 13 | Indices and tables 14 | ================== 15 | 16 | * :ref:`genindex` 17 | * :ref:`modindex` 18 | * :ref:`search` 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | technical_indicators 2 | ==================== 3 | 4 | This module provides some technical indicators for analysing stocks. 5 | 6 | When I can I will add more. 7 | 8 | If anyone wishes to contribute with new code or corrections/suggestions, feel free. 9 | 10 | 11 | **Features:** 12 | 13 | Relative Strength Index (RSI), ROC, MA envelopes 14 | Simple Moving Average (SMA), Weighted Moving Average (WMA), Exponential Moving Average (EMA) 15 | Bollinger Bands (BB), Bollinger Bandwidth, %B 16 | 17 | 18 | **Dependencies:** 19 | 20 | It requires numpy. 21 | 22 | This module was done and tested under Windows with Python 2.7.3 and numpy 1.6.1. -------------------------------------------------------------------------------- /README.txt: -------------------------------------------------------------------------------- 1 | technical_indicators 2 | ==================== 3 | 4 | This module provides some technical indicators for analysing stocks. 5 | 6 | When I can I will add more. 7 | 8 | If anyone wishes to contribute with new code or corrections/suggestions, feel free. 9 | 10 | 11 | **Features:** 12 | 13 | Relative Strength Index (RSI), ROC, MA envelopes 14 | Simple Moving Average (SMA), Weighted Moving Average (WMA), Exponential Moving Average (EMA) 15 | Bollinger Bands (BB), Bollinger Bandwidth, %B 16 | 17 | 18 | **Dependencies:** 19 | 20 | It requires numpy. 21 | 22 | This module was done and tested under Windows with Python 2.7.3 and numpy 1.6.1. -------------------------------------------------------------------------------- /prep_rst2pdf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Remove parts of rST to create a better pdf. 6 | """ 7 | 8 | # Python 3 compatibility 9 | from __future__ import (absolute_import, division, print_function, 10 | unicode_literals) 11 | 12 | 13 | with open('doc/index.ori') as file_: 14 | text = file_.readlines() 15 | 16 | new_text = '' 17 | 18 | for line in text: 19 | if 'Contents:' in line: 20 | pass 21 | elif 'Indices and tables' in line: 22 | break 23 | else: 24 | new_text += line 25 | 26 | with open('doc/index.rst', 'w') as file_: 27 | file_.writelines(new_text) 28 | -------------------------------------------------------------------------------- /technical_indicators/README.txt: -------------------------------------------------------------------------------- 1 | technical_indicators 2 | ==================== 3 | 4 | This module provides some technical indicators for analysing stocks. 5 | 6 | When I can I will add more. 7 | 8 | If anyone wishes to contribute with new code or corrections/suggestions, feel free. 9 | 10 | 11 | **Features:** 12 | 13 | Relative Strength Index (RSI), ROC, MA envelopes 14 | Simple Moving Average (SMA), Weighted Moving Average (WMA), Exponential Moving Average (EMA) 15 | Bollinger Bands (BB), Bollinger Bandwidth, %B 16 | 17 | 18 | **Dependencies:** 19 | 20 | It requires numpy. 21 | 22 | This module was done and tested under Windows with Python 2.7.3 and numpy 1.6.1. -------------------------------------------------------------------------------- /py_app_ver.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ 5 | Write Python and application version (from ChangeLog.rst) to text files. 6 | """ 7 | 8 | # Python 3 compatibility 9 | from __future__ import (absolute_import, division, print_function, 10 | unicode_literals) 11 | import sys 12 | 13 | 14 | py_ver = sys.version.split()[0] 15 | py_ver = py_ver.split('.') 16 | py_ver = str(py_ver[0] + '.' + py_ver[1]) 17 | 18 | with open('ChangeLog.rst') as file_: 19 | app_ver = file_.readline().split()[0] 20 | 21 | with open('py_ver.txt', 'w') as file_: 22 | file_.write(py_ver) 23 | 24 | with open('app_ver.txt', 'w') as file_: 25 | file_.write(app_ver) 26 | -------------------------------------------------------------------------------- /ChangeLog.rst: -------------------------------------------------------------------------------- 1 | 0.0.16 2014-06-03 :: 2 | 3 | Changed both yml files to include Py3.4. 4 | 5 | 6 | 0.0.15 2014-06-02 :: 7 | 8 | Changed both yml files to become as similar as possible. 9 | 10 | 11 | 0.0.14 2014-06-02 :: 12 | 13 | Added end user documentation to .gitignore. 14 | Added option PROJ_TYPE to build.bat to distinguish between modules and 15 | applications. 16 | Added pythonhosted.org files to MANIFEST.in. 17 | Changed __init__.py to use glob to select py2exe and cxf data files. 18 | Added options to py2exe config in setup.py. 19 | Fill some Docstrings. 20 | 21 | 22 | 0.0.13 2014-05-31 :: 23 | 24 | Remarked bdist_egg, bdist_wininst, cxf and py2exe builds from build.bat. 25 | 26 | 27 | 0.0.12 2014-05-31 :: 28 | 29 | Added zip_safe to setup.py. 30 | 31 | 32 | 0.0.11 2014-05-31 :: 33 | 34 | Added PyPI documentation in dir pythonhosted.org (redirects to 35 | ReadTheDocs). 36 | Changed doc\index.rst to include README.rst. 37 | Updated build.bat. 38 | 39 | 40 | 0.0.10 2014-05-31 :: 41 | 42 | Corrected classifiers in __init__.py. Added ReadTheDocs doc. 43 | Added prep_rst2pdf.py and prep_rst2pdf.py to help build.bat. 44 | Changed build.bat. 45 | 46 | 47 | 0.0.9 2014-05-30 :: 48 | 49 | Added py_app_ver.py and changed build.bat. 50 | 51 | 52 | 0.0.8 2014-05-30 :: 53 | 54 | Corrected yml and __init__.py because numpy is not installing in Py3 55 | 56 | 57 | 0.0.7 2014-05-30 :: 58 | 59 | Corrected test and yml files 60 | 61 | 62 | 0.0.6 2014-05-29 :: 63 | 64 | Added Shippable CI 65 | 66 | 67 | 0.0.5 2014-05-29 :: 68 | 69 | Added doctests, packaging, build automation, sphinx doc, travis. 70 | Changed license and versioning. 71 | 72 | 73 | 0.0.4 2013-07-03 :: 74 | 75 | Added ROC and MA envelopes 76 | 77 | 78 | 0.0.3 2013-06-30 :: 79 | 80 | Added WMA and more EMA types. 81 | 82 | 83 | 0.0.2 2013-06-18 :: 84 | 85 | Added Bollinger bandwidth and %B 86 | Created a GitHub repository 87 | 88 | 89 | 0.0.1 2013-06-05 :: 90 | 91 | Includes RSI, SMA, EMA and BB 92 | -------------------------------------------------------------------------------- /ChangeLog.txt: -------------------------------------------------------------------------------- 1 | 0.0.16 2014-06-03 :: 2 | 3 | Changed both yml files to include Py3.4. 4 | 5 | 6 | 0.0.15 2014-06-02 :: 7 | 8 | Changed both yml files to become as similar as possible. 9 | 10 | 11 | 0.0.14 2014-06-02 :: 12 | 13 | Added end user documentation to .gitignore. 14 | Added option PROJ_TYPE to build.bat to distinguish between modules and 15 | applications. 16 | Added pythonhosted.org files to MANIFEST.in. 17 | Changed __init__.py to use glob to select py2exe and cxf data files. 18 | Added options to py2exe config in setup.py. 19 | Fill some Docstrings. 20 | 21 | 22 | 0.0.13 2014-05-31 :: 23 | 24 | Remarked bdist_egg, bdist_wininst, cxf and py2exe builds from build.bat. 25 | 26 | 27 | 0.0.12 2014-05-31 :: 28 | 29 | Added zip_safe to setup.py. 30 | 31 | 32 | 0.0.11 2014-05-31 :: 33 | 34 | Added PyPI documentation in dir pythonhosted.org (redirects to 35 | ReadTheDocs). 36 | Changed doc\index.rst to include README.rst. 37 | Updated build.bat. 38 | 39 | 40 | 0.0.10 2014-05-31 :: 41 | 42 | Corrected classifiers in __init__.py. Added ReadTheDocs doc. 43 | Added prep_rst2pdf.py and prep_rst2pdf.py to help build.bat. 44 | Changed build.bat. 45 | 46 | 47 | 0.0.9 2014-05-30 :: 48 | 49 | Added py_app_ver.py and changed build.bat. 50 | 51 | 52 | 0.0.8 2014-05-30 :: 53 | 54 | Corrected yml and __init__.py because numpy is not installing in Py3 55 | 56 | 57 | 0.0.7 2014-05-30 :: 58 | 59 | Corrected test and yml files 60 | 61 | 62 | 0.0.6 2014-05-29 :: 63 | 64 | Added Shippable CI 65 | 66 | 67 | 0.0.5 2014-05-29 :: 68 | 69 | Added doctests, packaging, build automation, sphinx doc, travis. 70 | Changed license and versioning. 71 | 72 | 73 | 0.0.4 2013-07-03 :: 74 | 75 | Added ROC and MA envelopes 76 | 77 | 78 | 0.0.3 2013-06-30 :: 79 | 80 | Added WMA and more EMA types. 81 | 82 | 83 | 0.0.2 2013-06-18 :: 84 | 85 | Added Bollinger bandwidth and %B 86 | Created a GitHub repository 87 | 88 | 89 | 0.0.1 2013-06-05 :: 90 | 91 | Includes RSI, SMA, EMA and BB 92 | -------------------------------------------------------------------------------- /technical_indicators/ChangeLog.txt: -------------------------------------------------------------------------------- 1 | 0.0.16 2014-06-03 :: 2 | 3 | Changed both yml files to include Py3.4. 4 | 5 | 6 | 0.0.15 2014-06-02 :: 7 | 8 | Changed both yml files to become as similar as possible. 9 | 10 | 11 | 0.0.14 2014-06-02 :: 12 | 13 | Added end user documentation to .gitignore. 14 | Added option PROJ_TYPE to build.bat to distinguish between modules and 15 | applications. 16 | Added pythonhosted.org files to MANIFEST.in. 17 | Changed __init__.py to use glob to select py2exe and cxf data files. 18 | Added options to py2exe config in setup.py. 19 | Fill some Docstrings. 20 | 21 | 22 | 0.0.13 2014-05-31 :: 23 | 24 | Remarked bdist_egg, bdist_wininst, cxf and py2exe builds from build.bat. 25 | 26 | 27 | 0.0.12 2014-05-31 :: 28 | 29 | Added zip_safe to setup.py. 30 | 31 | 32 | 0.0.11 2014-05-31 :: 33 | 34 | Added PyPI documentation in dir pythonhosted.org (redirects to 35 | ReadTheDocs). 36 | Changed doc\index.rst to include README.rst. 37 | Updated build.bat. 38 | 39 | 40 | 0.0.10 2014-05-31 :: 41 | 42 | Corrected classifiers in __init__.py. Added ReadTheDocs doc. 43 | Added prep_rst2pdf.py and prep_rst2pdf.py to help build.bat. 44 | Changed build.bat. 45 | 46 | 47 | 0.0.9 2014-05-30 :: 48 | 49 | Added py_app_ver.py and changed build.bat. 50 | 51 | 52 | 0.0.8 2014-05-30 :: 53 | 54 | Corrected yml and __init__.py because numpy is not installing in Py3 55 | 56 | 57 | 0.0.7 2014-05-30 :: 58 | 59 | Corrected test and yml files 60 | 61 | 62 | 0.0.6 2014-05-29 :: 63 | 64 | Added Shippable CI 65 | 66 | 67 | 0.0.5 2014-05-29 :: 68 | 69 | Added doctests, packaging, build automation, sphinx doc, travis. 70 | Changed license and versioning. 71 | 72 | 73 | 0.0.4 2013-07-03 :: 74 | 75 | Added ROC and MA envelopes 76 | 77 | 78 | 0.0.3 2013-06-30 :: 79 | 80 | Added WMA and more EMA types. 81 | 82 | 83 | 0.0.2 2013-06-18 :: 84 | 85 | Added Bollinger bandwidth and %B 86 | Created a GitHub repository 87 | 88 | 89 | 0.0.1 2013-06-05 :: 90 | 91 | Includes RSI, SMA, EMA and BB 92 | -------------------------------------------------------------------------------- /cxf_setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Setup for cx_Freeze""" 5 | 6 | # Python 3 compatibility 7 | from __future__ import (absolute_import, division, print_function, 8 | unicode_literals) 9 | import sys 10 | from cx_Freeze import setup, Executable 11 | from technical_indicators import (NAME, VERSION, DESC, LONG_DESC, LICENSE, URL, 12 | AUTHOR, EMAIL, KEYWORDS, CLASSIFIERS, SCRIPT, 13 | DATA_FILES_CXF) 14 | 15 | 16 | TARGET_NAME = NAME + '.exe' 17 | 18 | base = None 19 | # GUI applications require a different base on Windows 20 | if sys.platform == 'win32': 21 | base = 'Win32GUI' 22 | 23 | ##if 'bdist_msi' in sys.argv: 24 | ## sys.argv += ['--install-script', 'install.py'] 25 | 26 | ##bdist_msi_options = { 27 | ## 'initial_target_dir': r'[ProgramFilesFolder]\%s\%s' % (AUTHOR, NAME), 28 | ## #'upgrade_code': '{66620F3A-DC3A-11E2-B341-002219E9B01E}', 29 | ## #'add_to_path': False, 30 | ## } 31 | 32 | build_exe_options = dict(compressed=True, 33 | #excludes=["macpath", "PyQt4"], 34 | #includes=['atexit', 'PySide.QtNetwork'], 35 | include_files=DATA_FILES_CXF, 36 | # append any extra module by extending the list below 37 | # - "contributed_modules+["lxml"]" 38 | #packages=contributed_modules 39 | ) 40 | 41 | setup(name=NAME, 42 | version=VERSION, 43 | description=DESC, 44 | long_description=LONG_DESC, 45 | license=LICENSE, 46 | url=URL, 47 | author=AUTHOR, 48 | author_email=EMAIL, 49 | 50 | classifiers=CLASSIFIERS, 51 | keywords=KEYWORDS, 52 | 53 | executables=[Executable(script=SCRIPT, 54 | base=base, 55 | compress=True, 56 | #icon="app_name.ico", 57 | targetName=TARGET_NAME, 58 | #copyDependentFiles=True 59 | )], 60 | 61 | options=dict(build_exe=build_exe_options), 62 | ##options=dict(bdist_msi=bdist_msi_options, 63 | ## build_exe=build_exe_options), 64 | ##scripts=['install.py'] 65 | ) 66 | -------------------------------------------------------------------------------- /technical_indicators/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Initialization""" 5 | 6 | # Python 3 compatibility 7 | from __future__ import (absolute_import, division, print_function, 8 | #unicode_literals 9 | ) 10 | # The above unicode_literals import prevents setup.py from working. 11 | # It seems to be a bug in setuptools. 12 | # py2exe build also does not work if it is unremarked. 13 | import sys 14 | from os import path 15 | import glob 16 | 17 | 18 | sys.path.insert(1, path.dirname(__file__)) # add to PYTHONPATH 19 | 20 | AUTHOR = 'Joao Matos' 21 | EMAIL = 'jcrmatos@gmail.com' 22 | COPYRIGHT = 'Copyright 2014 ' + AUTHOR 23 | 24 | NAME = 'technical_indicators' 25 | SCRIPT = NAME + '/technical_indicators.py' 26 | 27 | VERSION = '0.0.0' 28 | CHANGE_LOG_FILE = 'ChangeLog.txt' 29 | if path.isfile(CHANGE_LOG_FILE): # if file exists 30 | with open(CHANGE_LOG_FILE) as f: 31 | VERSION = f.readline().split()[0] 32 | 33 | LONG_DESC = DESC = '' 34 | README_FILE = 'README.txt' 35 | if path.isfile(README_FILE): # if file exists 36 | with open(README_FILE) as f: 37 | LONG_DESC = f.read() 38 | DESC = LONG_DESC.split('\n')[3] 39 | 40 | LICENSE = 'GNU General Public License v2 or later (GPLv2+)' 41 | URL = 'https://github.com/jcrmatos/technical_indicators' 42 | KEYWORDS = 'technical analysis indicators' 43 | CLASSIFIERS = ['Development Status :: 4 - Beta', 44 | 'Environment :: Console', 45 | 'Intended Audience :: End Users/Desktop', 46 | 'Intended Audience :: Developers', 47 | 'Intended Audience :: Financial and Insurance Industry', 48 | 'Natural Language :: English', 49 | 'License :: OSI Approved ::' + ' ' + LICENSE, 50 | 'Operating System :: OS Independent', 51 | 'Programming Language :: Python', 52 | 'Programming Language :: Python :: 2.7', 53 | 'Topic :: Office/Business :: Financial :: Investment', 54 | #'Private :: Do Not Upload' # to prevent PyPI publishing 55 | ] 56 | 57 | LICENSE_FILE = 'LICENSE.txt' 58 | AUTHORS_FILE = 'AUTHORS.txt' 59 | 60 | DATA_FILES = [LICENSE_FILE, README_FILE, AUTHORS_FILE, CHANGE_LOG_FILE] 61 | 62 | #DATA_FILES_PY2EXE = [('', [NAME + '/' + LICENSE_FILE]), 63 | # ('', [NAME + '/' + README_FILE]), 64 | # ('', [NAME + '/' + AUTHORS_FILE]), 65 | # ('', [NAME + '/' + CHANGE_LOG_FILE])] 66 | DATA_FILES_PY2EXE = glob.glob(NAME + '/' + '*.txt') 67 | 68 | #DATA_FILES_CXF = [NAME + '/' + LICENSE_FILE, NAME + '/' + README_FILE, 69 | # NAME + '/' + AUTHORS_FILE, NAME + '/' + CHANGE_LOG_FILE] 70 | DATA_FILES_CXF = glob.glob(NAME + '/' + '*.txt') 71 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Setup for source, egg, wheel and py2exe""" 5 | 6 | # Python 3 compatibility 7 | from __future__ import (absolute_import, division, print_function, 8 | unicode_literals) 9 | import sys 10 | from os import path 11 | from setuptools import setup, find_packages 12 | import py2exe 13 | from technical_indicators import (NAME, VERSION, DESC, LONG_DESC, LICENSE, URL, 14 | AUTHOR, EMAIL, KEYWORDS, CLASSIFIERS, SCRIPT, 15 | DATA_FILES, DATA_FILES_PY2EXE) 16 | 17 | 18 | #PACKAGES = [NAME] # only used if find_packages() does not work 19 | 20 | ENTRY_POINTS = {'console_scripts': ['technical_indicators=technical_indicators.technical_indicators:main'], 21 | # 'gui_scripts': ['app_gui=technical_indicators.technical_indicators:start'] 22 | } 23 | 24 | PKG_DATA = dict(technical_indicators=DATA_FILES) 25 | ##PKG_DATA = {'': ['*.txt', '*.rst'], 'technical_indicators': ['*.txt'], 26 | ## 'technical_indicators.data': ['*.pkl']} 27 | 28 | REQUIREMENTS_FILE = 'requirements.txt' 29 | REQUIREMENTS = '' 30 | if path.isfile(REQUIREMENTS_FILE): # if file exists 31 | with open(REQUIREMENTS_FILE) as f: 32 | REQUIREMENTS = f.read() 33 | ##REQUIREMENTS = f.read().splitlines() 34 | 35 | # if not cleared they are added to bdist_egg root 36 | if sys.argv[1] and str.lower(sys.argv[1]) != 'py2exe': 37 | DATA_FILES_PY2EXE = '' 38 | 39 | OPTIONS = {'py2exe': {'compressed': True, 40 | 'ascii': False, 41 | #'packages': NAME, 42 | #'bundle_files': 1, # exe does not work 43 | #'includes': ['numpy'], 44 | #'excludes': ['doctest', 'pdb', 'unittest', 'difflib', 45 | # 'inspect', 'pyreadline', 'optparse', 46 | # 'calendar', 'email', '_ssl', 'pickle', 47 | # # 'locale' 48 | # ] 49 | } 50 | } 51 | 52 | setup(name=NAME, 53 | version=VERSION, 54 | description=DESC, 55 | long_description=LONG_DESC, 56 | license=LICENSE, 57 | url=URL, 58 | author=AUTHOR, 59 | author_email=EMAIL, 60 | 61 | classifiers=CLASSIFIERS, 62 | keywords=KEYWORDS, 63 | 64 | packages=find_packages(), 65 | #packages=find_packages(exclude=['tests*']), 66 | 67 | # only used if find_packages() does not work 68 | #packages=PACKAGES, 69 | #package_dir={'': NAME}, 70 | 71 | # to create the Scripts exe using bdist_wininst build option 72 | entry_points=ENTRY_POINTS, 73 | 74 | install_requires=REQUIREMENTS, 75 | 76 | # used only if the package is not in PyPI, but exists as an egg, 77 | # sdist format or as a single .py file 78 | # see http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi 79 | #dependency_links = ['http://host.domain.local/dir/'], 80 | 81 | # required by bdist_egg and bdist_wheel 82 | include_package_data=True, 83 | package_data=PKG_DATA, 84 | 85 | zip_safe=False, 86 | 87 | # py2exe config 88 | console=[SCRIPT], 89 | options=OPTIONS, 90 | data_files=DATA_FILES_PY2EXE, 91 | #windows=[{'script': '__main__.py', 92 | # 'icon_resources': [(0, 'daysgroudned.ico')] 93 | # }], 94 | #zipfile=None 95 | ) 96 | -------------------------------------------------------------------------------- /technical_indicators/doc/_modules/index.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Overview: module code — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 41 | 42 |
43 |
44 |
45 |
46 | 47 |

All modules for which code is available

48 | 50 | 51 |
52 |
53 |
54 |
55 |
56 | 68 | 69 |
70 |
71 |
72 |
73 | 85 | 89 | 90 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | technical_indicators/doc/ 204 | doc/Makefile 205 | doc/make.bat 206 | 207 | # Installer logs 208 | pip-log.txt 209 | 210 | # Unit test / coverage reports 211 | .coverage 212 | .tox 213 | 214 | #Translations 215 | *.mo 216 | 217 | #Mr Developer 218 | .mr.developer.cfg 219 | -------------------------------------------------------------------------------- /technical_indicators/doc/search.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Search — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 49 | 50 |
51 |
52 |
53 |
54 | 55 |

Search

56 |
57 | 58 |

59 | Please activate JavaScript to enable the search 60 | functionality. 61 |

62 |
63 |

64 | From here you can search these documents. Enter your search 65 | words into the box below and click "search". Note that the search 66 | function will automatically search for all of the words. Pages 67 | containing fewer words won't appear in the result list. 68 |

69 |
70 | 71 | 72 | 73 |
74 | 75 |
76 | 77 |
78 | 79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | 100 | 104 | 105 | -------------------------------------------------------------------------------- /technical_indicators/doc/_static/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight { background: #eeffcc; } 3 | .highlight .c { color: #408090; font-style: italic } /* Comment */ 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ 6 | .highlight .o { color: #666666 } /* Operator */ 7 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ 8 | .highlight .cp { color: #007020 } /* Comment.Preproc */ 9 | .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ 10 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 14 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 15 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 16 | .highlight .go { color: #333333 } /* Generic.Output */ 17 | .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 18 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 19 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 20 | .highlight .gt { color: #0044DD } /* Generic.Traceback */ 21 | .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 22 | .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 23 | .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 24 | .highlight .kp { color: #007020 } /* Keyword.Pseudo */ 25 | .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #902000 } /* Keyword.Type */ 27 | .highlight .m { color: #208050 } /* Literal.Number */ 28 | .highlight .s { color: #4070a0 } /* Literal.String */ 29 | .highlight .na { color: #4070a0 } /* Name.Attribute */ 30 | .highlight .nb { color: #007020 } /* Name.Builtin */ 31 | .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #60add5 } /* Name.Constant */ 33 | .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 34 | .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 35 | .highlight .ne { color: #007020 } /* Name.Exception */ 36 | .highlight .nf { color: #06287e } /* Name.Function */ 37 | .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ 38 | .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 39 | .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ 40 | .highlight .nv { color: #bb60d5 } /* Name.Variable */ 41 | .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #208050 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #208050 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #208050 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #208050 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #4070a0 } /* Literal.String.Char */ 49 | .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ 51 | .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ 52 | .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #c65d09 } /* Literal.String.Other */ 55 | .highlight .sr { color: #235388 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ 57 | .highlight .ss { color: #517918 } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ 60 | .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ 61 | .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ 62 | .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /technical_indicators/doc/py-modindex.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Python Module Index — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 44 | 45 |
46 |
47 |
48 |
49 | 50 | 51 |

Python Module Index

52 | 53 |
54 | t 55 |
56 | 57 | 58 | 59 | 61 | 62 | 64 | 67 | 68 | 69 | 72 |
 
60 | t
65 | technical_indicators 66 |
    70 | technical_indicators.technical_indicators 71 |
73 | 74 | 75 |
76 |
77 |
78 |
79 |
80 | 92 | 93 |
94 |
95 |
96 |
97 | 109 | 113 | 114 | -------------------------------------------------------------------------------- /technical_indicators/doc/codeauthors.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Code authors — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 45 | 46 |
47 |
48 |
49 |
50 | 51 |
52 |

Code authors

53 |
Joao Matos <jcrmatos@gmail.com>
 54 | 
55 |
56 |
57 | 58 | 59 |
60 |
61 |
62 |
63 |
64 |

Previous topic

65 |

ChangeLog

67 |

This Page

68 | 72 | 84 | 85 |
86 |
87 |
88 |
89 | 104 | 108 | 109 | -------------------------------------------------------------------------------- /technical_indicators/doc/_static/default.css: -------------------------------------------------------------------------------- 1 | /* 2 | * default.css_t 3 | * ~~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- default theme. 6 | * 7 | * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | @import url("basic.css"); 13 | 14 | /* -- page layout ----------------------------------------------------------- */ 15 | 16 | body { 17 | font-family: sans-serif; 18 | font-size: 100%; 19 | background-color: #11303d; 20 | color: #000; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | 25 | div.document { 26 | background-color: #1c4e63; 27 | } 28 | 29 | div.documentwrapper { 30 | float: left; 31 | width: 100%; 32 | } 33 | 34 | div.bodywrapper { 35 | margin: 0 0 0 230px; 36 | } 37 | 38 | div.body { 39 | background-color: #ffffff; 40 | color: #000000; 41 | padding: 0 20px 30px 20px; 42 | } 43 | 44 | div.footer { 45 | color: #ffffff; 46 | width: 100%; 47 | padding: 9px 0 9px 0; 48 | text-align: center; 49 | font-size: 75%; 50 | } 51 | 52 | div.footer a { 53 | color: #ffffff; 54 | text-decoration: underline; 55 | } 56 | 57 | div.related { 58 | background-color: #133f52; 59 | line-height: 30px; 60 | color: #ffffff; 61 | } 62 | 63 | div.related a { 64 | color: #ffffff; 65 | } 66 | 67 | div.sphinxsidebar { 68 | } 69 | 70 | div.sphinxsidebar h3 { 71 | font-family: 'Trebuchet MS', sans-serif; 72 | color: #ffffff; 73 | font-size: 1.4em; 74 | font-weight: normal; 75 | margin: 0; 76 | padding: 0; 77 | } 78 | 79 | div.sphinxsidebar h3 a { 80 | color: #ffffff; 81 | } 82 | 83 | div.sphinxsidebar h4 { 84 | font-family: 'Trebuchet MS', sans-serif; 85 | color: #ffffff; 86 | font-size: 1.3em; 87 | font-weight: normal; 88 | margin: 5px 0 0 0; 89 | padding: 0; 90 | } 91 | 92 | div.sphinxsidebar p { 93 | color: #ffffff; 94 | } 95 | 96 | div.sphinxsidebar p.topless { 97 | margin: 5px 10px 10px 10px; 98 | } 99 | 100 | div.sphinxsidebar ul { 101 | margin: 10px; 102 | padding: 0; 103 | color: #ffffff; 104 | } 105 | 106 | div.sphinxsidebar a { 107 | color: #98dbcc; 108 | } 109 | 110 | div.sphinxsidebar input { 111 | border: 1px solid #98dbcc; 112 | font-family: sans-serif; 113 | font-size: 1em; 114 | } 115 | 116 | 117 | 118 | /* -- hyperlink styles ------------------------------------------------------ */ 119 | 120 | a { 121 | color: #355f7c; 122 | text-decoration: none; 123 | } 124 | 125 | a:visited { 126 | color: #355f7c; 127 | text-decoration: none; 128 | } 129 | 130 | a:hover { 131 | text-decoration: underline; 132 | } 133 | 134 | 135 | 136 | /* -- body styles ----------------------------------------------------------- */ 137 | 138 | div.body h1, 139 | div.body h2, 140 | div.body h3, 141 | div.body h4, 142 | div.body h5, 143 | div.body h6 { 144 | font-family: 'Trebuchet MS', sans-serif; 145 | background-color: #f2f2f2; 146 | font-weight: normal; 147 | color: #20435c; 148 | border-bottom: 1px solid #ccc; 149 | margin: 20px -20px 10px -20px; 150 | padding: 3px 0 3px 10px; 151 | } 152 | 153 | div.body h1 { margin-top: 0; font-size: 200%; } 154 | div.body h2 { font-size: 160%; } 155 | div.body h3 { font-size: 140%; } 156 | div.body h4 { font-size: 120%; } 157 | div.body h5 { font-size: 110%; } 158 | div.body h6 { font-size: 100%; } 159 | 160 | a.headerlink { 161 | color: #c60f0f; 162 | font-size: 0.8em; 163 | padding: 0 4px 0 4px; 164 | text-decoration: none; 165 | } 166 | 167 | a.headerlink:hover { 168 | background-color: #c60f0f; 169 | color: white; 170 | } 171 | 172 | div.body p, div.body dd, div.body li { 173 | text-align: justify; 174 | line-height: 130%; 175 | } 176 | 177 | div.admonition p.admonition-title + p { 178 | display: inline; 179 | } 180 | 181 | div.admonition p { 182 | margin-bottom: 5px; 183 | } 184 | 185 | div.admonition pre { 186 | margin-bottom: 5px; 187 | } 188 | 189 | div.admonition ul, div.admonition ol { 190 | margin-bottom: 5px; 191 | } 192 | 193 | div.note { 194 | background-color: #eee; 195 | border: 1px solid #ccc; 196 | } 197 | 198 | div.seealso { 199 | background-color: #ffc; 200 | border: 1px solid #ff6; 201 | } 202 | 203 | div.topic { 204 | background-color: #eee; 205 | } 206 | 207 | div.warning { 208 | background-color: #ffe4e4; 209 | border: 1px solid #f66; 210 | } 211 | 212 | p.admonition-title { 213 | display: inline; 214 | } 215 | 216 | p.admonition-title:after { 217 | content: ":"; 218 | } 219 | 220 | pre { 221 | padding: 5px; 222 | background-color: #eeffcc; 223 | color: #333333; 224 | line-height: 120%; 225 | border: 1px solid #ac9; 226 | border-left: none; 227 | border-right: none; 228 | } 229 | 230 | tt { 231 | background-color: #ecf0f3; 232 | padding: 0 1px 0 1px; 233 | font-size: 0.95em; 234 | } 235 | 236 | th { 237 | background-color: #ede; 238 | } 239 | 240 | .warning tt { 241 | background: #efc2c2; 242 | } 243 | 244 | .note tt { 245 | background: #d6d6d6; 246 | } 247 | 248 | .viewcode-back { 249 | font-family: sans-serif; 250 | } 251 | 252 | div.viewcode-block:target { 253 | background-color: #f4debf; 254 | border-top: 1px solid #ac9; 255 | border-bottom: 1px solid #ac9; 256 | } -------------------------------------------------------------------------------- /technical_indicators/doc/_static/sidebar.js: -------------------------------------------------------------------------------- 1 | /* 2 | * sidebar.js 3 | * ~~~~~~~~~~ 4 | * 5 | * This script makes the Sphinx sidebar collapsible. 6 | * 7 | * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds 8 | * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton 9 | * used to collapse and expand the sidebar. 10 | * 11 | * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden 12 | * and the width of the sidebar and the margin-left of the document 13 | * are decreased. When the sidebar is expanded the opposite happens. 14 | * This script saves a per-browser/per-session cookie used to 15 | * remember the position of the sidebar among the pages. 16 | * Once the browser is closed the cookie is deleted and the position 17 | * reset to the default (expanded). 18 | * 19 | * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. 20 | * :license: BSD, see LICENSE for details. 21 | * 22 | */ 23 | 24 | $(function() { 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | // global elements used by the functions. 34 | // the 'sidebarbutton' element is defined as global after its 35 | // creation, in the add_sidebar_button function 36 | var bodywrapper = $('.bodywrapper'); 37 | var sidebar = $('.sphinxsidebar'); 38 | var sidebarwrapper = $('.sphinxsidebarwrapper'); 39 | 40 | // for some reason, the document has no sidebar; do not run into errors 41 | if (!sidebar.length) return; 42 | 43 | // original margin-left of the bodywrapper and width of the sidebar 44 | // with the sidebar expanded 45 | var bw_margin_expanded = bodywrapper.css('margin-left'); 46 | var ssb_width_expanded = sidebar.width(); 47 | 48 | // margin-left of the bodywrapper and width of the sidebar 49 | // with the sidebar collapsed 50 | var bw_margin_collapsed = '.8em'; 51 | var ssb_width_collapsed = '.8em'; 52 | 53 | // colors used by the current theme 54 | var dark_color = $('.related').css('background-color'); 55 | var light_color = $('.document').css('background-color'); 56 | 57 | function sidebar_is_collapsed() { 58 | return sidebarwrapper.is(':not(:visible)'); 59 | } 60 | 61 | function toggle_sidebar() { 62 | if (sidebar_is_collapsed()) 63 | expand_sidebar(); 64 | else 65 | collapse_sidebar(); 66 | } 67 | 68 | function collapse_sidebar() { 69 | sidebarwrapper.hide(); 70 | sidebar.css('width', ssb_width_collapsed); 71 | bodywrapper.css('margin-left', bw_margin_collapsed); 72 | sidebarbutton.css({ 73 | 'margin-left': '0', 74 | 'height': bodywrapper.height() 75 | }); 76 | sidebarbutton.find('span').text('»'); 77 | sidebarbutton.attr('title', _('Expand sidebar')); 78 | document.cookie = 'sidebar=collapsed'; 79 | } 80 | 81 | function expand_sidebar() { 82 | bodywrapper.css('margin-left', bw_margin_expanded); 83 | sidebar.css('width', ssb_width_expanded); 84 | sidebarwrapper.show(); 85 | sidebarbutton.css({ 86 | 'margin-left': ssb_width_expanded-12, 87 | 'height': bodywrapper.height() 88 | }); 89 | sidebarbutton.find('span').text('«'); 90 | sidebarbutton.attr('title', _('Collapse sidebar')); 91 | document.cookie = 'sidebar=expanded'; 92 | } 93 | 94 | function add_sidebar_button() { 95 | sidebarwrapper.css({ 96 | 'float': 'left', 97 | 'margin-right': '0', 98 | 'width': ssb_width_expanded - 28 99 | }); 100 | // create the button 101 | sidebar.append( 102 | '
«
' 103 | ); 104 | var sidebarbutton = $('#sidebarbutton'); 105 | light_color = sidebarbutton.css('background-color'); 106 | // find the height of the viewport to center the '<<' in the page 107 | var viewport_height; 108 | if (window.innerHeight) 109 | viewport_height = window.innerHeight; 110 | else 111 | viewport_height = $(window).height(); 112 | sidebarbutton.find('span').css({ 113 | 'display': 'block', 114 | 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 115 | }); 116 | 117 | sidebarbutton.click(toggle_sidebar); 118 | sidebarbutton.attr('title', _('Collapse sidebar')); 119 | sidebarbutton.css({ 120 | 'color': '#FFFFFF', 121 | 'border-left': '1px solid ' + dark_color, 122 | 'font-size': '1.2em', 123 | 'cursor': 'pointer', 124 | 'height': bodywrapper.height(), 125 | 'padding-top': '1px', 126 | 'margin-left': ssb_width_expanded - 12 127 | }); 128 | 129 | sidebarbutton.hover( 130 | function () { 131 | $(this).css('background-color', dark_color); 132 | }, 133 | function () { 134 | $(this).css('background-color', light_color); 135 | } 136 | ); 137 | } 138 | 139 | function set_position_from_cookie() { 140 | if (!document.cookie) 141 | return; 142 | var items = document.cookie.split(';'); 143 | for(var k=0; k 3 | 4 | 5 | 6 | 7 | 8 | 9 | technical_indicators — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 45 | 46 |
47 |
48 |
49 |
50 | 51 |
52 |

technical_indicators

53 |

This module provides some technical indicators for analysing stocks.

54 |

When I can I will add more.

55 |

If anyone wishes to contribute with new code or corrections/suggestions, feel free.

56 |

Features:

57 |
58 |
Relative Strength Index (RSI), ROC, MA envelopes 59 | Simple Moving Average (SMA), Weighted Moving Average (WMA), Exponential Moving Average (EMA) 60 | Bollinger Bands (BB), Bollinger Bandwidth, %B
61 |

Dependencies:

62 |

It requires numpy.

63 |

This module was done and tested under Windows with Python 2.7.3 and numpy 1.6.1.

64 |

Contents:

65 |
66 | 72 |
73 |
74 |
75 |

Indices and tables

76 | 81 |
82 | 83 | 84 |
85 |
86 |
87 |
88 |
89 |

Table Of Contents

90 | 94 | 95 |

Next topic

96 |

Reference

98 |

This Page

99 | 103 | 115 | 116 |
117 |
118 |
119 |
120 | 135 | 139 | 140 | -------------------------------------------------------------------------------- /technical_indicators/doc/genindex.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Index — technical_indicators 0.0.16 documentation 11 | 12 | 13 | 14 | 15 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 42 | 43 |
44 |
45 |
46 |
47 | 48 | 49 |

Index

50 | 51 |
52 | B 53 | | E 54 | | M 55 | | R 56 | | S 57 | | T 58 | | W 59 | 60 |
61 |

B

62 | 63 | 69 |
64 | 65 |
bb() (in module technical_indicators.technical_indicators) 66 |
67 | 68 |
70 | 71 |

E

72 | 73 | 79 |
74 | 75 |
ema() (in module technical_indicators.technical_indicators) 76 |
77 | 78 |
80 | 81 |

M

82 | 83 | 89 |
84 | 85 |
ma_env() (in module technical_indicators.technical_indicators) 86 |
87 | 88 |
90 | 91 |

R

92 | 93 | 99 | 105 |
94 | 95 |
roc() (in module technical_indicators.technical_indicators) 96 |
97 | 98 |
100 | 101 |
rsi() (in module technical_indicators.technical_indicators) 102 |
103 | 104 |
106 | 107 |

S

108 | 109 | 115 |
110 | 111 |
sma() (in module technical_indicators.technical_indicators) 112 |
113 | 114 |
116 | 117 |

T

118 | 119 | 125 |
120 | 121 |
technical_indicators.technical_indicators (module) 122 |
123 | 124 |
126 | 127 |

W

128 | 129 | 135 |
130 | 131 |
wma() (in module technical_indicators.technical_indicators) 132 |
133 | 134 |
136 | 137 | 138 | 139 |
140 |
141 |
142 |
143 |
144 | 145 | 146 | 147 | 159 | 160 |
161 |
162 |
163 |
164 | 176 | 180 | 181 | -------------------------------------------------------------------------------- /doc/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = _build 9 | 10 | # User-friendly check for sphinx-build 11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) 12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) 13 | endif 14 | 15 | # Internal variables. 16 | PAPEROPT_a4 = -D latex_paper_size=a4 17 | PAPEROPT_letter = -D latex_paper_size=letter 18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . 19 | # the i18n builder cannot share the environment and doctrees with the others 20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . 21 | 22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext 23 | 24 | help: 25 | @echo "Please use \`make ' where is one of" 26 | @echo " html to make standalone HTML files" 27 | @echo " dirhtml to make HTML files named index.html in directories" 28 | @echo " singlehtml to make a single large HTML file" 29 | @echo " pickle to make pickle files" 30 | @echo " json to make JSON files" 31 | @echo " htmlhelp to make HTML files and a HTML help project" 32 | @echo " qthelp to make HTML files and a qthelp project" 33 | @echo " devhelp to make HTML files and a Devhelp project" 34 | @echo " epub to make an epub" 35 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 36 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 37 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" 38 | @echo " text to make text files" 39 | @echo " man to make manual pages" 40 | @echo " texinfo to make Texinfo files" 41 | @echo " info to make Texinfo files and run them through makeinfo" 42 | @echo " gettext to make PO message catalogs" 43 | @echo " changes to make an overview of all changed/added/deprecated items" 44 | @echo " xml to make Docutils-native XML files" 45 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" 46 | @echo " linkcheck to check all external links for integrity" 47 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 48 | 49 | clean: 50 | rm -rf $(BUILDDIR)/* 51 | 52 | html: 53 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 54 | @echo 55 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 56 | 57 | dirhtml: 58 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 59 | @echo 60 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 61 | 62 | singlehtml: 63 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 64 | @echo 65 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 66 | 67 | pickle: 68 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 69 | @echo 70 | @echo "Build finished; now you can process the pickle files." 71 | 72 | json: 73 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 74 | @echo 75 | @echo "Build finished; now you can process the JSON files." 76 | 77 | htmlhelp: 78 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 79 | @echo 80 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 81 | ".hhp project file in $(BUILDDIR)/htmlhelp." 82 | 83 | qthelp: 84 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 85 | @echo 86 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 87 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 88 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/technical_indicators.qhcp" 89 | @echo "To view the help file:" 90 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/technical_indicators.qhc" 91 | 92 | devhelp: 93 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 94 | @echo 95 | @echo "Build finished." 96 | @echo "To view the help file:" 97 | @echo "# mkdir -p $$HOME/.local/share/devhelp/technical_indicators" 98 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/technical_indicators" 99 | @echo "# devhelp" 100 | 101 | epub: 102 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 103 | @echo 104 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 105 | 106 | latex: 107 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 108 | @echo 109 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 110 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 111 | "(use \`make latexpdf' here to do that automatically)." 112 | 113 | latexpdf: 114 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 115 | @echo "Running LaTeX files through pdflatex..." 116 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 117 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 118 | 119 | latexpdfja: 120 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 121 | @echo "Running LaTeX files through platex and dvipdfmx..." 122 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja 123 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 124 | 125 | text: 126 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 127 | @echo 128 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 129 | 130 | man: 131 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 132 | @echo 133 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 134 | 135 | texinfo: 136 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 137 | @echo 138 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 139 | @echo "Run \`make' in that directory to run these through makeinfo" \ 140 | "(use \`make info' here to do that automatically)." 141 | 142 | info: 143 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 144 | @echo "Running Texinfo files through makeinfo..." 145 | make -C $(BUILDDIR)/texinfo info 146 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 147 | 148 | gettext: 149 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 150 | @echo 151 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 152 | 153 | changes: 154 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 155 | @echo 156 | @echo "The overview file is in $(BUILDDIR)/changes." 157 | 158 | linkcheck: 159 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 160 | @echo 161 | @echo "Link check complete; look for any errors in the above output " \ 162 | "or in $(BUILDDIR)/linkcheck/output.txt." 163 | 164 | doctest: 165 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 166 | @echo "Testing of doctests in the sources finished, look at the " \ 167 | "results in $(BUILDDIR)/doctest/output.txt." 168 | 169 | xml: 170 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml 171 | @echo 172 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." 173 | 174 | pseudoxml: 175 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml 176 | @echo 177 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." 178 | -------------------------------------------------------------------------------- /doc/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | if "%SPHINXBUILD%" == "" ( 6 | set SPHINXBUILD=sphinx-build 7 | ) 8 | set BUILDDIR=_build 9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . 10 | set I18NSPHINXOPTS=%SPHINXOPTS% . 11 | if NOT "%PAPER%" == "" ( 12 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 13 | set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% 14 | ) 15 | 16 | if "%1" == "" goto help 17 | 18 | if "%1" == "help" ( 19 | :help 20 | echo.Please use `make ^` where ^ is one of 21 | echo. html to make standalone HTML files 22 | echo. dirhtml to make HTML files named index.html in directories 23 | echo. singlehtml to make a single large HTML file 24 | echo. pickle to make pickle files 25 | echo. json to make JSON files 26 | echo. htmlhelp to make HTML files and a HTML help project 27 | echo. qthelp to make HTML files and a qthelp project 28 | echo. devhelp to make HTML files and a Devhelp project 29 | echo. epub to make an epub 30 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter 31 | echo. text to make text files 32 | echo. man to make manual pages 33 | echo. texinfo to make Texinfo files 34 | echo. gettext to make PO message catalogs 35 | echo. changes to make an overview over all changed/added/deprecated items 36 | echo. xml to make Docutils-native XML files 37 | echo. pseudoxml to make pseudoxml-XML files for display purposes 38 | echo. linkcheck to check all external links for integrity 39 | echo. doctest to run all doctests embedded in the documentation if enabled 40 | goto end 41 | ) 42 | 43 | if "%1" == "clean" ( 44 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i 45 | del /q /s %BUILDDIR%\* 46 | goto end 47 | ) 48 | 49 | 50 | %SPHINXBUILD% 2> nul 51 | if errorlevel 9009 ( 52 | echo. 53 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 54 | echo.installed, then set the SPHINXBUILD environment variable to point 55 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 56 | echo.may add the Sphinx directory to PATH. 57 | echo. 58 | echo.If you don't have Sphinx installed, grab it from 59 | echo.http://sphinx-doc.org/ 60 | exit /b 1 61 | ) 62 | 63 | if "%1" == "html" ( 64 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html 65 | if errorlevel 1 exit /b 1 66 | echo. 67 | echo.Build finished. The HTML pages are in %BUILDDIR%/html. 68 | goto end 69 | ) 70 | 71 | if "%1" == "dirhtml" ( 72 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml 73 | if errorlevel 1 exit /b 1 74 | echo. 75 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. 76 | goto end 77 | ) 78 | 79 | if "%1" == "singlehtml" ( 80 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml 81 | if errorlevel 1 exit /b 1 82 | echo. 83 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. 84 | goto end 85 | ) 86 | 87 | if "%1" == "pickle" ( 88 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle 89 | if errorlevel 1 exit /b 1 90 | echo. 91 | echo.Build finished; now you can process the pickle files. 92 | goto end 93 | ) 94 | 95 | if "%1" == "json" ( 96 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json 97 | if errorlevel 1 exit /b 1 98 | echo. 99 | echo.Build finished; now you can process the JSON files. 100 | goto end 101 | ) 102 | 103 | if "%1" == "htmlhelp" ( 104 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp 105 | if errorlevel 1 exit /b 1 106 | echo. 107 | echo.Build finished; now you can run HTML Help Workshop with the ^ 108 | .hhp project file in %BUILDDIR%/htmlhelp. 109 | goto end 110 | ) 111 | 112 | if "%1" == "qthelp" ( 113 | %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp 114 | if errorlevel 1 exit /b 1 115 | echo. 116 | echo.Build finished; now you can run "qcollectiongenerator" with the ^ 117 | .qhcp project file in %BUILDDIR%/qthelp, like this: 118 | echo.^> qcollectiongenerator %BUILDDIR%\qthelp\technical_indicators.qhcp 119 | echo.To view the help file: 120 | echo.^> assistant -collectionFile %BUILDDIR%\qthelp\technical_indicators.ghc 121 | goto end 122 | ) 123 | 124 | if "%1" == "devhelp" ( 125 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp 126 | if errorlevel 1 exit /b 1 127 | echo. 128 | echo.Build finished. 129 | goto end 130 | ) 131 | 132 | if "%1" == "epub" ( 133 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub 134 | if errorlevel 1 exit /b 1 135 | echo. 136 | echo.Build finished. The epub file is in %BUILDDIR%/epub. 137 | goto end 138 | ) 139 | 140 | if "%1" == "latex" ( 141 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 142 | if errorlevel 1 exit /b 1 143 | echo. 144 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. 145 | goto end 146 | ) 147 | 148 | if "%1" == "latexpdf" ( 149 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 150 | cd %BUILDDIR%/latex 151 | make all-pdf 152 | cd %BUILDDIR%/.. 153 | echo. 154 | echo.Build finished; the PDF files are in %BUILDDIR%/latex. 155 | goto end 156 | ) 157 | 158 | if "%1" == "latexpdfja" ( 159 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 160 | cd %BUILDDIR%/latex 161 | make all-pdf-ja 162 | cd %BUILDDIR%/.. 163 | echo. 164 | echo.Build finished; the PDF files are in %BUILDDIR%/latex. 165 | goto end 166 | ) 167 | 168 | if "%1" == "text" ( 169 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text 170 | if errorlevel 1 exit /b 1 171 | echo. 172 | echo.Build finished. The text files are in %BUILDDIR%/text. 173 | goto end 174 | ) 175 | 176 | if "%1" == "man" ( 177 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man 178 | if errorlevel 1 exit /b 1 179 | echo. 180 | echo.Build finished. The manual pages are in %BUILDDIR%/man. 181 | goto end 182 | ) 183 | 184 | if "%1" == "texinfo" ( 185 | %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo 186 | if errorlevel 1 exit /b 1 187 | echo. 188 | echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. 189 | goto end 190 | ) 191 | 192 | if "%1" == "gettext" ( 193 | %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale 194 | if errorlevel 1 exit /b 1 195 | echo. 196 | echo.Build finished. The message catalogs are in %BUILDDIR%/locale. 197 | goto end 198 | ) 199 | 200 | if "%1" == "changes" ( 201 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes 202 | if errorlevel 1 exit /b 1 203 | echo. 204 | echo.The overview file is in %BUILDDIR%/changes. 205 | goto end 206 | ) 207 | 208 | if "%1" == "linkcheck" ( 209 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck 210 | if errorlevel 1 exit /b 1 211 | echo. 212 | echo.Link check complete; look for any errors in the above output ^ 213 | or in %BUILDDIR%/linkcheck/output.txt. 214 | goto end 215 | ) 216 | 217 | if "%1" == "doctest" ( 218 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest 219 | if errorlevel 1 exit /b 1 220 | echo. 221 | echo.Testing of doctests in the sources finished, look at the ^ 222 | results in %BUILDDIR%/doctest/output.txt. 223 | goto end 224 | ) 225 | 226 | if "%1" == "xml" ( 227 | %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml 228 | if errorlevel 1 exit /b 1 229 | echo. 230 | echo.Build finished. The XML files are in %BUILDDIR%/xml. 231 | goto end 232 | ) 233 | 234 | if "%1" == "pseudoxml" ( 235 | %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml 236 | if errorlevel 1 exit /b 1 237 | echo. 238 | echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. 239 | goto end 240 | ) 241 | 242 | :end 243 | -------------------------------------------------------------------------------- /technical_indicators/doc/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * doctools.js 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx JavaScript utilities for all documentation. 6 | * 7 | * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /** 13 | * select a different prefix for underscore 14 | */ 15 | $u = _.noConflict(); 16 | 17 | /** 18 | * make the code below compatible with browsers without 19 | * an installed firebug like debugger 20 | if (!window.console || !console.firebug) { 21 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", 22 | "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", 23 | "profile", "profileEnd"]; 24 | window.console = {}; 25 | for (var i = 0; i < names.length; ++i) 26 | window.console[names[i]] = function() {}; 27 | } 28 | */ 29 | 30 | /** 31 | * small helper function to urldecode strings 32 | */ 33 | jQuery.urldecode = function(x) { 34 | return decodeURIComponent(x).replace(/\+/g, ' '); 35 | }; 36 | 37 | /** 38 | * small helper function to urlencode strings 39 | */ 40 | jQuery.urlencode = encodeURIComponent; 41 | 42 | /** 43 | * This function returns the parsed url parameters of the 44 | * current request. Multiple values per key are supported, 45 | * it will always return arrays of strings for the value parts. 46 | */ 47 | jQuery.getQueryParameters = function(s) { 48 | if (typeof s == 'undefined') 49 | s = document.location.search; 50 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 51 | var result = {}; 52 | for (var i = 0; i < parts.length; i++) { 53 | var tmp = parts[i].split('=', 2); 54 | var key = jQuery.urldecode(tmp[0]); 55 | var value = jQuery.urldecode(tmp[1]); 56 | if (key in result) 57 | result[key].push(value); 58 | else 59 | result[key] = [value]; 60 | } 61 | return result; 62 | }; 63 | 64 | /** 65 | * highlight a given string on a jquery object by wrapping it in 66 | * span elements with the given class name. 67 | */ 68 | jQuery.fn.highlightText = function(text, className) { 69 | function highlight(node) { 70 | if (node.nodeType == 3) { 71 | var val = node.nodeValue; 72 | var pos = val.toLowerCase().indexOf(text); 73 | if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { 74 | var span = document.createElement("span"); 75 | span.className = className; 76 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 77 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 78 | document.createTextNode(val.substr(pos + text.length)), 79 | node.nextSibling)); 80 | node.nodeValue = val.substr(0, pos); 81 | } 82 | } 83 | else if (!jQuery(node).is("button, select, textarea")) { 84 | jQuery.each(node.childNodes, function() { 85 | highlight(this); 86 | }); 87 | } 88 | } 89 | return this.each(function() { 90 | highlight(this); 91 | }); 92 | }; 93 | 94 | /** 95 | * Small JavaScript module for the documentation. 96 | */ 97 | var Documentation = { 98 | 99 | init : function() { 100 | this.fixFirefoxAnchorBug(); 101 | this.highlightSearchWords(); 102 | this.initIndexTable(); 103 | }, 104 | 105 | /** 106 | * i18n support 107 | */ 108 | TRANSLATIONS : {}, 109 | PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, 110 | LOCALE : 'unknown', 111 | 112 | // gettext and ngettext don't access this so that the functions 113 | // can safely bound to a different name (_ = Documentation.gettext) 114 | gettext : function(string) { 115 | var translated = Documentation.TRANSLATIONS[string]; 116 | if (typeof translated == 'undefined') 117 | return string; 118 | return (typeof translated == 'string') ? translated : translated[0]; 119 | }, 120 | 121 | ngettext : function(singular, plural, n) { 122 | var translated = Documentation.TRANSLATIONS[singular]; 123 | if (typeof translated == 'undefined') 124 | return (n == 1) ? singular : plural; 125 | return translated[Documentation.PLURALEXPR(n)]; 126 | }, 127 | 128 | addTranslations : function(catalog) { 129 | for (var key in catalog.messages) 130 | this.TRANSLATIONS[key] = catalog.messages[key]; 131 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); 132 | this.LOCALE = catalog.locale; 133 | }, 134 | 135 | /** 136 | * add context elements like header anchor links 137 | */ 138 | addContextElements : function() { 139 | $('div[id] > :header:first').each(function() { 140 | $('\u00B6'). 141 | attr('href', '#' + this.id). 142 | attr('title', _('Permalink to this headline')). 143 | appendTo(this); 144 | }); 145 | $('dt[id]').each(function() { 146 | $('\u00B6'). 147 | attr('href', '#' + this.id). 148 | attr('title', _('Permalink to this definition')). 149 | appendTo(this); 150 | }); 151 | }, 152 | 153 | /** 154 | * workaround a firefox stupidity 155 | */ 156 | fixFirefoxAnchorBug : function() { 157 | if (document.location.hash && $.browser.mozilla) 158 | window.setTimeout(function() { 159 | document.location.href += ''; 160 | }, 10); 161 | }, 162 | 163 | /** 164 | * highlight the search words provided in the url in the text 165 | */ 166 | highlightSearchWords : function() { 167 | var params = $.getQueryParameters(); 168 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; 169 | if (terms.length) { 170 | var body = $('div.body'); 171 | if (!body.length) { 172 | body = $('body'); 173 | } 174 | window.setTimeout(function() { 175 | $.each(terms, function() { 176 | body.highlightText(this.toLowerCase(), 'highlighted'); 177 | }); 178 | }, 10); 179 | $('') 181 | .appendTo($('#searchbox')); 182 | } 183 | }, 184 | 185 | /** 186 | * init the domain index toggle buttons 187 | */ 188 | initIndexTable : function() { 189 | var togglers = $('img.toggler').click(function() { 190 | var src = $(this).attr('src'); 191 | var idnum = $(this).attr('id').substr(7); 192 | $('tr.cg-' + idnum).toggle(); 193 | if (src.substr(-9) == 'minus.png') 194 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 195 | else 196 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 197 | }).css('display', ''); 198 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { 199 | togglers.click(); 200 | } 201 | }, 202 | 203 | /** 204 | * helper function to hide the search marks again 205 | */ 206 | hideSearchWords : function() { 207 | $('#searchbox .highlight-link').fadeOut(300); 208 | $('span.highlighted').removeClass('highlighted'); 209 | }, 210 | 211 | /** 212 | * make the url absolute 213 | */ 214 | makeURL : function(relativeURL) { 215 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 216 | }, 217 | 218 | /** 219 | * get the current relative url 220 | */ 221 | getCurrentURL : function() { 222 | var path = document.location.pathname; 223 | var parts = path.split(/\//); 224 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 225 | if (this == '..') 226 | parts.pop(); 227 | }); 228 | var url = parts.join('/'); 229 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 230 | } 231 | }; 232 | 233 | // quick alias for translations 234 | _ = Documentation.gettext; 235 | 236 | $(document).ready(function() { 237 | Documentation.init(); 238 | }); 239 | -------------------------------------------------------------------------------- /technical_indicators/doc/changelog.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ChangeLog — technical_indicators 0.0.16 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 49 | 50 |
51 |
52 |
53 |
54 | 55 |
56 |

ChangeLog

57 |

0.0.16 2014-06-03

58 |
Changed both yml files to include Py3.4.
 59 | 
60 |
61 |

0.0.15 2014-06-02

62 |
Changed both yml files to become as similar as possible.
 63 | 
64 |
65 |

0.0.14 2014-06-02

66 |
Added end user documentation to .gitignore.
 67 | Added option PROJ_TYPE to build.bat to distinguish between modules and
 68 | applications.
 69 | Added pythonhosted.org files to MANIFEST.in.
 70 | Changed __init__.py to use glob to select py2exe and cxf data files.
 71 | Added options to py2exe config in setup.py.
 72 | Fill some Docstrings.
 73 | 
74 |
75 |

0.0.13 2014-05-31

76 |
Remarked bdist_egg, bdist_wininst, cxf and py2exe builds from build.bat.
 77 | 
78 |
79 |

0.0.12 2014-05-31

80 |
Added zip_safe to setup.py.
 81 | 
82 |
83 |

0.0.11 2014-05-31

84 |
Added PyPI documentation in dir pythonhosted.org (redirects to
 85 | ReadTheDocs).
 86 | Changed doc\index.rst to include README.rst.
 87 | Updated build.bat.
 88 | 
89 |
90 |

0.0.10 2014-05-31

91 |
Corrected classifiers in __init__.py. Added ReadTheDocs doc.
 92 | Added prep_rst2pdf.py and prep_rst2pdf.py to help build.bat.
 93 | Changed build.bat.
 94 | 
95 |
96 |

0.0.9 2014-05-30

97 |
Added py_app_ver.py and changed build.bat.
 98 | 
99 |
100 |

0.0.8 2014-05-30

101 |
Corrected yml and __init__.py because numpy is not installing in Py3
102 | 
103 |
104 |

0.0.7 2014-05-30

105 |
Corrected test and yml files
106 | 
107 |
108 |

0.0.6 2014-05-29

109 |
Added Shippable CI
110 | 
111 |
112 |

0.0.5 2014-05-29

113 |
Added doctests, packaging, build automation, sphinx doc, travis.
114 | Changed license and versioning.
115 | 
116 |
117 |

0.0.4 2013-07-03

118 |
Added ROC and MA envelopes
119 | 
120 |
121 |

0.0.3 2013-06-30

122 |
Added WMA and more EMA types.
123 | 
124 |
125 |

0.0.2 2013-06-18

126 |
Added Bollinger bandwidth and %B
127 | Created a GitHub repository
128 | 
129 |
130 |

0.0.1 2013-06-05

131 |
Includes RSI, SMA, EMA and BB
132 | 
133 |
134 |
135 | 136 | 137 |
138 |
139 |
140 |
141 |
142 |

Previous topic

143 |

License

145 |

Next topic

146 |

Code authors

148 |

This Page

149 | 153 | 165 | 166 |
167 |
168 |
169 |
170 | 188 | 192 | 193 | -------------------------------------------------------------------------------- /technical_indicators/doc/searchindex.js: -------------------------------------------------------------------------------- 1 | Search.setIndex({envversion:42,terms:{all:2,concept:3,"80945403e":3,roc:[0,3,4],ema_typ:3,interchang:2,legal:2,follow:[2,3],oldest:3,"76737475e":3,whose:2,decid:2,middl:3,depend:[0,2,3],"80546993e":3,readabl:2,"43672335e":3,conspicu:2,articl:3,"49848539e":3,program:2,decis:2,under:[0,2,3],"67087637e":3,aris:2,wma:[0,3,4],introduc:[2,3],"06575000e":3,merchant:2,num_std_dev:3,sourc:[2,3],everi:2,risk:2,"void":2,rise:3,print:[2,3],volum:2,whether:2,ma_typ:3,fall:3,csidata:3,school:3,level:3,geograph:2,"61250893e":3,bdist_egg:4,readthedoc:4,"93910000e":3,dir:4,upper:3,impli:2,"79647665e":3,trend:3,natur:3,htm:3,direct:3,sign:2,consequ:2,rate:3,street:2,design:2,aggreg:2,pass:2,further:2,carlo:2,even:2,index:[0,3,4],what:2,"30256250e":3,"29344497e":3,neg:3,section:2,access:2,below:[2,3],bollinger_band:3,version:[2,4],"new":[0,2,3],ever:2,"public":2,contrast:2,"56499890e":3,"08630000e":3,full:2,themselv:2,deriv:[2,3],"11200000e":3,gener:[2,3],len:3,disclaim:2,accur:3,modif:2,address:2,along:2,becom:[3,4],modifi:2,sinc:2,valu:3,remark:4,statu:2,announc:2,"97986867e":3,"09880000e":3,precis:2,"29486389e":3,customarili:2,franklin:2,permit:2,expressli:2,extrem:3,chang:[2,3,4],narrow:3,"49015375e":3,regardless:2,danger:2,forbid:2,appli:[2,3],modul:[0,2,3,4],foundat:2,"1st":3,instal:[2,4],select:4,linearlyweightedmovingaverag:3,plot:3,fee:2,from:[2,3,4],usa:2,prove:2,two:2,next:3,moving_averag:3,deviat:3,scope:2,type:[3,4],tell:2,more:[0,2,3,4],flat:3,peopl:2,notic:2,"45630193e":3,particular:2,known:3,"56547911e":3,must:2,"89956780e":3,"16682146e":3,analys:[0,3],setup:4,work:[2,3],remain:2,"80732672e":3,can:[0,2,3],"67861377e":3,learn:3,meet:2,purpos:2,control:2,claim:2,give:2,predict:3,share:2,accept:2,high:3,"49062071e":3,proprietari:2,want:2,tai:3,end:[2,4],goal:2,secur:3,rather:2,anoth:[2,3],ordinari:2,six:3,classifi:4,write:2,how:2,anyon:[0,2,3],pure:3,instead:2,config:4,roseta:2,updat:4,outsid:2,lag:3,top:3,reflect:[2,3],pertin:2,floor:2,mai:2,shippabl:4,law:2,associ:2,wman:3,physic:2,circumst:2,github:4,attempt:2,practic:2,third:2,read:[2,3],condit:2,explicit:2,correspond:2,"21182512e":3,exclud:2,caus:2,patent:2,allow:2,parti:2,order:2,oper:2,help:[3,4],over:3,move:[0,3],becaus:[2,3,4],trade:3,surrend:2,held:2,through:2,gitignor:4,"48939343e":3,dynam:3,paramet:3,render:2,fit:2,"03707509e":3,feel:[0,3],window:[0,3],therefor:2,them:2,"78266958e":3,thei:[2,3],"15826692e":3,python:[0,3],promin:2,safe:3,dai:3,number:[2,3],band:[0,3],redistributor:2,now:3,"95080000e":3,choic:2,term:[2,3],anyth:2,simpl:[0,3],revers:3,separ:2,magazin:3,each:[2,3],doku:3,stock:[0,3],oblig:2,side:3,mean:[2,3],compil:2,prohibit:2,weight:[0,3],individu:2,"00563838e":3,redistribut:2,search:0,expect:3,"92797873e":3,year:2,fluctuat:3,our:2,"99125000e":3,event:2,special:2,out:2,"55995881e":3,proj_typ:4,"08830000e":3,publish:2,your:2,content:[0,2],sustain:2,rel:[0,3],"50411874e":3,mato:[1,2],correct:[0,2,3,4],sma:[0,3,4],integr:2,asp:3,envelop:[0,3,4],given:2,free:[0,2,3],standard:3,reason:2,base:[2,3],believ:2,ask:2,org:[2,3,4],refer:[0,2],could:2,exponenti:[0,3],keep:2,thing:2,enforc:2,place:[2,3],"02286710e":3,swing:3,view:2,licens:[0,4],first:3,origin:2,softwar:2,major:2,directli:2,wilder:3,carri:[2,3],exchang:2,arrai:3,independ:2,qualiti:2,bollinger_band_width:3,thereof:2,system:[2,3],restrict:2,date:2,done:0,agre:2,intent:2,differ:[2,3],script:2,"19508503e":3,interact:2,sometim:2,least:2,"01003516e":3,too:2,termin:2,john:3,"final":2,includ:[2,3,4],assign:3,option:[2,3,4],relationship:3,bolling:[0,3,4],travi:4,copi:2,eman:3,specifi:2,provid:[0,2,3],gummi:3,part:2,accompani:2,relative_strength_in:3,rst:4,holder:2,than:[2,3],wide:2,kind:2,"08689946e":3,prevent:2,zero:3,cost:2,balanc:2,were:3,"48594576e":3,someon:2,seri:3,sai:2,"80844179e":3,"26132536e":3,boston:2,py3:4,ani:[2,3],"97460000e":3,"74461225e":3,alleg:2,packag:4,"55979807e":3,medium:2,complet:2,have:2,"52300429e":3,need:2,"60682430e":3,well:3,rsi:[0,3,4],issu:[2,3],strength:[0,3],verbatim:2,equival:2,inform:2,diverg:3,"45322396e":3,also:[2,3],exampl:2,take:2,which:[2,3],donor:2,chart_school:3,noth:2,court:2,sure:2,unless:2,distribut:2,normal:2,multipli:3,quantifi:3,price:[2,3],who:2,"46722663e":3,"57045878e":3,most:[2,3],"87085000e":3,"69140657e":3,sublicens:2,charg:2,"09040000e":3,pythonhost:4,doc:4,clear:2,later:2,cover:2,doe:2,deni:2,"61412791e":3,"41460689e":3,determin:3,"37270110e":3,preambl:2,recipi:2,show:2,"11670000e":3,"40246702e":3,bring:2,"79529311e":3,permiss:2,"90455000e":3,reput:2,data:[2,3,4],fifth:2,redirect:4,onli:2,forex:3,nois:3,copyright:2,activ:2,state:2,should:2,"47286754e":3,blablabla:2,zip_saf:4,stockchart:3,yml:4,hope:2,contribut:[0,2,3],get:2,express:2,pypi:4,"84332063e":3,"72660054e":3,cannot:2,"82660026e":3,increas:3,liabl:2,"58475503e":3,requir:[0,2,3],"48579313e":3,bat:4,fxtrade:3,ema:[0,3,4],"03953265e":3,"07702198e":3,sidewai:3,stuff:3,she:2,contain:2,where:3,wrote:2,commod:3,kernel:2,set:3,inabl:2,"float":3,sensit:3,elimin:3,resist:3,"79667604e":3,see:2,"08641429e":3,respons:2,close:3,"11660000e":3,concern:2,"75638279e":3,"42636418e":3,written:2,"10495000e":3,volatil:3,action:2,between:[3,4],"import":3,awai:2,altern:2,ema0:3,accord:2,sole:2,extend:2,induc:2,"45543042e":3,subject:2,"11905000e":3,posit:3,incident:2,entir:2,exponenci:3,extent:2,distinguish:[2,4],"92400000e":3,come:3,addit:2,both:[2,4],protect:2,license:2,"25117832e":3,trader:3,equal:3,bdist_wininst:4,whole:2,among:2,widen:3,technic:[0,3],period:3,except:2,prep_rst2pdf:4,formula:3,cxf:4,averag:[0,3],guid:2,assum:2,speak:2,"63143909e":3,"75671306e":3,numpi:[0,3,4],three:2,been:2,compon:2,basic:3,threaten:2,"03815000e":3,wish:[0,2,3],"59778366e":3,defect:2,"50982021e":3,understand:2,els:2,"30661576e":3,rang:[2,3],spirit:2,present:2,"case":2,look:3,gnu:2,"58667464e":3,servic:2,properti:2,doctest:4,lesser:2,defin:3,calcul:3,abov:[2,3],"72280810e":3,howev:2,subsect:2,file:[2,4],oversold:3,readm:4,herein:2,infring:2,"68644625e":3,limit:2,revis:2,mani:[2,3],"57766250e":3,"__init__":4,"70228361e":3,unenforc:2,develop:3,grant:2,perform:2,suggest:[0,3],make:2,satisfi:2,same:2,binari:2,"45303313e":3,failur:[2,3],document:[2,4],higher:3,http:[2,3],effect:2,piec:2,"00805000e":3,rais:3,user:[2,4],countri:2,build:4,php:3,judgment:2,implement:2,recent:3,lower:3,appropri:2,"12415000e":3,com:[1,3],thu:2,"77606054e":3,itself:2,without:2,command:2,thi:[0,2,3],choos:2,py_app_v:4,"55613582e":3,identifi:[2,3],execut:2,percent:3,obtain:2,rest:2,detail:[2,3],relianc:2,bandwidth:[0,3,4],"22789193e":3,simultan:2,languag:2,ma_env:3,autom:4,moving_average_envel:3,add:[0,2,3],book:3,"81278915e":3,exercis:2,input:3,"82449423e":3,momentum:3,"95225220e":3,bollinger_band_perc:3,applic:[2,4],"31086945e":3,royalti:2,advis:2,"19313782e":3,loss:2,preserv:2,prefer:2,"93266744e":3,"12495000e":3,know:2,thoroughli:2,measur:3,"11234420e":3,like:3,"45733946e":3,"52141243e":3,contradict:2,signal:3,jcrmato:1,manifest:4,collect:2,"05526266e":3,either:2,output:[2,3],page:0,oanda:3,www:3,right:2,gmail:1,back:3,percentag:3,centerlin:3,rate_of_change_roc_a:3,intact:2,constitut:2,joao:[1,2],"71165424e":3,investopedia:3,bottom:3,"76327337e":3,avoid:2,though:2,definit:2,best:3,when:[0,2,3],necessari:2,damag:2,proc:3,glob:4,noncommerci:2,machin:2,plu:2,object:2,run:2,"79526687e":3,reach:3,agreement:2,step:2,promot:2,repositori:4,hereinaft:2,impos:2,after:3,would:2,incorpor:2,"80194599e":3,freedom:2,"46761721e":3,"37753219e":3,act:2,"26311285e":3,commit:2,min_period:3,"33114122e":3,other:2,repair:2,"42420124e":3,within:3,"62738126e":3,automat:[2,3],warranti:2,"16304661e":3,"19497209e":3,storag:2,mere:2,"74291521e":3,fill:4,complianc:2,wai:2,transfer:2,support:3,bodi:2,"long":2,start:2,interfac:2,low:3,"68197929e":3,constantli:2,reus:2,reduc:3,"55947188e":3,form:[2,3],offer:2,hasn:3,some:[0,2,3,4],"47851634e":3,oscil:3,excus:2,grati:2,translat:2,everyon:2,line:3,"true":2,count:2,made:2,consist:2,possibl:[2,4],"default":3,page_id:3,smooth:3,displai:2,inaccur:2,those:2,absenc:2,otherwis:2,problem:2,similar:[2,4],featur:[0,3],"77834713e":3,creat:4,"int":3,certain:2,decreas:3,"96885000e":3,guarante:2,overbought:3,inc:2,"72760849e":3,contest:2,financialwebr:3,compel:2,"74650724e":3,invalid:2,"38972812e":3,valid:2,futur:3,test:[0,3,4],crossov:3,you:[2,3],"20906879e":3,intend:2,py2ex:4,"11525000e":3,"12919107e":3,june:[2,3],docstr:4,ndarrai:3,consequenti:2,"96503854e":3,refrain:2,consid:[2,3],ago:3,"07661263e":3,"31816571e":3,receiv:2,sphinx:4,fsf:2,indirectli:2,portion:2,"48722001e":3,"83328285e":3,potenti:3,time:[2,3],licensor:2},objtypes:{"0":"py:module","1":"py:function"},objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"]},filenames:["index","codeauthors","license","reference","changelog"],titles:["technical_indicators","Code authors","License","Reference","ChangeLog"],objects:{technical_indicators:{technical_indicators:[3,0,0,"-"]},"technical_indicators.technical_indicators":{ema:[3,1,1,""],rsi:[3,1,1,""],bb:[3,1,1,""],ma_env:[3,1,1,""],roc:[3,1,1,""],wma:[3,1,1,""],sma:[3,1,1,""]}},titleterms:{technical_ind:[0,3],code:1,changelog:4,licens:2,author:1,indic:0,tabl:0,refer:3}}) -------------------------------------------------------------------------------- /doc/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # technical_indicators documentation build configuration file, created by 4 | # sphinx-quickstart on Sun May 25 12:42:45 2014. 5 | # 6 | # This file is execfile()d with the current directory set to its 7 | # containing dir. 8 | # 9 | # Note that not all possible configuration values are present in this 10 | # autogenerated file. 11 | # 12 | # All configuration values have a default; values that are commented out 13 | # serve to show the default. 14 | 15 | import sys 16 | import os 17 | 18 | # If extensions (or modules to document with autodoc) are in another directory, 19 | # add these directories to sys.path here. If the directory is relative to the 20 | # documentation root, use os.path.abspath to make it absolute, like shown here. 21 | #sys.path.insert(0, os.path.abspath('.')) 22 | sys.path.insert(0, os.path.abspath('..')) 23 | 24 | # -- General configuration ------------------------------------------------ 25 | 26 | # If your documentation needs a minimal Sphinx version, state it here. 27 | #needs_sphinx = '1.0' 28 | 29 | # Add any Sphinx extension module names here, as strings. They can be 30 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom 31 | # ones. 32 | extensions = [ 33 | 'sphinx.ext.autodoc', 34 | 'sphinx.ext.doctest', 35 | 'sphinx.ext.viewcode', 36 | ] 37 | doctest_path = sys.path[0:1] # *** Added *** 38 | 39 | # Add any paths that contain templates here, relative to this directory. 40 | templates_path = ['_templates'] 41 | 42 | # The suffix of source filenames. 43 | source_suffix = '.rst' 44 | 45 | # The encoding of source files. 46 | #source_encoding = 'utf-8-sig' 47 | 48 | # The master toctree document. 49 | master_doc = 'index' 50 | 51 | # General information about the project. 52 | project = u'technical_indicators' 53 | copyright = u'2014, Joao Matos' 54 | 55 | # The version info for the project you're documenting, acts as replacement for 56 | # |version| and |release|, also used in various other places throughout the 57 | # built documents. 58 | # 59 | # The short X.Y version. 60 | #version = '0.0.5' 61 | version = open('../ChangeLog.rst').readline().split()[0] 62 | 63 | # The full version, including alpha/beta/rc tags. 64 | #release = '0.0.5' 65 | release = version 66 | 67 | # The language for content autogenerated by Sphinx. Refer to documentation 68 | # for a list of supported languages. 69 | #language = None 70 | 71 | # There are two options for replacing |today|: either, you set today to some 72 | # non-false value, then it is used: 73 | #today = '' 74 | # Else, today_fmt is used as the format for a strftime call. 75 | #today_fmt = '%B %d, %Y' 76 | 77 | # List of patterns, relative to source directory, that match files and 78 | # directories to ignore when looking for source files. 79 | exclude_patterns = ['_build'] 80 | 81 | # The reST default role (used for this markup: `text`) to use for all 82 | # documents. 83 | #default_role = None 84 | 85 | # If true, '()' will be appended to :func: etc. cross-reference text. 86 | #add_function_parentheses = True 87 | 88 | # If true, the current module name will be prepended to all description 89 | # unit titles (such as .. function::). 90 | #add_module_names = True 91 | 92 | # If true, sectionauthor and moduleauthor directives will be shown in the 93 | # output. They are ignored by default. 94 | #show_authors = False 95 | 96 | # The name of the Pygments (syntax highlighting) style to use. 97 | pygments_style = 'sphinx' 98 | 99 | # A list of ignored prefixes for module index sorting. 100 | #modindex_common_prefix = [] 101 | 102 | # If true, keep warnings as "system message" paragraphs in the built documents. 103 | #keep_warnings = False 104 | 105 | 106 | # -- Options for HTML output ---------------------------------------------- 107 | 108 | # The theme to use for HTML and HTML Help pages. See the documentation for 109 | # a list of builtin themes. 110 | html_theme = 'default' 111 | 112 | # Theme options are theme-specific and customize the look and feel of a theme 113 | # further. For a list of options available for each theme, see the 114 | # documentation. 115 | #html_theme_options = {} 116 | 117 | # Add any paths that contain custom themes here, relative to this directory. 118 | #html_theme_path = [] 119 | 120 | # The name for this set of Sphinx documents. If None, it defaults to 121 | # " v documentation". 122 | #html_title = None 123 | 124 | # A shorter title for the navigation bar. Default is the same as html_title. 125 | #html_short_title = None 126 | 127 | # The name of an image file (relative to this directory) to place at the top 128 | # of the sidebar. 129 | #html_logo = None 130 | 131 | # The name of an image file (within the static path) to use as favicon of the 132 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 133 | # pixels large. 134 | #html_favicon = None 135 | 136 | # Add any paths that contain custom static files (such as style sheets) here, 137 | # relative to this directory. They are copied after the builtin static files, 138 | # so a file named "default.css" will overwrite the builtin "default.css". 139 | html_static_path = ['_static'] 140 | 141 | # Add any extra paths that contain custom files (such as robots.txt or 142 | # .htaccess) here, relative to this directory. These files are copied 143 | # directly to the root of the documentation. 144 | #html_extra_path = [] 145 | 146 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 147 | # using the given strftime format. 148 | #html_last_updated_fmt = '%b %d, %Y' 149 | 150 | # If true, SmartyPants will be used to convert quotes and dashes to 151 | # typographically correct entities. 152 | #html_use_smartypants = True 153 | 154 | # Custom sidebar templates, maps document names to template names. 155 | #html_sidebars = {} 156 | 157 | # Additional templates that should be rendered to pages, maps page names to 158 | # template names. 159 | #html_additional_pages = {} 160 | 161 | # If false, no module index is generated. 162 | #html_domain_indices = True 163 | 164 | # If false, no index is generated. 165 | #html_use_index = True 166 | 167 | # If true, the index is split into individual pages for each letter. 168 | #html_split_index = False 169 | 170 | # If true, links to the reST sources are added to the pages. 171 | #html_show_sourcelink = True 172 | 173 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 174 | #html_show_sphinx = True 175 | 176 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 177 | #html_show_copyright = True 178 | 179 | # If true, an OpenSearch description file will be output, and all pages will 180 | # contain a tag referring to it. The value of this option must be the 181 | # base URL from which the finished HTML is served. 182 | #html_use_opensearch = '' 183 | 184 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 185 | #html_file_suffix = None 186 | 187 | # Output file base name for HTML help builder. 188 | htmlhelp_basename = 'technical_indicatorsdoc' 189 | 190 | 191 | # -- Options for LaTeX output --------------------------------------------- 192 | 193 | latex_elements = { 194 | # The paper size ('letterpaper' or 'a4paper'). 195 | #'papersize': 'letterpaper', 196 | 197 | # The font size ('10pt', '11pt' or '12pt'). 198 | #'pointsize': '10pt', 199 | 200 | # Additional stuff for the LaTeX preamble. 201 | #'preamble': '', 202 | } 203 | 204 | # Grouping the document tree into LaTeX files. List of tuples 205 | # (source start file, target name, title, 206 | # author, documentclass [howto, manual, or own class]). 207 | latex_documents = [ 208 | ('index', 'technical_indicators.tex', u'technical\\_indicators Documentation', 209 | u'Joao Matos', 'manual'), 210 | ] 211 | 212 | # The name of an image file (relative to this directory) to place at the top of 213 | # the title page. 214 | #latex_logo = None 215 | 216 | # For "manual" documents, if this is true, then toplevel headings are parts, 217 | # not chapters. 218 | #latex_use_parts = False 219 | 220 | # If true, show page references after internal links. 221 | #latex_show_pagerefs = False 222 | 223 | # If true, show URL addresses after external links. 224 | #latex_show_urls = False 225 | 226 | # Documents to append as an appendix to all manuals. 227 | #latex_appendices = [] 228 | 229 | # If false, no module index is generated. 230 | #latex_domain_indices = True 231 | 232 | 233 | # -- Options for manual page output --------------------------------------- 234 | 235 | # One entry per manual page. List of tuples 236 | # (source start file, name, description, authors, manual section). 237 | man_pages = [ 238 | ('index', 'technical_indicators', u'technical_indicators Documentation', 239 | [u'Joao Matos'], 1) 240 | ] 241 | 242 | # If true, show URL addresses after external links. 243 | #man_show_urls = False 244 | 245 | 246 | # -- Options for Texinfo output ------------------------------------------- 247 | 248 | # Grouping the document tree into Texinfo files. List of tuples 249 | # (source start file, target name, title, author, 250 | # dir menu entry, description, category) 251 | texinfo_documents = [ 252 | ('index', 'technical_indicators', u'technical_indicators Documentation', 253 | u'Joao Matos', 'technical_indicators', 'One line description of project.', 254 | 'Miscellaneous'), 255 | ] 256 | 257 | # Documents to append as an appendix to all manuals. 258 | #texinfo_appendices = [] 259 | 260 | # If false, no module index is generated. 261 | #texinfo_domain_indices = True 262 | 263 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 264 | #texinfo_show_urls = 'footnote' 265 | 266 | # If true, do not generate a @detailmenu in the "Top" node's menu. 267 | #texinfo_no_detailmenu = False 268 | -------------------------------------------------------------------------------- /test/test.rst: -------------------------------------------------------------------------------- 1 | technical_indicators test file 2 | ============================== 3 | 4 | roc 5 | --- 6 | 7 | >>> import numpy as np 8 | >>> import technical_indicators.technical_indicators as tai 9 | >>> prices = np.array([11045.27, 11167.32, 11008.61, 11151.83, 10926.77, 10 | ... 10868.12, 10520.32, 10380.43, 10785.14, 10748.26, 10896.91, 10782.95, 11 | ... 10620.16, 10625.83, 10510.95, 10444.37, 10068.01, 10193.39, 10066.57, 12 | ... 10043.75]) 13 | >>> print(tai.roc(prices, period=12)) 14 | [-3.84879682 -4.84888048 -4.52064339 -6.34389154 -7.85923013 -6.20834146 15 | -4.31308173 -3.24341092] 16 | 17 | rsi 18 | --- 19 | 20 | >>> import numpy as np 21 | >>> import technical_indicators.technical_indicators as tai 22 | >>> prices = np.array([44.55, 44.3, 44.36, 43.82, 44.46, 44.96, 45.23, 23 | ... 45.56, 45.98, 46.22, 46.03, 46.17, 45.75, 46.42, 46.42, 46.14, 46.17, 24 | ... 46.55, 46.36, 45.78, 46.35, 46.39, 45.85, 46.59, 45.92, 45.49, 44.16, 25 | ... 44.31, 44.35, 44.7, 43.55, 42.79, 43.26]) 26 | >>> print(tai.rsi(prices)) 27 | [ 70.02141328 65.77440817 66.01226849 68.95536568 65.88342192 28 | 57.46707948 62.532685 62.86690858 55.64975092 62.07502976 29 | 54.39159393 50.10513101 39.68712141 41.17273382 41.5859395 30 | 45.21224077 37.06939108 32.85768734 37.58081218] 31 | 32 | sma 33 | --- 34 | 35 | >>> import numpy as np 36 | >>> import technical_indicators.technical_indicators as tai 37 | >>> prices = np.array([22.27, 22.19, 22.08, 22.17, 22.18, 22.13, 22.23, 38 | ... 22.43, 22.24, 22.29, 22.15, 22.39, 22.38, 22.61, 23.36, 24.05, 23.75, 39 | ... 23.83, 23.95, 23.63, 23.82, 23.87, 23.65, 23.19, 23.10, 23.33, 22.68, 40 | ... 23.10, 22.40, 22.17]) 41 | >>> period = 10 42 | >>> print(tai.sma(prices, period)) 43 | [ 22.221 22.209 22.229 22.259 22.303 22.421 22.613 22.765 22.905 44 | 23.076 23.21 23.377 23.525 23.652 23.71 23.684 23.612 23.505 45 | 23.432 23.277 23.131] 46 | 47 | wma 48 | --- 49 | 50 | >>> import numpy as np 51 | >>> import technical_indicators.technical_indicators as tai 52 | >>> prices = np.array([77, 79, 79, 81, 83, 49, 55]) 53 | >>> period = 5 54 | >>> print(tai.wma(prices, period)) 55 | [ 80.73333333 70.46666667 64.06666667] 56 | 57 | ema 58 | --- 59 | 60 | >>> import numpy as np 61 | >>> import technical_indicators.technical_indicators as tai 62 | >>> prices = np.array([22.27, 22.19, 22.08, 22.17, 22.18, 22.13, 22.23, 63 | ... 22.43, 22.24, 22.29, 22.15, 22.39, 22.38, 22.61, 23.36, 24.05, 23.75, 64 | ... 23.83, 23.95, 23.63, 23.82, 23.87, 23.65, 23.19, 23.10, 23.33, 22.68, 65 | ... 23.10, 22.40, 22.17]) 66 | >>> period = 10 67 | >>> print(tai.ema(prices, period)) 68 | [ 22.221 22.20809091 22.24116529 22.26640796 22.32887924 69 | 22.51635574 22.79520015 22.96880013 23.12538192 23.27531248 70 | 23.33980112 23.42711001 23.50763546 23.53351992 23.47106176 71 | 23.40359598 23.39021489 23.26108491 23.23179675 23.08056097 72 | 22.91500443] 73 | >>> print(tai.ema(prices, period, 1)) 74 | [ 22.27 22.25545455 22.22355372 22.21381668 22.20766819 75 | 22.1935467 22.20017457 22.24196102 22.24160447 22.25040366 76 | 22.23214845 22.26084873 22.2825126 22.34205576 22.52713653 77 | 22.8040208 22.97601702 23.13128665 23.28014362 23.34375387 78 | 23.43034408 23.51028152 23.53568488 23.47283308 23.40504525 79 | 23.39140066 23.26205508 23.23259052 23.08121043 22.9155358 ] 80 | >>> print(tai.ema(prices, period, 2)) 81 | [ 22.28588695 22.174706 22.35085492 22.37470018 22.5672175 82 | 23.21585701 23.89833692 23.77696963 23.82035739 23.9264279 83 | 23.68389526 23.79525297 23.85640891 23.68752817 23.28045894 84 | 23.13280996 23.29414649 22.79166223 23.04393782 22.51707883 85 | 22.23310448] 86 | 87 | ma_env 88 | ------ 89 | 90 | >>> import numpy as np 91 | >>> import technical_indicators.technical_indicators as tai 92 | >>> prices = np.array([86.16, 89.09, 88.78, 90.32, 89.07, 91.15, 89.44, 93 | ... 89.18, 86.93, 87.68, 86.96, 89.43, 89.32, 88.72, 87.45, 87.26, 89.50, 94 | ... 87.90, 89.13, 90.70, 92.90, 92.98, 91.80, 92.66, 92.68, 92.30, 92.77, 95 | ... 92.54, 92.95, 93.20, 91.07, 89.83, 89.74, 90.40, 90.74, 88.02, 88.09, 96 | ... 88.84, 90.78, 90.54, 91.39, 90.65]) 97 | >>> period = 20 98 | >>> print(tai.ma_env(prices, period, 0.1, 4)) 99 | [[ 97.57935 88.7085 79.83765 17.7417 0.35635537] 100 | [ 97.95005 89.0455 80.14095 17.8091 0.50249872] 101 | [ 98.164 89.24 80.316 17.848 0.4742268 ] 102 | [ 98.3301 89.391 80.4519 17.8782 0.55196273] 103 | [ 98.4588 89.508 80.5572 17.9016 0.47553291] 104 | [ 98.65735 89.6885 80.71965 17.9377 0.58147644] 105 | [ 98.7206 89.746 80.7714 17.9492 0.48295189] 106 | [ 98.90375 89.9125 80.92125 17.9825 0.45926595] 107 | [ 99.08855 90.0805 81.07245 18.0161 0.32512863] 108 | [ 99.41965 90.3815 81.34335 18.0763 0.35055017] 109 | [ 99.72325 90.6575 81.59175 18.1315 0.29607313] 110 | [ 99.9493 90.863 81.7767 18.1726 0.42114502] 111 | [ 99.9713 90.883 81.7947 18.1766 0.41401032] 112 | [ 99.9944 90.904 81.8136 18.1808 0.37987327] 113 | [ 100.0868 90.988 81.8892 18.1976 0.30557876] 114 | [ 100.26775 91.1525 82.03725 18.2305 0.28648419] 115 | [ 100.30955 91.1905 82.07145 18.2381 0.40730942] 116 | [ 100.232 91.12 82.008 18.224 0.32330992] 117 | [ 100.2837 91.167 82.0503 18.2334 0.38828194] 118 | [ 100.37445 91.2495 82.12455 18.2499 0.46989025] 119 | [ 100.36565 91.2415 82.11735 18.2483 0.59088518] 120 | [ 100.2826 91.166 82.0494 18.2332 0.59948884] 121 | [ 100.15445 91.0495 81.94455 18.2099 0.54121385]] 122 | 123 | bb 124 | -- 125 | 126 | >>> import numpy as np 127 | >>> import technical_indicators.technical_indicators as tai 128 | >>> prices = np.array([86.16, 89.09, 88.78, 90.32, 89.07, 91.15, 89.44, 129 | ... 89.18, 86.93, 87.68, 86.96, 89.43, 89.32, 88.72, 87.45, 87.26, 89.50, 130 | ... 87.90, 89.13, 90.70, 92.90, 92.98, 91.80, 92.66, 92.68, 92.30, 92.77, 131 | ... 92.54, 92.95, 93.20, 91.07, 89.83, 89.74, 90.40, 90.74, 88.02, 88.09, 132 | ... 88.84, 90.78, 90.54, 91.39, 90.65]) 133 | >>> period = 20 134 | >>> print(tai.bb(prices, period)) 135 | [[ 9.12919107e+01 8.87085000e+01 8.61250893e+01 5.82449423e-02 136 | 5.16682146e+00 6.75671306e-03] 137 | [ 9.19497209e+01 8.90455000e+01 8.61412791e+01 6.52300429e-02 138 | 5.80844179e+00 5.07661263e-01] 139 | [ 9.26132536e+01 8.92400000e+01 8.58667464e+01 7.55995881e-02 140 | 6.74650724e+00 4.31816571e-01] 141 | [ 9.29344497e+01 8.93910000e+01 8.58475503e+01 7.92797873e-02 142 | 7.08689946e+00 6.31086945e-01] 143 | [ 9.33114122e+01 8.95080000e+01 8.57045878e+01 8.49848539e-02 144 | 7.60682430e+00 4.42420124e-01] 145 | [ 9.37270110e+01 8.96885000e+01 8.56499890e+01 9.00563838e-02 146 | 8.07702198e+00 6.80945403e-01] 147 | [ 9.38972812e+01 8.97460000e+01 8.55947188e+01 9.25117832e-02 148 | 8.30256250e+00 4.63143909e-01] 149 | [ 9.42636418e+01 8.99125000e+01 8.55613582e+01 9.67861377e-02 150 | 8.70228361e+00 4.15826692e-01] 151 | [ 9.45630193e+01 9.00805000e+01 8.55979807e+01 9.95225220e-02 152 | 8.96503854e+00 1.48579313e-01] 153 | [ 9.47851634e+01 9.03815000e+01 8.59778366e+01 9.74461225e-02 154 | 8.80732672e+00 1.93266744e-01] 155 | [ 9.50411874e+01 9.06575000e+01 8.62738126e+01 9.67087637e-02 156 | 8.76737475e+00 7.82660026e-02] 157 | [ 9.49062071e+01 9.08630000e+01 8.68197929e+01 8.89956780e-02 158 | 8.08641429e+00 3.22789193e-01] 159 | [ 9.49015375e+01 9.08830000e+01 8.68644625e+01 8.84332063e-02 160 | 8.03707509e+00 3.05526266e-01] 161 | [ 9.48939343e+01 9.09040000e+01 8.69140657e+01 8.77834713e-02 162 | 7.97986867e+00 2.26311285e-01] 163 | [ 9.48594576e+01 9.09880000e+01 8.71165424e+01 8.50982021e-02 164 | 7.74291521e+00 4.30661576e-02] 165 | [ 9.46722663e+01 9.11525000e+01 8.76327337e+01 7.72280810e-02 166 | 7.03953265e+00 -5.29486389e-02] 167 | [ 9.45543042e+01 9.11905000e+01 8.78266958e+01 7.37753219e-02 168 | 6.72760849e+00 2.48722001e-01] 169 | [ 9.46761721e+01 9.11200000e+01 8.75638279e+01 7.80546993e-02 170 | 7.11234420e+00 4.72660054e-02] 171 | [ 9.45733946e+01 9.11670000e+01 8.77606054e+01 7.47286754e-02 172 | 6.81278915e+00 2.01003516e-01] 173 | [ 9.45322396e+01 9.12495000e+01 8.79667604e+01 7.19508503e-02 174 | 6.56547911e+00 4.16304661e-01] 175 | [ 9.45303313e+01 9.12415000e+01 8.79526687e+01 7.20906879e-02 176 | 6.57766250e+00 7.52141243e-01] 177 | [ 9.43672335e+01 9.11660000e+01 8.79647665e+01 7.02286710e-02 178 | 6.40246702e+00 7.83328285e-01] 179 | [ 9.41460689e+01 9.10495000e+01 8.79529311e+01 6.80194599e-02 180 | 6.19313782e+00 6.21182512e-01]] 181 | -------------------------------------------------------------------------------- /technical_indicators/doc/_static/basic.css: -------------------------------------------------------------------------------- 1 | /* 2 | * basic.css 3 | * ~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- basic theme. 6 | * 7 | * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /* -- main layout ----------------------------------------------------------- */ 13 | 14 | div.clearer { 15 | clear: both; 16 | } 17 | 18 | /* -- relbar ---------------------------------------------------------------- */ 19 | 20 | div.related { 21 | width: 100%; 22 | font-size: 90%; 23 | } 24 | 25 | div.related h3 { 26 | display: none; 27 | } 28 | 29 | div.related ul { 30 | margin: 0; 31 | padding: 0 0 0 10px; 32 | list-style: none; 33 | } 34 | 35 | div.related li { 36 | display: inline; 37 | } 38 | 39 | div.related li.right { 40 | float: right; 41 | margin-right: 5px; 42 | } 43 | 44 | /* -- sidebar --------------------------------------------------------------- */ 45 | 46 | div.sphinxsidebarwrapper { 47 | padding: 10px 5px 0 10px; 48 | } 49 | 50 | div.sphinxsidebar { 51 | float: left; 52 | width: 230px; 53 | margin-left: -100%; 54 | font-size: 90%; 55 | } 56 | 57 | div.sphinxsidebar ul { 58 | list-style: none; 59 | } 60 | 61 | div.sphinxsidebar ul ul, 62 | div.sphinxsidebar ul.want-points { 63 | margin-left: 20px; 64 | list-style: square; 65 | } 66 | 67 | div.sphinxsidebar ul ul { 68 | margin-top: 0; 69 | margin-bottom: 0; 70 | } 71 | 72 | div.sphinxsidebar form { 73 | margin-top: 10px; 74 | } 75 | 76 | div.sphinxsidebar input { 77 | border: 1px solid #98dbcc; 78 | font-family: sans-serif; 79 | font-size: 1em; 80 | } 81 | 82 | div.sphinxsidebar #searchbox input[type="text"] { 83 | width: 170px; 84 | } 85 | 86 | div.sphinxsidebar #searchbox input[type="submit"] { 87 | width: 30px; 88 | } 89 | 90 | img { 91 | border: 0; 92 | max-width: 100%; 93 | } 94 | 95 | /* -- search page ----------------------------------------------------------- */ 96 | 97 | ul.search { 98 | margin: 10px 0 0 20px; 99 | padding: 0; 100 | } 101 | 102 | ul.search li { 103 | padding: 5px 0 5px 20px; 104 | background-image: url(file.png); 105 | background-repeat: no-repeat; 106 | background-position: 0 7px; 107 | } 108 | 109 | ul.search li a { 110 | font-weight: bold; 111 | } 112 | 113 | ul.search li div.context { 114 | color: #888; 115 | margin: 2px 0 0 30px; 116 | text-align: left; 117 | } 118 | 119 | ul.keywordmatches li.goodmatch a { 120 | font-weight: bold; 121 | } 122 | 123 | /* -- index page ------------------------------------------------------------ */ 124 | 125 | table.contentstable { 126 | width: 90%; 127 | } 128 | 129 | table.contentstable p.biglink { 130 | line-height: 150%; 131 | } 132 | 133 | a.biglink { 134 | font-size: 1.3em; 135 | } 136 | 137 | span.linkdescr { 138 | font-style: italic; 139 | padding-top: 5px; 140 | font-size: 90%; 141 | } 142 | 143 | /* -- general index --------------------------------------------------------- */ 144 | 145 | table.indextable { 146 | width: 100%; 147 | } 148 | 149 | table.indextable td { 150 | text-align: left; 151 | vertical-align: top; 152 | } 153 | 154 | table.indextable dl, table.indextable dd { 155 | margin-top: 0; 156 | margin-bottom: 0; 157 | } 158 | 159 | table.indextable tr.pcap { 160 | height: 10px; 161 | } 162 | 163 | table.indextable tr.cap { 164 | margin-top: 10px; 165 | background-color: #f2f2f2; 166 | } 167 | 168 | img.toggler { 169 | margin-right: 3px; 170 | margin-top: 3px; 171 | cursor: pointer; 172 | } 173 | 174 | div.modindex-jumpbox { 175 | border-top: 1px solid #ddd; 176 | border-bottom: 1px solid #ddd; 177 | margin: 1em 0 1em 0; 178 | padding: 0.4em; 179 | } 180 | 181 | div.genindex-jumpbox { 182 | border-top: 1px solid #ddd; 183 | border-bottom: 1px solid #ddd; 184 | margin: 1em 0 1em 0; 185 | padding: 0.4em; 186 | } 187 | 188 | /* -- general body styles --------------------------------------------------- */ 189 | 190 | a.headerlink { 191 | visibility: hidden; 192 | } 193 | 194 | h1:hover > a.headerlink, 195 | h2:hover > a.headerlink, 196 | h3:hover > a.headerlink, 197 | h4:hover > a.headerlink, 198 | h5:hover > a.headerlink, 199 | h6:hover > a.headerlink, 200 | dt:hover > a.headerlink { 201 | visibility: visible; 202 | } 203 | 204 | div.body p.caption { 205 | text-align: inherit; 206 | } 207 | 208 | div.body td { 209 | text-align: left; 210 | } 211 | 212 | .field-list ul { 213 | padding-left: 1em; 214 | } 215 | 216 | .first { 217 | margin-top: 0 !important; 218 | } 219 | 220 | p.rubric { 221 | margin-top: 30px; 222 | font-weight: bold; 223 | } 224 | 225 | img.align-left, .figure.align-left, object.align-left { 226 | clear: left; 227 | float: left; 228 | margin-right: 1em; 229 | } 230 | 231 | img.align-right, .figure.align-right, object.align-right { 232 | clear: right; 233 | float: right; 234 | margin-left: 1em; 235 | } 236 | 237 | img.align-center, .figure.align-center, object.align-center { 238 | display: block; 239 | margin-left: auto; 240 | margin-right: auto; 241 | } 242 | 243 | .align-left { 244 | text-align: left; 245 | } 246 | 247 | .align-center { 248 | text-align: center; 249 | } 250 | 251 | .align-right { 252 | text-align: right; 253 | } 254 | 255 | /* -- sidebars -------------------------------------------------------------- */ 256 | 257 | div.sidebar { 258 | margin: 0 0 0.5em 1em; 259 | border: 1px solid #ddb; 260 | padding: 7px 7px 0 7px; 261 | background-color: #ffe; 262 | width: 40%; 263 | float: right; 264 | } 265 | 266 | p.sidebar-title { 267 | font-weight: bold; 268 | } 269 | 270 | /* -- topics ---------------------------------------------------------------- */ 271 | 272 | div.topic { 273 | border: 1px solid #ccc; 274 | padding: 7px 7px 0 7px; 275 | margin: 10px 0 10px 0; 276 | } 277 | 278 | p.topic-title { 279 | font-size: 1.1em; 280 | font-weight: bold; 281 | margin-top: 10px; 282 | } 283 | 284 | /* -- admonitions ----------------------------------------------------------- */ 285 | 286 | div.admonition { 287 | margin-top: 10px; 288 | margin-bottom: 10px; 289 | padding: 7px; 290 | } 291 | 292 | div.admonition dt { 293 | font-weight: bold; 294 | } 295 | 296 | div.admonition dl { 297 | margin-bottom: 0; 298 | } 299 | 300 | p.admonition-title { 301 | margin: 0px 10px 5px 0px; 302 | font-weight: bold; 303 | } 304 | 305 | div.body p.centered { 306 | text-align: center; 307 | margin-top: 25px; 308 | } 309 | 310 | /* -- tables ---------------------------------------------------------------- */ 311 | 312 | table.docutils { 313 | border: 0; 314 | border-collapse: collapse; 315 | } 316 | 317 | table.docutils td, table.docutils th { 318 | padding: 1px 8px 1px 5px; 319 | border-top: 0; 320 | border-left: 0; 321 | border-right: 0; 322 | border-bottom: 1px solid #aaa; 323 | } 324 | 325 | table.field-list td, table.field-list th { 326 | border: 0 !important; 327 | } 328 | 329 | table.footnote td, table.footnote th { 330 | border: 0 !important; 331 | } 332 | 333 | th { 334 | text-align: left; 335 | padding-right: 5px; 336 | } 337 | 338 | table.citation { 339 | border-left: solid 1px gray; 340 | margin-left: 1px; 341 | } 342 | 343 | table.citation td { 344 | border-bottom: none; 345 | } 346 | 347 | /* -- other body styles ----------------------------------------------------- */ 348 | 349 | ol.arabic { 350 | list-style: decimal; 351 | } 352 | 353 | ol.loweralpha { 354 | list-style: lower-alpha; 355 | } 356 | 357 | ol.upperalpha { 358 | list-style: upper-alpha; 359 | } 360 | 361 | ol.lowerroman { 362 | list-style: lower-roman; 363 | } 364 | 365 | ol.upperroman { 366 | list-style: upper-roman; 367 | } 368 | 369 | dl { 370 | margin-bottom: 15px; 371 | } 372 | 373 | dd p { 374 | margin-top: 0px; 375 | } 376 | 377 | dd ul, dd table { 378 | margin-bottom: 10px; 379 | } 380 | 381 | dd { 382 | margin-top: 3px; 383 | margin-bottom: 10px; 384 | margin-left: 30px; 385 | } 386 | 387 | dt:target, .highlighted { 388 | background-color: #fbe54e; 389 | } 390 | 391 | dl.glossary dt { 392 | font-weight: bold; 393 | font-size: 1.1em; 394 | } 395 | 396 | .field-list ul { 397 | margin: 0; 398 | padding-left: 1em; 399 | } 400 | 401 | .field-list p { 402 | margin: 0; 403 | } 404 | 405 | .optional { 406 | font-size: 1.3em; 407 | } 408 | 409 | .versionmodified { 410 | font-style: italic; 411 | } 412 | 413 | .system-message { 414 | background-color: #fda; 415 | padding: 5px; 416 | border: 3px solid red; 417 | } 418 | 419 | .footnote:target { 420 | background-color: #ffa; 421 | } 422 | 423 | .line-block { 424 | display: block; 425 | margin-top: 1em; 426 | margin-bottom: 1em; 427 | } 428 | 429 | .line-block .line-block { 430 | margin-top: 0; 431 | margin-bottom: 0; 432 | margin-left: 1.5em; 433 | } 434 | 435 | .guilabel, .menuselection { 436 | font-family: sans-serif; 437 | } 438 | 439 | .accelerator { 440 | text-decoration: underline; 441 | } 442 | 443 | .classifier { 444 | font-style: oblique; 445 | } 446 | 447 | abbr, acronym { 448 | border-bottom: dotted 1px; 449 | cursor: help; 450 | } 451 | 452 | /* -- code displays --------------------------------------------------------- */ 453 | 454 | pre { 455 | overflow: auto; 456 | overflow-y: hidden; /* fixes display issues on Chrome browsers */ 457 | } 458 | 459 | td.linenos pre { 460 | padding: 5px 0px; 461 | border: 0; 462 | background-color: transparent; 463 | color: #aaa; 464 | } 465 | 466 | table.highlighttable { 467 | margin-left: 0.5em; 468 | } 469 | 470 | table.highlighttable td { 471 | padding: 0 0.5em 0 0.5em; 472 | } 473 | 474 | tt.descname { 475 | background-color: transparent; 476 | font-weight: bold; 477 | font-size: 1.2em; 478 | } 479 | 480 | tt.descclassname { 481 | background-color: transparent; 482 | } 483 | 484 | tt.xref, a tt { 485 | background-color: transparent; 486 | font-weight: bold; 487 | } 488 | 489 | h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { 490 | background-color: transparent; 491 | } 492 | 493 | .viewcode-link { 494 | float: right; 495 | } 496 | 497 | .viewcode-back { 498 | float: right; 499 | font-family: sans-serif; 500 | } 501 | 502 | div.viewcode-block:target { 503 | margin: -1px -10px; 504 | padding: 0 10px; 505 | } 506 | 507 | /* -- math display ---------------------------------------------------------- */ 508 | 509 | img.math { 510 | vertical-align: middle; 511 | } 512 | 513 | div.body div.math p { 514 | text-align: center; 515 | } 516 | 517 | span.eqno { 518 | float: right; 519 | } 520 | 521 | /* -- printout stylesheet --------------------------------------------------- */ 522 | 523 | @media print { 524 | div.document, 525 | div.documentwrapper, 526 | div.bodywrapper { 527 | margin: 0 !important; 528 | width: 100%; 529 | } 530 | 531 | div.sphinxsidebar, 532 | div.related, 533 | div.footer, 534 | #top-link { 535 | display: none; 536 | } 537 | } -------------------------------------------------------------------------------- /technical_indicators/doc/_static/underscore.js: -------------------------------------------------------------------------------- 1 | // Underscore.js 1.3.1 2 | // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. 3 | // Underscore is freely distributable under the MIT license. 4 | // Portions of Underscore are inspired or borrowed from Prototype, 5 | // Oliver Steele's Functional, and John Resig's Micro-Templating. 6 | // For all details and documentation: 7 | // http://documentcloud.github.com/underscore 8 | (function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== 9 | c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, 10 | h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= 11 | b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== 12 | null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= 13 | function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= 14 | e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= 15 | function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, 17 | c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; 24 | b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, 25 | 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; 26 | b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; 27 | b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), 28 | function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ 29 | u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= 30 | function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= 31 | true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); 32 | -------------------------------------------------------------------------------- /LICENSE.TXT: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | :: 5 | 6 | technical_indicators - blablabla 7 | Copyright (C) 2014 Joao Carlos Roseta Matos 8 | 9 | This program is free software; you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation; either version 2 of the License, or 12 | (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU General Public License for more details. 18 | 19 | You should have received a copy of the GNU General Public License along 20 | with this program; if not, write to the Free Software Foundation, Inc., 21 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 | 23 | 24 | 25 | GNU GENERAL PUBLIC LICENSE 26 | Version 2, June 1991 27 | 28 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 29 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 30 | Everyone is permitted to copy and distribute verbatim copies 31 | of this license document, but changing it is not allowed. 32 | 33 | Preamble 34 | 35 | The licenses for most software are designed to take away your 36 | freedom to share and change it. By contrast, the GNU General Public 37 | License is intended to guarantee your freedom to share and change free 38 | software--to make sure the software is free for all its users. This 39 | General Public License applies to most of the Free Software 40 | Foundation's software and to any other program whose authors commit to 41 | using it. (Some other Free Software Foundation software is covered by 42 | the GNU Lesser General Public License instead.) You can apply it to 43 | your programs, too. 44 | 45 | When we speak of free software, we are referring to freedom, not 46 | price. Our General Public Licenses are designed to make sure that you 47 | have the freedom to distribute copies of free software (and charge for 48 | this service if you wish), that you receive source code or can get it 49 | if you want it, that you can change the software or use pieces of it 50 | in new free programs; and that you know you can do these things. 51 | 52 | To protect your rights, we need to make restrictions that forbid 53 | anyone to deny you these rights or to ask you to surrender the rights. 54 | These restrictions translate to certain responsibilities for you if you 55 | distribute copies of the software, or if you modify it. 56 | 57 | For example, if you distribute copies of such a program, whether 58 | gratis or for a fee, you must give the recipients all the rights that 59 | you have. You must make sure that they, too, receive or can get the 60 | source code. And you must show them these terms so they know their 61 | rights. 62 | 63 | We protect your rights with two steps: (1) copyright the software, and 64 | (2) offer you this license which gives you legal permission to copy, 65 | distribute and/or modify the software. 66 | 67 | Also, for each author's protection and ours, we want to make certain 68 | that everyone understands that there is no warranty for this free 69 | software. If the software is modified by someone else and passed on, we 70 | want its recipients to know that what they have is not the original, so 71 | that any problems introduced by others will not reflect on the original 72 | authors' reputations. 73 | 74 | Finally, any free program is threatened constantly by software 75 | patents. We wish to avoid the danger that redistributors of a free 76 | program will individually obtain patent licenses, in effect making the 77 | program proprietary. To prevent this, we have made it clear that any 78 | patent must be licensed for everyone's free use or not licensed at all. 79 | 80 | The precise terms and conditions for copying, distribution and 81 | modification follow. 82 | 83 | GNU GENERAL PUBLIC LICENSE 84 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 85 | 86 | 0. This License applies to any program or other work which contains 87 | a notice placed by the copyright holder saying it may be distributed 88 | under the terms of this General Public License. The "Program", below, 89 | refers to any such program or work, and a "work based on the Program" 90 | means either the Program or any derivative work under copyright law: 91 | that is to say, a work containing the Program or a portion of it, 92 | either verbatim or with modifications and/or translated into another 93 | language. (Hereinafter, translation is included without limitation in 94 | the term "modification".) Each licensee is addressed as "you". 95 | 96 | Activities other than copying, distribution and modification are not 97 | covered by this License; they are outside its scope. The act of 98 | running the Program is not restricted, and the output from the Program 99 | is covered only if its contents constitute a work based on the 100 | Program (independent of having been made by running the Program). 101 | Whether that is true depends on what the Program does. 102 | 103 | 1. You may copy and distribute verbatim copies of the Program's 104 | source code as you receive it, in any medium, provided that you 105 | conspicuously and appropriately publish on each copy an appropriate 106 | copyright notice and disclaimer of warranty; keep intact all the 107 | notices that refer to this License and to the absence of any warranty; 108 | and give any other recipients of the Program a copy of this License 109 | along with the Program. 110 | 111 | You may charge a fee for the physical act of transferring a copy, and 112 | you may at your option offer warranty protection in exchange for a fee. 113 | 114 | 2. You may modify your copy or copies of the Program or any portion 115 | of it, thus forming a work based on the Program, and copy and 116 | distribute such modifications or work under the terms of Section 1 117 | above, provided that you also meet all of these conditions: 118 | 119 | a) You must cause the modified files to carry prominent notices 120 | stating that you changed the files and the date of any change. 121 | 122 | b) You must cause any work that you distribute or publish, that in 123 | whole or in part contains or is derived from the Program or any 124 | part thereof, to be licensed as a whole at no charge to all third 125 | parties under the terms of this License. 126 | 127 | c) If the modified program normally reads commands interactively 128 | when run, you must cause it, when started running for such 129 | interactive use in the most ordinary way, to print or display an 130 | announcement including an appropriate copyright notice and a 131 | notice that there is no warranty (or else, saying that you provide 132 | a warranty) and that users may redistribute the program under 133 | these conditions, and telling the user how to view a copy of this 134 | License. (Exception: if the Program itself is interactive but 135 | does not normally print such an announcement, your work based on 136 | the Program is not required to print an announcement.) 137 | 138 | These requirements apply to the modified work as a whole. If 139 | identifiable sections of that work are not derived from the Program, 140 | and can be reasonably considered independent and separate works in 141 | themselves, then this License, and its terms, do not apply to those 142 | sections when you distribute them as separate works. But when you 143 | distribute the same sections as part of a whole which is a work based 144 | on the Program, the distribution of the whole must be on the terms of 145 | this License, whose permissions for other licensees extend to the 146 | entire whole, and thus to each and every part regardless of who wrote it. 147 | 148 | Thus, it is not the intent of this section to claim rights or contest 149 | your rights to work written entirely by you; rather, the intent is to 150 | exercise the right to control the distribution of derivative or 151 | collective works based on the Program. 152 | 153 | In addition, mere aggregation of another work not based on the Program 154 | with the Program (or with a work based on the Program) on a volume of 155 | a storage or distribution medium does not bring the other work under 156 | the scope of this License. 157 | 158 | 3. You may copy and distribute the Program (or a work based on it, 159 | under Section 2) in object code or executable form under the terms of 160 | Sections 1 and 2 above provided that you also do one of the following: 161 | 162 | a) Accompany it with the complete corresponding machine-readable 163 | source code, which must be distributed under the terms of Sections 164 | 1 and 2 above on a medium customarily used for software interchange; or, 165 | 166 | b) Accompany it with a written offer, valid for at least three 167 | years, to give any third party, for a charge no more than your 168 | cost of physically performing source distribution, a complete 169 | machine-readable copy of the corresponding source code, to be 170 | distributed under the terms of Sections 1 and 2 above on a medium 171 | customarily used for software interchange; or, 172 | 173 | c) Accompany it with the information you received as to the offer 174 | to distribute corresponding source code. (This alternative is 175 | allowed only for noncommercial distribution and only if you 176 | received the program in object code or executable form with such 177 | an offer, in accord with Subsection b above.) 178 | 179 | The source code for a work means the preferred form of the work for 180 | making modifications to it. For an executable work, complete source 181 | code means all the source code for all modules it contains, plus any 182 | associated interface definition files, plus the scripts used to 183 | control compilation and installation of the executable. However, as a 184 | special exception, the source code distributed need not include 185 | anything that is normally distributed (in either source or binary 186 | form) with the major components (compiler, kernel, and so on) of the 187 | operating system on which the executable runs, unless that component 188 | itself accompanies the executable. 189 | 190 | If distribution of executable or object code is made by offering 191 | access to copy from a designated place, then offering equivalent 192 | access to copy the source code from the same place counts as 193 | distribution of the source code, even though third parties are not 194 | compelled to copy the source along with the object code. 195 | 196 | 4. You may not copy, modify, sublicense, or distribute the Program 197 | except as expressly provided under this License. Any attempt 198 | otherwise to copy, modify, sublicense or distribute the Program is 199 | void, and will automatically terminate your rights under this License. 200 | However, parties who have received copies, or rights, from you under 201 | this License will not have their licenses terminated so long as such 202 | parties remain in full compliance. 203 | 204 | 5. You are not required to accept this License, since you have not 205 | signed it. However, nothing else grants you permission to modify or 206 | distribute the Program or its derivative works. These actions are 207 | prohibited by law if you do not accept this License. Therefore, by 208 | modifying or distributing the Program (or any work based on the 209 | Program), you indicate your acceptance of this License to do so, and 210 | all its terms and conditions for copying, distributing or modifying 211 | the Program or works based on it. 212 | 213 | 6. Each time you redistribute the Program (or any work based on the 214 | Program), the recipient automatically receives a license from the 215 | original licensor to copy, distribute or modify the Program subject to 216 | these terms and conditions. You may not impose any further 217 | restrictions on the recipients' exercise of the rights granted herein. 218 | You are not responsible for enforcing compliance by third parties to 219 | this License. 220 | 221 | 7. If, as a consequence of a court judgment or allegation of patent 222 | infringement or for any other reason (not limited to patent issues), 223 | conditions are imposed on you (whether by court order, agreement or 224 | otherwise) that contradict the conditions of this License, they do not 225 | excuse you from the conditions of this License. If you cannot 226 | distribute so as to satisfy simultaneously your obligations under this 227 | License and any other pertinent obligations, then as a consequence you 228 | may not distribute the Program at all. For example, if a patent 229 | license would not permit royalty-free redistribution of the Program by 230 | all those who receive copies directly or indirectly through you, then 231 | the only way you could satisfy both it and this License would be to 232 | refrain entirely from distribution of the Program. 233 | 234 | If any portion of this section is held invalid or unenforceable under 235 | any particular circumstance, the balance of the section is intended to 236 | apply and the section as a whole is intended to apply in other 237 | circumstances. 238 | 239 | It is not the purpose of this section to induce you to infringe any 240 | patents or other property right claims or to contest validity of any 241 | such claims; this section has the sole purpose of protecting the 242 | integrity of the free software distribution system, which is 243 | implemented by public license practices. Many people have made 244 | generous contributions to the wide range of software distributed 245 | through that system in reliance on consistent application of that 246 | system; it is up to the author/donor to decide if he or she is willing 247 | to distribute software through any other system and a licensee cannot 248 | impose that choice. 249 | 250 | This section is intended to make thoroughly clear what is believed to 251 | be a consequence of the rest of this License. 252 | 253 | 8. If the distribution and/or use of the Program is restricted in 254 | certain countries either by patents or by copyrighted interfaces, the 255 | original copyright holder who places the Program under this License 256 | may add an explicit geographical distribution limitation excluding 257 | those countries, so that distribution is permitted only in or among 258 | countries not thus excluded. In such case, this License incorporates 259 | the limitation as if written in the body of this License. 260 | 261 | 9. The Free Software Foundation may publish revised and/or new versions 262 | of the General Public License from time to time. Such new versions will 263 | be similar in spirit to the present version, but may differ in detail to 264 | address new problems or concerns. 265 | 266 | Each version is given a distinguishing version number. If the Program 267 | specifies a version number of this License which applies to it and "any 268 | later version", you have the option of following the terms and conditions 269 | either of that version or of any later version published by the Free 270 | Software Foundation. If the Program does not specify a version number of 271 | this License, you may choose any version ever published by the Free Software 272 | Foundation. 273 | 274 | 10. If you wish to incorporate parts of the Program into other free 275 | programs whose distribution conditions are different, write to the author 276 | to ask for permission. For software which is copyrighted by the Free 277 | Software Foundation, write to the Free Software Foundation; we sometimes 278 | make exceptions for this. Our decision will be guided by the two goals 279 | of preserving the free status of all derivatives of our free software and 280 | of promoting the sharing and reuse of software generally. 281 | 282 | NO WARRANTY 283 | 284 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 285 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 286 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 287 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 288 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 289 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 290 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 291 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 292 | REPAIR OR CORRECTION. 293 | 294 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 295 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 296 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 297 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 298 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 299 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 300 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 301 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 302 | POSSIBILITY OF SUCH DAMAGES. 303 | 304 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /LICENSE.rst: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | :: 5 | 6 | technical_indicators - blablabla 7 | Copyright (C) 2014 Joao Carlos Roseta Matos 8 | 9 | This program is free software; you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation; either version 2 of the License, or 12 | (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU General Public License for more details. 18 | 19 | You should have received a copy of the GNU General Public License along 20 | with this program; if not, write to the Free Software Foundation, Inc., 21 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 | 23 | 24 | 25 | GNU GENERAL PUBLIC LICENSE 26 | Version 2, June 1991 27 | 28 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 29 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 30 | Everyone is permitted to copy and distribute verbatim copies 31 | of this license document, but changing it is not allowed. 32 | 33 | Preamble 34 | 35 | The licenses for most software are designed to take away your 36 | freedom to share and change it. By contrast, the GNU General Public 37 | License is intended to guarantee your freedom to share and change free 38 | software--to make sure the software is free for all its users. This 39 | General Public License applies to most of the Free Software 40 | Foundation's software and to any other program whose authors commit to 41 | using it. (Some other Free Software Foundation software is covered by 42 | the GNU Lesser General Public License instead.) You can apply it to 43 | your programs, too. 44 | 45 | When we speak of free software, we are referring to freedom, not 46 | price. Our General Public Licenses are designed to make sure that you 47 | have the freedom to distribute copies of free software (and charge for 48 | this service if you wish), that you receive source code or can get it 49 | if you want it, that you can change the software or use pieces of it 50 | in new free programs; and that you know you can do these things. 51 | 52 | To protect your rights, we need to make restrictions that forbid 53 | anyone to deny you these rights or to ask you to surrender the rights. 54 | These restrictions translate to certain responsibilities for you if you 55 | distribute copies of the software, or if you modify it. 56 | 57 | For example, if you distribute copies of such a program, whether 58 | gratis or for a fee, you must give the recipients all the rights that 59 | you have. You must make sure that they, too, receive or can get the 60 | source code. And you must show them these terms so they know their 61 | rights. 62 | 63 | We protect your rights with two steps: (1) copyright the software, and 64 | (2) offer you this license which gives you legal permission to copy, 65 | distribute and/or modify the software. 66 | 67 | Also, for each author's protection and ours, we want to make certain 68 | that everyone understands that there is no warranty for this free 69 | software. If the software is modified by someone else and passed on, we 70 | want its recipients to know that what they have is not the original, so 71 | that any problems introduced by others will not reflect on the original 72 | authors' reputations. 73 | 74 | Finally, any free program is threatened constantly by software 75 | patents. We wish to avoid the danger that redistributors of a free 76 | program will individually obtain patent licenses, in effect making the 77 | program proprietary. To prevent this, we have made it clear that any 78 | patent must be licensed for everyone's free use or not licensed at all. 79 | 80 | The precise terms and conditions for copying, distribution and 81 | modification follow. 82 | 83 | GNU GENERAL PUBLIC LICENSE 84 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 85 | 86 | 0. This License applies to any program or other work which contains 87 | a notice placed by the copyright holder saying it may be distributed 88 | under the terms of this General Public License. The "Program", below, 89 | refers to any such program or work, and a "work based on the Program" 90 | means either the Program or any derivative work under copyright law: 91 | that is to say, a work containing the Program or a portion of it, 92 | either verbatim or with modifications and/or translated into another 93 | language. (Hereinafter, translation is included without limitation in 94 | the term "modification".) Each licensee is addressed as "you". 95 | 96 | Activities other than copying, distribution and modification are not 97 | covered by this License; they are outside its scope. The act of 98 | running the Program is not restricted, and the output from the Program 99 | is covered only if its contents constitute a work based on the 100 | Program (independent of having been made by running the Program). 101 | Whether that is true depends on what the Program does. 102 | 103 | 1. You may copy and distribute verbatim copies of the Program's 104 | source code as you receive it, in any medium, provided that you 105 | conspicuously and appropriately publish on each copy an appropriate 106 | copyright notice and disclaimer of warranty; keep intact all the 107 | notices that refer to this License and to the absence of any warranty; 108 | and give any other recipients of the Program a copy of this License 109 | along with the Program. 110 | 111 | You may charge a fee for the physical act of transferring a copy, and 112 | you may at your option offer warranty protection in exchange for a fee. 113 | 114 | 2. You may modify your copy or copies of the Program or any portion 115 | of it, thus forming a work based on the Program, and copy and 116 | distribute such modifications or work under the terms of Section 1 117 | above, provided that you also meet all of these conditions: 118 | 119 | a) You must cause the modified files to carry prominent notices 120 | stating that you changed the files and the date of any change. 121 | 122 | b) You must cause any work that you distribute or publish, that in 123 | whole or in part contains or is derived from the Program or any 124 | part thereof, to be licensed as a whole at no charge to all third 125 | parties under the terms of this License. 126 | 127 | c) If the modified program normally reads commands interactively 128 | when run, you must cause it, when started running for such 129 | interactive use in the most ordinary way, to print or display an 130 | announcement including an appropriate copyright notice and a 131 | notice that there is no warranty (or else, saying that you provide 132 | a warranty) and that users may redistribute the program under 133 | these conditions, and telling the user how to view a copy of this 134 | License. (Exception: if the Program itself is interactive but 135 | does not normally print such an announcement, your work based on 136 | the Program is not required to print an announcement.) 137 | 138 | These requirements apply to the modified work as a whole. If 139 | identifiable sections of that work are not derived from the Program, 140 | and can be reasonably considered independent and separate works in 141 | themselves, then this License, and its terms, do not apply to those 142 | sections when you distribute them as separate works. But when you 143 | distribute the same sections as part of a whole which is a work based 144 | on the Program, the distribution of the whole must be on the terms of 145 | this License, whose permissions for other licensees extend to the 146 | entire whole, and thus to each and every part regardless of who wrote it. 147 | 148 | Thus, it is not the intent of this section to claim rights or contest 149 | your rights to work written entirely by you; rather, the intent is to 150 | exercise the right to control the distribution of derivative or 151 | collective works based on the Program. 152 | 153 | In addition, mere aggregation of another work not based on the Program 154 | with the Program (or with a work based on the Program) on a volume of 155 | a storage or distribution medium does not bring the other work under 156 | the scope of this License. 157 | 158 | 3. You may copy and distribute the Program (or a work based on it, 159 | under Section 2) in object code or executable form under the terms of 160 | Sections 1 and 2 above provided that you also do one of the following: 161 | 162 | a) Accompany it with the complete corresponding machine-readable 163 | source code, which must be distributed under the terms of Sections 164 | 1 and 2 above on a medium customarily used for software interchange; or, 165 | 166 | b) Accompany it with a written offer, valid for at least three 167 | years, to give any third party, for a charge no more than your 168 | cost of physically performing source distribution, a complete 169 | machine-readable copy of the corresponding source code, to be 170 | distributed under the terms of Sections 1 and 2 above on a medium 171 | customarily used for software interchange; or, 172 | 173 | c) Accompany it with the information you received as to the offer 174 | to distribute corresponding source code. (This alternative is 175 | allowed only for noncommercial distribution and only if you 176 | received the program in object code or executable form with such 177 | an offer, in accord with Subsection b above.) 178 | 179 | The source code for a work means the preferred form of the work for 180 | making modifications to it. For an executable work, complete source 181 | code means all the source code for all modules it contains, plus any 182 | associated interface definition files, plus the scripts used to 183 | control compilation and installation of the executable. However, as a 184 | special exception, the source code distributed need not include 185 | anything that is normally distributed (in either source or binary 186 | form) with the major components (compiler, kernel, and so on) of the 187 | operating system on which the executable runs, unless that component 188 | itself accompanies the executable. 189 | 190 | If distribution of executable or object code is made by offering 191 | access to copy from a designated place, then offering equivalent 192 | access to copy the source code from the same place counts as 193 | distribution of the source code, even though third parties are not 194 | compelled to copy the source along with the object code. 195 | 196 | 4. You may not copy, modify, sublicense, or distribute the Program 197 | except as expressly provided under this License. Any attempt 198 | otherwise to copy, modify, sublicense or distribute the Program is 199 | void, and will automatically terminate your rights under this License. 200 | However, parties who have received copies, or rights, from you under 201 | this License will not have their licenses terminated so long as such 202 | parties remain in full compliance. 203 | 204 | 5. You are not required to accept this License, since you have not 205 | signed it. However, nothing else grants you permission to modify or 206 | distribute the Program or its derivative works. These actions are 207 | prohibited by law if you do not accept this License. Therefore, by 208 | modifying or distributing the Program (or any work based on the 209 | Program), you indicate your acceptance of this License to do so, and 210 | all its terms and conditions for copying, distributing or modifying 211 | the Program or works based on it. 212 | 213 | 6. Each time you redistribute the Program (or any work based on the 214 | Program), the recipient automatically receives a license from the 215 | original licensor to copy, distribute or modify the Program subject to 216 | these terms and conditions. You may not impose any further 217 | restrictions on the recipients' exercise of the rights granted herein. 218 | You are not responsible for enforcing compliance by third parties to 219 | this License. 220 | 221 | 7. If, as a consequence of a court judgment or allegation of patent 222 | infringement or for any other reason (not limited to patent issues), 223 | conditions are imposed on you (whether by court order, agreement or 224 | otherwise) that contradict the conditions of this License, they do not 225 | excuse you from the conditions of this License. If you cannot 226 | distribute so as to satisfy simultaneously your obligations under this 227 | License and any other pertinent obligations, then as a consequence you 228 | may not distribute the Program at all. For example, if a patent 229 | license would not permit royalty-free redistribution of the Program by 230 | all those who receive copies directly or indirectly through you, then 231 | the only way you could satisfy both it and this License would be to 232 | refrain entirely from distribution of the Program. 233 | 234 | If any portion of this section is held invalid or unenforceable under 235 | any particular circumstance, the balance of the section is intended to 236 | apply and the section as a whole is intended to apply in other 237 | circumstances. 238 | 239 | It is not the purpose of this section to induce you to infringe any 240 | patents or other property right claims or to contest validity of any 241 | such claims; this section has the sole purpose of protecting the 242 | integrity of the free software distribution system, which is 243 | implemented by public license practices. Many people have made 244 | generous contributions to the wide range of software distributed 245 | through that system in reliance on consistent application of that 246 | system; it is up to the author/donor to decide if he or she is willing 247 | to distribute software through any other system and a licensee cannot 248 | impose that choice. 249 | 250 | This section is intended to make thoroughly clear what is believed to 251 | be a consequence of the rest of this License. 252 | 253 | 8. If the distribution and/or use of the Program is restricted in 254 | certain countries either by patents or by copyrighted interfaces, the 255 | original copyright holder who places the Program under this License 256 | may add an explicit geographical distribution limitation excluding 257 | those countries, so that distribution is permitted only in or among 258 | countries not thus excluded. In such case, this License incorporates 259 | the limitation as if written in the body of this License. 260 | 261 | 9. The Free Software Foundation may publish revised and/or new versions 262 | of the General Public License from time to time. Such new versions will 263 | be similar in spirit to the present version, but may differ in detail to 264 | address new problems or concerns. 265 | 266 | Each version is given a distinguishing version number. If the Program 267 | specifies a version number of this License which applies to it and "any 268 | later version", you have the option of following the terms and conditions 269 | either of that version or of any later version published by the Free 270 | Software Foundation. If the Program does not specify a version number of 271 | this License, you may choose any version ever published by the Free Software 272 | Foundation. 273 | 274 | 10. If you wish to incorporate parts of the Program into other free 275 | programs whose distribution conditions are different, write to the author 276 | to ask for permission. For software which is copyrighted by the Free 277 | Software Foundation, write to the Free Software Foundation; we sometimes 278 | make exceptions for this. Our decision will be guided by the two goals 279 | of preserving the free status of all derivatives of our free software and 280 | of promoting the sharing and reuse of software generally. 281 | 282 | NO WARRANTY 283 | 284 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 285 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 286 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 287 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 288 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 289 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 290 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 291 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 292 | REPAIR OR CORRECTION. 293 | 294 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 295 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 296 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 297 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 298 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 299 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 300 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 301 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 302 | POSSIBILITY OF SUCH DAMAGES. 303 | 304 | END OF TERMS AND CONDITIONS -------------------------------------------------------------------------------- /technical_indicators/LICENSE.txt: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | :: 5 | 6 | technical_indicators - blablabla 7 | Copyright (C) 2014 Joao Carlos Roseta Matos 8 | 9 | This program is free software; you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation; either version 2 of the License, or 12 | (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU General Public License for more details. 18 | 19 | You should have received a copy of the GNU General Public License along 20 | with this program; if not, write to the Free Software Foundation, Inc., 21 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22 | 23 | 24 | 25 | GNU GENERAL PUBLIC LICENSE 26 | Version 2, June 1991 27 | 28 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 29 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 30 | Everyone is permitted to copy and distribute verbatim copies 31 | of this license document, but changing it is not allowed. 32 | 33 | Preamble 34 | 35 | The licenses for most software are designed to take away your 36 | freedom to share and change it. By contrast, the GNU General Public 37 | License is intended to guarantee your freedom to share and change free 38 | software--to make sure the software is free for all its users. This 39 | General Public License applies to most of the Free Software 40 | Foundation's software and to any other program whose authors commit to 41 | using it. (Some other Free Software Foundation software is covered by 42 | the GNU Lesser General Public License instead.) You can apply it to 43 | your programs, too. 44 | 45 | When we speak of free software, we are referring to freedom, not 46 | price. Our General Public Licenses are designed to make sure that you 47 | have the freedom to distribute copies of free software (and charge for 48 | this service if you wish), that you receive source code or can get it 49 | if you want it, that you can change the software or use pieces of it 50 | in new free programs; and that you know you can do these things. 51 | 52 | To protect your rights, we need to make restrictions that forbid 53 | anyone to deny you these rights or to ask you to surrender the rights. 54 | These restrictions translate to certain responsibilities for you if you 55 | distribute copies of the software, or if you modify it. 56 | 57 | For example, if you distribute copies of such a program, whether 58 | gratis or for a fee, you must give the recipients all the rights that 59 | you have. You must make sure that they, too, receive or can get the 60 | source code. And you must show them these terms so they know their 61 | rights. 62 | 63 | We protect your rights with two steps: (1) copyright the software, and 64 | (2) offer you this license which gives you legal permission to copy, 65 | distribute and/or modify the software. 66 | 67 | Also, for each author's protection and ours, we want to make certain 68 | that everyone understands that there is no warranty for this free 69 | software. If the software is modified by someone else and passed on, we 70 | want its recipients to know that what they have is not the original, so 71 | that any problems introduced by others will not reflect on the original 72 | authors' reputations. 73 | 74 | Finally, any free program is threatened constantly by software 75 | patents. We wish to avoid the danger that redistributors of a free 76 | program will individually obtain patent licenses, in effect making the 77 | program proprietary. To prevent this, we have made it clear that any 78 | patent must be licensed for everyone's free use or not licensed at all. 79 | 80 | The precise terms and conditions for copying, distribution and 81 | modification follow. 82 | 83 | GNU GENERAL PUBLIC LICENSE 84 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 85 | 86 | 0. This License applies to any program or other work which contains 87 | a notice placed by the copyright holder saying it may be distributed 88 | under the terms of this General Public License. The "Program", below, 89 | refers to any such program or work, and a "work based on the Program" 90 | means either the Program or any derivative work under copyright law: 91 | that is to say, a work containing the Program or a portion of it, 92 | either verbatim or with modifications and/or translated into another 93 | language. (Hereinafter, translation is included without limitation in 94 | the term "modification".) Each licensee is addressed as "you". 95 | 96 | Activities other than copying, distribution and modification are not 97 | covered by this License; they are outside its scope. The act of 98 | running the Program is not restricted, and the output from the Program 99 | is covered only if its contents constitute a work based on the 100 | Program (independent of having been made by running the Program). 101 | Whether that is true depends on what the Program does. 102 | 103 | 1. You may copy and distribute verbatim copies of the Program's 104 | source code as you receive it, in any medium, provided that you 105 | conspicuously and appropriately publish on each copy an appropriate 106 | copyright notice and disclaimer of warranty; keep intact all the 107 | notices that refer to this License and to the absence of any warranty; 108 | and give any other recipients of the Program a copy of this License 109 | along with the Program. 110 | 111 | You may charge a fee for the physical act of transferring a copy, and 112 | you may at your option offer warranty protection in exchange for a fee. 113 | 114 | 2. You may modify your copy or copies of the Program or any portion 115 | of it, thus forming a work based on the Program, and copy and 116 | distribute such modifications or work under the terms of Section 1 117 | above, provided that you also meet all of these conditions: 118 | 119 | a) You must cause the modified files to carry prominent notices 120 | stating that you changed the files and the date of any change. 121 | 122 | b) You must cause any work that you distribute or publish, that in 123 | whole or in part contains or is derived from the Program or any 124 | part thereof, to be licensed as a whole at no charge to all third 125 | parties under the terms of this License. 126 | 127 | c) If the modified program normally reads commands interactively 128 | when run, you must cause it, when started running for such 129 | interactive use in the most ordinary way, to print or display an 130 | announcement including an appropriate copyright notice and a 131 | notice that there is no warranty (or else, saying that you provide 132 | a warranty) and that users may redistribute the program under 133 | these conditions, and telling the user how to view a copy of this 134 | License. (Exception: if the Program itself is interactive but 135 | does not normally print such an announcement, your work based on 136 | the Program is not required to print an announcement.) 137 | 138 | These requirements apply to the modified work as a whole. If 139 | identifiable sections of that work are not derived from the Program, 140 | and can be reasonably considered independent and separate works in 141 | themselves, then this License, and its terms, do not apply to those 142 | sections when you distribute them as separate works. But when you 143 | distribute the same sections as part of a whole which is a work based 144 | on the Program, the distribution of the whole must be on the terms of 145 | this License, whose permissions for other licensees extend to the 146 | entire whole, and thus to each and every part regardless of who wrote it. 147 | 148 | Thus, it is not the intent of this section to claim rights or contest 149 | your rights to work written entirely by you; rather, the intent is to 150 | exercise the right to control the distribution of derivative or 151 | collective works based on the Program. 152 | 153 | In addition, mere aggregation of another work not based on the Program 154 | with the Program (or with a work based on the Program) on a volume of 155 | a storage or distribution medium does not bring the other work under 156 | the scope of this License. 157 | 158 | 3. You may copy and distribute the Program (or a work based on it, 159 | under Section 2) in object code or executable form under the terms of 160 | Sections 1 and 2 above provided that you also do one of the following: 161 | 162 | a) Accompany it with the complete corresponding machine-readable 163 | source code, which must be distributed under the terms of Sections 164 | 1 and 2 above on a medium customarily used for software interchange; or, 165 | 166 | b) Accompany it with a written offer, valid for at least three 167 | years, to give any third party, for a charge no more than your 168 | cost of physically performing source distribution, a complete 169 | machine-readable copy of the corresponding source code, to be 170 | distributed under the terms of Sections 1 and 2 above on a medium 171 | customarily used for software interchange; or, 172 | 173 | c) Accompany it with the information you received as to the offer 174 | to distribute corresponding source code. (This alternative is 175 | allowed only for noncommercial distribution and only if you 176 | received the program in object code or executable form with such 177 | an offer, in accord with Subsection b above.) 178 | 179 | The source code for a work means the preferred form of the work for 180 | making modifications to it. For an executable work, complete source 181 | code means all the source code for all modules it contains, plus any 182 | associated interface definition files, plus the scripts used to 183 | control compilation and installation of the executable. However, as a 184 | special exception, the source code distributed need not include 185 | anything that is normally distributed (in either source or binary 186 | form) with the major components (compiler, kernel, and so on) of the 187 | operating system on which the executable runs, unless that component 188 | itself accompanies the executable. 189 | 190 | If distribution of executable or object code is made by offering 191 | access to copy from a designated place, then offering equivalent 192 | access to copy the source code from the same place counts as 193 | distribution of the source code, even though third parties are not 194 | compelled to copy the source along with the object code. 195 | 196 | 4. You may not copy, modify, sublicense, or distribute the Program 197 | except as expressly provided under this License. Any attempt 198 | otherwise to copy, modify, sublicense or distribute the Program is 199 | void, and will automatically terminate your rights under this License. 200 | However, parties who have received copies, or rights, from you under 201 | this License will not have their licenses terminated so long as such 202 | parties remain in full compliance. 203 | 204 | 5. You are not required to accept this License, since you have not 205 | signed it. However, nothing else grants you permission to modify or 206 | distribute the Program or its derivative works. These actions are 207 | prohibited by law if you do not accept this License. Therefore, by 208 | modifying or distributing the Program (or any work based on the 209 | Program), you indicate your acceptance of this License to do so, and 210 | all its terms and conditions for copying, distributing or modifying 211 | the Program or works based on it. 212 | 213 | 6. Each time you redistribute the Program (or any work based on the 214 | Program), the recipient automatically receives a license from the 215 | original licensor to copy, distribute or modify the Program subject to 216 | these terms and conditions. You may not impose any further 217 | restrictions on the recipients' exercise of the rights granted herein. 218 | You are not responsible for enforcing compliance by third parties to 219 | this License. 220 | 221 | 7. If, as a consequence of a court judgment or allegation of patent 222 | infringement or for any other reason (not limited to patent issues), 223 | conditions are imposed on you (whether by court order, agreement or 224 | otherwise) that contradict the conditions of this License, they do not 225 | excuse you from the conditions of this License. If you cannot 226 | distribute so as to satisfy simultaneously your obligations under this 227 | License and any other pertinent obligations, then as a consequence you 228 | may not distribute the Program at all. For example, if a patent 229 | license would not permit royalty-free redistribution of the Program by 230 | all those who receive copies directly or indirectly through you, then 231 | the only way you could satisfy both it and this License would be to 232 | refrain entirely from distribution of the Program. 233 | 234 | If any portion of this section is held invalid or unenforceable under 235 | any particular circumstance, the balance of the section is intended to 236 | apply and the section as a whole is intended to apply in other 237 | circumstances. 238 | 239 | It is not the purpose of this section to induce you to infringe any 240 | patents or other property right claims or to contest validity of any 241 | such claims; this section has the sole purpose of protecting the 242 | integrity of the free software distribution system, which is 243 | implemented by public license practices. Many people have made 244 | generous contributions to the wide range of software distributed 245 | through that system in reliance on consistent application of that 246 | system; it is up to the author/donor to decide if he or she is willing 247 | to distribute software through any other system and a licensee cannot 248 | impose that choice. 249 | 250 | This section is intended to make thoroughly clear what is believed to 251 | be a consequence of the rest of this License. 252 | 253 | 8. If the distribution and/or use of the Program is restricted in 254 | certain countries either by patents or by copyrighted interfaces, the 255 | original copyright holder who places the Program under this License 256 | may add an explicit geographical distribution limitation excluding 257 | those countries, so that distribution is permitted only in or among 258 | countries not thus excluded. In such case, this License incorporates 259 | the limitation as if written in the body of this License. 260 | 261 | 9. The Free Software Foundation may publish revised and/or new versions 262 | of the General Public License from time to time. Such new versions will 263 | be similar in spirit to the present version, but may differ in detail to 264 | address new problems or concerns. 265 | 266 | Each version is given a distinguishing version number. If the Program 267 | specifies a version number of this License which applies to it and "any 268 | later version", you have the option of following the terms and conditions 269 | either of that version or of any later version published by the Free 270 | Software Foundation. If the Program does not specify a version number of 271 | this License, you may choose any version ever published by the Free Software 272 | Foundation. 273 | 274 | 10. If you wish to incorporate parts of the Program into other free 275 | programs whose distribution conditions are different, write to the author 276 | to ask for permission. For software which is copyrighted by the Free 277 | Software Foundation, write to the Free Software Foundation; we sometimes 278 | make exceptions for this. Our decision will be guided by the two goals 279 | of preserving the free status of all derivatives of our free software and 280 | of promoting the sharing and reuse of software generally. 281 | 282 | NO WARRANTY 283 | 284 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 285 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 286 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 287 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 288 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 289 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 290 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 291 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 292 | REPAIR OR CORRECTION. 293 | 294 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 295 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 296 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 297 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 298 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 299 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 300 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 301 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 302 | POSSIBILITY OF SUCH DAMAGES. 303 | 304 | END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------