输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

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

例如,创建的扩展API KEY中的AccessKey为:xxxSecretKey为: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 ViewWebHook 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

PythonGolang语言调用示例:

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