Skip to content

Commit

Permalink
Hello world!
Browse files Browse the repository at this point in the history
  • Loading branch information
KeyAlgo committed Oct 7, 2019
0 parents commit f0d011c
Show file tree
Hide file tree
Showing 56 changed files with 67,293 additions and 0 deletions.
115 changes: 115 additions & 0 deletions .gitignore
@@ -0,0 +1,115 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

.idea
21 changes: 21 additions & 0 deletions LICENSE
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2019 CTPPlus

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
127 changes: 127 additions & 0 deletions README.md
@@ -0,0 +1,127 @@
### Hello World!
开源这件事就像表白。迟迟没有行动,可能有很多原因。是自己还不够优秀?是还没等到合适的契机?亦或是担心付出的爱得不到等价的回报?

终于,我们还是行动了。

在交易所的技术支持下,我们设计并开发了初代使用Python语言的交易框架。该框架的延时测试结果对我们的技术和努力给予了肯定。

一切都像是被安排好的,随后我们就接到了几个定制项目,分别踩了策略的坑、风控的坑、UI的坑、CS架构的坑、MMAP的坑,框架设计在一次又一次的迭代升级中被完善。

接着,朋友建议我们开源:先进的技术只有被更广泛的应用才能体现其价值!

开源之后我们能获得什么?自己用不好吗?如果付出不能得到对等的回报,岂不是徒为他人作嫁衣裳。我反复的问自己,踟蹰不前。

你为什么喜欢交易?需要理由吗?不需要吗?我听到了内心的声音,虽然我仍是一个没有能力以交易为生的交易者,但是我也必定要将交易进行到底。我有了选择,愿为交易作嫁!

多好的孩子呀,起个名字吧!

AlgoPlus!(美式发音请戳:[百度翻译](https://fanyi.baidu.com/?/#en/en/AlgoPlus)

Hello World.



### 简介
忠实于CTP官方API特性、低延时、易使用是AlgoPlus的立身之本。

AlgoPlus从以下三个不同的维度实现低延时:
* 利用Cython技术释放了GIL;
* 同时支持接入多路行情源,降低轮询等待时间;
* 利用CTP的线程特性,以接口回调直接驱动策略运行,无需主事件引擎,真正实现去中心化。

我们对AlgoPlus进行过严格的延时测试:上海电信300M宽带,Simnow账户以对价方式进行无逻辑报单(收到成交回报之后立即再次报单),平均每秒可以完成50笔成交。也就是说,AlgoPlus从发出委托到收到成交回报(这个过程是从本地发出,经过互联网,到达期货公司交易前置,再到交易所,完成撮合成交之后,发回期货公司交易前置,再经过互联网,最终回到客户本地),平均需要20毫秒(1s=1000ms)。

![](./img/AlgoPlus延时测试.png)

为了提高AlgoPlus的易用性,一方面我们力求所有的设计都忠实于CTP官方功能,只要理解CTP官方API的工作流程,就可能直接上手使用,无需学习额外的知识;另一方面,我们会制作系统化的教程,将大家在使用过程中踩坑的几率降到最低。最后,我们开通了www.ctp.plus量化投资研究社区,方便大家学习、分享、交流。



### 教程安排
制作关于量化投资的系统化、专业化、通用化教程,不限于文字形式,也将会是我们重要的工作之一。

对量化投资技术的推广是我们最终的追求,所以教程不会只局限在AlgoPlus框架内。我们希望其他商业/开源平台的用户也能够通过我们的工作获得帮助。我们会为此倍感荣幸!

#### 《CTP官方接口手册》
本教程对CTP方法及相关参数进行了汇总归类,方便大家理解CTP的工作逻辑,也方便在需要时查阅。

1. CTP接口工作流程概述
* <http://ctp.plus/?/article/1>
2. MdApi接口说明
* <http://ctp.plus/?/article/2>
3. TraderApi环境初始化与账户登录相关接口说明
* <http://ctp.plus/?/article/3>
4. TraderApi基础交易接口说明
* <http://ctp.plus/?/article/4>
5. TraderApi扩展交易接口说明
* <http://ctp.plus/?/article/5>
6. TraderApi资金与持仓查询接口说明
* <http://ctp.plus/?/article/6>
7. TraderApi保证金与手续费查询接口说明
* <http://ctp.plus/?/article/7>
8. TraderApi期权交易接口说明
* <http://ctp.plus/?/article/8>
9. TraderApi银行相关接口说明
* <http://ctp.plus/?/article/9>
10. TraderApi合约信息查询接口说明
* <http://ctp.plus/?/article/10>
11. TraderApi其他查询接口说明
* <http://ctp.plus/?/article/11>
12. 错误信息
* <http://ctp.plus/?/article/12>

#### 《AlgoPlus进阶手册》
本教程主要教大家如果使用AlgoPlus实现量化交易。

1. 准备工作
* 安装Anaconda
* 安装AlgoPlus
* 安装PyCharm
* 配置account_info
* Python基本语法
* 线程与进程
2. 创建MdApi
3. 合成K线
4. 计算指标
5. 创建TraderApi
6. 报单(买卖开平)及回报
7. 撤单及回报
8. 客户端认证
9. 行情分发与接收
* Queue
* MMAP
10. 序列化
* CSV
* MySQL
* hdf5
* MMAP
11. 性能分析
* 期货公司行情速度测评
* 行情分发性能测评
* 交易延迟测评
* 序列化性能测评

### 开源地址
1. 码云:
* <https://gitee.com/AlgoPlus/>
2. GitHub:
* <https://github.com/CTPPlus/AlgoPlus>

GitHub的国内访问速度较慢,而且我们没有注册到AlgoPlus账号。所以目前以码云为主阵地。

### 参与贡献
@CTPPlus

### 版权说明
MIT

### QQ群与微信公众号
* QQ群:**866469866**

![](./img/QQ群866469866.png)

* 微信公众号:**AlgoPlus**

![](./img/微信公众号AlgoPlus.jpg)

欢迎发现我们,关注我们。
104 changes: 104 additions & 0 deletions exemplification/1环境配置与安装/11安装Anaconda.md
@@ -0,0 +1,104 @@
# 下载

1. 推荐Anconda3 64-bit
* [ ] 官网: [https://www.anaconda.com/distribution/](https://www.anaconda.com/distribution/)
* [ ] 清华镜像: [https://mirrors.tuna.tsinghua.edu.cn/anaconda/](https://www.anaconda.com/distribution/)

2. 强迫症重度患者可选择Miniconda3 64-bit
* [ ] 官网: [https://docs.conda.io/en/latest/miniconda.html](https://docs.conda.io/en/latest/miniconda.html)
* [ ] 清华镜像: [https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/)

# Windows安装

1. 根据提示完成安装,遇到Advanced Options时,请勾选以下选项:
* [ ] Add Anconda to my PATH environment variable
* [ ] Register Anconda as my default Python 3.7

2. 检查是否安装成功。在cmd中执行python命令,希望你能看到以下内容:

Python 3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
……

如果你看到了:

python' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我们只能先对此表示遗憾,再对您表示同情,最后请您按照以下步骤添加环境变量:

①随便打开一个文件夹,右键单击左侧列中的【我的电脑】 \
②左键单击菜单中【属性】选项 \
③在新窗口中左键单击【高级系统设置】 \
④在新窗口左键单击【高级】选项卡,再左键单击【环境变量】按钮 \
⑤在新窗口的用户变量(或者系统变量)列表中单击【Path】条目,将【Anaconda安装目录】、【\Scripts】、【\Library\bin】三个文件夹的完整路径添加其中。
例如我电脑里添加的环境变量(不好,似乎有什么秘密要被发现了):

C:\AlgoPlus\miniconda3
C:\AlgoPlus\miniconda3\Scripts
C:\AlgoPlus\miniconda3\Library\bin


3. 重新打开一个cmd窗口,检查是否安装成功。如果你的运气有那么一丢丢不好,请在社区( [http://www.ctp.plus](http://www.ctp.plus) )中发帖咨询。

# 更换清华源,享受飞一样的感觉

1. 执行以下命令换conda源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes

2. 执行以下命令换pip源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 虚拟环境

当有多个开发版在同时推进的情况下,为了避免对生产环境产生影响,可以创建虚拟环境。例如,CTP穿透式刚推行时,穿透式版和非穿透式版同时运行。通过创建一个穿透式虚拟环境,就可以避免调试新版本接口对生产环境造成影响。

- 创建代号为ctp_dev(根据需要设定)的虚拟环境环境

conda create --name ctp_dev python=3.7

- 列示所有环境信息,其中base是默认的主环境。

conda env list

- 需要使用ctp_dev虚拟环境时,只需要使用以下代码激活之后所有操作都在虚拟环境目录(Miniconda3\envs\ctp_dev)中执行。

conda activate ctp_dev

- 退出当前虚拟环境

conda deactivate

- 删除代号为ctp_dev的虚拟环境

conda remove --name ctp_dev --all`

# 强迫症患者必看

- 更新

conda update conda
conda update anaconda
conda update --all

- 删除可写程序包缓存中未被使用的包。

conda clean -p

- 删除缓存的tar包

conda clean -t

- 删除索引缓存、锁定文件、未使用的缓存包和tar包

conda clean -all

# 卸载

纳尼?你居然告要卸载?门儿都没有!窗户都封死了!和我们一起将交易进行到底!

(换副笑脸)大爷,第二课的教程也给您准备好了,一定来玩呀……

0 comments on commit f0d011c

Please sign in to comment.