零成本快速打造你自己专属的多用户量化交易平台
人人都可以使用BotVS扩展API构建一个量化交易平台,本范例项目展示了使用Python与BotVS扩展API构建立功能强大的量化交易平台。
-
嵌入现有系统
根据本DEMO项目可以参考编写服务端代码,增加前端页面以用来嵌入现有论坛,博客,社区等系统。
以实现灵活接入现有用户群体,并且现有用户群体完全体验不到BotVS的底层技术支持,用户使用更加简洁,易操作。 -
支持市场
- CTP 商品期货 (上期所、郑商所、大商所、中金所)
- 易盛外盘 (CME, CBOT等主流国外期货交易所)
- 全球交易30多个区块链资产交易平台
-
打造属于自己的量化平台
-
高度自由的策略设计
使用 Python 、JavaScript 、C++ 语言编写 量化交易策略,自由定制,可以在量化交易的世界天马行空般的实现自己的交易思路。
-
强大高效的回测系统
从此再也不用辛苦收集数据,本地回测系统引擎 只用一个命令轻松配置,链接:https://github.com/botvs/backtest_python
-
精简的架构
只用编写几个 前端页面,一个HTTP服务端程序,即可轻松搭建。
-
-
DEMO项目
-
名称:BotVS演示如何使用BotVS的扩展API打造自己的资产管理量化平台
-
本DEMO项目 安装
-
首先 clone 本DEMO项目
imagegit clone https://github.com/botvs/botvs_extend_api_demo.git
-
切换到这个 目录,执行 pip 安装
image
imagepip install -r requirements.txt
注意:如果提示 Permission denied , 需要 sudo pip install -r requirements.txt 这样执行 pip ,根据要求输入操作系统密码。
-
安装完成后,配置一下 服务端程序 要使用的 BotVS 账号的 API KEY
BotVS 扩展 API KEY 使用 详见 BotVS API 文档:https://www.botvs.com/api#BotVS%20%E5%B9%B3%E5%8F%B0%E6%89%A9%E5%B1%95API
创建 BotVS API KEY
image把 API KEY 写入 ,本DEMO 的 app.py 服务端程序。
image
-
-
本DEMO项目 服务端运行命令
python app.py
-
运行显示:
image运行服务端程序后,在浏览器打开 本地页面: http://127.0.0.1:5000
image -
测试注册页面
image本项目 DEMO 量化平台 已经运行起来了,注册好 这个测试平台的 账号(储存在本地数据的),登录进去 配置 作为这个平台用户的 交易所API KEY。
image image现在配置好了如图:
image页面显示的三个策略 仅仅是 UI显示,这些还需要 资产管理量化平台 的管理者 具体设计实现,这里只做演示用。
-
配置一个测试策略
本DEMO项目 ,服务端 会检测到 “一键启动” 按钮按下,触发搜索BotVS账号中 包含 "main" 关键字的策略,使用该策略 绑定机器人运行。
所以我们先创建一个 名为 main Test profit 的策略main Test profit 策略代码如下:
imagefunction main() { while(true) { LogProfit(Math.random()*100); Sleep(1000); } }
编辑代码后,点击保存。
注意:在运行前必须确保有一个托管者在线。(认识托管者:https://www.botvs.com/bbs-topic/463 )
-
点击 “一键启动” 按钮, 会自动创建一个 机器人 运行,这个机器人绑定一个演示策略只会随机输出数值作为收益数值显示出来。
可以看到 在BotVS的控制中心上显示 出一个 新创建的机器人:
imageDEMO 网页上也显示出对应的 随机数值
image -
在BotVS 上运行的机器人 由 appId 识别 当前DEMO平台 登录的 用户
imagedef robot_run(robotId, appId, exchanges): strategyId = -1 # 从策略库里选出一个包含main字符串的策略运行, 也可以预定义 for ele in api("GetStrategyList")['data']['result']['strategies']: if 'main' in ele['name']: strategyId = ele['id'] if strategyId < 0: raise u"not found strategy" settings = { "name":"robot for %s" % (appId, ), "args": [], # our custom arguments for this strategey "appid": appId, # 为该机器人设置标签,关联到本用户 "period": 60, "strategy": strategyId, "exchanges": [], } for e in exchanges: settings["exchanges"].append({"eid": e.eid, "pair": get_default_stock(e.eid), "meta" :{"AccessKey": e.accessKey, "SecretKey": e.secretKey}}) if robotId > 0: return api('RestartRobot', robotId, settings) else: return api('NewRobot', settings)
可以看到 代码中 settings 是创建 机器人的配置信息, appid 就是用来 标记用户的。
-
-
由 BotVS 、 宽客在线 授权刊载
Github 地址:https://github.com/botvs/botvs_extend_api_demo