Les ressources ont été chargées... Je charge...

Interface d'API étendue

FMZ Quant a ouvert l'interface API étendue de la plateforme pour prendre en charge les appels programmatiques vers diverses fonctions de la plateforme de trading FMZ Quant.

Créez ApiKey

La plateforme de négociation quantitative FMZ prend en charge la gestion des autorisations l'interface API étendue, et l'autorisation deAPI KEYpeut être réglé. Sur l'option API interface sur les Paramètres de compte (https://www.fmz.com/m/account) page de la plateforme, cliquez sur Créer nouveau bouton ApiKey pour créer l'extensionAPI KEY.

Vous pouvez modifier la zone d'entrée API Permission lors de la création d'unAPI KEY, et entrez le*Symbole permettant à tousInterface API étendueSi vous souhaitez spécifier des autorisations d'interface spécifiques, vous devez entrer le nom de la fonction API étendue correspondante. Utilisez des virgules pour séparer, par exemple:GetRobotDetail,DeleteRobotÇa donne ça.API KEYl'autorisation d'appeler leObtenez des informations détaillées sur le trading en directl'interface et leSupprimer les opérations en direct interface.

LeAPI KEYla page de gestion vous permet également demodifier, désactiver, supprimerLes créaturesAPI KEY.

Code de retour de l'interface API étendue

Un exemple de la structure renvoyée par l'interface API étendue est le suivant:

    "code":0,
    "data":{
        // ...
    }
}

Lecodechamp is: Le code d'état du résultat d'appel renvoyé lors de l'appel de l'interface API étendue.

Définition Le code
Exécution réussie 0
Faute de clé d'API 1
Fausse signature 2
Erreur de nonce 3
Méthode incorrecte 4
Paramètre incorrect 5
Erreur interne inconnue 6

Code de négociation en direct

LeGetRobotListl'interface, leGetRobotDetailune interface, et leGetRobotLogsLes données de retour de l'interface dans lestatuschamp pour: le code de l'état de négociation en direct.

  • Démarrage normal
    Le statut Le code
    À l'arrêt 0
    En fonctionnement 1
    Arrêt 2
    Déposé 3
    Arrêté 4
    La stratégie comporte des erreurs. 5
  • Une anomalie.
    Le statut Le code
    La stratégie a expiré, et s'il vous plaît contacter l'auteur pour l'acheter à nouveau -1
    Aucun docker trouvé -2
    Erreur de compilation de stratégie -3
    La négociation en direct est déjà en cours. -4
    Solde insuffisant -5
    Le nombre de stratégies concomitantes dépasse la limite -6

Méthodes de vérification

Il y a deux méthodes de vérification lors de l'appel de l'interface API étendue,tokenla vérification et la vérification directe.

Vérification des jetons

Utilisationmd5méthode de chiffrement à vérifier, exemple dePython, GolangAppel de langue:

#!/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)
}

Vérification directe

Il prend en charge la vérificationtoken(passer)secret_keyVous pouvez générer une URL directement accessible. Par exemple, l'URL qui donne directement des instructions interactives à les échanges en direct, qui peuvent être utilisés pourTradingViewou leWebHookPour les autres cas.CommandRobot(RobotId, Cmd)fonction, le paramètrenoncen'a pas besoin de vérification, et la fréquence d'accès et les temps de visite de l'interface ne sont pas limités.

Par exemple, leAccessKeyde l'extension crééeAPI KEYest:xxxet leSecretKeyest:yyy. Consultez le lien suivant pour envoyer un message de commande interactif à les transactions en direct avec l'ID de négociation en direct186515, le message le contenu est une chaîne:"ok12345".


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

Si la vérification directe est soutenue, seulementCommandRobotl'interface est prise en charge pour obtenir leBodyPar exemple, les paramètres dans leWebHook URLdeTradingView:


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

Veuillez faire attention au réglage selon le format suivant:args=[130350,+""], dans lequel130350est la négociation en directIDde la plateforme de négociation quantitative FMZ.

Mettre dans la boîte de message deTrading View(l'organisme requis) données à envoyer):

  • Format JSON:

    https://www.fmz.comimg

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

    Les échanges en direct avecIDde186515peut recevoir la chaîne de commande interactive:{"close": 39773.75, "name": "aaa"}.

  • Format du texte:

    https://www.fmz.comimg

    BTCUSDTPERP Crossing 39700.00 close: {{close}}
    

    Les échanges en direct avecIDde186515peut recevoir la chaîne de commande interactive:BTCUSDTPERP Crossing 39700.00 close: 39739.4.

Exemples dePython & Golangappels linguistiques:

#!/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)
}

Utilisez l'API étendue sur FMZ Quant pour réaliser l'alerte TradingView négociation de signaux

Explication de l'interface API étendue

  • L'interface API étendue de la plateforme de négociation quantitative FMZ Ajouter les paramètres de requête (séparés par?) de la demande immédiatementhttps://www.fmz.com/api/v1Les paramètres de demande exprimés à l'aide dePython:

    {
        "version"   : "1.0",
        "access_key": "xxx",
        "method"    : "GetNodeList",
        "args"      : [],
        "nonce"     : 1516292399361,
        "sign"      : "085b63456c93hfb243a757366600f9c2"
    }
    
    Les champs Directions de conduite
    version Numéro de version.
    accès_clé AccessKey, demandez-le sur la page de gestion de compte.
    méthode La méthode d'appel spécifique.
    les args La liste des paramètres de la méthode spécifique appelée.
    nonce L'horodatage, en millisecondes, permet une erreur d'une heure par rapport à l'horodatage standard.
    signe Signature.

    Chaque nom de paramètre est séparé par le caractère&, et les noms et valeurs des paramètres sont reliés au symbole=. L'URL complète de la demande (en prenantmethod=GetNodeListà titre d'exemple):

    https://www.fmz.com/api/v1?access_key=xxx&nonce=1516292399361&args=%5B%5D&sign=085b63456c93hfb243a757366600f9c2&version=1.0&method=GetNodeList
    

    Notez qu'il n'y a passecret_keyparamètre parmi les paramètres de demande.

  • Méthode de signature Lesignle paramètre du paramètre de demande est chiffré comme suit, selon le format:

    version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
    

    Après avoir concaténé des chaînes, utilisezMD5algorithme de chiffrement pour chiffrer la chaîne et la convertir en une valeur de chaîne de données hexadécimale, désignée par la valeur du paramètresign. pour la partie relative à la signature, voir lePythonInterface de l'API d'extension de codeMéthodes de vérification :

    # Parameter
    d = {
        'version': '1.0',
        'access_key': accessKey,
        'method': method,
        'args': json.dumps(list(args)),
        'nonce': int(time.time() * 1000),
    }
    
    # Calculate "sign" signature
    d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
    
  • Erreur de service d'interface:

    • Paramètres insuffisants:
      {
          "code":0,
          "data":{
              "result":null,
              "error":"Params length incorrect"
          }
      }
      

Obtenez une liste de nœuds

LeGetNodeListla méthode est utilisée pour obtenir la liste des dockers dans le cadre du compte de la plateforme de négociation quantitative FMZ correspondant auAPI KEYdans la demande.

{
    "code": 0,
    "data": {
        "result": {
            "all": 1,
            "nodes": [{
                "build": "3.7",
                "city": "...",
                "created": "2024-11-08 09:21:08",
                "date": "2024-11-08 16:37:16",
                "forward": "...",
                "guid": "...",
                "host": "node.fmz.com:9902",
                "id": 123,
                "ip": "...",
                "is_owner": true,
                "loaded": 0,
                "name": "MacBook-Pro-2.local",
                "online": true,
                "os": "darwin/amd64",
                "peer": "...",
                "public": 0,
                "region": "...",
                "tunnel": false,
                "version": "...",
                "wd": 0
            }]
        },
        "error": null
    }
}

Description des champs de valeurs renvoyées (la signification littérale est évidente et ne sera pas répétée):

  • tous: le nombre de dockers associés au compte courant.
  • les nœuds: enregistre les détails du nœud dock.
    • construire: numéro de version.
    • ville: la ville où vous vous trouvez.
    • is_owner: vrai indique un dock privé, faux indique un dock public.
    • chargé: Chargement, nombre d'instances de stratégie.
    • public: 0 indique un dock privé, 1 un dock public.
    • région: situation géographique.
    • version: informations détaillées sur la version du docker.
    • wd: Activer ou non l'alarme hors ligne, 0 signifie non activé. Le docker de déploiement en un clic contient des informations supplémentaires.ecs_etunit_, qui enregistre les informations pertinentes du serveur docker de déploiement en un clic (nom de l'opérateur, configuration, statut, etc.), cycle de facturation, prix et autres informations, qui ne seront pas répétées ici.

Aucun paramètre

Réservez la liste des groupes

GetRobotGroupList()renvoie la liste des groupes de négociation en direct du compte de la plateforme de négociation quantitative FMZ correspondant auAPI KEYdans la demande.

{
    "code": 0,
    "data": {
        "result": {
            "items": [{
                "id": 3417,
                "name": "Test"
            }, {
                "id": 3608,
                "name": "Live trading demo"
            }]
        },
        "error": null
    }
}
  • les éléments: informations sur les regroupements de négociation en direct.
    • Id: Groupe de négociation en direct Id.
    • nom: nom du groupe de négociation en direct. LeitemsLe champ n'enregistre que les groupes nouvellement créés.items.

Aucun paramètre

Remplissez la liste des plateformes

GetPlatformList()renvoie la liste des bourses qui ont ont été ajoutés par le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYdans la demande.

{
    "code": 0,
    "data": {
        "result": {
            "all": 2,
            "platforms": [{
                "category": "加密货币||Crypto",
                "date": "2023-12-07 13:44:52",
                "eid": "Binance",
                "id": 123,
                "label": "Binance",
                "logo": "...",
                "name": "币安现货|Binance",
                "stocks": ["BTC_USDT", "LTC_USDT", "ETH_USDT", "ETC_USDT", "BTC_TUSD", "ETH_TUSD", "BNB_TUSD"],
                "website": "..."
            }, {
                "category": "通用协议|Custom Protocol",
                "date": "2020-11-09 11:23:48",
                "eid": "Exchange",
                "id": 123,
                "label": "XX Exchange REST Protocol",
                "logo": "...",
                "name": "通用协议|Custom Protocol",
                "stocks": ["BTC_USDT", "ETH_USDT"],
                "website": ""
            }]
        },
        "error": null
    }
}
  • all: le nombre d'objets d'échange ajoutés/configurés.
  • les plateformes: informations relatives à l'échange.
    • eid: l'identifiant de la bourse sur la plateforme de négociation quantitative FMZ,eidseront utilisés dans certaines configurations et paramètres.

Aucun paramètre

Je suis en train d' écrire une lettre à GetRobot.

LeGetRobotListCette méthode est utilisée pour obtenir la liste des les transactions effectuées sur le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYdans la demande.

{
    "code": 0,
    "data": {
        "result": {
            "all": 1,
            "concurrent": 0,
            "robots": [{
                "charge_time": 1731654846,
                "date": "2024-11-12 14:05:29",
                "end_time": "2024-11-15 14:56:32",
                "fixed_id": 4509153,
                "id": 591026,
                "is_sandbox": 0,
                "name": "test",
                "node_guid": "45891bcf3d57f99b08a43dff76ee1ea1",
                "node_id": 4519153,
                "node_public": 0,
                "profit": 0,
                "public": 0,
                "refresh": 1731651257000,
                "start_time": "2024-11-15 14:56:30",
                "status": 3,
                "strategy_id": 411670,
                "strategy_isowner": true,
                "strategy_language": 0,
                "strategy_name": "test",
                "strategy_public": 0,
                "uid": "105ed6e511cc977921610fdbb7e2a1d6",
                "wd": 0
            }]
        },
        "error": null
    }
}
  • robots: Informations commerciales en direct
    • group_id: l'ID du groupe de négociation en direct.group_id field.

Le réglage de décalage de la requête de paging. décalage faux Numéro Le réglage de la longueur de la requête de page. longueur faux Numéro Spécifier l'état de la négociation en direct à interroger, se référer à l'interface API étendueCode de négociation en directPassez.-1pour obtenir tous les échanges en direct. robotStatus faux Numéro Spécifiez l'étiquette personnalisée du trading en direct que vous souhaitez interroger, et vous pouvez filtrer tous les transactions en direct de cette étiquette. étiquette faux chaîne Cherchez des mots clés. mot clé faux chaîne

Prends lePythonL'interface API étendue du langageMéthodes de vérificationà titre d'exemple:print(api('GetRobotList'))Obtenez toutes les informations sur les échanges en direct.print(api('GetRobotList', 'member2')): imprimer les informations de toutes les transactions en direct avec le membre de l'étiquette personnalisée2.print(api('GetRobotList', 0, 5, -1, 'member2')): pages de 0 à 5 et liste jusqu'à 5 robots étiquetés avec member2.

CommanderRobot

LeCommandRobotméthode est utilisée pour envoyer une interaction commander à la négociation en direct sur la plateforme de négociation quantitative FMZ compte correspondant à laAPI KEYdans la demande. La commande d'interaction est le Identifiant de négociation spécifié par lerobotIdparamètre, et le la commande d'interaction est renvoyée par leGetCommand()fonction appelé dans la stratégie pour le capturer.

{
    "code":0,
    "data":{
        "result":true,
        "error":null
    }
}
  • résultat: si la commande interactive a été envoyée avec succès; lors de l'envoi d'une commande à une transaction en direct qui n'est pas en cours d'exécution, le résultat des données renvoyées est faux.

Le paramètrerobotIdest utilisé pour spécifier l'Id du Vous pouvez utiliser la commande interactive. LeGetRobotListméthode pour obtenir les informations du les transactions effectuées sous le compte, qui contient l'identifiant de négociation en cours.

robotId vrai Numéro Le paramètrecmdest la commande interactive envoyée au bot; la commande sera capturée par la fonctionGetCommand(), qui déclenche la logique interactive dans la stratégie.GetCommand()fonction dans leManuel de l'API de la plateforme de négociation quantique FMZ.

Cmd vrai chaîne

Stratégie de négociation en direct, en supposant que cette stratégie est en fonctionnement, l'ID de négociation en direct est 123:

function main() {
    while (true) {
        var cmd = GetCommand()
        if (cmd) {
            Log(cmd)
        }
        Sleep(2000)
    }
}

Si nous utilisons le script de test Python dans ce chapitre, accédez à l'API étendue de la plateforme de trading quantique FMZ:api("CommandRobot", 123, "test command")Le trading en direct avec ID 123 recevra la commande interactive:test command, puis l'imprimer à travers la sortie de la fonction Log.

ArrêtezRobot

StopRobot(RobotId)est utilisé pour demander leAPI KEYcorrespondant à la négociation en direct de la FMZ Quant Trading Le compte de la plateforme. Identifiant de négociation spécifié par lerobotId parameter.

{
    "code":0,
    "data":{
        "result":2,
        "error":null
    }
}
  • Résultat: le code d'état de négociation en direct est 2, ce qui signifie arrêté.

Le paramètrerobotIdest utilisé pour spécifier l'Id du Vous pouvez utiliser leGetRobotListLa méthode utilisée pour obtenir l'information sur les transactions en direct compte, qui contient l'identifiant de négociation en direct.

robotId vrai Numéro

Redémarrer le robot

LeRestartRobotLa méthode est utilisée pour redémarrer les transactions en direct dans le cadre duAPI KEYL'identifiant de la négociation en direct redémarrée est l'identifiant de la négociation en direct spécifié par lerobotId parameter.

{
    "code":0,
    "data":{
        "result":1,
        "error":null
    }
}
  • résultat: code d'état de négociation en direct, 1 signifie en cours.

LerobotIdParamètre utilisé pour spécifier l'Id de la Vous pouvez utiliser leGetRobotListLa méthode utilisée pour obtenir l'information sur les transactions en direct compte, qui contient l'identifiant de négociation en direct.

robotId vrai Numéro Les paramètres de la configuration de négociation en direct, les paramètressettingsle format est le suivant:

{
    "appid":"test",
    "args":[],
    "exchanges":[
        {"pair":"SOL_USDT","pid":123},
        {"pair":"ETH_USDT","pid":456}
    ],
    "name":"test",
    "node":123,
    "period":60,
    "strategy":123
}
  • appid: champs personnalisés Les balises peuvent être définies.
  • args: paramètres de stratégie La structure est un tableau, chaque élément est un paramètre.Interval, et vous voulez définirIntervalà 500 lors du redémarrage de la stratégie, puisargsIl contient:["Interval", 500], à savoir:"args": [["Interval", 500]].
  • échanges: configuration de l'objet d'échange pour la liaison de négociation en direct La structure est un tableau, où chaque élément est une configuration d'objet d'échange.
    • Il peut se lier à l'objet d'échange configuré sur la plateforme C'est à dire, utiliserpidconfiguration:{"pair":"SOL_USDT","pid":123}; pidLes données peuvent être consultées par le biais deGetPlatformListl'interface, et leidle champ dans les données renvoyées est l'échangepid.
    • Nous pouvons passer directement dans les informations de configuration et lier des objets d'échange C'est à dire, utilisereidconfiguration:{"eid":"Huobi","label":"test Huobi","meta":{"AccessKey":"123","SecretKey":"123"},"pair":"BCH_BTC"}; informations sensibles telles queAPI KEYSi ce type de configuration est utilisé, les informations doivent être configurées à chaque fois qu'une transaction en direct est créée ou redémarrée.
    • Il peut se lierProtocole douanierobjet d'échange Il peut transmettre des informations de configuration:{"eid":"Exchange","label":"test exchange","pair":"BTC_USDT","meta":{"AccessKey":"123","SecretKey":"123","Front":"http://127.0.0.1:6666/test"}}. labelL'attribut est de définir une étiquette pour l'objet d'échange accessible par le système actuel.Protocole douanier, qui peut être obtenue par leexchange.GetLabel()Le rôle de l'entreprise dans la stratégie.
  • nom: nom de la stratégie
  • nœud: Docker ID Spécifie sur quel docker exécuter. Si cet attribut n'est pas défini, le docker sera affecté à exécuter automatiquement.
  • période: période par défaut de la ligne K Paramètre de la période de la ligne K, 60 signifie 60 secondes.
  • stratégie: stratégie ID Il peut être obtenu à l'aide deGetStrategyList method.

paramètres faux Objet JSON

Si une transaction en direct est créée par l'API étendue, l'API étendueRestartRobot (RobotId, Settings)doit être utilisé pour redémarrer, et lesettingsLe trading en direct créé sur la page de la plateforme peut être redémarré via l'API étendue ou en cliquant sur le bouton sur la page.settingsParamètre. Si vous passez seulement leRobotIdparamètre, démarrer la négociation en direct selon les paramètres de négociation en direct actuels.

GetRobotDétails

LeGetRobotDetailCette méthode est utilisée pour obtenir les détails de la négociation en direct sous le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYL'identifiant de la transaction en direct à récupérer est l'identifiant de la transaction en direct spécifié par lerobotId parameter.

{
    "code": 0,
    "data": {
        "result": {
            "robot": {
                "charge_time": 1732246539,
                "charged": 5850000,
                "consumed": 5375000000,
                "date": "2018-12-28 14:34:51",
                "favorite": {
                    "added": false,
                    "type": "R"
                },
                "fixed_id": 123,
                "hits": 1,
                "id": 123,
                "is_deleted": 0,
                "is_manager": true,
                "is_sandbox": 0,
                "name": "test",
                "node_id": 123,
                "pexchanges": {
                    "123": "Futures_OKCoin"
                },
                "phash": {
                    "123": "ca1aca74b9cf7d8624f2af2dac01e36d"
                },
                "plabels": {
                    "123": "OKEX futures V5"
                },
                "priority": 0,
                "profit": 0,
                "public": 0,
                "refresh": 1732244453000,
                "robot_args": "[]",
                "start_time": "2024-11-22 11:00:48",
                "status": 1,
                "strategy_args": "[]",
                "strategy_exchange_pairs": "[60,[123],[\"ETH_USDT\"]]",
                "strategy_id": 123,
                "strategy_last_modified": "2024-11-21 16:49:25",
                "strategy_name": "test",
                "strategy_public": "0",
                "uid": "105ed6e51bcc17792a610fdbb7e2a1d6",
                "username": "abc",
                "wd": 0
            }
        },
        "error": null
    }
}
  • charge_time: le temps de déduction suivant est le temps d'expiration effectif après la déduction en cours.
  • chargé: temps déjà écoulé.
  • quantité consommée (0,125 USD = 12500000 / 1e8).
  • date: date de création.
  • fixed_id: L'identifiant du docker attribué lors de l'exécution du trading en direct. S'il est automatique, la valeur est -1.
  • is_manager: Si vous avez l'autorité pour gérer cette transaction en direct.
  • is_sandbox: S'il s'agit d'une simulation de négociation.
  • Nom: Nom de la transaction en direct.
  • node_id: Identifiant du Docker.
  • pexchanges: L'objet d'échange de la négociation en direct, 123 est le pid, et Futures_OKCoin est le nom de l'échange.
  • plabels: informations sur les balises de l'objet d'échange configuré dans le cadre de la négociation en direct.
  • bénéfice: données sur les bénéfices de négociation en direct.
  • public: si la négociation en direct est publique.
  • mise à jour: dernière activité.
  • stratégie_exchange_pairs: Objet d'échange configuré, renseignements sur les paires de négociation.
  • wd: Activer ou non l'alarme hors ligne.

LerobotIdLe paramètre est utilisé pour spécifier l'Id du commerce en direct pour lequel les détails doivent être obtenus.GetRobotListméthode permettant d'obtenir des informations sur les transactions en direct sous le compte, qui contient l'identifiant des transactions en direct.

robotId vrai Numéro

La description de l'attribut destrategy_exchange_pairsPrenons par exemple les données suivantes:

"[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]"

Les premières données60représente l'ensemble par défaut de périodes de ligne K par négociation en direct est de 1 minute, soit 60 secondes.

[44314,42960,15445,14703]est l'objet d'échangepidconfiguré pour la négociation en direct (selon l'ordre d'ajout).

[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]est le l'ensemble de paires de négociation pour l'objet d'échange configuré par live les échanges (dans l'ordre d'addition et en correspondance un-à-un) avecpid).

Compte de prise de vue

LeGetAccountLa méthode est utilisée pour acquérir les informations relatives au compte correspondant à laAPI KEYà la demande du compte de la plateforme de négociation quantitative FMZ.

{
    "code":0,
    "data":{
        "result":{
            "balance":22944702436,
            "concurrent":0,
            "consumed":211092719653,
            "currency":"USD",
            "email":"123@qq.com",
            "openai":false,
            "settings":null,
            "sns":{"wechat":true},
            "uid":"105ea6e51bcc177926a10fdbb7e2a1d6",
            "username":"abc"
        },
        "error":null
    }
}
  • le solde: le solde du compte La valeur ici est un entier dû au contrôle de précision. Pour la convertir en une valeur réelle, vous devez la diviser par 1e8 (c'est-à-dire 10 à la 8e puissance). La valeur réelle ici est: 229.44702436

Je vais vous donner une liste.

LeGetExchangeListLa méthode est utilisée pour obtenir la liste des bourses et les informations de configuration requises prises en charge par la plateforme de négociation quantitative FMZ.

Lorsque leisSummaryle paramètre estfalse, les données renvoyées sont:

{
    "code": 0,
    "data": {
        "result": {
            "exchanges": [{
                "category": "加密货币||Crypto",
                "eid": "Futures_Binance",
                "id": 74,
                "logo": "/upload/asset/d8d84b23e573e9326b99.svg",
                "meta": "[{\"desc\": \"Access Key\", \"qr\":\"apiKey\",\"required\": true, \"type\": \"string\", \"name\": \"AccessKey\", \"label\": \"Access Key\"}, {\"encrypt\": true, \"qr\":\"secretKey\",\"name\": \"SecretKey\", \"required\": true, \"label\": \"Secret Key\", \"type\": \"password\", \"desc\": \"Secret Key\"}]",
                "name": "币安期货|Futures_Binance",
                "priority": 200,
                "stocks": "BTC_USDT,ETH_USDT,ETH_USD",
                "website": "https://accounts.binance.com/zh-TC/register?ref=45110270"
            }]
        },
        "error": null
    }
}

Lorsque leisSummaryle paramètre esttrue, les données renvoyées sont:

{
    "code": 0,
    "data": {
        "result": {
            "exchanges": [{
                "category": "加密货币||Crypto",
                "eid": "Futures_Binance",
                "id": 74,
                "logo": "/upload/asset/d8d84b23e573e9326b99.svg",
                "name": "币安期货|Futures_Binance",
                "priority": 200,
                "website": "https://accounts.binance.com/zh-TC/register?ref=45110270"
            }]
        },
        "error": null
    }
}
  • méta: échange de métadonnées de configuration.

LeisSummaryLe paramètre est utilisé pour spécifier si les données renvoyées sont des informations sommaires.

estRésumé vrai Boole

Supprimer le nœud

LeDeleteNode(Nid)Cette méthode est utilisée pour supprimer le nœud docker correspondant à laAPI KEYdans la demande du compte de la plateforme de trading FMZ Quant.nid parameter.

{
    "code":0,
    "data":{
        "result":true,
        "error":null
    }
}
  • résultat: Si le programme docker associé est supprimé avec succès.

LenidLe paramètre est utilisé pour spécifier l'Id du docker à supprimer.GetNodeListméthode pour obtenir des informations sur les dockers du compte.

nid vrai Numéro

SupprimerRobot

LeDeleteRobot(RobotId, DeleteLogs)Cette méthode est utilisée pour supprimer les transactions en direct correspondant à laAPI KEYL'identifiant de négociation en direct supprimé est l'identifiant de négociation en direct spécifié par lerobotId parameter.

{
    "code":0,
    "data":{
        "result":0,
        "error":null
    }
}
  • Résultat: Résultat de la rétroaction de l'opération de suppression de négociation en direct. 0: supprimer normalement. -2: La suppression a été réussie, mais le docker associé au trading en direct n'a pas pu être contacté. Veuillez supprimer le fichier 123.db3 manuellement!

Le paramètrerobotIdest utilisé pour spécifier l'Id du Vous pouvez utiliser leGetRobotListLa méthode utilisée pour obtenir l'information sur les transactions en direct compte, qui contient l'identifiant de négociation en direct.

robotId vrai Numéro LedeleteLogsParamètre utilisé pour définir si le journal de négociation en direct doit être supprimé si une valeur vraie est passée (par exemple:true), le journal des transactions en direct est supprimé.

supprimerLogs vrai Boole

Je suis en train d' écrire une lettre.

LeGetStrategyListla méthode est utilisée pour obtenir des informations sur la stratégie de la plateforme.

{
    "code": 0,
    "data": {
        "result": {
            "all": 123,
            "strategies": [{
                "category": 9,
                "date": "2024-11-10 20:40:04",
                "description": "",
                "forked": 0,
                "hits": 0,
                "id": 123,
                "is_buy": false,
                "is_owner": false,
                "language": 2,
                "last_modified": "2024-11-11 17:23:52",
                "name": "HedgeGridStrategy",
                "profile": {
                    "avatar": "...",
                    "nickname": "abc",
                    "uid": "4ed225440db1eda23fe05ed10184113e"
                },
                "public": 0,
                "tags": "",
                "uid": "4ed225440db1eda23fe05ed10184113e",
                "username": "abc"
            }]
        },
        "error": null
    }
}
  • tous: le nombre total de stratégies trouvées par la requête de filtre.
  • stratégies: les informations spécifiques à la stratégie sont demandées.

LeoffsetLe paramètre est utilisé pour régler le décalage lors de la requête.

décalage vrai Numéro Lelengthparamètre est utilisé pour définir la longueur de la requête.

longueur vrai Numéro LestrategyTypeLe paramètre est utilisé pour définir le type de stratégie à interroger.

  • strategyTyperéglage des paramètres0: toutes les stratégies.
  • strategyTyperéglage des paramètres1: La stratégie est publique.
  • strategyTyperéglage des paramètres2: stratégie à revoir.

stratégieTypes vrai Numéro LecategoryLe paramètre est utilisé pour définir la catégorie de stratégie à interroger.

  • categoryréglage des paramètres-1: toutes les stratégies.
  • categoryréglage des paramètres0Une stratégie personnalisée

catégorie vrai Numéro LeneedArgsparamètre est utilisé pour définir si la stratégie à interroger a des paramètres.

  • needArgsréglage des paramètres0: toutes les stratégies.

besoinArgs vrai Numéro LelanguageLe paramètre est utilisé pour définir le langage de programmation de la stratégie à interroger.

  • languageparamètres0: langage JavaScript.
  • languageparamètres1Le langage Python.
  • languageparamètres2: langage C++.
  • languageparamètres3Une stratégie de visualisation.
  • languageparamètres4Mon langage.
  • languageparamètres5: la langue PINE.

langue vrai Numéro LekwLe paramètre est utilisé pour définir le mot clé de la stratégie à interroger.

  • La définition d'une chaîne vide signifie qu'aucun filtrage de mots clés n'est utilisé.

kW vrai chaîne

Je suis un robot.

LeNewRobotCette méthode est utilisée pour créer une transaction en direct dans le cadre de laAPI KEYcorrespondant au compte de la plateforme de négociation quantitative FMZ figurant dans la demande.

{
    "code":0,
    "data":{
        "result":591988,
        "error":null
    }
}
  • Résultat: la création est réussie et l'ID de négociation en cours est renvoyé.

les paramètres de configuration de négociation en direct,settingsle format des paramètres est le suivant:

{
    "appid":"test",
    "args":[],
    "exchanges":[
        {"pair":"SOL_USDT","pid":123}
    ],
    "group":123,
    "name":"test",
    "node":123,
    "period":60,
    "strategy":123
}
  • groupe: spécifier le groupe de négociation en direct.
  • args: paramètres de stratégie, ou un tableau vide si la stratégie n'a pas de paramètres.
  • échanges: Pour la configuration des objets d'échange, veuillez consulter leRestartRobot interface.

paramètres vrai Objet JSON

Dans la configuration deeiddans lesettingsparamètre,"meta":{"AccessKey": "123", "SecretKey": "123"}Ces informations sensibles ne sont pas stockées par la plateforme de trading FMZ Quant. Ces données sont transmises directement au programme docker, de sorte que ces informations doivent être configurées à chaque fois qu'une transaction en direct est créée ou redémarrée.

Si nous créons un objet d'échange de trading en direct en utilisant le protocole personnalisé, lors de la configuration de lasettingsparamètre, nous pouvons utiliser les paramètres suivants pour leexchangesattribut:

{
    "eid": "Exchange",
    "label": "test",
    "pair": "ETH_BTC",
    "meta": {
        "AccessKey": "123",
        "SecretKey": "123",
        "Front": "http://127.0.0.1:6666/test"
    }
}

labelL'attribut est de définir une étiquette pour l'objet d'échange accessible par le protocole personnalisé en cours, qui peut être obtenue par leexchange.GetLabel()Le rôle de l'entreprise dans la stratégie.

Plugin exécuté

LePluginRunLa méthode est utilisée pour appeler leoutil de débogagefonction de la plateforme de trading FMZ Quant; seul le langage JavaScript est pris en charge.

{
    "code": 0,
    "data": {
        "result": "{\"logs\":[{\"PlatformId\":\"\",\"OrderId\":\"0\",\"LogType\":5,\"Price\":0,\"Amount\":0,\"Extra\":\"Hello FMZ\",\"Currency\":\"\",\"Instrument\":\"\",\"Direction\":\"\",\"Time\":1732267473108}],\"result\":\"\"}",
        "error": null
    }
}
  • résultat: L'outil de débogage renvoie les données du résultat du test après l'exécution réussie du code JavaScript passé.

Les paramètres de réglage dans l'outil de débogage,settingsconfiguration, inclure le code d'essai dans lesourceL'attributsettingsLe format du paramètre est le suivant:

{
    "exchanges":[{"pair":"SOL_USDT","pid":123}],
    "node":123,
    "period":60,
    "source":"function main() {Log(\"Hello FMZ\")}"
}
  • source: code qui doit être débogué.
  • Node: Docker ID, vous pouvez spécifier sur quel docker exécuter le trading en direct.
  • échanges: Pour la configuration des objets d'échange, veuillez consulter leRestartRobot interface.

paramètres vrai Objet JSON

{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "123"}} {"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "123"}}

Pour leexchangesattribut danssettings, une seule doit être définie pour appeler lePluginRunméthode (un seul objet d'échange est pris en charge lorsqu'il est utilisé dans la page des outils de débogage). Aucune erreur ne sera signalée lorsque vous définissez 2 objets d'échange danssettings, mais une erreur sera signalée lorsque le deuxième objet d'échange est consulté dans le code.

Les journaux du robot

LeGetRobotLogsCette méthode est utilisée pour obtenir les informations du journal des transactions en direct sous le compte de la plateforme de négociation quantitative FMZ correspondant à laAPI KEYL'ID de la plateforme de négociation en direct à obtenir est l'ID de la plateforme de négociation en direct spécifiée par lerobotId parameter.

{
    "code": 0,
    "data": {
        "result": {
            "chart": "",
            "chartTime": 0,
            "logs": [{
                "Total": 20,
                "Max": 20,
                "Min": 1,
                "Arr": []
            }, {
                "Total": 0,
                "Max": 0,
                "Min": 0,
                "Arr": []
            }, {
                "Total": 0,
                "Max": 0,
                "Min": 0,
                "Arr": []
            }],
            "node_id": 123,
            "online": true,
            "refresh": 1732201544000,
            "status": 4,
            "summary": "...",
            "updateTime": 1732201532636,
            "wd": 0
        },
        "error": null
    }
}
  • journaux: informations de journaux: plusieurs éléments de données de journaux sont trouvés dans le champ Arr. La première structure de données dans les journaux est l'enregistrement de journaux dans le tableau de journaux de stratégie dans la base de données de négociation en direct. La deuxième structure de données dans les journaux est l'enregistrement de journaux dans le tableau de journaux de stratégie dans la base de données de négociation en direct. La troisième structure de données dans les journaux est l'enregistrement de journaux dans le tableau de journaux de stratégie dans la base de données de négociation en direct.
  • Résumé: Données de barre d'état des transactions en direct.

LerobotIdParamètre utilisé pour spécifier l'Id de la les transactions en direct pour lesquelles les informations du journal doivent être obtenues. Vous pouvez utiliser leGetRobotListméthode d'obtention des informations sur les transactions en direct sous le compte, qui contient le Identifiant de négociation en direct.

robotId vrai Numéro LelogMinIdLe paramètre est utilisé pour spécifier l'ID minimum du journal.

LogMinId vrai Numéro LelogMaxIdLe paramètre est utilisé pour spécifier l'Id maximal du journal.

LogMaxId vrai Numéro LelogOffsetparamètre est utilisé pour régler le décalage, après détermination de la plage parlogMinIdetlogMaxId, compensé sur la base de lalogOffset(combien d'enregistrements sont sautés).

LogOffset vrai Numéro Le paramètrelogLimitest utilisé pour définir le nombre d'enregistrements de données à sélectionner après la détermination de la position de départ.

LogLimit vrai Numéro LeprofitMinIdLe paramètre est utilisé pour définir l'ID minimum du journal des bénéfices.

Le résultat vrai Numéro Le paramètreprofitMaxIdest utilisé pour définir l'ID maximal du journal des bénéfices.

profitMaxId vrai Numéro Le paramètreprofitOffsetest utilisé pour définir le décalage (nombre d'enregistrements sautés) comme position de départ.

ProfitOffset vrai Numéro Le paramètreprofitLimitest utilisé pour définir le nombre d'enregistrements de données à sélectionner après la détermination de la position de départ.

profit Limite vrai Numéro Le paramètrechartMinIdest utilisé pour définir l'ID minimum de l'enregistrement des données du graphique.

Le tableau de bord vrai Numéro Le paramètrechartMaxIdest utilisé pour définir l'ID maximal de l'enregistrement des données du graphique.

graphique MaxId vrai Numéro Le paramètrechartOffsetest utilisé pour régler le décalage.

graphiqueOffset vrai Numéro Le paramètrechartLimitest utilisé pour définir le nombre de les documents à obtenir.

graphique Limite vrai Numéro Le paramètrechartUpdateBaseIdest utilisé pour définir l'ID de base après la mise à jour de la requête.

Tableau ActualisationBaseId vrai Numéro Le paramètrechartUpdateDateest utilisé pour définir les données enregistrer l'horodatage de mise à jour, et il filtrera les enregistrements plus que cette heure.

Tableau Date de mise à jour vrai Numéro Le paramètresummaryLimitest utilisé pour définir le nombre de Le paramètre est de type d'entier pour interroger les données de la barre d'état de l'enregistrement en direct le commerce. Le paramètre 0 signifie qu'il n'est pas nécessaire de consulter la barre d'état Le nombre de personnes qui ont reçu des renseignements, et la définition à un nombre autre que zéro indique le nombre de personnes qui ont reçu des renseignements. Les données de la barre d'état doivent être consultées (le L'interface ne limite pas la quantité de données, vous pouvez donc spécifier un plus grandsummaryLimitparamètre pour obtenir la barre d'état Les données de la barre d'état sont stockées dans les données renvoyéessummary.

Résumé Limite vrai Numéro

  • Le tableau du journal des stratégies dans la base de données LeArrvaleur d'attribut dans le premier élément duLogsla valeur de l'attribut (structure de matrice) dans les données de retour (données de journal) est décrite comme suit:

    "Arr": [
        [3977, 3, "Futures_OKCoin", "", 0, 0, "Sell(688.9, 2): 20016", 1526954372591, "", ""],
        [3976, 5, "", "", 0, 0, "OKCoin:this_week too many positions, long: 2", 1526954372410, "", ""]
    ],
    
    Nom de l'entreprise Type de fichier - Je vous en prie. commandé prix Le montant en plus date de sortie type de contrat direction
    3977 3 Futures_OKCoin "" 0 0 Vendre ((688,9, 2): 20016 1526954372591 "" ""
    3976 5 "" "" 0 0 OKCoin:cette_semaine trop de positions, long: 2 1526954372410 "" ""

    extraest le message joint du journal imprimé.

    Les types de bûches spécifiques représentés par lelogTypeLes valeurs sont décrites comme suit:

    Type de journal: 0 1 2 3 4 5 6
    Signification de logType: À acheter VENDE RETRAIT ÉVÉNEMENT Résultats Le message Démarrer
  • Tableau de journaux du graphique des résultats dans la base de données Les données figurant dans le tableau de bord du graphique correspondent au journal des bénéfices figurant dans le tableau du journal des stratégies.

    "Arr": [
        [202, 2515.44, 1575896700315],
        [201, 1415.44, 1575896341568]
    ]
    

    Prenons l'exemple de l'une des données du journal:

    [202, 2515.44, 1575896700315]
    

    202est logID; 2515.44est la valeur du bénéfice;1575896700315est l'horodatage.

  • Tableau de journaux des graphiques dans la base de données

    "Arr": [
        [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
        [23636, 5, "{\"x\":1575960300000,\"y\":3.0735}"]
    ]
    

    Prenons l'exemple de l'une des données du journal:

    [23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
    

    23637est le journalID, 0est l'indice de la série de données du graphique et les dernières données"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"est les données journalières; ces données sont les données de la ligne K sur le graphique.

Bibliothèque intégrée Terminal de négociation