এক্সটেন্ডেড এপিআই ইন্টারফেস কল করার সময় দুটি যাচাইকরণ পদ্ধতি রয়েছে, সমর্থন করেtoken
যাচাইকরণ এবং সরাসরি যাচাইকরণ।
ব্যবহারmd5
যাচাই করার জন্য এনক্রিপশন পদ্ধতি, উদাহরণPython
, Golang
ভাষা কলঃ
#!/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 = '' # your API KEY
secretKey = ''
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()
# Note: for the timeout problem of "urllib2.urlopen" function, you can set the timeout time; for example, urllib2.urlopen ('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout = 10), that is, set timeout for 10 seconds
return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))
# Return the docker list
print(api('GetNodeList'))
# Return the exchange list
print(api('GetPlatformList'))
# GetRobotList(offset, length, robotStatus, label), passing "-1" means obtaining all
print(api('GetRobotList', 0, 5, -1, 'member2'))
# CommandRobot(robotId, cmd) sends command to live trading
print(api('CommandRobot', 123, 'ok'))
# StopRobot(robotId) returns the live trading status code
print(api('StopRobot', 123))
# RestartRobot(robotId) returns the live trading status code
print(api('RestartRobot', 123))
# GetRobotDetail(robotId) returns detailed live trading information
print(api('GetRobotDetail', 123))
package main
import (
"fmt"
"time"
"encoding/json"
"crypto/md5"
"encoding/hex"
"net/http"
"io/ioutil"
"strconv"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = ""
// Fill in your own FMZ platform secret key
var secretKey string = ""
var baseApi string = "https://www.fmz.com/api/v1"
func api(method string, args ... interface{}) (ret interface{}) {
// Process 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": 104150,
// K-line period parameter, "60" means 60 seconds
"period": 60,
"node" : 73938,
"appid": "member2",
"exchanges": []interface{}{
map[string]interface{}{
"eid": "Exchange",
"label" : "test_bjex",
"pair": "BTC_USDT",
"meta" : map[string]interface{}{
// Fill in the access key
"AccessKey": "",
// Fill in the secret key
"SecretKey": "",
"Front" : "http://127.0.0.1:6666/exchange",
},
},
},
}
method := "RestartRobot"
fmt.Println("Call interface:", method)
ret := api(method, 124577, settings)
fmt.Println("main ret:", ret)
}
এটি ছাড়াই যাচাইকরণ সমর্থন করেtoken
(পাস)secret_key
সরাসরি), আপনি একটি URL তৈরি করতে পারেন যা সরাসরি অ্যাক্সেস করা যেতে পারে।
উদাহরণস্বরূপ, ইউআরএল যা সরাসরি ইন্টারেক্টিভ নির্দেশাবলী দেয়
লাইভ ট্রেডিং, যা ব্যবহার করা যেতে পারেTradingView
অথবাWebHook
অন্যান্য ক্ষেত্রে কলব্যাক।CommandRobot(RobotId, Cmd)
ফাংশন, প্যারামিটারnonce
যাচাই করার প্রয়োজন নেই, এবং অ্যাক্সেস ফ্রিকোয়েন্সি এবং
ইন্টারফেসের ভিজিটের সময় সীমাবদ্ধ নয়।
উদাহরণস্বরূপAccessKey
তৈরি এক্সটেনশানAPI KEY
হচ্ছেঃxxx
এবংSecretKey
হচ্ছেঃyyy
. একটি ইন্টারেক্টিভ কমান্ড বার্তা পাঠাতে নিচের লিঙ্কটি দেখুন
লাইভ ট্রেডিং আইডি সহ লাইভ ট্রেডিং186515
, বার্তা
content একটি স্ট্রিং:"ok12345"
.
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,"ok12345"]
যদি সরাসরি যাচাইকরণ সমর্থিত হয়,
শুধুমাত্রCommandRobot
ইন্টারফেস সমর্থন করা হয়Body
উদাহরণস্বরূপ,WebHook URL
এরTradingView
:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,+""]
নিম্নলিখিত ফরম্যাটে সেটিং করার জন্য মনোযোগ দিনঃargs=[130350,+""]
, যেখানে130350
হল লাইভ ট্রেডিংID
এফএমজেড কোয়ান্ট ট্রেডিং প্ল্যাটফর্মের।
বার্তা বাক্সে সেট করুনTrading View
(প্রার্থিত
JSON বিন্যাসঃ
{"close": {{close}}, "name": "aaa"}
লাইভ ট্রেডিংID
এর186515
ইন্টারেক্টিভ কমান্ড স্ট্রিং গ্রহণ করতে পারেঃ{"close": 39773.75, "name": "aaa"}
.
পাঠ্য বিন্যাসঃ
BTCUSDTPERP Crossing 39700.00 close: {{close}}
লাইভ ট্রেডিংID
এর186515
ইন্টারেক্টিভ কমান্ড স্ট্রিং গ্রহণ করতে পারেঃBTCUSDTPERP Crossing 39700.00 close: 39739.4
.
উদাহরণPython
& Golang
ভাষা কলঃ
#!/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'))
# If APIKEY does not have the interface permission, the call to
print(api('RestartRobot', 186515)) will fail, and the returned data
is: {'code': 4, 'data': None}
# print(api('RestartRobot', 186515))
# Printed Id: the live trading details of 186515
print(api('GetRobotDetail', 186515))
package main
import (
"fmt"
"encoding/json"
"net/http"
"io/ioutil"
"net/url"
)
// Fill in your own FMZ platform api key
var apiKey string = "your access_key"
// Fill in your own FMZ platform 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("Call interface:", method)
ret := api(method, 186515)
fmt.Println("main ret:", ret)
}