A plataforma de negociação quantitativa do inventor é utilizada para realizar o TradingView Alarm Signal Trading (recomendado)

Autora:Sonhos pequenos, Criado: 2020-04-29 17:08:27, Atualizado: 2023-10-08 19:56:04

img

API de expansão para transações de sinais de alarme do TradingView usando a plataforma de negociação quantitativa do inventor

Links de vídeo da estação B

A Inventor's Quantitative Trading Platform Extension API foi atualizada recentemente, com suporte para o modo de acesso direto, para que seja mais fácil realizar transações automáticas com sinais de alerta do TradingView enviados para os robôs da Inventor's Quantitative Trading Platform.

Inventor de plataforma de negociação quantitativa API de expansão

Links para partes relevantes da documentação da API do inventor

A principal função da API de expansão é fornecer uma interface para várias funções da plataforma de negociação quantitativa do inventor de operações programáticas, como iniciar o robô em massa, iniciar e parar o robô simultaneamente, ler detalhes de informações do robô, etc. Usamos a API de expansão de plataforma de negociação quantitativa do inventor para realizar a negociação de sinais de alarme do Inventor TradingView.CommandRobot(RobotId, Cmd)A interface permite que o robô, que recebe as instruções, execute as operações correspondentes (por exemplo, comprar, vender, etc.).

Para usar a API de extensão, você precisa criar sua própria conta de inventor.API KEY: img API KEYA chave secreta éaccess keyesecret keyO que é que isso significa?API KEYA chave do inventor da plataforma de negociação de quantificação de operações programáticas deve ser bem guardada e nunca divulgada.API KEYQuando o usuário está usando o botão, pode especificar permissões, como no gráfico acima, apenas para este.API KEYAcessos concedidosCommandRobot(RobotId, Cmd)Permissões para a interface, por razões de segurança, para este exemplo, dê apenas a extensão FMZAPI KEYatribuiçãoCommandRobot(RobotId, Cmd)O acesso à interface.

Modelo de acesso direto da API de extensão

O modo de acesso direto éAPI KEYPara escrever diretamente na query do URL, por exemplo, para acessar a API do inventor, você pode escrever:

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

E, em seguida,https://www.fmz.com/api/v1O Google Maps é o endereço da interface.?E depois...QueryParâmetrosaccess_keyO exemplo de chave secreta é representado por xxx (exemplo de acesso_chave da sua própria conta FMZ quando usado), o parâmetrosecret_keyA chave secreta é indicada com o símbolo "yyyy" (secret_key), um parâmetromethodO nome da extensão é o nome específico da API a ser acessada.argsPara ser chamadomethodParâmetros da interface.

Usamos o TradingView como fonte de sinalização para enviar ordens de negociação para o robô da plataforma de negociação quantitativa do inventor, que, na verdade, só usa o TradingView para executar ordens de negociação.CommandRobotA interface também pode ser usada.

TradingView

Primeiro, você tem que ter uma conta de nível TradingView Pro, o nível Basic não é capaz de usar a função WebHood no alerta.

img

Adicionar um indicador ao gráfico pode ser outro algoritmo de script. Aqui, para facilitar a demonstração, usamos os mais usados.MACDIndicador, e depois defina o ciclo da linha K para 1 minuto (para facilitar a demonstração, para facilitar o desencadeamento do sinal).

img

Clique com o botão direito no gráfico e selecione "Adicionar alertas" no menu que aparece.

img

Configuração na janela de pop-up "Alerta"WebHookA partir daí, não é preciso ter uma configuração apressada, mas sim um robô que quantifica os sinais de monitoramento do lado da plataforma de negociação.

Robôs de vigilância

O código da estratégia:

// 全局变量
var BUY = "buy"     // 注意:现货用的命令
var SELL = "sell"   //      现货用的命令
var LONG = "long"   // 期货用的命令
var SHORT = "short" // 期货用的命令
var COVER_LONG = "cover_long"   // 期货用的命令
var COVER_SHORT = "cover_short" // 期货用的命令

function main() {
    // 清空日志,如不需要,可以删除
    LogReset(1)

    // 设置精度
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // 识别期货还是现货
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("添加的交易所为期货交易所:", eName, "#FF0000")
        eType = 1
        if (Ct == "") {
            throw "Ct 合约设置为空"
        } else {
            Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {
        Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // 检测交互命令
            lastMsg = "命令:" + cmd + "时间:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd信息有误:", 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("现货交易所不支持!", "#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("期货交易所不支持!", "#FF0000")
                }
                if (tradeInfo) {
                    Log("tradeInfo:", tradeInfo)
                }
            } else {
                throw "eType error, eType:" + eType
            }
            acc = _C(exchange.GetAccount)
        }
        var tbl = {
            type : "table", 
            title : "状态信息", 
            cols : ["数据"], 
            rows : []
        }
        // tbl.rows.push([JSON.stringify(acc)])   // 测试时使用
        LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}

Código de origem da estratégia

O código da estratégia é muito simples.GetCommandO valor de retorno de uma função, quando há uma mensagem de interação sendo enviada para um programa de política, é o valor de retorno de uma função.GetCommandA função retorna a mensagem e o programador da política executa as ações de negociação correspondentes com base no conteúdo da mensagem. A política tem um botão de interação configurado para testar funções de interação, como executar a política e configurar o robô para a plataforma de negociação analógica do inventor.WexApp

img

Clique no botão de interação para testar a função do robô que recebe o pedido de compra.

img

O que você pode ver é que o bot recebe uma sequência de comandos como:buy:0.01

Basta que o alerta TradingView seja ativado e o WebHook solicita um URL para acessar a API do inventor para quantificar a plataforma de negociação.CommandRobotQuando a interface é carregada, os parâmetros são:buy:0.01Não, não.

Configurar o WebHook do TradingView

De volta ao TradingView, nós preenchemos o URL do WebHook.access_keysecret_keyOs parâmetros preencheram-se.API KEYmethodMas o que nós vamos fazer é apenas visitar o local.CommandRobotA interface de extensão da API é uma ferramenta que ajuda a criar uma interface de extensão.argsO parâmetro é[机器人ID,命令字符串]A partir de agora, o bot pode ser identificado como um robô, em forma de ID, que podemos obter diretamente através da página do robô, como mostra o gráfico:imgNeste caso, quando o sinal é disparado, compramos 0,02 moedas e a string de comando é:"buy:0.02"O URL do WebHook está pronto. Este método só suporta escrever o sinal no URL, se você quiser obter o conteúdo da mensagem de alerta emitida pela própria política de TV, consulte o link abaixo: WEBhttps://www.fmz.com/api#直接验证

https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755,"buy:0.02"]

Configure no TradingView:

img

Aguardem o sinal... Aguardem o sinal... 等待信号触发.

img

O robô recebeu um sinal:

img

Assim, você pode usar o rico recurso de gráficos no TradingView, o algoritmo de indicadores com o robô de estratégia do inventor para quantificar a plataforma de negociação e realizar as transações automatizadas que deseja, em comparação com o transporte de estratégias no TradingView para JavaScript e Python.

O código de estratégia do "robô de monitoramento" é apenas para pesquisa de aprendizagem, o uso em disco real requer ajustes de otimização, suporte a futuros, recomendado para o modo de lista de preços de mercado, veja os parâmetros do código de estratégia. Para mais informações, acesse o site www.tribuna.com.br.


Relacionados

Mais.

Pw1013Por favor, pode ligar para a troca de deepcoin, muito obrigado

Mingxi1005Quando é que os inventores vão conseguir juntar moedas e ganhar contratos futuros?

Mingxi1005Quando é que os inventores vão conseguir juntar moedas e ganhar contratos futuros?

SmilesgVocê é muito bom, a estratégia de contrato que eu fiz, às vezes, depois de abrir um negócio, a metade do negócio aumenta, então, quando eu quero estabilizar o último negócio, como estabilizar todas as posições com o cover_long (porque não sei se o meio aumentará várias vezes), o que é o 1 em "cover_long:1", ajoelhe-se no código

tyk950115A minha mensagem de estratégia de TV é esta: ordem {{strategy.order.action}}@{{strategy.order.contracts}} transação {{ticker}}; nova posição estratégica {{strategy.position_size}} Se eu quiser fazer um contrato, devo acrescentar quatro avisos: fazer mais, fazer menos, fazer menos, fazer menos? O webhook pode citar os campos da política? Ou preciso de escrever para que eu faça isso? Há quatro maneiras no webhook: long, cover_long, cover_short e cover_short para corresponder às mensagens no alerta?

Quantificação da microbiologiaEu gostaria de passar o texto da mensagem da tv, mas não posso, só posso usar o url para os parâmetros, não para a mensagem do tradingview.

NingPergunta: [1234567, "buy:50"] Este é um BTC que vale 50 usdt para ser comprado, mas não é o mesmo que um Bitcoin que vale 50 usdt para ser comprado, mas é o mesmo que um Bitcoin que vale 50 usdt para ser comprado. Mas quando eu vendi, [1234567, "sell:50"] mostrou um erro de balanço: Então, como posso configurar para vender todo o BTC que comprei pela primeira vez?

WqyIsso é muito funcional!

lanbnOlá professor, eu vou seguir os seus passos passo a passo, o servidor escolhido é o servidor que o inventor carrega consigo, mas a TV já está a emitir um sinal, mas o robô do lado do inventor ainda não está a executar o sinal, é por causa do servidor?

Não, não.Muito bom, coleção lenta.

Em direção oposta ao Q./upload/asset/19a5ed382b58652c4dd19.png /upload/asset/19b0ea9ffa5100a3594f3.png /upload/asset/19a806e32e9b589696fa0.png /upload/asset/19a5005173219393cf2d9.png Por que o código do contrato que adicionei seguindo os passos ainda mostra um erro?

WuxianPor exemplo, se a política da tv tiver instruções de vários cabeçalhos vazios, será que isso irá abrir, aumentar ou estabilizar de acordo com as instruções da política da tv?

PY008O código do contrato de futuros é o seguinte:

melo23Onde estão os tutoriais de vídeo dos futuros?

Sug210Qual é a troca que pode apoiar?

YuanlijieComo é que o contrato foi feito? Eu não sei nada de programação, só sei escrever em inglês.

MikelslA primeira coisa que eu fiz foi fazer uma onda enorme de luz branca, que é muito forte.

SkyfffireÉ um passo muito simples.

homilhaMuito bem.

Pw1013Eu perguntei ao autor sobre o que você estava fazendo.

Hexiao49A minha comunidade tem um problema, pode ajudar-me a ver?

Sonhos pequenosO problema é que não há uma interface API.

Hexiao49O deep não tem o seu próprio API?

Sonhos pequenosO número de usuários depende do número de necessidades.

Sonhos pequenosA estratégia de contenção de prejuízos precisa de mudanças específicas, não de uma ou duas palavras. O FMZ suporta diretamente a linguagem PINE e é mais fácil executar o script PINE diretamente.

Mingxi1005Professora: Eu gostaria de adicionar a função de bloqueio de bloqueio no robô que você divulgou, onde adicionar?

Sonhos pequenosSim, eu também perguntei ao atendimento de clientes e eles derrubaram a interface API sem contrato.

Mingxi1005Isso não é possível.

Sonhos pequenosÉ uma interface de API em tempo real, chefe! #_#! O FMZ já tem suporte.

Mingxi1005https://www.coinw.fit/front/API Este endereço tem um API, basta uma escada para abrir /upload/asset/2986424014eb005f8cda2.png

Mingxi1005https://www.coinw.fit/front/API Este site tem um API, você precisa de uma escada para abrir.

Sonhos pequenosO endereço não pode ser aberto. Não há documentos de API contratados.

Mingxi1005Link para entrada da API: https://coinw.pw/API

Sonhos pequenosEsta é a API instantânea do coinw, o FMZ instantâneo do coinw já é suportado e eles não têm nenhuma interface de contrato.

Mingxi1005Então, podemos fazer o nosso próprio upload com o protocolo geral? Basta pedir um endereço IP, qual é o endereço que você vai preencher? Link para entrada da API: https://coinw.pw/API

Sonhos pequenosEmbaraçado, você está certo de que o Bitcoin Win Contract tem uma interface API?

Mingxi1005Sim, professora, se você entrar, haverá muita quantidade de acesso, porque o Bitcoin ganha 80% da comissão.

Sonhos pequenosOlá, você precisa de um contrato para acessar esta exchange?

Dois ou dois velhosPor favor, você resolveu isso? Eu também tive esse problema.

lanbnMeu irmão, a estratégia da TV para ligar diretamente o FMZ, você conseguiu?

Sonhos pequenosIsso pode ser projetado especificamente, por exemplo, você pode projetar cover_long: 1 em sua solicitação cover_long: all, para que você possa alterar a política de interação cover_long na política de escuta do FMZ, para determinar se todos estão parados. Não. // Variações globais var BUY = "buy" // Observação: comando para uso no local var SELL = "sell" // Comando para uso em tempo real var LONG = "long" // Comando para futuros var SHORT = "short" // Comando para futuros var COVER_LONG = "cover_long" // Comando para futuros var COVER_SHORT = "cover_short" // Comando para uso em futuros O que é isso? O que é isso? Não. O que é isso? } else if (eType == 1) { var tradeInfo = null Var ticker = _C (exchange.GetTicker) se (ação == LONG) { exchange.SetDirection (("buy") tradeInfo = IsMarketOrder? exchange.Buy ((-1, amount)): exchange.Buy ((ticker.Sell, amount) - O que é um pedido? } else if (action == SHORT) { exchange.SetDirection (em inglês) tradeInfo = IsMarketOrder? exchange.Sell ((-1, amount)): exchange.Sell ((ticker.Buy, amount) - O que é um pedido? } else if (action == COVER_LONG) { // COVER_LONG é um "cover_long" para determinar se é esta ação, inserir se aqui // Aqui você pode determinar mais especificamente os parâmetros como all, para fazer o design operacional de todos os parâmetros, especificamente escrever exchange.SetDirection (("closebuy") tradeInfo = IsMarketOrder? exchange.Sell ((-1, amount)): exchange.Sell ((ticker.Buy, amount) - O que é um pedido? } else if (action == COVER_SHORT) { Exchange.SetDirection (em inglês) tradeInfo = IsMarketOrder? exchange.Buy ((-1, amount)): exchange.Buy ((ticker.Sell, amount) - O que é um pedido? } else { Log (("As bolsas de futuros não são suportadas!", "#FF0000") Não. se (tradeInfo) { Log (("tradeInfo:", tradeInfo) Não. } else { throw "eType error, eType:" + eType Não. ac = _C (exchange.GetAccount) Não. Não.

YidaiA pergunta foi resolvida?

Sonhos pequenosA estabilidade do alarme emitido pela TV não é muito clara, isso depende da TV.

beiyeargs=[191755, "buy:0.02"], aqui adicionar um parâmetro, fazer mais ao mesmo tempo pode ser feito o espaço também omitir um dos parâmetros será melhor?

Sonhos pequenosPara receber solicitações de TV usando a API de extensão do FMZ, você pode acessar o conteúdo do Body em: https://www.fmz.com/api# verificação direta Agora, os dados do corpo podem ser recebidos em qualquer URL que a TV envie.

1131717062Por favor, pergunte como é que um alerta de liquidação estratégica é construído na tv, webhook url

Sonhos pequenosO conteúdo do corpo pode ser obtido usando a API de extensão do FMZ para receber solicitações de TV. Veja: https://www.fmz.com/api#%E7%9B%B4%E6%8E%A5%E9%AA%8C%E8%AF%81

Quantificação da microbiologia https://www.fmz.com/strategy/221850,看到了,感谢大神!!

Sonhos pequenosHá uma maneira direta de acessar a informação no corpo da solicitação e procurá-la na pesquisa da Praça da Estratégia.

Sonhos pequenosA política foi alterada para 50 divididos pelo preço de então.

Sonhos pequenosSe for recebido um comando, a barra de estado do robô, o bot recebeu o comando da última vez, o bot recebeu o comando. A partir daí, o usuário pode verificar se não há configurações.

lanbnA configuração é o Binance, não há nenhuma sugestão no log do robô, a TV é apenas a condição de gatilho e basta configurar no webhook.

Sonhos pequenosPara ver a questão específica, o que é que o seu robô está configurado para fazer?

Sonhos pequenos/upload/asset/16afbca03eec23516d37.png Você adicionou a troca errada.

Sonhos pequenosMeu irmão, o screenshot do API KEY deve ser codificado, segurança em primeiro lugar.

Em direção oposta ao Q./upload/asset/19aee891571def2a6c4f3.png Eu tenho todas as permissões da API do Binance abertas, eu também tenho uma conta de contrato aberta, mas a estratégia está sempre funcionando e não posso adicionar uma bolsa de futuros, o código é um problema?

Sonhos pequenosO log mostra a Binance explicando que o objeto da troca adicionado é o Bitcoin Cash. Mas sua política definiu o código do contrato de futuros, então você recebeu um erro.

Sonhos pequenosÉ necessário configurar um alarme na vista de negociação e preencher o endereço do webhook na configuração de alarme.

Sonhos pequenoshttps://www.fmz.com/api#exchange.setcontracttype... Esta função está na descrição e pode ser vista.

Sonhos pequenosO link está no início deste artigo.

melo23Estação B. Qual é o nome do vídeo?

Sonhos pequenosO uso de opções binárias é o mesmo, apenas substitua os parâmetros dentro do link. Var BUY = "comprar" Var SELL = "Sell" var LONG = "longo" var SHORT = "short" var COVER_LONG = "cover_long" var COVER_SHORT = "cover_short" (em inglês) long é a posição de abertura de múltiplos cabeçalhos, short é a posição de abertura de cabeçalhos, cover_long é a posição de abertura de múltiplos cabeçalhos, cover_short é a posição de abertura de cabeçalhos, cover_long é a posição de abertura de múltiplos cabeçalhos, cover_short é a posição de abertura de cabeçalhos. Não. https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755, "buy:0.02"] Não. O link Buy é substituído por outro.

Sonhos pequenosAdicionar dois alarmes à TV. Um mais barato e um mais vazio.

Sug210Se você quiser que a tela seja mais larga e mais longa ao mesmo tempo, ou seja, a configuração do sinal é cover_long:10 e short:10, mas a TV pode executar apenas um sinal, isso não é um erro?

Sonhos pequenosA instrução de venda de futuros não é mais uma instrução de venda de futuros.

Sonhos pequenosO contrato de configuração de futuros é executado, e os parâmetros de estratégia incluem o comando long, cover_long, etc. no url do webhook configurado na TV.

chave986Isso é o código de operação para a opção de opções binárias, por favor pergunte a opção de opções binárias deve ser um código de reescrever.

Sonhos pequenosO vídeo do tutorial pode ser visto aqui, na estação B.