A API estendida na plataforma de negociação FMZ Quant foi atualizada recentemente para suportar o acesso direto, para que possa facilmente enviar o sinal de alerta TradingView para o robô da plataforma de negociação FMZ Quant para negociação automática.
Alguns links para a documentação API sobre FMZ (https://www.fmz.com/api)
A função principal da API expandida é fornecer interfaces para várias funções na plataforma de negociação FMZ Quant para operações programáticas, como iniciar robôs em lotes simultaneamente, cronometrar robôs para iniciar e parar, ler detalhes de informações do robô, etc. Usamos a API expandida na plataforma de negociação FMZ Quant para realizar o plano de demanda da negociação de sinais de alerta TradingView, que usa apenas oCommandRobot(RobotId, Cmd)
Esta interface pode enviar instruções interativas para o robô com um ID especificado, e o robô pode executar operações correspondentes (como colocar uma ordem de compra, venda, etc.) após receber as instruções.
Para usar a API estendida, você precisa criar umAPI KEY
para a sua própria conta FMZ primeiro:
A chave secreta deAPI KEY
É constituído por:access key
esecret key
. API KEY
A plataforma de negociação FMZ Quant é a chave para quantificar a operação programática, por isso deve ser mantida devidamente e não divulgada.API KEY
No FMZ, você pode especificar permissões.API KEY
autorização de acesso aoCommandRobot(RobotId, Cmd)
Para este exemplo, com base em considerações de segurança, por favor, dê apenas a extensãoAPI KEY
sobre a permissão FMZ para aceder aoCommandRobot(RobotId, Cmd)
interface.
O modo de acesso directo significa que oAPI KEY
Por exemplo, o URL para acessar a API estendida na FMZ Quant Trading Platform pode ser escrito como:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
Onde?https://www.fmz.com/api/v1
é o endereço da interface,?
é seguida do seguinte:Query
, parâmetroaccess_key
A chave secreta é representada por xxx por exemplo (preencha a access_key da sua própria conta FMZ quando você a usa).secret_key
é representado por yyyy (preencha o secret_key da sua própria conta quando o usa).method
é o nome específico da interface API alargada a aceder, eargs
é o parâmetro domethod
interface a ser chamada.
Usamos o TradingView como fonte de sinal para enviar comandos de transação para o robô da plataforma de negociação FMZ Quant.CommandRobot
interface.
Primeiro, você deve ter uma conta de nível TradingView Pro. A função WebHood no alerta não pode ser usada no nível básico.
No gráfico TradingView, você pode adicionar um indicador para o gráfico ou outros algoritmos de script.MACD
Indicadores, e então definimos o período de linha K para 1 minuto (para um desencadeamento de sinal mais rápido e demonstração fácil).
Clique com o botão direito do mouse no gráfico e selecione
ConjuntoWebHook
Neste ponto, podemos executar o robô de sinal de monitoramento na plataforma de negociação quântica FMZ primeiro.
Código fonte da estratégia:
// Global variable
var BUY = "buy" // Note: The command used for spot
var SELL = "sell" // The command used for spot
var LONG = "long" // The command used for future
var SHORT = "short" // The command used for future
var COVER_LONG = "cover_long" // The command used for future
var COVER_SHORT = "cover_short" // The command used for future
function main() {
// Clear the log and delete it if not needed
LogReset(1)
// Set precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Identify future or spot
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added exchange is a futures exchange:", 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 exchange is a spots exchange:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect interactive commands
lastMsg = "command:" + cmd + "time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("cmd incorrect 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("The spots exchange is 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("The futures exchange is 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)]) // Use it when testing
LogStatus(_D(), eName, "Last received command:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
Código fonte da estratégia (https://www.fmz.com/strategy/203063)
O código de estratégia é muito simples.GetCommand
Quando uma mensagem interactiva é enviada para o programa de estratégia, oGetCommand
função retorna a mensagem, e o programa de estratégia faz a operação de transação correspondente de acordo com o conteúdo da mensagem. O botão interativo foi definido nesta estratégia para testar a função interativa. Por exemplo, execute esta estratégia e configure o robô comWexApp
, uma bolsa de simulação da plataforma de negociação quantitativa FMZ.
Nós clicamos no botão interativo para testar a função do robô de receber a ordem de compra, então podemos ver que a cadeia de comandos recebida pelo robô é:buy:0.01
.
Nós só precisamos fazer o WebHook URL de solicitação quando o alerta TradingView é desencadeado para acessar oCommandRobot
interface da API alargada da plataforma de negociação quântica FMZ, o parâmetro transportado ébuy:0.01
.
De volta ao TradingView, preenchemos a URL do WebHook.access_key
, secret_key
. Omethod
Só precisamos de aceder aoCommandRobot
Interface extendedAPI. O parâmetroargs
é na forma de[Robot ID, Command String]
Podemos obter o ID do robô através da página do robô, diretamente como mostrado na figura:
Desta vez, deixamos o sinal disparar, compramos 0,02 moedas, e a cadeia de comando é:buy:0.02
. Então o URL do WebHook está completo. Este método só suporta a escrita do sinal no URL. Se você quiser obter o conteúdo da mensagem de alerta que pode ser enviada pela própria estratégia de TV, consultehttps://www.fmz.com/api#Verificação directa.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args= [191755,"buy:0.02"]
Configurar no TradingView:
Esperem pelo sinal para disparar... Esperem pelo sinal para disparar... Esperem pelo sinal para disparar... - Não.
Então o robô receberá o sinal, desta forma, podemos usar as várias funções de gráfico e algoritmos de indicadores no TradingView para cooperar com o robô de estratégia da plataforma de negociação FMZ Quant para alcançar a negociação automática que você deseja.
O código de estratégia do