[原创] 零成本快速打造你自己专属的多用户量化交易平台

写在前面的话

长期以来,开发量化交易平台,因其涉及技术种类繁多(前端,后端,数据库,回测系统,网络技术等),跨学科(金融、数学、计算机编程等),项目设计周期长,维护成本高等诸多因素。造成一些有志于在程序化交易 、量化交易上大展身手的投资、资产管理团队,交易工作室,宽客爱好者等中小交易者望而却步!

术业专攻一直是 BotVS 秉承的发展理念,如今是信息、技术飞速发展的时代。速度几乎决定着一个项目的成败,一次投资的成败。只有更高的效率才是制胜的根本。

 

产品支持

BotVS 对于技术底层做出了强有力的支持,只需使用 BotVS 的扩展 API 接口,就可以把你从繁杂的计算机技术、各个学科专业知识等问题中解放出来。您只需开发一个 WEB 站点移动APP 或者微信小程序,对接 BotVS 的技术底层 ,就可以实现一个专业的量化交易平台。

嵌入现有系统

  • 根据本DEMO项目可以参考编写服务端代码,增加前端页面以用来嵌入现有论坛,博客,社区等系统。 以实现灵活接入现有用户群体,并且现有用户群体完全体验不到BotVS的底层技术支持,用户使用更加简洁,易操作。

全球市场

  • CTP 商品期货 (上期所、郑商所、大商所、中金所)。
  • 易盛外盘(CME、CBOT 等主流国外期货交易所)。
  • 全球交易 30 多个区块链资产交易平台。

产品特点

  • 高度自由的策略设计
    • 使用 Python 、JavaScript 、C++ 语言编写 量化交易策略,自由定制,可以在量化交易的世界里,天马行空般的实现自己的交易思想。
  • 强大高效的回测系统
  • 精简的架构
    • 只用编写几个前端页面,一个 HTTP 服务端程序,即可轻松搭建。

 

DEMO项目

(演示如何使用 BotVS 的扩展 API 打造自己的资产管理量化平台)

第一步:安装

  1. 首先 clone 本 DEMO 项目:
    git clone https://github.com/botvs/botvs_extend_api_demo.git 
  2. 切换到这个目录,执行 pip 安装:

    pip install -r requirements.txt 

    注意:如果提示 Permission denied , 需要 sudo pip install -r requirements.txt 这样执行 pip ,根据要求输入操作系统密码。

  3. 安装完成后,配置一下服务端程序,要使用的 BotVS 账号的 API KEY。

    BotVS 扩展 API KEY 使用:详见 BotVS API 文档

  4. 创建 BotVS API KEY:

  5. 把 API KEY 写入 ,本DEMO 的 app.py 服务端程序:

 

第二步:运行

  1. 本 DEMO 项目服务端运行命令:
    python app.py
  2. 运行服务端程序后 , 在游览器 打开 本地页面: http://127.0.0.1:5000

  3. 测试注册页面:

  4. 本项目 DEMO 量化平台已经运行起来了,注册好这个测试平台的账号(储存在本地数据的),登录进去配置,作为这个平台用户的交易所 API KEY:

  5. 现在配置好了如图:

    注:页面显示的三个策略,仅仅是 UI 显示,这些还需要资产管理量化平台的管理者,具体设计实现,这里只做演示用。

 

第三步:配置一个测试策略

  1. 本 DEMO 项目 ,服务端会检测到“一键启动”按钮按下,触发搜索 BotVS 账号中包含“main”关键字的策略,使用该策略绑定机器人运行。所以我们先创建一个 名为 main Test profit 的策略。

    main Test profit 策略代码如下:

    function main() {
        while(true) {
            LogProfit(Math.random()*100);
            Sleep(1000);
        }
    }

  2. 编辑代码后,点击保存。 注意:在运行前必须确保有一个托管者在线。关于托管者详情

 

第四步:运行策略

  1. 点击 “一键启动” 按钮, 会自动创建一个机器人运行,这个机器人只会随机输出数值作为收益数值显示出来。可以看到 在 BotVS 的控制中心上显示出一个新创建的机器人: 

  2. DEMO 网页上也显示出对应的随机数值: 

  3. 在BotVS 上运行的机器人,由 appId 识别当前 DEMO 平台登录的用户:

    def 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 筑筑就非凡的量化世界

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
user
宽客在线
暂无简介
登录后评论
Copyright © 2017 宽客在线 京ICP备15046776号