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

Use a API estendida no FMZ Quant para realizar a negociação de sinais de alerta "TradingView"

Autora:Ninabadass, Criado: 2022-03-30 16:28:09, Atualizado: 2022-03-31 17:32:25

Utilize a API estendida no FMZ para realizar TradingView Alerta de sinal de negociação

Link de vídeo no Bilibili

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.

API alargada da plataforma quântica FMZ

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 KEYem FMZ:Use the extended API on FMZ Quant to realize “TradingView” alert signal trading


### 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)
    }
}

Código Fonte da Estratégia

O código é muito simples. Ele detecta o valor de retorno doGetCommandQuando há uma mensagem interativa enviada para o programa de estratégia,GetCommandO bot é configurado com a plataforma simulada, por exemplo, quando a estratégia é operada, o bot é configurado com a plataforma simulada.WexAppda plataforma de negociação FMZ Quant.

Use the extended API on FMZ Quant to realize “TradingView” alert signal trading

Clique no botão de interação para testar a capacidade do bot para receber um comando de compra.

Use the extended API on FMZ Quant to realize “TradingView” alert signal trading

Podemos ver que a cadeia de comandos recebida pelo bot é:buy:0.01.

Nós só precisamos fazer o parâmetro transportado serbuy:0.01durante o acesso aoCommandRobotinterface da API estendida FMZ Quant no URL de solicitação do WebHook, quando o alerta TradingView é acionado.

Configuração WebHook do TradingView

De volta ao TradingView, preenchemos a URL do WebHook.API KEYemaccess_keyesecret_keypara os parâmetrosmethodé corrigido, só precisamos acessar a API estendidaCommandRobot; oargsParâ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:Use the extended API on FMZ Quant to realize “TradingView” alert signal trading

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:

Use the extended API on FMZ Quant to realize “TradingView” alert signal trading

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:Use the extended API on FMZ Quant to realize “TradingView” alert signal trading

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 Ordering Bot of Monitoring Signal é apenas para estudo e pesquisa. Ele precisa ser otimizado e ajustado para o uso de bots reais. Ele também suporta futuros. Recomendamos configurá-lo no modo de ordem de mercado. Para mais detalhes, consulte os parâmetros do código de estratégia. Se tiver alguma pergunta ou sugestão, por favor deixe uma mensagem.


Mais informações