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.
La plateforme de négociation quantitative FMZ prend en charge la gestion des autorisations
l'interface API étendue, et l'autorisation deAPI KEY
peut être réglé. Sur l'option API KEY
.
Vous pouvez modifier la zone d'entrée API 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 KEY
l'autorisation d'appeler leObtenez des informations détaillées sur le trading en directl'interface et leSupprimer les opérations en direct interface.
LeAPI KEY
la page de gestion vous permet également demodifier,
désactiver, supprimerLes créaturesAPI KEY
.
Un exemple de la structure renvoyée par l'interface API étendue est le suivant:
"code":0,
"data":{
// ...
}
}
Lecode
champ 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 |
LeGetRobotList
l'interface, leGetRobotDetail
une interface,
et leGetRobotLogs
Les données de retour de l'interface dans lestatus
champ pour: le code de l'état de négociation en direct.
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 |
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 |
Il y a deux méthodes de vérification lors de l'appel de l'interface API étendue,token
la vérification et la vérification directe.
Utilisationmd5
méthode de chiffrement à vérifier, exemple dePython
, Golang
Appel 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)
}
Il prend en charge la vérificationtoken
(passer)secret_key
Vous 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 pourTradingView
ou leWebHook
Pour les autres cas.CommandRobot(RobotId, Cmd)
fonction, le paramètrenonce
n'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, leAccessKey
de l'extension crééeAPI KEY
est:xxx
et leSecretKey
est: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,
seulementCommandRobot
l'interface est prise en charge pour obtenir leBody
Par exemple, les paramètres dans leWebHook URL
deTradingView
:
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 lequel130350
est la négociation en directID
de la plateforme de négociation quantitative FMZ.
Mettre dans la boîte de message deTrading View
(l'organisme requis)
données à envoyer):
Format JSON:
{"close": {{close}}, "name": "aaa"}
Les échanges en direct avecID
de186515
peut recevoir la chaîne de commande interactive:{"close": 39773.75, "name": "aaa"}
.
Format du texte:
BTCUSDTPERP Crossing 39700.00 close: {{close}}
Les échanges en direct avecID
de186515
peut recevoir la chaîne de commande interactive:BTCUSDTPERP Crossing 39700.00 close: 39739.4
.
Exemples dePython
& Golang
appels 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
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/v1
Les 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_key
paramètre parmi les paramètres de demande.
Méthode de signature
Lesign
le 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, utilisezMD5
algorithme 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 lePython
Interface 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:
{
"code":0,
"data":{
"result":null,
"error":"Params length incorrect"
}
}
LeGetNodeList
la 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 KEY
dans 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):
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
GetRobotGroupList()
renvoie la liste des groupes de négociation en direct
du compte de la plateforme de négociation quantitative FMZ correspondant auAPI KEY
dans la demande.
{
"code": 0,
"data": {
"result": {
"items": [{
"id": 3417,
"name": "Test"
}, {
"id": 3608,
"name": "Live trading demo"
}]
},
"error": null
}
}
items
Le champ n'enregistre que les groupes nouvellement créés.items
.Aucun paramètre
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 KEY
dans 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
}
}
eid
seront utilisés dans certaines configurations et paramètres.Aucun paramètre
LeGetRobotList
Cette 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 KEY
dans 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
}
}
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.-1
pour 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 lePython
L'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.
LeCommandRobot
mé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 KEY
dans la demande.
La commande d'interaction est le
Identifiant de négociation spécifié par lerobotId
paramè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
}
}
Le paramètrerobotId
est utilisé pour spécifier l'Id du
Vous pouvez utiliser la commande interactive.
LeGetRobotList
mé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ètrecmd
est 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.
StopRobot(RobotId)
est utilisé pour demander leAPI KEY
correspondant à 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
}
}
Le paramètrerobotId
est utilisé pour spécifier l'Id du
Vous pouvez utiliser leGetRobotList
La 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
LeRestartRobot
La méthode est utilisée pour redémarrer les transactions en direct dans le cadre duAPI KEY
L'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
}
}
LerobotId
Paramètre utilisé pour spécifier l'Id de la
Vous pouvez utiliser leGetRobotList
La 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ètressettings
le 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
}
Interval
, et vous voulez définirInterval
à 500 lors du redémarrage de la stratégie, puisargs
Il contient:["Interval", 500]
, à savoir:"args": [["Interval", 500]]
.pid
configuration:{"pair":"SOL_USDT","pid":123}
; pid
Les données peuvent être consultées par le biais deGetPlatformList
l'interface, et leid
le champ dans les données renvoyées est l'échangepid
.eid
configuration:{"eid":"Huobi","label":"test Huobi","meta":{"AccessKey":"123","SecretKey":"123"},"pair":"BCH_BTC"}
; informations sensibles telles queAPI KEY
Si 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.{"eid":"Exchange","label":"test exchange","pair":"BTC_USDT","meta":{"AccessKey":"123","SecretKey":"123","Front":"http://127.0.0.1:6666/test"}}
.
label
L'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.GetStrategyList
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 lesettings
Le 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.settings
Paramètre. Si vous passez seulement leRobotId
paramètre, démarrer la négociation en direct selon les paramètres de négociation en direct actuels.
LeGetRobotDetail
Cette 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 KEY
L'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
}
}
LerobotId
Le paramètre est utilisé pour spécifier l'Id du commerce en direct pour lequel les détails doivent être obtenus.GetRobotList
mé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_pairs
Prenons par exemple les données suivantes:
"[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]"
Les premières données60
repré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'échangepid
configuré 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
).
LeGetAccount
La 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
}
}
LeGetExchangeList
La 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 leisSummary
le 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 leisSummary
le 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
}
}
LeisSummary
Le paramètre est utilisé pour spécifier si les données renvoyées sont des informations sommaires.
estRésumé vrai Boole
LeDeleteNode(Nid)
Cette méthode est utilisée pour supprimer le nœud docker correspondant à laAPI KEY
dans la demande du compte de la plateforme de trading FMZ Quant.nid
parameter.
{
"code":0,
"data":{
"result":true,
"error":null
}
}
Lenid
Le paramètre est utilisé pour spécifier l'Id du docker à supprimer.GetNodeList
méthode pour obtenir des informations sur les dockers du compte.
nid vrai Numéro
LeDeleteRobot(RobotId, DeleteLogs)
Cette méthode est utilisée pour supprimer les transactions en direct correspondant à laAPI KEY
L'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
}
}
Le paramètrerobotId
est utilisé pour spécifier l'Id du
Vous pouvez utiliser leGetRobotList
La 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
LedeleteLogs
Paramè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
LeGetStrategyList
la 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
}
}
Leoffset
Le paramètre est utilisé pour régler le décalage lors de la requête.
décalage
vrai
Numéro
Lelength
paramètre est utilisé pour définir la longueur de la requête.
longueur
vrai
Numéro
LestrategyType
Le paramètre est utilisé pour définir le type de stratégie à interroger.
strategyType
réglage des paramètres0
: toutes les stratégies.strategyType
réglage des paramètres1
: La stratégie est publique.strategyType
réglage des paramètres2
: stratégie à revoir.stratégieTypes
vrai
Numéro
Lecategory
Le paramètre est utilisé pour définir la catégorie de stratégie à interroger.
category
réglage des paramètres-1
: toutes les stratégies.category
réglage des paramètres0
Une stratégie personnaliséecatégorie
vrai
Numéro
LeneedArgs
paramètre est utilisé pour définir si la stratégie à interroger a des paramètres.
needArgs
réglage des paramètres0
: toutes les stratégies.besoinArgs
vrai
Numéro
Lelanguage
Le paramètre est utilisé pour définir le langage de programmation de la stratégie à interroger.
language
paramètres0
: langage JavaScript.language
paramètres1
Le langage Python.language
paramètres2
: langage C++.language
paramètres3
Une stratégie de visualisation.language
paramètres4
Mon langage.language
paramètres5
: la langue PINE.langue
vrai
Numéro
Lekw
Le paramètre est utilisé pour définir le mot clé de la stratégie à interroger.
kW vrai chaîne
LeNewRobot
Cette méthode est utilisée pour créer une transaction en direct dans le cadre de laAPI KEY
correspondant au compte de la plateforme de négociation quantitative FMZ figurant dans la demande.
{
"code":0,
"data":{
"result":591988,
"error":null
}
}
les paramètres de configuration de négociation en direct,settings
le 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
}
RestartRobot
interface.paramètres vrai Objet JSON
Dans la configuration deeid
dans lesettings
paramè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 lasettings
paramètre, nous pouvons utiliser les paramètres suivants pour leexchanges
attribut:
{
"eid": "Exchange",
"label": "test",
"pair": "ETH_BTC",
"meta": {
"AccessKey": "123",
"SecretKey": "123",
"Front": "http://127.0.0.1:6666/test"
}
}
label
L'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.
LePluginRun
La 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
}
}
Les paramètres de réglage dans l'outil de débogage,settings
configuration, inclure le code d'essai dans lesource
L'attributsettings
Le format du paramètre est le suivant:
{
"exchanges":[{"pair":"SOL_USDT","pid":123}],
"node":123,
"period":60,
"source":"function main() {Log(\"Hello FMZ\")}"
}
RestartRobot
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 leexchanges
attribut danssettings
, une seule doit être définie pour appeler lePluginRun
mé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.
LeGetRobotLogs
Cette 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 KEY
L'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
}
}
LerobotId
Paramè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 leGetRobotList
mé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
LelogMinId
Le paramètre est utilisé pour spécifier l'ID minimum du journal.
LogMinId
vrai
Numéro
LelogMaxId
Le paramètre est utilisé pour spécifier l'Id maximal du journal.
LogMaxId
vrai
Numéro
LelogOffset
paramètre est utilisé pour régler le décalage, après détermination de la plage parlogMinId
etlogMaxId
, compensé sur la base de lalogOffset
(combien d'enregistrements sont sautés).
LogOffset
vrai
Numéro
Le paramètrelogLimit
est 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
LeprofitMinId
Le paramètre est utilisé pour définir l'ID minimum du journal des bénéfices.
Le résultat
vrai
Numéro
Le paramètreprofitMaxId
est utilisé pour définir l'ID maximal du journal des bénéfices.
profitMaxId
vrai
Numéro
Le paramètreprofitOffset
est utilisé pour définir le décalage (nombre d'enregistrements sautés) comme position de départ.
ProfitOffset
vrai
Numéro
Le paramètreprofitLimit
est 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ètrechartMinId
est utilisé pour définir l'ID minimum de l'enregistrement des données du graphique.
Le tableau de bord
vrai
Numéro
Le paramètrechartMaxId
est utilisé pour définir l'ID maximal de l'enregistrement des données du graphique.
graphique MaxId
vrai
Numéro
Le paramètrechartOffset
est utilisé pour régler le décalage.
graphiqueOffset
vrai
Numéro
Le paramètrechartLimit
est utilisé pour définir le nombre de
les documents à obtenir.
graphique Limite
vrai
Numéro
Le paramètrechartUpdateBaseId
est utilisé pour définir l'ID de base
après la mise à jour de la requête.
Tableau ActualisationBaseId
vrai
Numéro
Le paramètrechartUpdateDate
est 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ètresummaryLimit
est 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 summaryLimit
paramè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
LeArr
valeur d'attribut dans le premier élément duLogs
la 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 | "" | 0 | 0 | 1526954372591 | "" | "" | ||
3976 | 5 | "" | "" | 0 | 0 | 1526954372410 | "" | "" |
extra
est le message joint du journal imprimé.
Les types de bûches spécifiques représentés par lelogType
Les 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]
202
est logID
; 2515.44
est la valeur du bénéfice;1575896700315
est 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}"],
23637
est le journalID
, 0
est 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.