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

写在前面的话

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

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

 

产品支持

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

 

嵌入现有系统

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

 

全球市场

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

 

产品特点

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

 

DEMO项目

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

 

第一步:安装

首先 clone 本 DEMO 项目:

git clone https://github.com/botvs/botvs_extend_api_demo.git 

 

切换到这个目录,执行 pip 安装:

pip install -r requirements.txt 

 

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

 

安装完成后,配置一下服务端程序,要使用的发明者量化账号的 API KEY。

发明者量化扩展 API KEY 使用:详见 发明者量化 API 文档

 

创建发明者量化API KEY:

发明者量化API

 

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

代码测试

 

 

第二步:运行

本 DEMO 项目服务端运行命令:

python app.py

运行命令

 

 

运行服务端程序后 , 在游览器打开本地页面: http://127.0.0.1:5000

注册页面

 

测试注册页面:

注册页面

 

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

测试平台

测试平台

 

现在配置好了如图:

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

 

 

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

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

 

main Test profit 策略代码如下:

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

策略代码

 

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

 

 

第四步:运行策略

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

 

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

DEMO网页

 

在发明者量化上运行的机器人,由 appId 识别当前 DEMO平台登录的用户:

appId

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 就是用来标记用户的。

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
So Young ibtc 薛定谔的猫 52545633 风一样的男人 5人赞赏收藏
user
宽客在线
暂无简介
相关推荐
登录后评论
Copyright © 2017 宽客在线 京ICP备15046776号