A FMZ Quant abriu a interface API estendida da plataforma para suportar chamadas programáticas para várias funções da FMZ Quant Trading Platform.
A plataforma de negociação quantitativa FMZ suporta a gestão de permissões do
interface API estendida, e a permissão deAPI KEY
Na opção API KEY
.
Você pode editar a caixa de entrada API KEY
, e entrar no*
símbolo para permitir que todosInterface API estendidaPermissões. Se você quiser especificar permissões de interface específicas, você precisa inserir o nome da função API estendida correspondente. Use vírgulas para separar, por exemplo:GetRobotDetail,DeleteRobot
Isto dá-nos isto.API KEY
a autorização para chamar oObtenha informações detalhadas de negociação ao vivoInterface eExcluir negociação em tempo real interface.
OAPI KEY
página de gestão também permite que vocêModificar,
desativar, excluirO criadoAPI KEY
.
Um exemplo da estrutura devolvida pela interface API estendida é o seguinte:
"code":0,
"data":{
// ...
}
}
Ocode
campo is: O código de estado do resultado da chamada retornado quando a interface API estendida é chamada.
Descrição | Código |
---|---|
Execução bem sucedida | 0 |
Chave de API errada | 1 |
Assinatura errada. | 2 |
Erro de não | 3 |
Método incorreto | 4 |
Parâmetro incorreto | 5 |
Erro interno desconhecido | 6 |
OGetRobotList
interfaces, oGetRobotDetail
interface,
e oGetRobotLogs
Interface de retorno de dados nostatus
Campo para: código de estado de negociação em tempo real.
Situação | Código |
---|---|
Inatividade | 0 |
Em funcionamento | 1 |
Parar | 2 |
Desligado. | 3 |
Parado. | 4 |
A estratégia tem erros. | 5 |
Situação | Código |
---|---|
A estratégia expirou, e por favor entre em contato com o escritor para comprá-lo novamente | -1 |
Nenhuma doca encontrada | -2 |
Erro de compilação da estratégia | -3 |
A negociação ao vivo já está a decorrer. | -4 |
Balanço insuficiente | -5 |
O número de estratégias simultâneas excede o limite | -6 |
Existem dois métodos de verificação ao chamar a interface API estendida, suportandotoken
Verificação e verificação directa.
Utilizaçãomd5
método de encriptação a verificar, exemplo dePython
, Golang
chamada de idioma:
#!/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)
}
Suporta a verificação semtoken
(passagem)secret_key
Para o acesso direto, você pode gerar um URL que pode ser acessado diretamente.
Por exemplo, o URL que dá diretamente instruções interativas para
A negociação ao vivo, que pode ser utilizada paraTradingView
ou oWebHook
Para os outros casos.CommandRobot(RobotId, Cmd)
função, o parâmetrononce
Não é necessário verificar, e a frequência de acesso e
Os tempos de visita da interface não são limitados.
Por exemplo, oAccessKey
da extensão criadaAPI KEY
é:xxx
e oSecretKey
é:yyy
. Visualize o seguinte link para enviar uma mensagem de comando interativa para
a negociação em tempo real com o ID de negociação em tempo real186515
, a mensagem
o conteúdo é uma cadeia:"ok12345"
.
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,"ok12345"]
Sob a circunstância de que a verificação direta é apoiada,
apenasCommandRobot
Interface é suportada para obter oBody
Os dados na solicitação.WebHook URL
deTradingView
:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyy&method=CommandRobot&args=[186515,+""]
Preste atenção ao ajuste de acordo com o seguinte formato:args=[130350,+""]
, em que130350
é a negociação ao vivoID
da plataforma de negociação FMZ Quant.
Configurar na caixa de mensagens deTrading View
(o
Formato JSON:
{"close": {{close}}, "name": "aaa"}
O comércio ao vivo comID
de186515
pode receber a sequência de comandos interativa:{"close": 39773.75, "name": "aaa"}
.
Formato de texto:
BTCUSDTPERP Crossing 39700.00 close: {{close}}
O comércio ao vivo comID
de186515
pode receber a sequência de comandos interativa:BTCUSDTPERP Crossing 39700.00 close: 39739.4
.
Exemplos dePython
& Golang
chamadas de idiomas:
#!/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)
}
Use a API estendida no FMZ Quant para realizar o alerta
A interface API estendida da plataforma de negociação quântica FMZ
Aplicar os parâmetros da consulta (separados por?
) do pedido imediatamente apóshttps://www.fmz.com/api/v1
Os seguintes são os parâmetros de pedido expressos usandoPython
:
{
"version" : "1.0",
"access_key": "xxx",
"method" : "GetNodeList",
"args" : [],
"nonce" : 1516292399361,
"sign" : "085b63456c93hfb243a757366600f9c2"
}
Campos | Orientações |
---|---|
versão | Número de versão. |
acesso_chave | AccessKey, solicite-o na página de gestão de contas. |
Método | O método específico de chamada. |
Argos | A lista de parâmetros do método específico chamado. |
não | A marca de tempo, em milissegundos, permite um erro de 1 hora a partir da marca de tempo padrão. |
sinalização | Signature. |
Cada nome de parâmetro é separado pelo carácter&
, e os nomes e valores dos parâmetros estão ligados ao símbolo=
. O URL de solicitação completo (tomandomethod=GetNodeList
Por exemplo:
https://www.fmz.com/api/v1?access_key=xxx&nonce=1516292399361&args=%5B%5D&sign=085b63456c93hfb243a757366600f9c2&version=1.0&method=GetNodeList
Observe que não hásecret_key
Parâmetro entre os parâmetros solicitados.
Método de assinatura
Osign
O parâmetro no parâmetro de solicitação é criptografado do seguinte modo, de acordo com o formato:
version + "|" + method + "|" + args + "|" + nonce + "|" + secretKey
Depois de concatenar cordas, useMD5
Algoritmo de criptografia para criptografar a cadeia e convertê-la em um valor de cadeia de dados hexadecimal, referido como o valor do parâmetrosign
Para a parte relativa à assinatura, ver oPython
Interface API de extensão de códigoMétodos de verificação :
# 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()
Erro de serviço de interface:
{
"code":0,
"data":{
"result":null,
"error":"Params length incorrect"
}
}
OGetNodeList
O método é utilizado para obter a lista dos trabalhadores portuários
no âmbito da conta da Plataforma de Negociação Quant FMZ correspondente aoAPI KEY
no pedido.
{
"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
}
}
Descrição dos campos de valor de retorno (o significado literal é óbvio e não será repetido):
ecs_
eunit_
, que regista as informações relevantes do servidor do docker de implantação de um clique (nome do operador, configuração, estado, etc.), ciclo de faturamento, preço e outras informações, que não serão repetidas aqui.Nenhum parâmetro
GetRobotGroupList()
Retorna a lista de agrupamento de negociação em tempo real
da conta da Plataforma de Negociação Quant FMZ correspondente àAPI KEY
no pedido.
{
"code": 0,
"data": {
"result": {
"items": [{
"id": 3417,
"name": "Test"
}, {
"id": 3608,
"name": "Live trading demo"
}]
},
"error": null
}
}
items
O campo só registra grupos recém-criados.items
.Nenhum parâmetro
GetPlatformList()
Retorna a lista de trocas que têm
foi adicionado pela conta da Plataforma de Negociação Quant FMZ correspondente
para oAPI KEY
no pedido.
{
"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
serão utilizados em algumas configurações e parâmetros.Nenhum parâmetro
OGetRobotList
método é usado para obter a lista de vivo
negociações no âmbito da conta da Plataforma de Negociação Quant FMZ
que correspondem aoAPI KEY
no pedido.
{
"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.A configuração de deslocamento da consulta de chamada.
deslocamento
Falso
Número
O ajuste de comprimento da consulta de chamada.
comprimento
Falso
Número
Especificar o estado da negociação ao vivo a ser consultada, consultar a interface API estendidaCódigo de negociação em tempo realPassa.-1
para obter todas as negociações ao vivo.
robotStatus
Falso
Número
Especifique o rótulo personalizado da negociação ao vivo que você deseja consultar, e você pode filtrar todas as negociações ao vivo deste rótulo.
etiqueta
Falso
cordel
Pesquise palavras-chave.
palavra-chave
Falso
cordel
Leva oPython
interface API estendida do languageprint(api('GetRobotList'))
Obtenha todas as informações de negociação ao vivo.print(api('GetRobotList', 'member2'))
: imprimir as informações de todas as transacções em tempo real com o membro do rótulo personalizado2.print(api('GetRobotList', 0, 5, -1, 'member2'))
: páginas de 0 a 5 e lista até 5 robôs rotulados com member2.
OCommandRobot
método é usado para enviar uma interação
comando para a negociação em tempo real na plataforma de negociação quantitativa FMZ
conta correspondente aoAPI KEY
No pedido.
do comércio ao vivo que recebe o comando de interação é o
Identificador de negociação especificado pelorobotId
Parâmetro, e o
comando de interação é devolvido peloGetCommand()
função
chamou a estratégia para capturá-lo.
{
"code":0,
"data":{
"result":true,
"error":null
}
}
O parâmetrorobotId
É utilizado para especificar o ID do
O que você pode fazer com o seu computador é executar a transação ao vivo que recebe o comando interativo.
OGetRobotList
método para obter as informações do vivo
O número de transações efetuadas no âmbito da conta, que contém o ID de transação em curso.
robotId
verdade
Número
O parâmetrocmd
é o comando interativo enviado para o bot; o comando será capturado pela funçãoGetCommand()
, que desencadeia a lógica interactiva na estratégia.GetCommand()
função naManual da API da plataforma de negociação quântica FMZ.
cmd verdade cordel
Estratégia de negociação ao vivo, assumindo que esta estratégia esteja em funcionamento, o ID de negociação ao vivo é 123:
function main() {
while (true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(2000)
}
}
Se usarmos o script de teste Python neste capítulo, acesse a API estendida da FMZ Quant Trading Platform:api("CommandRobot", 123, "test command")
A negociação ao vivo com o ID 123 receberá o comando interativo:test command
, e depois imprimi-lo através da saída da função Log.
StopRobot(RobotId)
é utilizado para solicitar oAPI KEY
correspondente à negociação ao vivo da FMZ Quant Trading
A conta da plataforma. O ID de negociação ao vivo para parar de correr é o
Identificador de negociação especificado pelorobotId
parameter.
{
"code":0,
"data":{
"result":2,
"error":null
}
}
O parâmetrorobotId
É utilizado para especificar o ID do
A negociação ao vivo deve ser interrompida.GetRobotList
O método de obtenção de informações sobre a negociação ao vivo no âmbito do
conta, que contém o ID de negociação em tempo real.
robotId verdade Número
ORestartRobot
O método é utilizado para reiniciar a negociação ao vivo no âmbito doAPI KEY
O ID da negociação em tempo real reiniciada é o ID de negociação em tempo real especificado pelorobotId
parameter.
{
"code":0,
"data":{
"result":1,
"error":null
}
}
OrobotId
Parâmetro utilizado para especificar o ID do
A negociação ao vivo deve ser reiniciada.GetRobotList
O método de obtenção de informações sobre a negociação ao vivo no âmbito do
conta, que contém o ID de negociação em tempo real.
robotId
verdade
Número
Os parâmetros da configuração de negociação ao vivo, os parâmetrossettings
O formato é o seguinte:
{
"appid":"test",
"args":[],
"exchanges":[
{"pair":"SOL_USDT","pid":123},
{"pair":"ETH_USDT","pid":456}
],
"name":"test",
"node":123,
"period":60,
"strategy":123
}
Interval
, e você quer definirInterval
para 500 quando reiniciar a estratégia, entãoargs
contém:["Interval", 500]
, isto é:"args": [["Interval", 500]]
.pid
Configuração:{"pair":"SOL_USDT","pid":123}
; pid
A informação pode ser consultada através doGetPlatformList
Interface, e oid
campo nos dados retornados é a trocapid
.eid
Configuração:{"eid":"Huobi","label":"test Huobi","meta":{"AccessKey":"123","SecretKey":"123"},"pair":"BCH_BTC"}
Informações sensíveis como:API KEY
Se este tipo de configuração for utilizado, as informações devem ser configuradas sempre que uma negociação em tempo real for criada ou reiniciada.{"eid":"Exchange","label":"test exchange","pair":"BTC_USDT","meta":{"AccessKey":"123","SecretKey":"123","Front":"http://127.0.0.1:6666/test"}}
.
label
atributo é definir um rótulo para o objeto de troca acessado pelo atualProtocolo aduaneiro, que podem ser obtidos através doexchange.GetLabel()
A política de empregoGetStrategyList
method.configurações Falso Objeto JSON
Se uma negociação em tempo real for criada pela API estendida, a API estendidaRestartRobot (RobotId, Settings)
deve ser utilizado para reiniciar, e osettings
A negociação ao vivo criada na página da plataforma pode ser reiniciada através da API estendida ou clicando no botão na página.settings
Parâmetro. Se você só passar oRobotId
Parâmetro, iniciar a negociação ao vivo de acordo com as configurações de negociação ao vivo atuais.
OGetRobotDetail
O método é utilizado para obter os pormenores da negociação ao vivo sob a conta da plataforma de negociação FMZ Quant correspondente aoAPI KEY
O ID da negociação em tempo real a ser recuperado é o ID da negociação em tempo real especificado pelorobotId
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
}
}
OrobotId
O parâmetro é usado para especificar o ID da negociação ao vivo para a qual os detalhes devem ser obtidos.GetRobotList
método de obtenção de informações sobre a negociação em tempo real no âmbito da conta, que contém o ID de negociação em tempo real.
robotId verdade Número
A descrição do atributo destrategy_exchange_pairs
, por exemplo, os seguintes dados:
"[60,[44314,42960,15445,14703],[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]]"
Os primeiros dados60
representa o conjunto de períodos de linha K por defeito
Por negociação ao vivo é 1 minuto, ou seja, 60 segundos.
[44314,42960,15445,14703]
é o objeto de trocapid
Configurado para negociação em tempo real (de acordo com a ordem de adição).
[\"BTC_USDT\",\"BTC_USDT\",\"ETH_USDT\",\"ETH_USDT\"]
É o
conjunto de pares de negociação para o objeto de troca configurado por live
O montante da taxa de juro é o montante da taxa de juro de referência (em ordem de adição e em correspondência um para um).
compid
).
OGetAccount
O método é utilizado para adquirir as informações da conta correspondentes aoAPI KEY
No pedido da conta da plataforma de negociação quantitativa 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
}
}
OGetExchangeList
O método é utilizado para obter a lista de bolsas e as informações de configuração necessárias suportadas pela plataforma de negociação quantitativa FMZ.
Quando oisSummary
Parâmetro éfalse
, os dados devolvidos são:
{
"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
}
}
Quando oisSummary
Parâmetro étrue
, os dados devolvidos são:
{
"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
}
}
OisSummary
O parâmetro é utilizado para especificar se os dados devolvidos são informações de resumo.
isResumo verdade Bool
ODeleteNode(Nid)
método é usado para excluir o nó do docker correspondente aoAPI KEY
A ID do nó do docker excluído é a ID do docker especificada pelonid
parameter.
{
"code":0,
"data":{
"result":true,
"error":null
}
}
Onid
O parâmetro é usado para especificar a ID do docker a ser excluído.GetNodeList
O método para obter informações sobre os portadores da conta.
Nido verdade Número
ODeleteRobot(RobotId, DeleteLogs)
O método é utilizado para excluir a negociação ao vivo correspondente aoAPI KEY
O ID de negociação em tempo real excluído é o ID de negociação em tempo real especificado pelorobotId
parameter.
{
"code":0,
"data":{
"result":0,
"error":null
}
}
O parâmetrorobotId
É utilizado para especificar o ID do
A negociação ao vivo pode ser excluída.GetRobotList
O método de obtenção de informações sobre a negociação ao vivo no âmbito do
conta, que contém o ID de negociação em tempo real.
robotId
verdade
Número
OdeleteLogs
O parâmetro é utilizado para definir se deve apagar o diário de negociação em tempo real, caso seja passado um valor verdadeiro (por exemplo:true
), o registo das operações em tempo real é suprimido.
DeleteLogs verdade Bool
OGetStrategyList
O método é utilizado para obter informações sobre a estratégia da plataforma.
{
"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
}
}
Ooffset
O parâmetro é utilizado para definir o deslocamento ao fazer a consulta.
deslocamento
verdade
Número
Olength
Parâmetro é usado para definir o comprimento da consulta.
comprimento
verdade
Número
OstrategyType
O parâmetro é utilizado para definir o tipo de estratégia a consultar.
strategyType
definição de parâmetros0
: todas as estratégias.strategyType
definição de parâmetros1
A estratégia é pública.strategyType
definição de parâmetros2
• a estratégia a rever.estratégia Tipo
verdade
Número
Ocategory
O parâmetro é utilizado para definir a categoria de estratégia a consultar.
category
definição de parâmetros-1
: todas as estratégias.category
definição de parâmetros0
Estratégia personalizada.Categoria
verdade
Número
OneedArgs
Parâmetro é usado para definir se a estratégia a consultar tem parâmetros.
needArgs
definição de parâmetros0
: todas as estratégias.necessidadesArgs
verdade
Número
Olanguage
Parâmetro é usado para definir a linguagem de programação da estratégia a ser consultada.
language
configurações de parâmetros0
Língua JavaScript.language
configurações de parâmetros1
Língua Python.language
configurações de parâmetros2
: linguagem C++.language
configurações de parâmetros3
Estratégia de visualização.language
configurações de parâmetros4
A minha língua.language
configurações de parâmetros5
Língua PINE.Língua
verdade
Número
Okw
O parâmetro é utilizado para definir a palavra-chave da estratégia a ser consultada.
kW verdade cordel
ONewRobot
O método é utilizado para criar uma negociação ao vivo sob oAPI KEY
correspondente à conta da plataforma de negociação quantitativa FMZ referida no pedido.
{
"code":0,
"data":{
"result":591988,
"error":null
}
}
Os parâmetros da configuração de negociação em tempo real,settings
O formato dos parâmetros é o seguinte:
{
"appid":"test",
"args":[],
"exchanges":[
{"pair":"SOL_USDT","pid":123}
],
"group":123,
"name":"test",
"node":123,
"period":60,
"strategy":123
}
RestartRobot
interface.configurações verdade Objeto JSON
Na configuração deeid
emsettings
Parâmetro,"meta":{"AccessKey": "123", "SecretKey": "123"}
Estes dados são encaminhados para o programa docker diretamente, de modo que esta informação deve ser configurada sempre que uma negociação ao vivo é criada ou reiniciada.
Se criarmos um objeto de troca de negociação ao vivo usando o protocolo personalizado, ao configurar osettings
Parâmetro, podemos usar as seguintes configurações para oexchanges
Atributo:
{
"eid": "Exchange",
"label": "test",
"pair": "ETH_BTC",
"meta": {
"AccessKey": "123",
"SecretKey": "123",
"Front": "http://127.0.0.1:6666/test"
}
}
label
Atributo é definir um rótulo para o objeto de troca acessado pelo protocolo personalizado atual, que pode ser obtido peloexchange.GetLabel()
A política de emprego
OPluginRun
método é usado para chamar oferramenta de depuraçãoFunção da plataforma de negociação FMZ Quant; apenas a linguagem JavaScript é suportada.
{
"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
}
}
Os parâmetros de configuração na ferramenta de depuração,settings
Configuração, incluir o código de ensaio nosource
Atributo.settings
O formato do parâmetro é o seguinte:
{
"exchanges":[{"pair":"SOL_USDT","pid":123}],
"node":123,
"period":60,
"source":"function main() {Log(\"Hello FMZ\")}"
}
RestartRobot
interface.configurações verdade Objeto JSON
{"eid": "OKEX", "pair": "ETH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "123"}}
{"eid": "Huobi", "pair": "BCH_BTC", "meta" :{"AccessKey": "123", "SecretKey": "123"}}
Para oexchanges
atributo emsettings
, apenas um precisa ser definido ao chamar oPluginRun
método (apenas um objeto de troca é suportado quando usado na página da ferramenta de depuração). Nenhum erro será relatado quando você definir 2 objetos de troca emsettings
, mas um erro será relatado quando o segundo objeto de troca é acessado no código.
OGetRobotLogs
O método é utilizado para obter as informações de registo das negociações em tempo real sob a conta da plataforma de negociação FMZ Quant correspondente aoAPI KEY
A identificação da plataforma de negociação em tempo real a obter é a identificação da plataforma de negociação em tempo real especificada pelorobotId
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
}
}
OrobotId
Parâmetro utilizado para especificar o ID do
As operações em tempo real para as quais se pretende obter as informações do diário.
Pode usar oGetRobotList
Método de obtenção de informações
sobre a negociação ao vivo sob a conta, que contém o
Identificação de negociação em tempo real.
robotId
verdade
Número
OlogMinId
O parâmetro é utilizado para especificar o ID mínimo do log.
LogMinId
verdade
Número
OlogMaxId
O parâmetro é utilizado para especificar a Id máxima do Log.
LogMaxId
verdade
Número
OlogOffset
O parâmetro é utilizado para definir o deslocamento, após a determinação do intervalo porlogMinId
elogMaxId
, compensado com base nologOffset
(quantos registos são ignorados). Começar como a posição de partida para obter dados.
LogOffset
verdade
Número
O parâmetrologLimit
É utilizada para definir o número de registos de dados a selecionar após a determinação da posição de partida.
LogLimit
verdade
Número
OprofitMinId
O parâmetro é utilizado para definir o ID mínimo do registo de lucros.
lucroMinId
verdade
Número
O parâmetroprofitMaxId
É utilizado para definir o ID máximo do registro de lucros.
lucroMaxId
verdade
Número
O parâmetroprofitOffset
é usado para definir o deslocamento (quantos registros são ignorados) como a posição inicial.
lucroOffset
verdade
Número
O parâmetroprofitLimit
É utilizada para definir o número de registos de dados a selecionar após a determinação da posição de partida.
lucroLimite
verdade
Número
O parâmetrochartMinId
é utilizada para definir a ID mínima do registo de dados do gráfico.
gráficoMinId
verdade
Número
O parâmetrochartMaxId
é utilizada para definir a ID máxima do registo de dados do gráfico.
gráficoMaxId
verdade
Número
O parâmetrochartOffset
é usado para definir o deslocamento.
gráficoOffset
verdade
Número
O parâmetrochartLimit
é utilizado para definir o número de
registos a obter.
chartLimit
verdade
Número
O parâmetrochartUpdateBaseId
é utilizado para definir o ID de base
Após a consulta ser atualizada.
chartUpdateBaseId
verdade
Número
O parâmetrochartUpdateDate
é utilizado para definir os dados
registar atualização carimbo horário, e ele irá filtrar registros maior
do que este carimbo.
gráficoAtualizaçãoData
verdade
Número
O parâmetrosummaryLimit
é utilizado para definir o número de
O parâmetro é de
Tipo inteiro para consultar os dados da barra de estado do live
negociação.
A definição de summaryLimit
Parâmetro para obter todas as barras de status
Os dados da barra de estado são armazenados nos dados devolvidossummary
.
Resumo Limite verdade Número
A tabela de log da estratégia na base de dados
OArr
valor de atributo no primeiro elemento doLogs
O valor do atributo (estrutura de matriz) nos dados de retorno (dados de registo) é descrito do seguinte modo:
"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, "", ""]
],
Identificação | Tipo de log | eid | Ordenado | Preço | quantidade | extra | data | Contrato Tipo | direção |
---|---|---|---|---|---|---|---|---|---|
3977 | 3 | "" | 0 | 0 | 1526954372591 | "" | "" | ||
3976 | 5 | "" | "" | 0 | 0 | 1526954372410 | "" | "" |
extra
é a mensagem anexada do registo impresso.
Os tipos específicos de troncos representados pelologType
Os valores são descritos do seguinte modo:
Tipo de log: | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|
Significado de logType: | Comprar | Venda | RETRAÇÃO | ERROR | Lucro | Mensagem | RESTART |
Tabela de registo do gráfico de lucros na base de dados Os dados na tabela de log do gráfico são consistentes com o log de lucros na tabela de log de estratégia.
"Arr": [
[202, 2515.44, 1575896700315],
[201, 1415.44, 1575896341568]
]
Tome um dos dados de registo como exemplo:
[202, 2515.44, 1575896700315]
202
é logID
; 2515.44
é o valor do lucro;1575896700315
é o carimbo de hora.
Tabela de registos de gráficos na base de dados
"Arr": [
[23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
[23636, 5, "{\"x\":1575960300000,\"y\":3.0735}"]
]
Tome um dos dados de registo como exemplo:
[23637, 0, "{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"],
23637
é o logID
, 0
é o índice da série de dados do gráfico e os últimos dados"{\"close\":648,\"high\":650.5,\"low\":647,\"open\":650,\"x\":1575960300000}"
são os dados de log; Estes dados são os dados de linha K no gráfico.