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:
### Direct Access Mode of Extended API
The direct access mode indicates directly writing ```API KEY``` in the Query of URL; for example, the URL accessing the extended API of FMZ Quant platform can be written as:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,“ok12345”]
Among them, ```https://www.fmz.com/api/v1``` is the interface address; ```?``` is followed by ```Query```; the parameter ```access_key``` is, for example, represented by xxx (when using, fill in the access_key of your own FMZ account); the parameter ```secret_key``` is represented by yyyy (when using, fill in your own account secret_key); the parameter ```method``` is the specific name of the extended API interface to be accessed, and ```args``` is the parameter of the ```method``` interface to be called.
We use TradingView as a signal source to send trading commands to the FMZ bots. In fact, we only use the ```CommandRobot``` interface.
### TradingView
First of all, you need to have a TradingView Pro account. The Basic level cannot use the WebHood function in the alert. We enter the Chart of TradingView.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/269159723a8d53f907d86.png)
Add an indicator to the chart, and other script algorithms can also be used. Here, for the convenience of demonstration, we use the most commonly used ```MACD``` indicator, and then set the K-line period to 1 minute (in order to make the signal trigger faster and facilitate the demonstration).
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/26980a2ff4858e1ed81e6.png)
Right-click on the chart and select "Add Alert" from the pop-up menu.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/2689e1efab8e133c43188.png)
Set ```WebHook``` in the "Alert" pop-up window. At this point, you don't have to worry about setting it. Let's first run the bot that monitors the signals on FMZ Quant trading platform.
### Ordering Bot of Monitoring Signal
Strategy source code:
```js
// 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