وسائل لوڈ ہو رہے ہیں... لوڈنگ...

تصدیق کے طریقے

توسیع API انٹرفیس کو کال کرتے وقت توثیق کے دو طریقے ہیں، کی حمایت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براہ راست) ، آپ کو ایک یو آر ایل پیدا کر سکتے ہیں کہ براہ راست تک رسائی حاصل کی جا سکتی ہے. مثال کے طور پر، یو آر ایل جو براہ راست انٹرایکٹو ہدایات دیتا ہے لائیو ٹریڈنگ، جس کے لئے استعمال کیا جا سکتا ہےTradingViewیاWebHookدوسرے معاملات میں کال بیک۔CommandRobot(RobotId, Cmd)فنکشن، پیرامیٹرnonceتوثیق کی ضرورت نہیں ہے، اور رسائی کی تعدد اور انٹرفیس کے دوروں کے اوقات محدود نہیں ہیں.

مثال کے طورAccessKeyتخلیق توسیع کیAPI KEYہے:xxxاورSecretKeyہے:yyyایک انٹرایکٹو کمانڈ پیغام بھیجنے کے لئے مندرجہ ذیل لنک دیکھیں لائیو ٹریڈنگ ID کے ساتھ لائیو ٹریڈنگ186515، پیغام مواد ایک تار ہے:"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 فارمیٹ:

    https://www.fmz.comimg

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

    کے ساتھ براہ راست ٹریڈنگIDکے186515انٹرایکٹو کمانڈ سٹرنگ وصول کر سکتے ہیں:{"close": 39773.75, "name": "aaa"}.

  • متن کی شکل:

    https://www.fmz.comimg

    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)
}

TradingView انتباہ کا احساس کرنے کے لئے FMZ Quant پر توسیع API کا استعمال کریں سگنل ٹریڈنگ

براہ راست ٹریڈنگ کوڈ توسیع شدہ API انٹرفیس کی وضاحت