指数”: { “指数”: 132.5, “同比”: 0.3246, “环比”: -0.0227 } }
**交易结算资金(银证转账)**
代码```BTSF```
描述:
银证转账是指将股民在银行开立的个人结算存款账户与证券公司的资金账户建立对应关系,通过银行的电话银行、网上银行、网点自助设备和证券公司的电话、网上交易系统及证券公司营业部的自助设备将资金在银行和证券公司之间划转。
格式:
{ “日期”: “2014年06月20日”, “上证指数收盘”: 2026.67, “上证指数涨跌幅”: -0.0213, “交易结算资金日均余额(亿)”: 5783, “交易结算资金期末余额(亿)”: 7265, “银证转账减少额(亿)”: 1686, “银证转账变动净额(亿)”: 1801, “银证转账增加额(亿)”: 3487 }
**存款准备金率**
代码```CKZBJ```
描述:
存款准备金是指金融机构为保证客户提取存款和资金清算需要而准备的,是缴存在中央银行的存款,中央银行要求的存款准备金占其存款总额的比例就是存款准备金率。
格式:
{ “日期”: “2007年01月15日”, “中小金融机构”: { “调整前”: 0.09, “调整后”: 0.095, “调整幅度”: 0.005 }, “大型金融机构”: { “调整前”: 0.09, “调整后”: 0.095, “调整幅度”: 0.005 }, “消息公布次日指数涨跌”: { “上证”: 0.0249, “深证”: 0.0245 } }
**居民消费价格指数**
代码```CPI```
描述:
居民消费价格指数是反映与居民生活有关的产品及劳务价格统计出来的物价变动指标,以百分比变化为表达形式。它是衡量通货膨胀的主要指标之一。一般定义超过 3%为通货膨胀,超过 5%就是比较严重的通货膨胀。
格式:
{ “月份”: “2008年01月份”, “全国”: 107.1, “农村”: 107.7, “城市”: 106.8 }
**财政收入**
代码```CZSR```
描述:
财政收入是指政府为履行其职能、实施公共政策和提供公共物品与服务需要而筹集的一切资金的总和。它是衡量一国政府财力的重要指标,政府在社会经济活动中提供公共物品和服务的范围和数量,在很大程度上决定于财政收入的充裕状况。
格式:
{ “月份”: “2008年01月份”, “当月(亿美元)”: 7396.64, “当月同比增长”: 0.4235, “环比增长”: 1.352, “累计(亿美元)”: 7396.64, “累计同比增长”: 0.424 }
**外商直接投资数据**
代码```FDI```
描述:
外商直接投资指外国企业和经济组织或个人(包括华侨、港澳台胞以及我国在境外注册的企业)按我国有关政策、法规,用现汇、实物、技术等在我国境内开办外商独资企业、与我国境内的企业或经济组织共同举办中外合资经营企业、合作经营企业或合作开发资源的投资(包括外商投资收益的再投资),以及经政府有关部门批准的项目投资总额内企业从境外借入的资金。
格式:
{ “月份”: “2008年01月份”, “当月(亿美元)”: 112, “当月同比增长”: 1.1642, “环比增长”: -0.1446, “累计(亿美元)”: 114.38, “累计同比增长”: 1.0523 }
**外汇和黄金储备**
代码```FEGR```
描述:
外汇又称为外汇存底,是指一国政府所持有的国际储备资产中的外汇部分,即一国政府保有的以外币表示的债权。是一个国家货币当局持有并可以随时兑换外国货币的资产。黄金储备:指一国货币当局持有的,用以平衡国际收支,维持或影响汇率水平,作为金融资产持有的黄金。
格式:
{ “月份”: “2008年01月份”, “国家外汇储备(亿美元)”: { “金额”: 15898.1, “同比增长”: 0.4391, “环比增长”: 0.0403 }, “黄金储备(万盎司)”: { “金额”: 1929, “同比增长”: 0, “环比增长”: 0 } }
**国内生产总值**
代码```GDP```
描述:
国内生产总值,Gross Domestic Product,简称 GDP,是指在一定时期内(一个季度或一年),一个国家或地区的经济中所生产出的全部最终产品和劳务的价值,常被公认为衡量国家经济状况的最佳指标。
格式:
{ “季度”: “2006年第1季度”, “国内生产总值”: { “绝对值(亿元)”: 47078.9, “同比增长”: 0.125 }, “第一产业”: { “绝对值(亿元)”: 3012.7, “同比增长”: 0.044 }, “第三产业”: { “绝对值(亿元)”: 22647.4, “同比增长”: 0.131 }, “第二产业”: { “绝对值(亿元)”: 21418.7, “同比增长”: 0.131 } }
**全国股票交易统计表**
代码```GPJYTJ```
描述:
股票账户统计详细数据(旧版2008年至今)
格式:
{ “日期”: “2008年01月”, “A股最低综合股价指数”: { “上海”: 4330.7, “深圳”: 1424.35 }, “A股最高综合股价指数”: { “上海”: 5522.78, “深圳”: 1667.91 }, “发行总股本”: { “上海”: 14198.16, “深圳”: 2818.71 }, “市价总值”: { “上海”: 225354.97, “深圳”: 52499.85 }, “成交量”: { “上海”: 1771.83, “深圳”: 874.06 }, “成交金额”: { “上海”: 30759.73, “深圳”: 15770.72 } }
**股票账户统计详细数据**
代码```GPZHSJ```
描述:
股票账户统计详细数据(新版2015年至今)
格式:
{ “日期”: “2015年04月”, “上证指数”: { “收盘”: 4441.655, “涨跌幅”: 18.51053083 }, “新增投资者”: { “数量(万户)”: 497.53, “同比增长”: 0, “环比增长”: 0 }, “期末投资者(万户)”: { “总量”: 8184.79, “同比增长”: 8108.3, “环比增长”: 235.92 }, “沪深总市值(亿)”: 563491.335037778, “沪深户均市值(万)”: 69.4956 }
**工业增加值增长**
代码```GYZJZ```
描述:
工业增加值增长是指工业企业在报告期内以货币形式表现的工业生产活动的最终成果,是指工业企业在一定时期内工业生产活动创造的价值,是国内生产总值的组成部分。公式: 工业增加值=固定资产折旧+劳动者报酬+生产税净值+营业盈余。
格式:
{ “月份”: “2008年02月份”, “同比增长”: 15.4, “累计增长”: 15.4 }
**货币供应量**
代码```HBGYL```
描述:
货币供应量亦称货币存量、货币供应,指某一时点流通中的现金量和存款量之和。货币供应量是各国中央银行编制和公布的主要经济统计指标之一。它由包括中央银行在内的金融机构供应的存款货币和现金货币两部分构成。世界各国中央银行货币估计口径不完全一致,但划分的基本依据是一致的,即流动性大小。
格式:
{ “月份”: “2008年01月份”, “流通中的现金(M0)”: { “数量(亿元)”: 36673.15, “同比增长”: 0.3121, “环比增长”: 0.209 }, “货币和准货币(M2)”: { “数量(亿元)”: 417846.17, “同比增长”: 0.1888, “环比增长”: 0.0358 }, “货币(M1)”: { “数量(亿元)”: 154872.59, “同比增长”: 0.2054, “环比增长”: 0.0154 } }
**海关进出口增减情况一览表**
代码```HGJCK```
描述:
海关进出口增减指实际进出我国国境的货物总金额。进出口总额用以观察一个国家在对外贸易方面的总规模。我国规定出口货物按离岸价格统计,进口货物按到岸价格统计。
格式:
{ “月份”: “2008年01月份”, “当月出口额”: { “金额(亿美元)”: 1096.4, “同比增长”: 0.266, “环比增长”: -0.0417 }, “当月进口额”: { “金额(亿美元)”: 901.74, “同比增长”: 0.276, “环比增长”: -0.0169 }, “累计出口额”: { “金额(亿美元)”: 1096.4, “同比增长”: 0.266 }, “累计进口额”: { “金额(亿美元)”: 901.74, “同比增长”: 0.276 } }
**消费者信心指数**
代码```ICS```
描述:
消费者信心指数是反映消费者信心强弱的指标,是综合反映并量化消费者对当前经济形势评价和对经济前景、收入水平、收入预期以及消费心理状态的主观感受,是预测经济走势和消费趋向的一个先行指标,是监测经济周期变化不可缺少的依据。
格式:
{ “月份”: “2007年01月份”, “消费者信心指数”: { “指数值”: 112.4, “同比增长”: 0.019, “环比增长”: -0.0062 }, “消费者满意指数”: { “指数值”: 109.5, “同比增长”: -0.0054, “环比增长”: -0.0073 }, “消费者预期指数”: { “指数值”: 114.2, “同比增长”: 0.0344, “环比增长”: -0.0061 } }
**贷款市场报价利率**
代码```LRP```
描述:
贷款市场报价利率是由具有代表性的报价行,根据本行对最优质客户的贷款利率,以公开市场操作利率加点形成的方式报价,由中国人民银行授权全国银行间同业拆借中心计算并公布的基础性的贷款参考利率,各金融机构应主要参考 LPR 进行贷款定价。
格式:
{ “日期”: “2015-08-31”, “LPR_1Y利率(%)”: 4.55, “LPR_5Y利率(%)”: 0, “中长期贷款利率:5年以上(%)”: 5.15, “短期贷款利率:6个月至1年(含)(%)”: 4.6 }
**新房价指数**
代码```NREPI```
描述:
房屋销售价格指数是反映一定时期房屋销售价格变动程度和趋势的相对数,它通过百分数的形式来反映房价在不同时期的涨跌幅度。包括商品房、公有房屋和私有房屋各大类房屋的销售价格的变动情况。
格式:
{ “日期”: “2011年01月01日”, “上海”: { “二手住宅价格指数”: { “环比”: 100.5, “同比”: 101.7, “定基”: 100.6 }, “新建住宅价格指数”: { “环比”: 100.9, “同比”: 101.5, “定基”: 100.8 }, “新建商品住宅价格指数”: { “环比”: 101.1, “同比”: 101.8, “定基”: 101 } }, “北京”: { “二手住宅价格指数”: { “环比”: 100.3, “同比”: 102.6, “定基”: 101.2 }, “新建住宅价格指数”: { “环比”: 100.8, “同比”: 106.8, “定基”: 102.4 }, “新建商品住宅价格指数”: { “环比”: 101, “同比”: 109.1, “定基”: 103 } } }
**汽柴油价格**
代码```OILPRICE```
描述:
汽柴油历史价格信息
格式:
{ “日期”: “2000-6-6”, “柴油(元/吨)”: 2430, “汽油(元/吨)”: 2935 }
**旧房价指数**
代码```OREPI```
描述:
08年--10年房地产价格指数
格式:
{ “月份”: “2008年02月份”, “国房景气指数”: { “指数值”: 105.55, “同比增长”: 0.037 }, “土地开发面积指数”: { “指数值”: 99.34, “同比增长”: 0.0671 }, “销售价格指数”: { “指数值”: 111.52, “同比增长”: 0.0656 } }
**采购经理人指数**
代码```PMI```
描述:
采购经理人指数是统计制造业在生产、新订单、商品价格、存货、雇员、订单交货、新出口订单和进口等八个方面状况。具有其高度的时效性,是经济先行指标中一项非常重要的附属指标。
格式:
{ “月份”: “2008年01月份”, “制造业同比增长”: -0.0381, “制造业指数”: 53, “非制造业同比增长”: -0.0033, “非制造业指数”: 60.2 }
**工业品出厂价格指数**
代码```PPI```
描述:
工业品出厂价格指数是衡量工业企业产品出厂价格变动趋势和变动程度的指数,是反映全部工业产品出厂价格总水平的变动趋势和程度的相对数,也是制定有关经济政策和国民经济核算的重要依据。
格式:
{ “月份”: “2006年01月份”, “当月”: 103.1, “当月同比增长”: 0.0305, “累计”: 103.05 }
**全国税收收入**
代码```QGSSSR```
描述:
税收是指国家为了向社会提供公共产品、满足社会共同需要、按照法律的规定,参与社会产品的分配、强制、无偿取得财政收入的一种规范形式。税收是一种非常重要的政策工具。
格式:
{ “季度”: “2005年第1季度”, “季度环比(%)”: 0.0097, “税收收入合计(亿元)”: 7249.16, “较上年同期(%)”: 0.107 }
**企业商品价格指数**
代码```QYSPJG```
描述:
CGPI 的前身是国内批发物价指数(Wholesale Price Index,简称 WPI),指数编制始于 1994 年 1 月。是反映国内企业之间物质商品集中交易价格变动的统计指标,是比较全面的测度通货膨胀水平和反映经济波动的综合价格指数。CGPI 调查是经国家统计局批准、由中国人民银行建立并组织实施的一项调查统计制度。
格式:
{ “月份”: “2005年01月份”, “农产品”: { “同比增长”: -0.0386, “指数值”: 106.22, “环比增长”: -0.0002 }, “总指数”: { “同比增长”: -0.0196, “指数值”: 104.67, “环比增长”: -0.0063 }, “煤油电”: { “同比增长”: 0.089, “指数值”: 115.83, “环比增长”: -0.0181 }, “矿产品”: { “同比增长”: 0.0623, “指数值”: 115.83, “环比增长”: 0.0117 } }
**现货价格**
代码```SPOTPRICE```
描述:
现货价格是指商品在现货交易中的成交价格。现货交易是一经成交立即交换的买卖行为,一般是买主即时付款,但也可以采取分期付款和延期交付的方式。由于付款方式的不同,同一现货在同一时期往往可能出现不同的价格。
格式:
{ “日期”: “2017-08-30”, “棉花”: 15895.4, “棕榈油”: 5715, “油菜籽”: 5210, “焦炭”: 2043.33 }
**社会消费品零售总额**
代码```TRSCG```
描述:
社会消费品零售总额是指批发和零售业、住宿和餐饮业以及其他行业直接售给城乡居民和社会集团的消费品零售额。
格式:
{ “月份”: “2008年01月份”, “同比增长”: 0.212, “当月(亿元)”: 9077.3, “环比增长”: 0.0069, “累计(亿元)”: 9077.3, “累计同比增长”: 0.212 }
**城镇固定资产投资**
代码```UIFA```
描述:
固定资产投资是建造和购置固定资产的经济活动,即固定资产再生产活动。固定资产再生产过程包括固定资产更新(局部和全部更新)、改建、扩建、新建等活动。新的企业财务会计制度规定:固定资产局部更新的大修理作为日常生产活动的一部分,发生的大修理费用直接在成本中列支。
格式:
{ “月份”: “2008年02月份”, “同比增长”: 0, “当月(亿元)”: 0, “环比增长”: 0, “自年初累计(亿元)”: 8121 }
**期货标准仓单**
代码```WHR```
描述:
期货标准仓单是由期货交易所指定交割仓库按照交易所规定的程序签发的符合合约规定质量的实物提货凭证。由于期货标准仓单可以作为一种流通工具,因此它可以用作借款的质押品或用于期货合约的交割。
格式:
{ “日期”: “2017-08-31”, “一号棉”: { “仓库数量”: 161, “总仓单”: 1245, “平均仓单”: 7 }, “动力煤”: { “仓库数量”: 0, “总仓单”: 0, “平均仓单”: 0 }, “天然橡胶”: { “仓库数量”: 21, “总仓单”: 358160, “平均仓单”: 17055 }, “普麦”: { “仓库数量”: 0, “总仓单”: 0, “平均仓单”: 0 }, “燃料油”: { “仓库数量”: 8, “总仓单”: 0, “平均仓单”: 0 }, “玉米淀粉”: { “仓库数量”: 1, “总仓单”: 500, “平均仓单”: 500 }, “聚氯乙烯”: { “仓库数量”: 1, “总仓单”: 920, “平均仓单”: 920 } }
**本外币存款**
代码```WBCK```
描述:
人民币是本位币,其他国家货币的都是外币。本外币存款就是人民币与外币的存款总和。它反映一个城市对资金的吸附能力,是1653衡量金融机构发展的重要指标。
格式:
{ “月份”: “2008年02月份”, “同比增长”: 1.5267, “当月(亿元)”: 13370.18, “环比增长”: -0.9668, “累计(亿元)”: 415859.25 }
**外汇贷款数据**
代码```WHXD```
描述:
外汇贷款是银行以外币为计算单位向企业发放的贷款。外汇贷款有广义和狭义之分,狭义的外汇贷款,仅指我国银行运用从境内企业、个人吸收的外汇资金,贷放于境内企业的贷款;广义的外汇贷款,还包括国际融资转贷款,即包括我国从国外借人,通过国内外汇指定银行转贷于境内企业的贷款。
格式:
{ “月份”: “2008年02月份”, “同比增长”: 7.5475, “当月(亿元)”: 217.02, “环比增长”: -0.9083, “累计(亿元)”: 2584.33 }
**新增信贷数据**
代码```XZXD```
描述:
借款企业第一次向这家银行贷款叫新增贷款。假如贷款到期了,企业正常偿还了这笔贷款后,再次向银行申请贷款,这样还叫新增贷款。假如贷款到期了,企业不能正常偿还这笔贷款,先银行提出再借第二笔贷款用以偿还第一笔贷款就叫借新还旧。
格式:
{ “月份”: “2008年01月份”, “当月(亿元)”: 8058, “当月同比增长”: 0.4229, “环比增长”: 15.6144, “累计(亿元)”: 8058, “累计同比增长”: 0.4229 }
**银行利率调整**
代码```YHLL```
描述:
表示一定时期内利息量与本金的比率,通常用百分比表示,按年计算则称为年利率。
其计算公式是:利息率= 利息量 ÷ 本金 ÷ 时间 ×100%
格式:
{ “生效时间”: “2006-04-28”, “存款基准利率”: { “调整前”: 0.025, “调整后”: 0.0225, “调整幅度”: -0.0025 }, “消息公布次日指数涨跌”: { “上证”: 0.0166, “深证”: 0.0016 }, “贷款基准利率”: { “调整前”: 0.0556, “调整后”: 0.0585, “调整幅度”: 0.0029 } }
**交易所会员成交量及持仓明细**
代码```DTP```
描述:
当期货合约持仓量达到规定条件时,交易所将公布该月份合约前20名期货公司会员的成交量、买持仓量和卖持仓量,以及该合约所属期货品种期货公司会员、非期货公司会员的总成交量、总买持仓量和总卖持仓量。
格式:
{ “日期”: “2020-05-28”, “cu2006”: { “五矿经易”: { “成交量”: 10763, “成交量增减”: 2440, “持卖单量”: 5935, “持卖单量增减”: 29, “持买单量”: 1823, “持买单量增减”: -1326 }, “金瑞期货”: { “持买单量”: 15581, “持买单量增减”: -1529, “持卖单量”: 4827, “持卖单量增减”: -980, “成交量”: 5265, “成交量增减”: 664 } } }
**交易所会员持仓盈亏**
代码```FCPP```
描述:
根据交易所公布的持买单量、持卖单量、结算价、开盘价等,分别计算出交易所会员每个合约的盈亏状态。
格式:
{ “日期”: “2020-05-28”, “cu2006”: { “五矿经易”: { “持买单盈亏”: 729200, “持卖单盈亏”: -2374000, “净持仓盈亏”: -1644800 }, “金瑞期货”: { “持买单盈亏”: 6232400, “持卖单盈亏”: -1930800, “净持仓盈亏”: 4301600 } } }
# **优宽平台扩展API**
优宽量化交易平台支持程序化调用优宽量化交易平台的各项功能,开放了平台的扩展API接口。
支持扩展API接口的权限管理,如图:

允许新创建的```API KEY```拥有全部权限,可以在API权限输入框中输入```*```符号开启所有接口权限。指定具体接口权限,需要输入对应的扩展API函数名,使用逗号间隔,例如:```GetRobotDetail,DeleteRobot```。即给予了这个```API KEY```调用**获取实盘详细信息接口**、**删除实盘接口**的权限。
### 创建ApiKey

### API返回码(code)
|描述|代码|
|-|-|
|执行成功|0|
|错误的API KEY|1|
|错误的签名|2|
|Nonce错误|3|
|方法不正确|4|
|参数不正确|5|
|内部未知错误|6|
### 实盘状态
(正常启动)
|状态|代码|
|-|-|
|空闲中|0|
|运行中|1|
|停止中|2|
|已退出|3|
|被停止|4|
|策略有错误|5|
(异常)
|状态|代码|
|-|-|
|策略已过期, 请联系作者重新购买|-1|
|没有找到托管者|-2|
|策略编译错误|-3|
|实盘已经是运行状态|-4|
|余额不足|-5|
|策略并发数超限|-6|
### 验证方式
#### token验证
使用```md5```加密方式验证。
Python、Golang语言调用例子:
```python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import md5
import urllib2
from urllib import urlencode
except:
import hashlib as md5
import urllib.request as urllib2
from urllib.parse import urlencode
accessKey = 'f27bfcXXXXXXXX013c62e98XXXXX817a'
secretKey = 'ffeXXXXXXXX085ff7269XXXXXXXX6f82'
def api(method, *args):
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
# 注意: urllib2.urlopen 函数,超时问题,可以设置超时时间,urllib2.urlopen('https://www.youquant.com/api/v1', urlencode(d).encode('utf-8'), timeout=10) 设置超时 10秒
return json.loads(urllib2.urlopen('https://www.youquant.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
# 返回托管者列表
print(api('GetNodeList'))
# 返回交易所列表
print(api('GetPlatformList'))
# GetRobotList(offset, length, robotStatus, label),传-1代表获取全部
print(api('GetRobotList', 0, 5, -1, 'member2'))
# CommandRobot(robotId, cmd)向实盘发送命令
print(api('CommandRobot', 123, 'ok'))
# StopRobot(robotId)返回实盘状态代码
print(api('StopRobot', 123))
# RestartRobot(robotId)返回实盘状态代码
print(api('RestartRobot', 123))
# GetRobotDetail(robotId)返回实盘详细信息
print(api('GetRobotDetail', 123))
package main
import (
"fmt"
"time"
"encoding/json"
"crypto/md5"
"encoding/hex"
"net/http"
"io/ioutil"
"strconv"
"net/url"
)
// 填写自己的优宽平台api key
var apiKey string = ""
// 填写自己的优宽平台secret key
var secretKey string = ""
var baseApi string = "https://www.youquant.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
// 处理args
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"version" : "1.0",
"access_key" : apiKey,
"method" : method,
"args" : string(jsonStr),
"nonce" : strconv.FormatInt(time.Now().UnixNano() / 1e6, 10),
}
data := fmt.Sprintf("%s|%s|%s|%v|%s", params["version"], params["method"], params["args"], params["nonce"], secretKey)
h := md5.New()
h.Write([]byte(data))
sign := h.Sum(nil)
params["sign"] = hex.EncodeToString(sign)
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
settings := map[string]interface{}{
"name": "hedge test",
"strategy": 1234,
// K线周期参数,60即为60秒
"period": 60,
"node" : 1234,
"appid": "member2",
"exchanges": []interface{}{
map[string]interface{}{
"pid": "1234",
"pair": "FUTURES",
},
},
}
method := "NewRobot"
fmt.Println("调用接口:", method)
ret := api(method, settings)
fmt.Println("main ret:", ret)
}
支持不使用token
验证(直接传secret_key
验证),可以生成一个用来直接访问的URL。例如直接给实盘发交互指令的URL,可以用于TradingView
或其它场景的WebHook
回调。
对于CommandRobot(RobotId, Cmd)
函数,不进行nonce
校验,不限制该接口的访问频率、访问次数。
https://www.youquant.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
支持直接验证方式下,获取请求中的Body
数据,仅支持CommandRobot
接口。例如在TradingView
的WebHook URL
中设置:
https://www.youquant.com/api/v1?access_key=fd3be82e9e6e6ed4439f2793a5e9ca&secret_key=520b9f10f3768e6ad1af59ff25184&method=CommandRobot&args=[130350,+""]
注意需要按照此格式设置:args=[130350,+""]
,130350
是优宽量化交易平台的实盘ID
。
消息框中设置(要发送的请求中的Body数据):
{"close": {{close}}, "name": "aaa"}
- 文本格式:

xxx 穿过(Crossing) 39700.00 close: {{close}}
```ID```为```186515```的实盘即可收到交互命令:```xxx 穿过(Crossing) 39700.00 close: 39739.4```。
```xxx```为上图打码内容。
```Python```、```Golang```语言调用例子:
```python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
try:
import urllib2
except:
import urllib.request as urllib2
accessKey = 'your accessKey'
secretKey = 'your secretKey'
def api(method, *args):
return json.loads(urllib2.urlopen(('https://www.youquant.com/api/v1?access_key=%s&secret_key=%s&method=%s&args=%s' % (accessKey, secretKey, method, json.dumps(list(args)))).replace(' ', '')).read().decode('utf-8'))
# 如果APIKEY 没有该接口权限,调用 print(api('RestartRobot', 130350)) 会失败,返回数据:{'code': 4, 'data': None}
# print(api('RestartRobot', 130350))
# 打印ID为:130350的实盘详细信息
print(api('GetRobotDetail', 130350))
package main
import (
"fmt"
"encoding/json"
"net/http"
"io/ioutil"
"net/url"
)
// 填写自己的优宽平台api key
var apiKey string = "your access_key"
// 填写自己的优宽平台secret key
var secretKey string = "your secret_key"
var baseApi string = "https://www.youquant.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
jsonStr, err := json.Marshal(args)
if err != nil {
panic(err)
}
params := map[string]string{
"access_key" : apiKey,
"secret_key" : secretKey,
"method" : method,
"args" : string(jsonStr),
}
// http request
client := &http.Client{}
// request
urlValue := url.Values{}
for k, v := range params {
urlValue.Add(k, v)
}
urlStr := urlValue.Encode()
request, err := http.NewRequest("GET", baseApi + "?" + urlStr, nil)
if err != nil {
panic(err)
}
resp, err := client.Do(request)
if err != nil {
panic(err)
}
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret = string(b)
return
}
func main() {
method := "GetRobotDetail"
fmt.Println("调用接口:", method)
ret := api(method, 130350)
fmt.Println("main ret:", ret)
}
使用优宽量化交易平台扩展API实现TradingView报警信号交易 使用优宽量化交易平台扩展API实现TradingView报警信号交易,B站视频链接
以上基地址其中的``?``符号后跟请求参数。
```Python```语言描述请求参数:
```python
{
'version' : '1.0',
# access key,在账户管理页面申请
'access_key': '8a1f6c3785fd78a1848320e0b19js99f',
# 具体调用的方法
'method' : 'GetNodeList',
# 具体method算法的参数列表
'args' : [],
# 时间戳,单位毫秒,允许和标准时间时间戳前后误差1小时,nonce必须比上一次访问时的nonce数值大
'nonce' : 1516292399361,
# 签名
'sign' : '085b63456c93hfb243a757366600f9c2'
}
各个参数以字符&
分隔,参数名和参数值用符号=
连接,完整的请求URL(method=GetNodeList
为例):
https://www.youquant.com/api/v1?
access_key=8a1f6c3785fd78a1848320e0b19js99f&
nonce=1516292399361&
args=%5B%5D&
sign=085b63456c93hfb243a757366600f9c2&
version=1.0&
method=GetNodeList
注意请求参数中没有secret_key
这个参数。
sign
参数是一个加密字符串,加密方式如下。按照格式:
version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
拼接字符串后,使用MD5
加密算法加密字符串,并转换为十六进制数据字符串,该值作为参数sign
的值。
签名部分参考Python
代码:
# 参数
d = {
'version': '1.0',
'access_key': accessKey,
'method': method,
'args': json.dumps(list(args)),
'nonce': int(time.time() * 1000),
}
# 计算sign签名
d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘nodes’: [ { … , // … 省略 ‘name’: ‘xxx’, // 托管者节点名称 … , }, { … , ‘name’: ‘Public’, // 名称为Public的是公共托管者 … } ] }, ‘error’: None } }
返回的JSON数据中包含当前账号下的所有托管者详细信息,例如IP地址、创建时间、托管者版本、状态等信息。
#### GetRobotGroupList
```GetRobotGroupList```,返回请求中的```API KEY```对应的优宽量化交易平台账号下的实盘分组列表。
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘items’: [] }, ‘error’: None } }
#### GetPlatformList
```GetPlatformList```,返回请求中的```API KEY```对应的优宽量化交易平台账号下的已添加的交易所列表。
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘platforms’: […] // … 省略 }, ‘error’: None } }
返回的JSON数据中包含当前账号下配置的所有交易所对象信息,例如交易所ID、配置时间、名称、标签等信息。
#### GetRobotList
```GetRobotList```,参数:```offset, length, robotStatus, label```。返回请求中的```API KEY```对应的优宽量化交易平台账号下的实盘列表。
- 参数
```offset```为整型,```length```为整型,```robotStatus```为整型,```label```为字符串类型。
- ```offset```
- ```length```
- ```robotStatus```,传-1代表获取全部实盘。
- ```label```,自定义标签,可以筛选出这个标签的所有实盘。
范例```Python```代码,参看以上[验证方式-token验证](#token验证),以下是```Python```调用范例:
```print api('GetRobotList', 'member2')```把自定义标签为```member2```的实盘信息全部打印出来。
```print api('GetRobotList', 0, 5, -1, 'member2')```分页从0到5列出来最多5个标签为```member2```的实盘。
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘all’: 1, ‘concurrent’: 1, ‘robots’: […] // 实盘相关信息, … 省略 }, ‘error’: None } }
返回的JSON数据中包含本次调用筛选出的实盘信息,```robots```字段中的实盘信息包括:实盘ID、实盘所属托管者节点、实盘盈亏、启动时间等。
#### CommandRobot
```CommandRobot```,参数:```RobotId, Cmd```。该接口向请求中的```API KEY```对应的优宽量化交易平台账号下的实盘```ID```为```RobotId```的实盘发送交互命令(交互命令由策略中调用的```GetCommand()```函数捕获返回)。
- 参数
```RobotId```为整型,是实盘```ID```。```Cmd```为字符串类型,是向实盘发送的交互命令。
- ```RobotId```,实盘```ID```,可以用```GetRobotList(...)```接口获取。
- ```Cmd```,该参数是发送给实盘的交互指令,在实盘策略中的```GetCommand()```函数会捕获到该交互命令,触发策略的交互逻辑(在策略里具体实现交互逻辑,可以参看文档中的```GetCommand()```函数)。
- 返回值
{ ‘code’: 0, ‘data’: {‘result’: True, ‘error’: None} }
#### StopRobot
```StopRobot```,参数:```RobotId```。对于请求中的```API KEY```对应的优宽量化交易平台账号下的实盘,停止运行实盘```ID```为```RobotId```的实盘。
- 参数
```RobotId```为整型,```RobotId```即实盘```ID```,可以用```GetRobotList(...)```接口获取,```StopRobot(RobotId)```接口返回所停止的实盘的状态代码。
- 返回值
{ ‘code’: 0, ‘data’: {‘result’: 2, ‘error’: None} }
```result```字段表示实盘状态,2表示实盘已经停止。
#### RestartRobot
```RestartRobot```,参数```RobotId, Settings```。重启请求中的```API KEY```对应的优宽量化交易平台账号下的实盘```ID```为```RobotId```的实盘。
如果是使用扩展API接口创建出的实盘,重启必须使用扩展API接口```RestartRobot(RobotId, Settings)```进行重启,并且必须传入```Settings```参数。在平台页面上创建的实盘,可以通过扩展API接口重启或者点击实盘页面上的按钮重启。
可以传```Settings```参数或者不传```Settings```参数只传```RobotId```这个参数,如果只传```RobotId```参数,则按照当前实盘的设置启动实盘运行。
- 参数
- 不配置实盘策略参数```Settings```:
```RobotId```为整型,实盘```ID```可以用```GetRobotList(...)```接口获取。
- 配置实盘、策略参数```Settings```:
```RobotId```为整型,实盘```ID```可以用```GetRobotList(...)```接口获取。
```Settings```为```JSON```对象类型。
```Settings```参数格式如下:
```
Settings = {
"name": "商品期货跨期",
// 策略参数
"args": [["symbolA", "rb2205"], ["symbolB", "rb2201"]],
// 策略ID,可以用GetStrategyList方法获取到
"strategy": 12345,
// K线周期参数,60即为60秒
"period": 60,
// 指定在哪个托管者上运行,不写该属性就是自动分配运行
"node" : 12345,
// 自定义字段
"appid": "member2",
"exchanges": [
// pid可以由GetPlatformList方法获取到
{"pid": 12344, "pair": "FUTURES"},
// 向实盘添加第二个交易所对象
{"pid": 12345, "pair": "FUTURES"},
// 除了优宽控制中心配置好的交易所(pid识别),还可以设置没有配置过的交易所配置信息,用来给实盘操作
/*
{"eid": "Futures_CTP", "pair": "FUTURES", "meta" :{...}},
{"eid": "Futures_CTP", "pair": "FUTURES", "meta" :{...}}
*/
]
}
```
注意:
使用```eid```的配置中```"meta":{...}```这些敏感信息,优宽量化交易平台是不储存的。这些数据直接转发给托管者程序,所以每次创建或者重启实盘时必须配置该信息。```meta```具体格式参看:```GetExchangeList```接口返回的数据中的```meta```字段内容。
以CTP协议为例,配置华安期货的信息,```meta```字段结构如下:
```
"meta": {
"MDFront":"180.166.37.178:41215",
"TDFront":"180.166.37.178:41207",
"BrokerId":"6020",
"Name":"华安期货(看穿式监管)",
"ClientVer":"BT_T_V001",
"AppID":"client_youquant_1.0",
"AuthCode":"",
"V2":true,
"Username":"123456", // 资金账号
"Password":"123456", // 资金账号的密码
}
```
```GetExchangeList```接口返回的数据中```required```为真的配置项,在配置```mata```时不可为空。```required```为假的配置项在配置```mata```时可为空。例如上例中的```AuthCode```、```Name```。
如果重启使用**通用协议**插件支持的交易所的实盘,需要在配置```Settings```这个参数时对于```exchanges```属性使用如下设置:
```
{"eid": "Exchange", "label" : "test", "pair": "xxx", "meta" :{ ... , "Front" : "http://127.0.0.1:6666/XXX"}}
```
```label```属性是给当前**通用协议**接入的交易所对象设置一个标签,在策略中可以使用```exchange.GetLabel()```函数获取。```Front```是配置通用协议交易所对象时设置的通用协议通信地址。
- 返回值
{ ‘code’: 0, ‘data’: {‘result’: 1, ‘error’: None} }
#### GetRobotDetail
```GetRobotDetail```,参数:```RobotId```。获取请求中的```API KEY```对应的优宽量化交易平台账号下的实盘```ID```为```RobotId```的实盘详细信息。
- 参数
```RobotId```为整型,实盘```ID```可以用```GetRobotList(...)```接口获取。
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘robot’: { // 下次扣费时间,即当前扣费后有效截止的时间 ‘charge_time’: 1635491159, // 已经消耗的时间 ‘charged’: 118800, // 已经消耗的金额(0.125 CNY = 12500000 / 1e8) ‘consumed’: 412500000, ‘date’: ‘2021-10-26 09:25:17’, // 实盘运行时指派的托管者ID,如果是自动,该值为-1 ‘fixed_id’: 123456, ‘hits’: 0, ‘id’: 123456, ‘is_deleted’: 0, // 是否有权限管理该实盘 ‘is_manager’: True, // 是否是模拟盘 ‘is_sandbox’: 0, // 实盘名称 ‘name’: ‘商品期货跨期’, // 托管者ID ‘node_id’: 123456, // 实盘配置的交易所对象 ‘pexchanges’: {‘123456’: ‘Futures_CTP’}, ‘phash’: {‘123456’: ‘4789fda123456e879baaa1860d9123456f’}, // 实盘配置的交易所对象的标签信息 ‘plabels’: {‘123456’: ‘宏源期货主席(看穿式监管)’}, ‘priority’: 0, ‘profit’: 0, // 是否公开 ‘public’: 0, // 最近活跃时间 ‘refresh’: 1635404408000, ‘robot_args’: ‘[[“symbolA”,“rb2205”],[“symbolB”,“rb2201”],[“Interval”,500,12961],[“SlideTick”,1,12961],[“RiskControl”,false,12961],[“MaxTrade”,100,12961],[“MaxTradeAmount”,1000,12961],[“CTAShowPosition”,true,12961],[“SyncInterval”,5,12961]]’, ‘start_time’: ‘2021-10-29 11:58:50’, // 实盘状态 ‘status’: 1, ‘strategy_args’: ‘[[“symbolA”,“远月合约”,“远月合约”,“rb2005”],[“symbolB”,“近月合约”,“近月合约”,“rb2001”],[“$$\(__cmd__\)$\(plusHedge","正套","正套","__button__"],["\)$\(__cmd__\)$\(minusHedge","反套","反套","__button__"],["\)$\(__cmd__\)$\(coverPlus","平正套仓位","平多仓","__button__"],["\)$\(__cmd__\)$$coverMinus”,“平反套仓位”,“平空仓”,”button”]]’, // 配置的交易所对象,设置的交易对信息 ‘strategy_exchange_pairs’: ‘[86400,[123456],[“FUTURES”]]’, // 策略ID ‘strategy_id’: 123456, // 策略最后修改时间 ‘strategy_last_modified’: ‘2021-10-27 08:42:07’, // 策略名称 ‘strategy_name’: ‘快速实现一个半自动量化交易工具(教学)’, ‘strategy_public’: ‘0’, ‘summary’: ‘2021-10-29 14:11:36 已经连接CTP ! -245 \n 81601.62’, ‘uid’: ‘03dd491223455629f7a02ae075c65ef936’, ‘username’: ‘xx’, // 是否开启离线报警 ‘wd’: 0 } }, ‘error’: None } }
返回数据中的```summary```属性(实盘状态栏上的信息,缓存10秒,并非最新数据)目前有数据量限制(缓存数据)。数据量限制为200字节,超出的数据会被截断。如果需要更多的状态栏信息数据可以使用```GetRobotLogs```接口获取(```GetRobotLogs```接口获取的状态栏信息,```summary```字段为最新数据)。
```strategy_exchange_pairs```属性说明,用以下数据为例:
[86400,[123456],[“FUTURES”]]
其中第一个数据```86400```,代表实盘设置的默认K线周期为1天,即86400秒。
```[123456]```为实盘配置的交易所对象的```eid```列表(按添加顺序)。
```["FUTURES"]```为实盘配置的交易所对象设置的交易对(按添加顺序与```eid```一一对应)。
即:```[86400,[123456],["FUTURES"]]```对应```[K线周期,交易所对象id列表,交易对列表]```。
#### GetAccount
```GetAccount```,返回请求中的```API KEY```对应的优宽量化交易平台账号的账户信息。
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { … }, ‘error’: None } }
返回的JSON数据中包含当前优宽账户余额、用户名称、绑定邮箱等账户信息。
#### GetExchangeList
```GetExchangeList```,返回支持的交易所列表以及需要的配置信息。
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘exchanges’: [{ ‘eid’: ‘Futures_CTP’, ‘id’: 22, ‘logo’: ‘images/logo/middle/ctp.png’, ‘meta’: ‘…’, // 数据太多 … 为省略 ‘name’: ‘商品期货’, ‘priority’: 10, ‘stocks’: ‘FUTURES’, ‘website’: ‘http://www.sfit.com.cn/’ }, { ‘eid’: ‘Futures_Esunny’, ‘id’: 45, ‘logo’: ‘images/logo/middle/esunny.png’, ‘meta’: ‘…’, ‘name’: ‘易盛期货’, ‘priority’: 9, ‘stocks’: ‘FUTURES’, ‘website’: ‘http://www.esunny.com.cn/’ }, { ‘eid’: ‘Futures_Futu’, ‘help’: ‘
’, ‘id’: 90, ‘logo’: ‘images/logo/middle/futu.png’, ‘meta’: ‘…’, ‘name’: ‘富途证券’, ‘priority’: 9, ‘stocks’: ‘STOCK’, ‘website’: ‘https://www.futunn.com/’ }, { ‘eid’: ‘Futures_XTP’, ‘id’: 23, ‘logo’: ‘/upload/asset/31b810d98d49b4c81dc.png’, ‘meta’: ‘…’, ‘name’: ‘中泰XTP’, ‘stocks’: ‘STOCK’, ‘website’: ‘https://www.zts.com.cn’ }] }, ‘error’: None } } 返回的JSON数据中包含当前平台支持的交易所、协议、券商系统的具体配置信息。
#### DeleteNode
```DeleteNode```,参数:```Nid```。删除请求中的```API KEY```对应的优宽量化交易平台账号下的```ID```为```Nid```的托管者节点。
- 参数
```Nid```为整型,即托管者```ID```。
- 返回值
{ ‘code’: 0, ‘data’: {‘result’: True, ‘error’: None} }
#### DeleteRobot
```DeleteRobot```,参数:```RobotId, DeleteLogs```。删除请求中的```API KEY```对应的优宽量化交易平台账号下的```ID```为```RobotId```的实盘。
- 参数
```RobotId```为整型,```RobotId```即要删除的实盘的```ID```。
```DeleteLogs```为布尔类型,```DeleteLogs```设置是否要删除日志,如果传入```true```即删除日志。
- 返回值
// 实盘删除成功返回值 { ‘code’: 0, ‘data’: {‘result’: 0, ‘error’: None} }
如果尝试删除一个运行中的实盘,返回的数据中```result```为```-1```。
#### GetStrategyList
```GetStrategyList```,获取请求中的```API KEY```对应的优宽量化交易平台账号下的策略信息。
- 参数
无
- 返回值
{ ‘code’: 0, ‘data’: { ‘result’: { ‘all’: 33, ‘strategies’: […] // … 省略 }, ‘error’: None } }
返回的JSON数据中包含当前优宽账户下所有策略的信息。
#### NewRobot
```NewRobot```,参数:```Settings```。根据参数设置创建一个请求中的```API KEY```对应的优宽量化交易平台账号下的实盘。
- 参数
```Settings```,为```JSON```对象类型。```Settings```是一个实盘配置```JSON```对象。
```Settings```描述解释如下:
Settings = {
“name”: “hedge test”,
/*
args为策略参数,不一定要和策略参数顺序一致,不过参数名必须一致
注意:参数数组中第二个元素[“MAType”, 0, 75882]是一个包含三个元素的数组
其中第一个元素MAType是该实盘绑定策略引用的模板上的参数
第二个元素0是参数MAType的设置的具体值
第三个元素75882是MAType这个参数所属模板的ID,用来标识确定这个参数是哪个模板的参数
*/
“args”: [[“Interval”, 500], [“MAType”, 0, 75882]],
// 策略ID,可以用GetStrategyList方法获取到
“strategy”: 25189,
// K线周期参数,60即为60秒
“period”: 60,
// 可以指定在哪个托管者上运行,不写该属性就是自动分配
“node” : 52924,
// 自定义字段
“appid”: “member2”,
// 指定实盘分组
“group”: 1122,
“exchanges”: [
// pid可以由GetPlatformList方法获取到
{“pid”: 15445, “pair”: “FUTURES”},
{“pid”: 13802, “pair”: “FUTURES”},
// 除了优宽控制中心配置好的交易所(pid识别),还可以设置没有配置过的交易所配置信息,用来给实盘操作
/*
{"eid": "Futures_CTP", "pair": "FUTURES", "meta" :{...}},
{"eid": "Futures_CTP", "pair": "FUTURES", "meta" :{...}}
*/
]
}
注意:
```eid```的配置中```"meta":{...}```这些敏感信息优宽量化交易平台是不储存的。这些数据直接转发给托管者程序,所以每次创建或者重启实盘时必须配置该信息。```meta```具体格式参看:```GetExchangeList```接口返回的数据中的```meta```字段内容。
以CTP协议为例,配置华安期货的信息,```meta```字段结构如下:
“meta”: {
“MDFront”:“180.166.37.178:41215”,
“TDFront”:“180.166.37.178:41207”,
“BrokerId”:“6020”,
“Name”:“华安期货(看穿式监管)”,
“ClientVer”:“BT_T_V001”,
“AppID”:“client_youquant_1.0”,
“AuthCode”:“”,
“V2”:true,
“Username”:“123456”, // 资金账号
“Password”:“123456”, // 资金账号的密码
}
GetExchangeList接口返回的数据中
required为真的配置项,在配置
mata时不可为空。
required为假的配置项在配置
mata时可为空。例如上例中的
AuthCode、
Name”`。
如果创建使用通用协议