From 57e02c4d93f9686ddfc601c7c4d2f5981f288046 Mon Sep 17 00:00:00 2001 From: jindaxiang Date: Tue, 12 Sep 2023 18:20:26 +0800 Subject: [PATCH] init --- .github/workflows/ci.yml | 25 +++++ .gitignore | 1 + README.md | 3 + docs/data_source.md | 7 ++ docs/img/favicon.png | Bin 0 -> 72203 bytes docs/index.md | 116 ++++++++++++++++++++++++ docs/installation.md | 176 ++++++++++++++++++++++++++++++++++++ docs/javascripts/mathjax.js | 16 ++++ docs/quickstart.md | 7 ++ main.py | 3 + mkdocs.yml | 31 +++++++ 11 files changed, 385 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/data_source.md create mode 100644 docs/img/favicon.png create mode 100644 docs/index.md create mode 100644 docs/installation.md create mode 100644 docs/javascripts/mathjax.js create mode 100644 docs/quickstart.md create mode 100644 main.py create mode 100644 mkdocs.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0c8adc7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: ci +on: + push: + branches: + - master + - main +permissions: + contents: write +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: 3.x + - run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV + - uses: actions/cache@v3 + with: + key: mkdocs-material-${{ env.cache_id }} + path: .cache + restore-keys: | + mkdocs-material- + - run: pip install mkdocs-material + - run: mkdocs gh-deploy --force diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3b00c28 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +## AKQuant + +AKQuant 是一个开源的量化投资教程项目,主要讲述 PyBroker 框架 diff --git a/docs/data_source.md b/docs/data_source.md new file mode 100644 index 0000000..d0b67ad --- /dev/null +++ b/docs/data_source.md @@ -0,0 +1,7 @@ +# 使用数据源 + +建议使用国内的股票数据源 + +## 数据源的定义 + +## 数据源的扩展 \ No newline at end of file diff --git a/docs/img/favicon.png b/docs/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5507dbe63da5683343e7de19519119ecf25a27 GIT binary patch literal 72203 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%0DY4 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 z 此处需要注意 Windows 10 及以上版本 + +> 由于 PyBroker 需要安装的依赖库比较多,因此安装过程可能会比较慢,建议使用**清华镜像源**进行安装。 + +## PIP 安装 + +### PyPI 镜像源安装 + +``` shell +pip install lib-pybroker -i https://pypi.org/simple +``` + +### 清华镜像源安装 + +``` shell +pip install lib-pybroker -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +## PIP 升级 + +### PyPI 镜像源升级 + +``` shell +pip install -U lib-pybroker -i https://pypi.org/simple +``` + +### 清华镜像源升级 + +``` shell +pip install -U lib-pybroker -i https://pypi.tuna.tsinghua.edu.cn/simple +``` + +## 源码安装 + +目前 PyBroker 项目的源码托管在 GitHub 平台,可以通过以下命令下载源码并安装: + +``` shell +git clone https://github.com/edtechre/pybroker +cd pybroker +python setup.py install +``` + +## 查看版本 + +当成功安装 PyBroker 后,可以通过如下命令查看安装的版本: + +```python +import pybroker as pb + +print(pb.__version__) +``` + +结果显示: + +```shell +1.1.29 +``` + +## 依赖库 + +PyBroker 目前的依赖库比较多, +可以通过官网的 [requirements.txt](https://github.com/edtechre/pybroker/blob/master/requirements.txt) +查看最新的依赖: + +```shell +akshare>=1.10.1 +alpaca-py>=0.7.2 +black>=22.10.0 +diskcache>=5.4.0 +flake8>=5.0.4 +flake8-bugbear>=22.10.25 +joblib>=1.2.0 +jupyter>=1.0.0 +matplotlib>=3.6.3 +mypy>=0.982 +nbsphinx>=0.8.11 +numba>=0.56.3 +numpy>=1.23.4 +pandas>=1.5.1 +progressbar2>=4.1.1 +pytest>=7.2.0 +pytest-cov>=4.0.0 +pytest-instafail>=0.4.2 +pytest-lazy-fixture>=0.6.3 +pytest-randomly>=3.12.0 +pytest-xdist>=3.0.2 +scikit-learn>=1.2.1 +Sphinx>=5.3.0 +sphinx_rtd_theme>=1.1.1 +sphinx-intl>=2.1.0 +yfinance>=0.1.84 +``` + +当然,也可以在本地环境中通过如下命令查看已安装的依赖库: + +```shell +pip list +``` + +结果显示: + +```shell +Package Version +-------------------------- --------- +akshare 1.10.95 +alpaca-py 0.8.2 +appdirs 1.4.4 +Babel 2.12.1 +beautifulsoup4 4.12.2 +certifi 2023.7.22 +charset-normalizer 3.2.0 +click 8.1.7 +colorama 0.4.6 +cssselect 1.2.0 +decorator 5.1.1 +diskcache 5.6.3 +et-xmlfile 1.1.0 +frozendict 2.3.8 +ghp-import 2.1.0 +html5lib 1.1 +idna 3.4 +Jinja2 3.1.2 +joblib 1.3.2 +jsonpath 0.82.2 +lib-pybroker 1.1.29 +llvmlite 0.40.1 +lxml 4.9.3 +Markdown 3.4.4 +markdown2 2.4.10 +MarkupSafe 2.1.3 +mergedeep 1.3.4 +mkdocs 1.5.2 +mkdocs-material 9.2.6 +mkdocs-material-extensions 1.1.1 +msgpack 1.0.5 +multitasking 0.0.11 +numba 0.57.1 +numpy 1.24.4 +openpyxl 3.1.2 +packaging 23.1 +paginate 0.5.6 +pandas 1.5.3 +pathspec 0.11.2 +pip 23.2.1 +platformdirs 3.10.0 +progressbar2 4.2.0 +py-mini-racer 0.6.0 +pydantic 1.10.12 +Pygments 2.16.1 +pymdown-extensions 10.2.1 +pypinyin 0.49.0 +pyquery 2.0.0 +python-dateutil 2.8.2 +python-utils 3.7.0 +pytz 2023.3 +PyYAML 6.0.1 +pyyaml_env_tag 0.1 +readtime 3.0.0 +regex 2023.8.8 +requests 2.31.0 +setuptools 68.0.0 +tabulate 0.9.0 +tqdm 4.66.1 +typing_extensions 4.7.1 +urllib3 2.0.4 +watchdog 3.0.0 +webencodings 0.5.1 +websockets 10.4 +wheel 0.38.4 +xlrd 2.0.1 +yfinance 0.2.28 +``` \ No newline at end of file diff --git a/docs/javascripts/mathjax.js b/docs/javascripts/mathjax.js new file mode 100644 index 0000000..06dbf38 --- /dev/null +++ b/docs/javascripts/mathjax.js @@ -0,0 +1,16 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; + +document$.subscribe(() => { + MathJax.typesetPromise() +}) diff --git a/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 0000000..7062acd --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1,7 @@ +# 快速开始 + +快速运行一个策略,来进行学习 + +## 运行策略 + +## 查看结果 \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..21bedd5 --- /dev/null +++ b/main.py @@ -0,0 +1,3 @@ +import pybroker as pb + +print(pb.__version__) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..99f4b38 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,31 @@ +# yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json +site_name: 利用 PyBroker 进行量化投资 +nav: + - PyBroker 介绍: index.md + - PyBroker 安装: installation.md + - 快速入门: quickstart.md + - 从数据源开始: data_source.md +theme: + name: material + language: zh + features: + - content.code.copy + - content.code.select + - content.code.annotate +markdown_extensions: + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets + - pymdownx.superfences + - pymdownx.arithmatex: + generic: true +extra_javascript: + - javascripts/mathjax.js + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js +extra: + version: + provider: mike \ No newline at end of file