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:img

API KEYÉ constituído por:access keyesecret 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 KEYA 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.

Modo de acesso direto da API estendida

O modo de acesso direto indica a escrita diretaAPI KEYna 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 domethodinterface 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.

TradingView

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.

img

Adicionar um indicador para o gráfico, e outros algoritmos de script também podem ser usados.MACDIndicador 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).

img

Clique com o botão direito do mouse no gráfico e selecione Adicionar alerta no menu pop-up.

img

ConjuntoWebHookNeste 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.

Bot de encomenda de sinal de monitoramento

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

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.

img

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

img

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:img

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:

img

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:img

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.