资源加载中... loading...

直接验证

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

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

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,"ok12345"]

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

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,+""]

注意需要按照此格式设置:args=[186515,+""]186515是发明者量化交易平台的实盘Id。Trading View消息框中设置(要发送的请求中的Body数据):

  • JSON格式:

https://www.fmz.com![image](/upload/asset/16d8a37ef80d9ccd0079.png)

  {"close": {{close}}, "name": "aaa"}
- 文本格式:
  
  https://www.fmz.com![image](/upload/asset/16d8a506dfbb6c60a077.png)
  
  ```plaintext
  BTCUSDTPERP 穿过(Crossing) 39700.00 close: {{close}}

```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.fmz.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'))

# 如果API KEY没有该接口权限,调用print(api('RestartRobot', 186515)) 会失败,返回数据:{'code': 4, 'data': None}
# print(api('RestartRobot', 186515))

# 打印Id为:186515的实盘详细信息
print(api('GetRobotDetail', 186515))
package main

import (
    "fmt"
    "encoding/json"
    "net/http"
    "io/ioutil"
    "net/url"
)

// 填写自己的FMZ平台api key
var apiKey string = "your access_key"

// 填写自己的FMZ平台secret key
var secretKey string = "your secret_key"
var baseApi string = "https://www.fmz.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, 186515)
    fmt.Println("main ret:", ret)
}

使用发明者量化交易平台扩展API实现TradingView报警信号交易 使用发明者量化交易平台扩展API实现TradingView报警信号交易,B站视频链接

token验证 扩展API接口详解