输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
支持的协议
密钥安全性
实盘
策略库
托管者
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
Rust策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
创建ApiKey
扩展API接口返回码
实盘状态码
验证方式
token验证
直接验证
扩展API接口详解
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

支持不使用token验证(直接传递secret_key验证),可以生成一个用于直接访问的URL。例如直接向实盘发送交互指令的URL,可用于Trading View或其他场景的WebHook回调。对于扩展API接口CommandRobot()函数,不进行nonce校验,不限制该接口的访问频率和访问次数。

例如,创建的扩展API KEY中的AccessKey为:xxx,SecretKey为:yyy,访问以下链接即可向ID为186515的实盘发送交互指令消息,消息内容为字符串:ok12345。

plaintext
https://www.youquant.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=%5B186515%2C%22ok12345%22%5D

在支持直接验证方式下,可获取请求中的Body数据,仅支持CommandRobot接口。例如在Trading View的WebHook URL中设置:

plaintext
https://www.youquant.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=%5B186515%2C+%22%22%5D

注意需要按照此格式设置:%5B186515%2C+%22%22%5D(编码前为:[186515, ""]),其中186515是优宽量化交易平台的实盘ID。

模拟Trading View发送WebHook URL警报:

javascript
function main() { var options = { method: "POST", body: `{"test": 123}`, headers: {"Content-Type": "application/json"} } // WebHook URL 警报会自动发送POST请求,包含需要的 headers 设置 return HttpQuery("https://www.youquant.com/api/v1?access_key=xxx&secret_key=xxx&method=CommandRobot&args=%5B186515%2C+%22%22%5D", options) }

Trading View消息框中设置(要发送的请求中的Body数据):

  • JSON格式:

    img

    text
    {"close": {{close}}, "name": "aaa"}

    ID为186515的实盘即可收到交互命令:{"close": 39773.75, "name": "aaa"}。

  • 文本格式:

    img

    text
    XXX PERP 穿过(Crossing) 39700.00 close: {{close}}

    ID为186515的实盘即可收到交互命令:XXX PERP 穿过(Crossing) 39700.00 close: 39739.4。

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))
mylang
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站视频链接