TradingViewWebHook estrategias de ejecución de señales (enseñanza)

El autor:Un sueño pequeño., Fecha: 28 de abril de 2020 17:01:35
Las etiquetas:EstudioAyudados en el comercio

Artículo relacionado:https://www.fmz.com/bbs-topic/5533Enlace al video de la estación B:https://www.bilibili.com/video/BV1Wk4y1k7zz/

  • Actualizado el 29.7.2020 Añadir SPK y BPK dos instrucciones, respectivamente: vender posiciones abiertas después de vender posiciones abiertas y comprar posiciones abiertas después de comprar posiciones abiertas.

/*
- 交互命令字符串格式
  action:amount
  action: buy , sell , long , short , cover_long , cover_short, spk , bpk
- 交易所类型
  eType变量取值: 0 spot , 1 futures

- TV文档链接
  https://www.tradingview.com/pine-script-docs/en/v4/Quickstart_guide.html
  https://cn.tradingview.com/chart/8xfTuX7F/

- TV webhook 发送请求
  https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"action:amount"]

- 引用类库
  引用数字货币交易类库
*/

// 参数
// var IsMarketOrder = false 
// var QuotePrecision = 2
// var BasePrecision = 2

// 期货参数
// var Ct = ""


// 全局变量
var BUY = "buy"
var SELL = "sell"
var LONG = "long"
var SHORT = "short"
var COVER_LONG = "cover_long"
var COVER_SHORT = "cover_short"
var SPK = "spk"
var BPK = "bpk"


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 if (action == SPK) {   // 卖出平多仓,卖出开空仓
                    exchange.SetDirection("closebuy")
                    var tradeInfo1 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    exchange.SetDirection("sell")
                    var tradeInfo2 = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } else if (action == BPK) {   // 买入平空仓,买入开多仓
                    exchange.SetDirection("closesell")
                    var tradeInfo1 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    exchange.SetDirection("buy")
                    var tradeInfo2 = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
                    tradeInfo = [tradeInfo1, tradeInfo2]
                } 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)
    }
}



Relacionados

Más.

el superón¿Puedes traducirlo y ponerte en contacto con V:maybeyeah?

Se trata de un proyecto de investigación.¿Qué bolsas apoya esto?

Se trata de un proyecto de investigación.¿Cuál es el problema de configuración? ¿Cuál es el problema de configuración?

¿Qué es esto?ReferenceError: 'QuotePrecision' no está definido en el principal (__FILE__:13)

¿ Qué pasa?Pregunte si sólo se puede configurar la cantidad en el contrato de transacción, ¿cómo escribir si cada vez que se llenan las bolsas?

15937556103¿Puede el profesor enviar una estrategia completa sobre el contrato?

15937556103/upload/asset/203b175e3c2c22ac9681c.png /upload/asset/203b175e3c2c22ac9681c.png /upload/asset/203b175e3c2c2c22ac9681c.png /upload/asset/203b175e3c2c2c22ac9681c.png /upload/asset/203b175e3c2c2c2c22ac9681c.png /upload/asset/203b175e3c2c2c22ac9681c.png ¿Por qué siempre ha sido así?

Tobey2022Hola, ¿puedes poner varias transacciones en un solo bot? y luego la URL de la advertencia añade el nombre de la transacción para que un robot ejecute varias transacciones en el bot

el 7 de marzolong,short,cover_long,cover_SHORT, ¿se añade el hook por separado?

¿Qué es esto?¿Qué significa esto, los mercados de futuros no apoyan, quiero hacer un contrato perpetuo de Bitcoin BTC_USDT?

¿Qué es esto?¿Qué significa esto, los mercados de futuros no apoyan, quiero hacer un contrato perpetuo de Bitcoin BTC_USDT?

¿Qué es esto?/cargar/activo/1cd7a606f646b8c0d32be.png

Al revés de la Q.¿Puedes hacer un video educativo sobre cómo agregar y configurar contratos de futuros, mejor con más detalles?

el azúcar210/upload/asset/125e8fed0f51ab1f8122e.jpg Error en la instrucción spk

El cielo nocturno¿Cómo solucionar el problema de que TV emite una alerta y FMZ no recibe la señal ocasionalmente? En particular, dos políticas de TV indican la señal a dos robots de FMZ al mismo tiempo, y de vez en cuando uno de los robots no recibe. Y se ha registrado dos cuentas de TV para enviar, todavía puede ocurrir este problema, aunque el servidor alojado por FMZ es el mismo.

La península no está fríaSpk, bpk, ¿quieres sumar después? Si la señal de TV tiene varias alarmas de más de una orden, el número total de ordenes de más de una vez puede abrirse en frente de un plano, como una lista vacía.

el melo23Los contratos multiplicados donde elegir

Un sueño pequeño.Mira los parámetros de la política, si añades un objeto de un mercado de futuros, debes establecer un contrato. De lo contrario, el robot no sabe qué contrato manejar.

¿ Qué haces?Hola, ¿por qué el contrato de ct está en blanco?

Un sueño pequeño.Todo es posible, pero los parámetros y la configuración del hook en el televisor pueden ser ajustados según la variedad que se haga.

Un sueño pequeño.El pago de la factura del precio del mercado al instante, el siguiente importe es el importe.

Un sueño pequeño.Creo que te equivocaste, y después de revisar la documentación de la API, la política funciona correctamente.

¿Qué es esto?Si cambias la clave de nuevo, no es necesario copiar la política completa para poder ajustarla.

Un sueño pequeño.El código 1 es la clave de la API equivocada, comprueba.

¿Qué es esto?Ahora estoy probando dentro de la plataforma para poder hacer pedidos, pero con una llamada de extensión de API, el error se devuelve, code:1, data: [], y yo estoy accediendo directamente a través de un enlace, similar a un navegador que abre un enlace.

Un sueño pequeño.No sólo hay que copiar el código, hay que copiar la política completa.

Un sueño pequeño.La TV envía señales, escribe cuánto y la estrategia cuánto.

Un sueño pequeño.Esta estrategia en sí misma es un ejemplo perfecto de cómo puedes ejecutar futuros si usas mal el comando, comprueba.

Un sueño pequeño.Puede ejecutar futuros, el comando que usaste en la llamada de webhook está mal, para usar el comando de futuros, lee el código cuidadosamente.

Tobey2022 好的,已经在众包板块发布了信息,期望你的成果和合作,thanks.

Un sueño pequeño.Esto no cambia, se puede publicar información en bloques multinacionales, y algunos desarrolladores pueden recogerla.

Tobey2022¿Puede enviarte directamente la modificación? porque los demás pueden estar familiarizados con ella por un tiempo.

Un sueño pequeño.En la plataforma hay una sección de crowdsourcing donde puedes publicar tus necesidades.

Tobey2022@ChiloChilo Dream, ¿puedes modificar una versión de esta estrategia, si es posible, por supuesto, puedes pagar para comprarla, espero tus resultados y respuestas, gracias.

Un sueño pequeño.Sí, pero hay que cambiar esta estrategia.

Un sueño pequeño.No entiendo muy bien lo que quieres decir.

el 7 de marzoYo he configurado cuatro alertas en long, short, coverlong, covershort, pero como la estrategia en sí misma no es el estudio, las cuatro instrucciones se activan al mismo tiempo...

el 7 de marzo¿Cómo diferenciar? ¿Distinguir entre largo y corto?

Un sueño pequeño.En la página web del hook de alerta, se puede distinguir en la URL.

el 7 de marzoSe encontró un problema, solo se pueden recibir alertas de trading de indicadores de tradingview, pero la estrategia que escribí, que establece 4 alertas diferentes, pero que no parece ser reconocible, cuando se produce la señal, se abren las cuatro señales al mismo tiempo.

Un sueño pequeño.Envío de petición de alerta en TV ¿Por qué no lo haces? En la actualidad, la mayoría de los usuarios de la red están conectados a los servidores de acceso a Internet. ¿Por qué no lo haces? En el lugar de acción, ¿qué instrucciones escribes y qué instrucciones recibe el robot? Por ejemplo: ¿Por qué no lo haces? En la actualidad, la mayoría de los usuarios de la red están conectados a los servidores de acceso a Internet. ¿Por qué no lo haces?

Un sueño pequeño.Veamos el tutorial inicial de FMZ para operar la cuenta de un mercado de futuros, configurar el mercado de futuros y luego agregar objetos de mercado de futuros al robot.

¿Qué es esto?/cargar/activo/1ccc5603d54593dcba809.png

¿Qué es esto?He cambiado estos lugares, Dios me ayude a ver dónde está mal, no voy a añadir objetos de los mercados de futuros, los parámetros establecen contratos, permanentemente es un swap, el valor de la moneda es XXX_USD, el valor de U es XXX_USDT.

Un sueño pequeño.Añade el objeto de un mercado de futuros, establece un contrato en los parámetros, el permanente es un swap, el valor de la moneda es XXX_USD, el valor de U es XXX_USDT.

Un sueño pequeño.En el caso de la SPK, el usuario debe verificar si puede llamar al SPK sin tener el stock.

Un sueño pequeño.La forma de conexión directa de TV se puede encontrar en la biblioteca de la plataforma FMZ, en https://www.fmz.com/digest-topic/5969.

Un sueño pequeño.El nivel de apalancamiento se puede ajustar en el mercado de valores. O puede ajustar el nivel de apalancamiento antes de realizar el pedido en el código de la estrategia.

Un sueño pequeño.Si no, no sé qué contrato manejar.

Un sueño pequeño.¿Por qué no lo haces? En la actualidad, la mayoría de los usuarios de la red están conectados a los servidores de acceso a Internet. ¿Por qué no lo haces? action se escribe como spk, bpk

El cielo nocturnoMe gustaría saber cómo se puede configurar para SPK y BPK, por TV.