A API estendida da plataforma FMZ Quant Trading foi atualizada recentemente, e a atualização suporta o modo de acesso direto, para que o sinal de alerta TradingView possa ser facilmente enviado para os bots no FMZ para negociação automática.
Ligação da parte relacionada na documentação da API da FMZ
A função principal da API estendida é fornecer interfaces para várias funções na plataforma de negociação FMZ Quant, para as operações programáticas, como batch start bots simultaneamente, cronometragem bot start e stop, leitura de detalhes de informações bot, etc. Usamos a API estendida FMZ para implementar TradingView alerta sinal de negociação.CommandRobot(RobotId, Cmd)
Esta interface pode enviar comandos interativos para o bot com o ID especificado, e o bot pode executar as operações correspondentes (como colocar uma ordem de compra ou venda, etc.)
Para usar a API estendida, você primeiro precisa criar sua própria contaAPI KEY
em FMZ:
API KEY
É constituído por:access key
esecret key
; API KEY
é a chave para operar programaticamente a plataforma de negociação FMZ Quant, por isso certifique-se de mantê-lo corretamente e não divulgá-lo.API KEY
, você pode especificar as permissões.API KEY
A autorização para aceder aoCommandRobot(RobotId, Cmd)
Neste exemplo, por razões de segurança, por favor, conceda apenas a permissão de acesso deCommandRobot(RobotId, Cmd)
Interface com a FMZ estendidaAPI KEY
.
O modo de acesso direto indica a escrita diretaAPI KEY
na consulta do URL; por exemplo, o URL para acessar a API estendida da plataforma FMZ Quant pode ser escrito como:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
Entre eles,https://www.fmz.com/api/v1
é o endereço da interface;?
é seguida do seguinte:Query
; o parâmetroaccess_key
é, por exemplo, representado por xxx (ao utilizar, preencha a access_key da sua própria conta FMZ); o parâmetrosecret_key
é representado por yyyy (ao utilizar, preencha secret_key da sua própria conta); o parâmetromethod
é o nome específico da interface API alargada a aceder, eargs
é o parâmetro domethod
interface a ser chamada.
Nós usamos o TradingView como uma fonte de sinal para enviar comandos de negociação para os bots FMZ.CommandRobot
interface.
Primeiro de tudo, você precisa ter uma conta TradingView Pro. O nível Básico não pode usar a função WebHood no alerta.
Adicionar um indicador para o gráfico, e outros algoritmos de script também podem ser usados.MACD
Indicador e, em seguida, defina o período da linha K em 1 minuto (para que o sinal seja disparado mais rapidamente e facilitar a demonstração).
Clique com o botão direito do mouse no gráfico e selecione
ConjuntoWebHook
Neste ponto, você não precisa se preocupar em configurá-lo. Vamos primeiro executar o bot que monitora os sinais na plataforma de negociação FMZ Quant.
Código fonte da estratégia:
// global variable
var BUY = "buy" // Note: the command used for spot
var SELL = "sell" // the command used for futures
var LONG = "long" // the command used for futures
var SHORT = "short" // the command used for futures
var COVER_LONG = "cover_long" // the command used for futures
var COVER_SHORT = "cover_short" // the command used for futures
function main() {
// Empty the logs; delete, if not needed
LogReset(1)
// Set the precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Judge whether it is spot or futures
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added platform is a futures platform:", eName, "#FF0000")
eType = 1
if (Ct == "") {
throw "Ct contract set to null"
} else {
Log(exchange.SetContractType(Ct), "Set contract:", Ct, "#FF0000")
}
} else {
Log("The added platform is a spot platform:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect the interactive command
lastMsg = "Command:" + cmd + "Time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("Wrong cmd information:", cmd, "#FF0000")
continue
}
var action = arr[0]
var amount = parseFloat(arr[1])
if (eType == 0) {
if (action == BUY) {
var buyInfo = IsMarketOrder ? exchange.Buy(-1, amount) : $.Buy(amount)
Log("buyInfo:", buyInfo)
} else if (action == SELL) {
var sellInfo = IsMarketOrder ? exchange.Sell(-1, amount) : $.Sell(amount)
Log("sellInfo:", sellInfo)
} else {
Log("Spot trading platforms are not supported!", "#FF0000")
}
} else if (eType == 1) {
var tradeInfo = null
var ticker = _C(exchange.GetTicker)
if (action == LONG) {
exchange.SetDirection("buy")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else if (action == SHORT) {
exchange.SetDirection("sell")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_LONG) {
exchange.SetDirection("closebuy")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_SHORT) {
exchange.SetDirection("closesell")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else {
Log("Futures trading platforms are not supported!", "#FF0000")
}
if (tradeInfo) {
Log("tradeInfo:", tradeInfo)
}
} else {
throw "eType error, eType:" + eType
}
acc = _C(exchange.GetAccount)
}
var tbl = {
type : "table",
title : "Status information",
cols : ["Data"],
rows : []
}
// tbl.rows.push([JSON.stringify(acc)]) // Used during testing
LogStatus(_D(), eName, "The command received last time:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
O código é muito simples. Ele detecta o valor de retorno doGetCommand
Quando há uma mensagem interativa enviada para o programa de estratégia,GetCommand
O bot é configurado com a plataforma simulada, por exemplo, quando a estratégia é operada, o bot é configurado com a plataforma simulada.WexApp
da plataforma de negociação FMZ Quant.
Clique no botão de interação para testar a capacidade do bot para receber um comando de compra.
Podemos ver que a cadeia de comandos recebida pelo bot é:buy:0.01
.
Nós só precisamos fazer o parâmetro transportado serbuy:0.01
durante o acesso aoCommandRobot
interface da API estendida FMZ Quant no URL de solicitação do WebHook, quando o alerta TradingView é acionado.
De volta ao TradingView, preenchemos a URL do WebHook.API KEY
emaccess_key
esecret_key
para os parâmetrosmethod
é corrigido, só precisamos acessar a API estendidaCommandRobot
; oargs
Parâmetro é na forma de[robot ID, command string]
, podemos obter diretamente o ID do robô através da página do bot, como mostrado na figura:
Desta vez, quando disparamos o sinal, comprar moeda 0,02 e a cadeia de comando é:"buy:0.02"
Isso completa o URL do WebHook.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Configurar no TradingView:
Espera que o sinal seja disparado. Quando o bot recebe o sinal, você pode ver o alerta de sinal no canto superior direito da página, e os registos de gatilho no canto inferior direito da página.
O bot recebeu o sinal:
Desta forma, você pode usar as ricas funções de gráficos e algoritmos de indicadores no TradingView para cooperar com o bot de estratégia do FMZ Quant para realizar a negociação automatizada que deseja.
O código de estratégia do