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

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

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

Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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:

Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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.Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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:

Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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:

Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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

Use the extended API on FMZ Quant Trading Platform to realize TradingView alert signal trading

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.