Compra de señales de alarma de TradingView con la API ampliada de la plataforma de negociación cuantitativa de los inventores (recomendado)

El autor:Un sueño pequeño., Creado: 2020-04-29 17:08:27, Actualizado: 2023-10-08 19:56:04

img

Compra de señales de alarma de TradingView con la API ampliada de la plataforma de negociación cuantitativa de los inventores

Enlace de video de la estación B

La API de extensión de la plataforma de comercio cuantitativa de Inventor ha sido recientemente actualizada, y la actualización soporta un modo de acceso directo para que sea fácil realizar operaciones automáticas con señales de alerta de TradingView enviadas a los robots de la plataforma de comercio cuantitativa de Inventor. Si los socios no saben qué es la API de extensión, escuchen mis detalles.

Inventor de la plataforma de intercambio cuantitativo de extensión de la API

Enlaces a las secciones relacionadas de la API de los inventores

La función principal de la API de extensión es proporcionar una interfaz a las funciones de la plataforma de negociación cuantitativa de los inventores de operaciones programáticas, como iniciar el robot en serie al mismo tiempo, iniciar, detener y leer los detalles de la información del robot. Usamos la API de extensión de la plataforma de negociación cuantitativa de los inventores para realizar operaciones de señales de alarma de InventorTradingView.CommandRobot(RobotId, Cmd)La interfaz puede enviar instrucciones de interacción a un robot con un ID especificado, y el robot puede ejecutar las operaciones correspondientes (por ejemplo, comprar, vender, etc.) al recibir las instrucciones.

Para usar la API de extensión, primero necesitas crear tu propia cuenta de inventor.API KEY: img API KEYLa llave secreta esaccess keyysecret key¿Qué es lo que está sucediendo?API KEYEs decir, el operador programático es el inventor de la clave de la plataforma de comercio cuantitativa, por lo que debe ser guardado adecuadamente y nunca filtrarse.API KEYEn la tabla anterior, por ejemplo, sólo se puede dar a esteAPI KEYAcceso otorgadoCommandRobot(RobotId, Cmd)Permisos de la interfaz, por razones de seguridad en este ejemplo, por favor, sólo dé la extensión de FMZAPI KEYEl otorgamientoCommandRobot(RobotId, Cmd)Los permisos de acceso a la interfaz.

Modelo de acceso directo a la API extendida

El modo de acceso directo esAPI KEYSe puede escribir directamente en la consulta de la URL, por ejemplo, la URL de la API de extensión de la plataforma de comercio cuantitativa de inventores:

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

En el caso dehttps://www.fmz.com/api/v1La dirección de la interfaz es:?Y luego...Query, el parámetroaccess_keyEl ejemplo de la clave secreta se indica con xxx (en el caso de la clave de acceso de la cuenta de FMZ), el parámetrosecret_keyLa clave secreta se indica con el parámetro yyyyy (secret_key para su propia cuenta).methodEl nombre de la API de extensión es el nombre específico de la interfaz a la que se quiere acceder.argsPara llamarmethodLos parámetros de la interfaz.

Usamos TradingView como fuente de señales para enviar órdenes de negociación a los inventores de bots de plataformas de comercio cuantitativas, que en realidad sólo utilizan un bot de trading.CommandRobotEste es el interfaz.

Visión de operaciones

Primero tienes que tener una cuenta de nivel TradingView Pro, el nivel básico es no poder usar la función WebHood en la alarma.

img

Añadir un indicador a un gráfico puede ser cualquier otro algoritmo de script. Aquí, para facilitar la demostración, usamos los más comunes.MACDIndicador, y luego configurar el ciclo de la línea K para 1 minuto (para que la señal se desencadene más rápidamente, para una demostración fácil).

img

En el gráfico, haga clic en el botón derecho y seleccione "Agregar alertas" en el menú emergente.

img

Configuración en la ventana "Alerta"WebHookEn este punto, sin necesidad de ajustes precipitados, hemos puesto en marcha un robot cuantificado por el inventor que controla las señales del lado de la plataforma.

Robots que hacen señales de vigilancia

El código fuente de la estrategia:

// 全局变量
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)
    }
}

El código fuente de la estrategia

El código de la estrategia es muy simple, detectable.GetCommandEl valor de retorno de la función, cuando hay un mensaje interactivo que se envía al programa de política, es el valor de retorno de la función.GetCommandLa función devuelve el mensaje, y el programa de políticas realiza las operaciones correspondientes según el contenido del mensaje. La política tiene un botón de interacción configurado para probar las funciones de interacción, como ejecutar esta política y configurar el robot para el inventor de la plataforma de intercambio de simulación de cuantificación.WexApp

img

Haga clic en el botón de interacción y pruebe el bot para recibir las órdenes de compra.

img

Se puede ver que la cadena de comandos que recibe el robot es:buy:0.01

Solo tenemos que activar una alerta de TradingView cuando WebHook solicita en la URL el acceso al inventor de la API de extensión de la plataforma de comercio cuantitativa.CommandRobotEn la interfaz, los parámetros que se llevan son:buy:0.01¿Qué es lo que está pasando?

Configurar el WebHook para TradingView

Volviendo a TradingView, completamos la URL de WebHook y le damos el nombre de la página.access_keysecret_keyLos parámetros se rellenan a sí mismos.API KEYmethodLo único que queremos hacer es visitar la ciudad.CommandRobotLa extensión de la interfaz de API es una herramienta que permite a los usuarios de la red de conexión a Internet acceder a las aplicaciones de Internet.argsEl parámetro es[机器人ID,命令字符串]En el caso de los robots, el ID del robot se puede obtener directamente a través de la página del robot, como se muestra:imgEsta vez, cuando activamos la señal, compramos 0.02 monedas y la cadena de comandos es:"buy:0.02"; así que la URL de WebHook está terminada. Este método sólo admite escribir señales en la URL, si desea obtener el contenido de los mensajes de alerta que pueden ser emitidos por la propia política de TV, consulte el siguiente enlace.https://www.fmz.com/api#直接验证

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

En TradingView se puede configurar:

img

Esperar el disparo de la señal... Esperar el disparo de la señal... 等待信号触发.

img

El robot recibió una señal:

img

Esto permite utilizar las ricas funciones de gráficos de TradingView, los algoritmos de indicadores y los robots estratégicos de la plataforma de comercio cuantificados por los inventores para realizar las operaciones automatizadas que deseas, lo que reduce la dificultad en comparación con el transporte de estrategias de TradingView a JavaScript o Python.

El código de la estrategia de "robot de monitoreo bajo señal única" es solo para investigación de aprendizaje, el uso en el disco real requiere ajustes optimizados por sí mismo, soporta futuros, se recomienda establecerlo en el modo de lista de precios del mercado, para más detalles, vea los parámetros del código de la estrategia. Si tiene alguna pregunta, le sugiero que deje un comentario.


Relacionados

Más.

Pw1013Por favor, si puede conectar a la bolsa de Deepcoin, muchas gracias.

el mismo número de unidades.¿Cuándo los inventores podrán ganar contratos de futuros con monedas en pareja?

el mismo número de unidades.¿Cuándo los inventores podrán ganar contratos de futuros con monedas en pareja?

Sonríe.Usted es un gran hombre, la estrategia de contrato que hice, a veces después de abrir una posición a la mitad de la compra, entonces cuando tengo que liquidar la última, ¿cómo se puede nivelar todas las posiciones con cover_long (porque no sé cuantas veces se va a agregar en el medio), lo que el 1 en "cover_long:1" cambia, se arrodilla en el código

el tipo de producto:Mi mensaje de la estrategia de TV es el siguiente: Orden {{strategy.order.action}}@{{strategy.order.contracts}} transacción {{ticker}}; nueva posición estratégica {{strategy.position_size}} Si quiero hacer un contrato, ¿debo añadir cuatro alertas? ¿Puede webhook citar el campo de la política? ¿O debo escribirlo antes de morir? ¿Cómo pueden las cuatro formas de webhook long, cover_long, cover_short, y cover_short relacionarse con el mensaje de la alerta?

Cuantificación de la microbiologíaQuiero que el texto de noticias de tv también pase por el campo, lamentablemente no puedo llevarlo, sólo puedo llevar parámetros de url, no para la información de tradingview.

NingPregunta: [1234567, "buy:50"] Este es un BTC comprado con un valor de 50 usdt. Pero cuando vendí, [1234567, "sell: 50"] mostró el error de balance: Sell ((-1, 50): insufficient balance. Entonces, ¿cómo puedo configurar para vender todo el BTC que compré por primera vez?

¿Qué es?¡Esto es muy funcional!

el añoHola profesor, he seguido los pasos que usted me ha dado, es que el servidor seleccionado es el servidor que lleva el inventor, pero el televisor ya emitió una señal, pero el robot del lado del inventor no está ejecutando la orden de la señal, ¿es por el servidor?

¿Qué quieres decir?Es genial, no lo hagas demasiado rápido.

Al revés de la Q./upload/asset/19a5ed382b58652c4dd19.png /upload/asset/19b0ea9ffa5100a3594f3.png /upload/asset/19a806e32e9b589696fa0.png /upload/asset/19a5005173219393cf2d9.png ¿Por qué el código del contrato que añadí siguiendo los pasos sigue mostrando un error, es el paso equivocado?

el wuxianPor ejemplo, si la política de tv tiene instrucciones de varios encabezados en blanco, ¿se abrirá, aumentará o parará según las instrucciones de la política de tv?

PY008¿Qué dice el código de un contrato de futuros?

el melo23¿Dónde está el video tutorial del futuro?

el azúcar210¿Qué bolsas pueden apoyar el Bitcoin?

Yuanlijie¿Cómo se hizo el contrato? Programar es un poco difícil, no entiendo el inglés, excepto la ortografía.

¿Qué quieres decir?Una gran ola de blanco se expande inmediatamente, esto es demasiado fuerte.

el fuego del cieloEs un gran paso, y muy sencillo.

La homilíaQué bueno.

Pw1013¿Te parece que eres muy capaz?

Hexiao49¿Pueden ayudarme a ver si hay un problema en mi comunidad?

Un sueño pequeño.Sin una API, no hay manera de hacerlo.

Hexiao49¿Deep no tiene el mismo API?

Un sueño pequeño.Esto depende de la cantidad de usuarios que lo deseen.

Un sueño pequeño.Este bloqueo de pérdidas requiere una modificación concreta de la estrategia, no una o dos palabras. FMZ es más fácil de ejecutar guiones de PINE.

el mismo número de unidades.Maestra: Me gustaría añadir la función de suspensión de bloqueo después de abrir la cuenta en el robot que has publicado, ¿dónde se añade?

Un sueño pequeño.Sí, también le pregunté a su servicio de atención al cliente, que ha eliminado el API sin contrato.

el mismo número de unidades.Eso no es posible.

Un sueño pequeño.¡Esto es una interfaz de API en vivo, jefe! El FMZ ya está apoyado.

el mismo número de unidades.https://www.coinw.fit/front/API Este sitio web tiene un API, se necesita una escala para abrir /upload/asset/2986424014eb005f8cda2.png

el mismo número de unidades.https://www.coinw.fit/front/API Esta página web tiene una API que necesita una escalera para abrir.

Un sueño pequeño.No puedo abrir esta dirección. No hay documentación de la API contratada.

el mismo número de unidades.Enlace de entrada de la API: https://coinw.pw/API

Un sueño pequeño.Esta es la API instantánea de coinw, que ya está soportada por FMZ instantánea de coinw, y no tienen ningún contrato de interfaz.

el mismo número de unidades.¿Podemos vincularnos nosotros mismos con el protocolo general? Sólo pedimos que se complete la dirección IP, ¿qué dirección IP se debe llenar? Enlace de entrada de la API: https://coinw.pw/API

Un sueño pequeño.¿Está usted seguro de que los contratos de divisas tienen una interfaz API?

el mismo número de unidades.Sí, maestra, si accedes, habrá mucha accesibilidad cuantitativa, porque el bitcoin gana el 80% de la comisión.

Un sueño pequeño.Hola, ¿necesitas un contrato para acceder a esta bolsa de coins?

Dos y dos de las viejas.Por favor, ¿lo has resuelto? Yo también me he encontrado con este problema.

el añoHermano, la estrategia de TV para vincular directamente a FMZ, ¿has tenido éxito en esto?

Un sueño pequeño.Esto se puede diseñar específicamente, por ejemplo, si usted diseña la solicitud en cover_long: 1, cambiando a cover_long: all, para que en esta política de escucha de FMZ, modifique el tiempo de recepción de la interacción cover_long, para juzgar si es all, todo está en equilibrio. Para lograr esto, debe modificar esta política. ¿Por qué no lo haces? // Variables globales var BUY = "buy" // Nota: el comando para el producto en cuestión var SELL = "sell" // Comando para uso inmediato var LONG = "long" // El comando para el futuro var SHORT = "short" // orden para el futuro var COVER_LONG = "cover_long" // el comando para el futuro var COVER_SHORT = "cover_short" // El comando para el plazo ¿Qué es esto? ¿Qué es esto? ¿Qué es eso? ¿Qué es esto? } else si (eType == 1) { Var tradeInfo = cero Var ticker = _C (exchange.GetTicker) y el nombre de la aplicación es var. Si (acción == LONG) { exchange.SetDirection (("comprar")) también está disponible. ¿Qué es el mercado? ¿Qué es el mercado? ¿Qué es el mercado? } else si (acción == SHORT) { exchange.SetDirection (("sell") es el nombre de una aplicación de intercambio. ¿Qué es el mercado? ¿Qué es el mercado? ¿Qué es el mercado? } else if (action == COVER_LONG) { // COVER_LONG es el acrónimo de esta acción y se introduce si aquí // Aquí se determina más concretamente los parámetros como all, para hacer el diseño de operaciones de todos los planos, específicamente escribir En el caso de los usuarios de Exchange.SetDirection (en inglés), el nombre de la aplicación es "closebuy". ¿Qué es el mercado? ¿Qué es el mercado? ¿Qué es el mercado? } else if (acción == COVER_SHORT) { En el caso de los usuarios de Exchange.SetDirection (en inglés), el nombre de la aplicación es Exchange.SetDirection. ¿Qué es el mercado? ¿Qué es el mercado? ¿Qué es el mercado? ¿Qué quieres decir? Log (("Las bolsas de futuros no son compatibles!", "#FF0000") ¿Por qué no? Si (tradeInfo) { Log (("tradeInfo:", tradeInfo) ¿Por qué no? ¿Por qué no? lanzar "eType error, eType:" + eType ¿Por qué no? Acc = _C (exchange.GetAccount) ¿Por qué no? ¿Por qué no lo haces?

yidai¿Se ha resuelto la pregunta?

Un sueño pequeño.La estabilidad de las alarmas de TV no es muy clara, esto depende de la TV.

¡ Qué bien!args=[191755, "buy: 0.02"], aquí se añade un parámetro, se puede hacer más y hacer algo al mismo tiempo. ¿Será mejor omitir uno de los parámetros? ¿Se producirán varias alarmas de televisión por accidente?

Un sueño pequeño.Para recibir las solicitudes de TV con la API de extensión de FMZ, puede acceder al contenido de Body, consulte: https://www.fmz.com/api# verificación directa Ahora, en la URL de la solicitud de TV, los datos en el cuerpo pueden ser recibidos.

1131717062Por favor, pregunte cómo se construye una alerta de liquidación abierta en tv, estrategia, webhook url

Un sueño pequeño.Para recibir las solicitudes de TV con la API de extensión de FMZ, puede acceder al contenido de Body, a través de: https://www.fmz.com/api#%E7%9B%B4%E6%8E%A5%E9%AA%8C%E8%AF%81

Cuantificación de la microbiología https://www.fmz.com/strategy/221850,看到了,感谢大神!!

Un sueño pequeño.Hay una forma directa de acceder a la información en el cuerpo de la solicitud, buscándola en la búsqueda de la plaza estratégica.

Un sueño pequeño.En el caso de los medios de comunicación, la política es cambiar a 50 divididos por el precio de entonces.

Un sueño pequeño.Si se recibe un comando, el bot se pone en el bot de estado, en el bot de última vez que se recibió el comando, donde se muestra el comando recibido. Si no está configurado correctamente, verifique si está configurado correctamente.

el añoLa configuración es real de Binance, no hay ninguna sugerencia en el registro del robot, la TV está ahí para activar las condiciones y configurar en el webhook, ¿no?

Un sueño pequeño.Para ver la pregunta concreta, ¿el intercambio configurado en su robot es efectivo, futuro? ¿Qué muestra el registro del robot?

Un sueño pequeño./upload/asset/16afbca03eec23516d37.png /upload/asset/16afbca03eec23516d37.png /upload/asset/16afbca03eec23516d37.png /upload/asset/16afbca03eec23516d37.png Usted ha añadido el intercambio equivocado.

Un sueño pequeño.Mi hermano, la API KEY tiene que ser codificada, la seguridad primero.

Al revés de la Q./upload/asset/19aee891571def2a6c4f3.png Tengo todos los permisos de API abiertos en Binance, también tengo una cuenta de contratos abierta, pero siempre no puedo agregar un mercado de futuros cuando la estrategia se ejecuta, ¿es un problema en el código?

Un sueño pequeño.En el registro aparece Binance explicando que el objeto de intercambio agregado es Binance Cash. Pero su política tiene el código de contrato de futuros, por lo que hay un error.

Un sueño pequeño.Se requiere establecer una alarma en la vista de trading, y se puede realizar un cierre de posición abierta.

Un sueño pequeño.https://www.fmz.com/api#exchange.setcontracttype... hay una descripción de esta función que puedes consultar.

Un sueño pequeño.En el inicio de este artículo hay un enlace.

el melo23Estación B. ¿Cómo se llama el video?

Un sueño pequeño.El uso de futuros al contado es el mismo, solo que el parámetro dentro del enlace debe ser reemplazado. var BUY = "comprar" Var SELL = "vendemos" Var LONG es "largo". var SHORT = "corto" Var COVER_LONG = "cover_long" es el nombre de la página donde se encuentra el código. Var COVER_SHORT = "cover_short" (en inglés) es el nombre de una página web. Long es para abrir varias posiciones, Short es para abrir varias posiciones, Cover_long es para abrir varias posiciones, Cover_short es para abrir varias posiciones, y Cover_short es para abrir varias posiciones. ¿Por qué no lo haces? https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755, "buy:0.02"] ¿Por qué no lo haces? En el siguiente enlace, puedes sustituir el buy por otro.

Un sueño pequeño.Se añaden dos alarmas en el televisor: una más barata y una más abierta.

el azúcar210Si se quiere que el televisor tenga más de una posición, es decir, la configuración de la señal es cover_long:10 y short:10, pero en el televisor solo se puede ejecutar una señal, ¿no se pierde la lista?

Un sueño pequeño.En el caso de los futuros, las instrucciones de los futuros no son de venta sino de compra.

Un sueño pequeño.El contrato de configuración de futuros está listo, en los parámetros de estrategia, además, en la url del webhook configurada en el televisor, se usan los comandos de los futuros, como long, cover_long, etc.

La clave es 986.Ese es el código de operación de los futuros establecidos, por favor pregunte si los futuros deberían tener un código de reescritura.

Un sueño pequeño.Hay un video tutorial para ver en la estación B.