O recurso está a ser carregado... Carregamento...

Interface API estendida

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.

Criar ApiKey

A plataforma de negociação quantitativa FMZ suporta a gestão de permissões do interface API estendida, e a permissão deAPI KEYNa opção API interface nas Configurações da conta (https://www.fmz.com/m/account) página da plataforma, clique no Criar novo botão ApiKey para criar a extensãoAPI KEY.

Você pode editar a caixa de entrada API Permission ao criar umAPI 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,DeleteRobotIsto dá-nos isto.API KEYa autorização para chamar oObtenha informações detalhadas de negociação ao vivoInterface eExcluir negociação em tempo real interface.

OAPI KEYpágina de gestão também permite que vocêModificar, desativar, excluirO criadoAPI KEY.

Código de retorno da interface API estendida

Um exemplo da estrutura devolvida pela interface API estendida é o seguinte:

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

Ocodecampo 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

Código de negociação em tempo real

OGetRobotListinterfaces, oGetRobotDetailinterface, e oGetRobotLogsInterface de retorno de dados nostatusCampo para: código de estado de negociação em tempo real.

  • Iniciação normal
    Situação Código
    Inatividade 0
    Em funcionamento 1
    Parar 2
    Desligado. 3
    Parado. 4
    A estratégia tem erros. 5
  • Não normal.
    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

Métodos de verificação

Existem dois métodos de verificação ao chamar a interface API estendida, suportandotokenVerificação e verificação directa.

Verificação de token

Utilizaçãomd5método de encriptação a verificar, exemplo dePython, Golangchamada 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)
}

Verificação directa

Suporta a verificação semtoken(passagem)secret_keyPara 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 paraTradingViewou oWebHookPara os outros casos.CommandRobot(RobotId, Cmd)função, o parâmetrononceNão é necessário verificar, e a frequência de acesso e Os tempos de visita da interface não são limitados.

Por exemplo, oAccessKeyda extensão criadaAPI KEYé:xxxe 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, apenasCommandRobotInterface é suportada para obter oBodyOs dados na solicitação.WebHook URLdeTradingView:


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 vivoIDda plataforma de negociação FMZ Quant.

Configurar na caixa de mensagens deTrading View(o Corpo solicitado dados a transmitir):

  • Formato JSON:

    https://www.fmz.comimg

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

    O comércio ao vivo comIDde186515pode receber a sequência de comandos interativa:{"close": 39773.75, "name": "aaa"}.

  • Formato de texto:

    https://www.fmz.comimg

    BTCUSDTPERP Crossing 39700.00 close: {{close}}
    

    O comércio ao vivo comIDde186515pode receber a sequência de comandos interativa:BTCUSDTPERP Crossing 39700.00 close: 39739.4.

Exemplos dePython & Golangchamadas 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 TradingView negociação de sinais

Explicação da Interface API Estendida

  • 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/v1Os 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=GetNodeListPor 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_keyParâmetro entre os parâmetros solicitados.

  • Método de assinatura OsignO 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, useMD5Algoritmo de criptografia para criptografar a cadeia e convertê-la em um valor de cadeia de dados hexadecimal, referido como o valor do parâmetrosignPara a parte relativa à assinatura, ver oPythonInterface 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:

    • Parâmetros insuficientes:
      {
          "code":0,
          "data":{
              "result":null,
              "error":"Params length incorrect"
          }
      }
      

GetNodeList

OGetNodeListO método é utilizado para obter a lista dos trabalhadores portuários no âmbito da conta da Plataforma de Negociação Quant FMZ correspondente aoAPI KEYno 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):

  • todos: número de trabalhadores portuários associados à conta corrente.
  • Nodos: Regista os detalhes do nó do docker.
    • construção: número de versão.
    • Cidade: A cidade onde você está localizando.
    • is_owner: true indica um dock privado, false indica um dock público.
    • carregado: Carga, número de instâncias de estratégia.
    • público: 0 indica um docker privado, 1 indica um docker público.
    • Região: localização geográfica.
    • versão: informações detalhadas sobre a versão do docker.
    • wd: Ativar ou não o alarme offline, 0 significa não habilitado. O docker de implantação de um clique contém algumas informações adicionais.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

GetRobotGroupList()Retorna a lista de agrupamento de negociação em tempo real da conta da Plataforma de Negociação Quant FMZ correspondente àAPI KEYno pedido.

{
    "code": 0,
    "data": {
        "result": {
            "items": [{
                "id": 3417,
                "name": "Test"
            }, {
                "id": 3608,
                "name": "Live trading demo"
            }]
        },
        "error": null
    }
}
  • Informações sobre o agrupamento de operações em tempo real.
    • Identificação do grupo de negociação em tempo real
    • Nome: nome do grupo de negociação em tempo real. OitemsO campo só registra grupos recém-criados.items.

Nenhum parâmetro

GetPlatformList

GetPlatformList()Retorna a lista de trocas que têm foi adicionado pela conta da Plataforma de Negociação Quant FMZ correspondente para oAPI KEYno 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
    }
}
  • todos: número de objetos de troca adicionados/configurados.
  • Plataformas: Informações relacionadas com a troca.
    • eid: o ID da bolsa na plataforma de negociação quantitativa FMZ,eidserão utilizados em algumas configurações e parâmetros.

Nenhum parâmetro

GetRobotList

OGetRobotListmétodo é usado para obter a lista de vivo negociações no âmbito da conta da Plataforma de Negociação Quant FMZ que correspondem aoAPI KEYno 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
    }
}
  • Robôs: Informações de negociação ao vivo
    • group_id: ID do grupo de negociação ao vivo. Se a estratégia de negociação ao vivo estiver no grupo padrão, não há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.-1para 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 oPythoninterface API estendida do languagesMétodos de verificaçãoPor exemplo:print(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.

ComandoRobot

OCommandRobotmé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 KEYNo pedido. do comércio ao vivo que recebe o comando de interação é o Identificador de negociação especificado pelorobotIdParâ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
    }
}
  • Resultado: se o comando interativo foi enviado com sucesso; quando um comando é enviado para uma negociação em tempo real que não está em execução, o resultado nos dados devolvidos é falso.

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. OGetRobotListmé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

StopRobot(RobotId)é utilizado para solicitar oAPI KEYcorrespondente à 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
    }
}
  • Resultado: O código de estado da negociação em tempo real é 2, o que significa paragem.

O parâmetrorobotIdÉ utilizado para especificar o ID do A negociação ao vivo deve ser interrompida.GetRobotListO 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

ReiniciarRobot

ORestartRobotO método é utilizado para reiniciar a negociação ao vivo no âmbito doAPI KEYO 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
    }
}
  • Resultado: Código de estado de negociação em tempo real, 1 significa em execução.

OrobotIdParâmetro utilizado para especificar o ID do A negociação ao vivo deve ser reiniciada.GetRobotListO 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âmetrossettingsO 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
}
  • apid: campos personalizados As tags podem ser definidas.
  • args: Configurações dos parâmetros da estratégia A estrutura é uma matriz, cada elemento é um parâmetro.Interval, e você quer definirIntervalpara 500 quando reiniciar a estratégia, entãoargscontém:["Interval", 500], isto é:"args": [["Interval", 500]].
  • Bolsas: Configuração do objeto de troca para negociação em tempo real vinculativa A estrutura é uma matriz, onde cada elemento é uma configuração de objeto de troca.
    • Pode ligar-se ao objeto de troca que foi configurado na plataforma Isto é, usarpidConfiguração:{"pair":"SOL_USDT","pid":123}; pidA informação pode ser consultada através doGetPlatformListInterface, e oidcampo nos dados retornados é a trocapid.
    • Podemos passar diretamente em informações de configuração e vincular objetos de troca Ou seja, usareidConfiguração:{"eid":"Huobi","label":"test Huobi","meta":{"AccessKey":"123","SecretKey":"123"},"pair":"BCH_BTC"}Informações sensíveis como:API KEYSe 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.
    • Pode ligarProtocolo aduaneiroObjeto de troca Pode passar informações de configuração:{"eid":"Exchange","label":"test exchange","pair":"BTC_USDT","meta":{"AccessKey":"123","SecretKey":"123","Front":"http://127.0.0.1:6666/test"}}. labelatributo é 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 emprego
  • nome: nome da estratégia
  • nó: Docker ID Especifica em qual docker executar. Se este atributo não for definido, o docker será atribuído para executar automaticamente.
  • período: período de linha K por defeito Parâmetro de período da linha K, 60 significa 60 segundos.
  • Estratégia: ID de estratégia Pode ser obtido através doGetStrategyList 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 osettingsA 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.settingsParâmetro. Se você só passar oRobotIdParâmetro, iniciar a negociação ao vivo de acordo com as configurações de negociação ao vivo atuais.

GetRobotDetail

OGetRobotDetailO método é utilizado para obter os pormenores da negociação ao vivo sob a conta da plataforma de negociação FMZ Quant correspondente aoAPI KEYO 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
    }
}
  • "Tempo de cobrança": o próximo tempo de dedução é o tempo de expiração efetivo após a dedução corrente.
  • Carregado: tempo já consumido.
  • Consumo: Quantidade consumida (0,125 USD = 12500000 / 1e8).
  • Data: data de criação.
  • fixed_id: O ID do docker atribuído quando a negociação em tempo real está em execução. Se for automático, o valor é -1.
  • is_manager: Se você tem autoridade para gerenciar essa negociação ao vivo.
  • is_sandbox: Se é uma negociação simulada.
  • nome: nome da negociação em tempo real.
  • node_id: Docker ID.
  • pexchanges: O objeto de troca da negociação ao vivo, 123 é o pid, e Futures_OKCoin é o nome da troca.
  • Plabels: Informações de etiquetas do objeto de troca configurado na negociação em tempo real.
  • Lucro: dados sobre lucro de negociação em tempo real.
  • público: se a negociação em tempo real é pública.
  • atualização: Último tempo ativo.
  • strategy_exchange_pairs: Objeto de troca configurado, conjunto de informações sobre pares de negociação.
  • wd: Ativar ou não o alarme offline.

OrobotIdO parâmetro é usado para especificar o ID da negociação ao vivo para a qual os detalhes devem ser obtidos.GetRobotListmé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 dados60representa 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 trocapidConfigurado 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).

GetAccount

OGetAccountO método é utilizado para adquirir as informações da conta correspondentes aoAPI KEYNo 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
    }
}
  • saldo: saldo da conta O valor aqui é um inteiro devido ao controle de precisão. Para convertê-lo em um valor real, você precisa dividi-lo por 1e8 (ou seja, 10 elevado à 8a potência). O valor real aqui é: 229.44702436

GetExchangeList

OGetExchangeListO 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 oisSummaryParâ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 oisSummaryParâ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
    }
}
  • meta: troca de metadados de configuração.

OisSummaryO parâmetro é utilizado para especificar se os dados devolvidos são informações de resumo.

isResumo verdade Bool

DeleteNode

ODeleteNode(Nid)método é usado para excluir o nó do docker correspondente aoAPI KEYA ID do nó do docker excluído é a ID do docker especificada pelonid parameter.

{
    "code":0,
    "data":{
        "result":true,
        "error":null
    }
}
  • resultado: se o programa docker associado é excluído com sucesso.

OnidO parâmetro é usado para especificar a ID do docker a ser excluído.GetNodeListO método para obter informações sobre os portadores da conta.

Nido verdade Número

DeleteRobot

ODeleteRobot(RobotId, DeleteLogs)O método é utilizado para excluir a negociação ao vivo correspondente aoAPI KEYO 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
    }
}
  • Resultado: o resultado da operação de retorno da eliminação da negociação em tempo real. 0: apagar normalmente. -2: A exclusão foi bem-sucedida, mas o docker associado à negociação ao vivo não pôde ser contatado. Por favor, excluir o arquivo 123.db3 manualmente!

O parâmetrorobotIdÉ utilizado para especificar o ID do A negociação ao vivo pode ser excluída.GetRobotListO 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 OdeleteLogsO 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

GetStrategyList (Lista de estratégias)

OGetStrategyListO 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
    }
}
  • todos: o número total de estratégias encontradas pela consulta do filtro.
  • Estratégias: Informações sobre estratégias específicas são consultadas.

OoffsetO parâmetro é utilizado para definir o deslocamento ao fazer a consulta.

deslocamento verdade Número OlengthParâmetro é usado para definir o comprimento da consulta.

comprimento verdade Número OstrategyTypeO parâmetro é utilizado para definir o tipo de estratégia a consultar.

  • strategyTypedefinição de parâmetros0: todas as estratégias.
  • strategyTypedefinição de parâmetros1A estratégia é pública.
  • strategyTypedefinição de parâmetros2• a estratégia a rever.

estratégia Tipo verdade Número OcategoryO parâmetro é utilizado para definir a categoria de estratégia a consultar.

  • categorydefinição de parâmetros-1: todas as estratégias.
  • categorydefinição de parâmetros0Estratégia personalizada.

Categoria verdade Número OneedArgsParâmetro é usado para definir se a estratégia a consultar tem parâmetros.

  • needArgsdefinição de parâmetros0: todas as estratégias.

necessidadesArgs verdade Número OlanguageParâmetro é usado para definir a linguagem de programação da estratégia a ser consultada.

  • languageconfigurações de parâmetros0Língua JavaScript.
  • languageconfigurações de parâmetros1Língua Python.
  • languageconfigurações de parâmetros2: linguagem C++.
  • languageconfigurações de parâmetros3Estratégia de visualização.
  • languageconfigurações de parâmetros4A minha língua.
  • languageconfigurações de parâmetros5Língua PINE.

Língua verdade Número OkwO parâmetro é utilizado para definir a palavra-chave da estratégia a ser consultada.

  • Definir uma cadeia vazia significa que não se usa filtragem de palavras-chave.

kW verdade cordel

NewRobot

ONewRobotO método é utilizado para criar uma negociação ao vivo sob oAPI KEYcorrespondente à conta da plataforma de negociação quantitativa FMZ referida no pedido.

{
    "code":0,
    "data":{
        "result":591988,
        "error":null
    }
}
  • Resultado: A criação foi bem sucedida e o ID de negociação em tempo real é devolvido.

Os parâmetros da configuração de negociação em tempo real,settingsO 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
}
  • Grupo: especificar o grupo de negociação em tempo real.
  • args: Parâmetros da estratégia, ou uma matriz vazia se a estratégia não tiver parâmetros.
  • intercâmbios: Para a configuração do objeto de intercâmbio, consulte oRestartRobot interface.

configurações verdade Objeto JSON

Na configuração deeidemsettingsParâ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 osettingsParâmetro, podemos usar as seguintes configurações para oexchangesAtributo:

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

labelAtributo é 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

PluginExecutar

OPluginRunmé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
    }
}
  • resultado: A ferramenta de depuração retorna os dados do resultado do teste após a execução do código JavaScript passado com sucesso.

Os parâmetros de configuração na ferramenta de depuração,settingsConfiguração, incluir o código de ensaio nosourceAtributo.settingsO formato do parâmetro é o seguinte:

{
    "exchanges":[{"pair":"SOL_USDT","pid":123}],
    "node":123,
    "period":60,
    "source":"function main() {Log(\"Hello FMZ\")}"
}
  • fonte: código que precisa de depuração.
  • node: Docker ID, você pode especificar em qual docker executar a negociação ao vivo.
  • intercâmbios: Para a configuração do objeto de intercâmbio, consulte oRestartRobot 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 oexchangesatributo emsettings, apenas um precisa ser definido ao chamar oPluginRunmé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.

GetRobotLogs

OGetRobotLogsO 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 KEYA 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
    }
}
  • logs: Informações de log: vários elementos de dados de log são encontrados no campo Arr. A primeira estrutura de dados em registos é o registro de log na tabela de log de estratégia no banco de dados de negociação ao vivo. A segunda estrutura de dados em registos é o registro de log na tabela de log de estratégia no banco de dados de negociação ao vivo. A terceira estrutura de dados em logs é o registro de log na tabela de log de estratégia no banco de dados de negociação ao vivo.
  • resumo: dados da barra de estado da negociação em tempo real.

OrobotIdParâ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 oGetRobotListMé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 OlogMinIdO parâmetro é utilizado para especificar o ID mínimo do log.

LogMinId verdade Número OlogMaxIdO parâmetro é utilizado para especificar a Id máxima do Log.

LogMaxId verdade Número OlogOffsetO parâmetro é utilizado para definir o deslocamento, após a determinação do intervalo porlogMinIdelogMaxId, 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 OprofitMinIdO 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 0 significa que não há necessidade de consultar a barra de status Informação, e a definição para um número diferente de zero indica o número de bytes da informação da barra de estado a ser consultada (o interface não limita a quantidade de dados, por isso você pode especificar um maiorsummaryLimitParâ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 OArrvalor de atributo no primeiro elemento doLogsO 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 Futures_OKCoin "" 0 0 Venda ((688,9, 2): 20016 1526954372591 "" ""
    3976 5 "" "" 0 0 OKCoin:esta_semana muitas posições, long: 2 1526954372410 "" ""

    extraé a mensagem anexada do registo impresso.

    Os tipos específicos de troncos representados pelologTypeOs 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.

Biblioteca integrada Terminal de negociação