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

Autora:Lydia., Criado: 2022-12-14 13:42:41, Atualizado: 2023-09-20 10:17:53

img

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

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.

A API estendida na plataforma de negociação FMZ Quant

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 KEYpara a sua própria conta FMZ primeiro:

img

A chave secreta deAPI KEYÉ constituído por:access keyesecret key. API KEYA 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 KEYNo FMZ, você pode especificar permissões.API KEYautorização de acesso aoCommandRobot(RobotId, Cmd)Para este exemplo, com base em considerações de segurança, por favor, dê apenas a extensãoAPI KEYsobre a permissão FMZ para aceder aoCommandRobot(RobotId, Cmd) interface.

Modo de acesso direto da API alargada

O modo de acesso directo significa que oAPI KEYPor 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_keyA 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 domethodinterface 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.

TradingView

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.MACDIndicadores, 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 Adicionar alerta no menu pop-up.

ConjuntoWebHookNeste ponto, podemos executar o robô de sinal de monitoramento na plataforma de negociação quântica FMZ primeiro.img

Robô de comando de sinal de monitorização

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.GetCommandQuando uma mensagem interactiva é enviada para o programa de estratégia, oGetCommandfunçã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 oCommandRobotinterface da API alargada da plataforma de negociação quântica FMZ, o parâmetro transportado ébuy:0.01.

Configure o WebHook do TradingView

De volta ao TradingView, preenchemos a URL do WebHook.access_key, secret_key. OmethodSó precisamos de aceder aoCommandRobotInterface 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:

img

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:

img

Esperem pelo sinal para disparar... Esperem pelo sinal para disparar... Esperem pelo sinal para disparar... - Não.

img

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 robot para a colocação de ordens por sinais de monitoramento é apenas para aprendizado e pesquisa. O uso em bot real precisa ser auto-otimizado e ajustado para suportar futuros. Recomenda-se configurá-lo no modo de ordem de preço de mercado. Veja os parâmetros do código de estratégia para detalhes. Se tiver alguma pergunta ou sugestão, por favor, sinta-se à vontade para deixar uma mensagem.


Relacionados

Mais.