es

Conecta tu estrategia de TradingView con Kryll

Con la llegada de los bloques Webhooks en Kryll, los usuarios ahora pueden impulsar sus estrategias para permitir una plataforma externa o personalizada. En este artículo, le mostramos cómo ejecutar un algoritmo de estrategia Kryll a través de PineScript (un lenguaje de programación desarrollado por TradingView para la creación de estrategias e indicadores).

Prerequisito: Debes tener al menos una cuenta Pro en TradingView  para poder generar alertas de Webhook.

Creando una estrategia de TradingView

Utilizaremos una estrategia de ejemplo de TradingView desarrollada en Pinescript v5.

En este ejemplo, la estrategia utilizará dos indicadores técnicos que no están disponibles en Kryll: la intersección de dos medias móviles de RSI y el indicador Vortex. Dependiendo de la configuración de estos indicadores, la estrategia colocará órdenes en largo (LONG), cortos (SHORT) o cerradas (CLOSE).

//@version=5
// KRYLL Webhook - Tradingview strategy Exemple
strategy("Demo Strat", overlay=true)

// inputs zone
rsi_length =  input.int(7, title="RSI Length", minval=2)
rsi_fma_length = input.int(7, title="Fast RSI MA Length", minval=2)
rsi_sma_length = input.int(14, title="Slow RSI MA Length", minval=4)
rsi_neutral =  input.int(20, title="RSI neutral zone", minval=2)
vortex_period = input.int(14, title="Vortex Length", minval=2)

// Vortex indicator computation
VMP = math.sum( math.abs( high - low[1]), vortex_period )
VMM = math.sum( math.abs( low - high[1]), vortex_period )
STR = math.sum( ta.atr(1), vortex_period )
VIP = VMP / STR
VIM = VMM / STR

// Fast and Slow RSI Moving Average computation
rsi = ta.rsi(close, rsi_length)
rsiFMA = ta.sma(rsi, rsi_fma_length)
rsiSMA = ta.sma(rsi, rsi_sma_length)

// Fast and Slow RSI cross detection
co = ta.crossover(rsiFMA, rsiSMA)
cu = ta.crossunder(rsiFMA, rsiSMA)


if (not na(rsiSMA))
    if (VIP < VIM)
        if( cu )
            strategy.entry("trade", strategy.short, comment="Short")
        else
            strategy.close(id="trade", comment="Close")
    if (VIP > VIM)
        if( co )
            strategy.entry("trade", strategy.long, comment="Long")
        else
            strategy.close(id="trade", comment="Close")

Estudio de una estrategia de Tradingview

Esta estrategia genera 3 tipos de órdenes dependiendo de la configuración de los indicadores utilizados.

strategy.entry("trade", strategy.long, comment="Long")
The strategy places a long
strategy.entry("trade", strategy.short, comment="Short")
The strategy launches a short
strategy.close(id="trade", comment="Close")
The strategy closes a position

Tendremos que crear una estrategia de Kryllque esperara por una de estas 3 señales para ejecutar la correspondiente operación. En esta estrategia de TradingView, podemos ver que una posición en largo (long) o en corto (short) puede ser seguida por su opuesto sin pasar primero por un cierre. La estrategia deberá ser diseñada correctamente.

Implementación de la estrategia en Kryll

La implementación de esta estrategia en Kryll que será dirigida via Webhooks podría verse así.

El bloque OR espera por una de las 3 señales

Cada bloque webhook proveerá una URL genérica a la estrategia a Mensaje de carga útil específico para cada bloque. Esta información debe ser provista a TradingView a través del código pinescript.

En este punto nuestra estrategia está completa, podemos incluso lanzarla.

Adaptación de la estrategia de TradingView

Ahora pasaremos a modificar tu estrategia de TradingView para permitirle enviar señales a la estrategia de Kryll.

En primer lugar, modifiquemos el comienzo de la estrategia para añadir algunas declaraciones útiles para lo siguiente:

//@version=5
// KRYLL Webhook - Tradingview strategy Exemple
strategy("Demo Strat", overlay=true)

// Kryll Webhook declarations
payload_start="{\"action_id\" : \""
payload_end="\",\"pair\":\""+syminfo.ticker+"\"}"
kryll_action=""
payload=""
This information will be used for the construction of the messages to be sent

Agreguemos las variables que nos permitirán almacenar y usar el "action_id" de nuestros diferentes bloques de Webhook:

id_block_long = "put here your block id"
id_block_short = "put here your block id"
id_block_close = "put here your block id"
Add your block id variables at the beginning of your script for easier maintenance

Finalmente, modifiquemos algunas llamadas de entrada/salida/cierre de posición (strategy.entry y strategy.close) para que la estrategia de TradingView pueda construir y enviar el mensaje correcto a Kryll.

if (not na(rsiSMA))
    if (VIP < VIM)
        if( cu )
            payload := payload_start + id_block_short + payload_end
            strategy.entry("trade", strategy.short, comment="Short", alert_message=payload)
        else
            payload := payload_start + id_block_close + payload_end
            strategy.close(id="trade", comment="Close", alert_message=payload)
    if (VIP > VIM)
        if( co )
            payload := payload_start + id_block_long + payload_end
            strategy.entry("trade", strategy.long, comment="Long", alert_message=payload)
        else
            payload := payload_start + id_block_close + payload_end
            strategy.close(id="trade", comment="Close", alert_message=payload)
We build the payload with the right block ids then the message is added to the alert via the alert_message variable

Resultado Final

Así es como se ve el script finalizado.

//@version=5
// KRYLL Webhook - Tradingview strategy Exemple
strategy("Demo Strat", overlay=true)

// Kryll Webhook declarations
payload_start="{\"action_id\" : \""
payload_end="\",\"pair\":\""+syminfo.ticker+"\"}"
kryll_action=""
payload=""

id_block_long = "8f94aaf9-0f37-4730-8565-a40c8f151921"
id_block_short = "8f94aaf9-2f30-7430-2364-519a40c8f121"
id_block_close = "8f94aaf9-1a37-3540-5431-c8f121519a40"

// inputs zone
rsi_length =  input.int(7, title="RSI Length", minval=2)
rsi_fma_length = input.int(7, title="Fast RSI MA Length", minval=2)
rsi_sma_length = input.int(14, title="Slow RSI MA Length", minval=4)
rsi_neutral =  input.int(20, title="RSI neutral zone", minval=2)
vortex_period = input.int(14, title="Vortex Length", minval=2)

// Vortex indicator computation
VMP = math.sum( math.abs( high - low[1]), vortex_period )
VMM = math.sum( math.abs( low - high[1]), vortex_period )
STR = math.sum( ta.atr(1), vortex_period )
VIP = VMP / STR
VIM = VMM / STR

// Fast and Slow RSI Moving Average computation
rsi = ta.rsi(close, rsi_length)
rsiFMA = ta.sma(rsi, rsi_fma_length)
rsiSMA = ta.sma(rsi, rsi_sma_length)

// Fast and Slow RSI cross detection
co = ta.crossover(rsiFMA, rsiSMA)
cu = ta.crossunder(rsiFMA, rsiSMA)

if (not na(rsiSMA))
    if (VIP < VIM)
        if( cu )
            payload := payload_start + id_block_short + payload_end
            strategy.entry("trade", strategy.short, comment="Short", alert_message=payload)
        else
            payload := payload_start + id_block_close + payload_end
            strategy.close(id="trade", comment="Close", alert_message=payload)
    if (VIP > VIM)
        if( co )
            payload := payload_start + id_block_long + payload_end
            strategy.entry("trade", strategy.long, comment="Long", alert_message=payload)
        else
            payload := payload_start + id_block_close + payload_end
            strategy.close(id="trade", comment="Close", alert_message=payload)

Creando una alerta en Tradingview

Creando una alerta en Tradingview

Una vez que hayas finalizado tu script, establece el par y la unidad de tiempo en la que deseas ejecutar tu estrategia de TradingView. En nuestro caso, estableceremos el par en ETH/USDT y una unidad de tiempo de 2 horas.

Luego ve al "Editor de Pine" para pegar nuestra estrategia y guardarla.

Agreguemos nuestra estrategia a través del botón "Indicadores" para que aparezca en el gráfico.

Con nuestro TradingView configurado, ahora creemos la alerta que nos permitirá enviar mensajes a nuestra estrategia a través de llamadas de webhook.

Para ello, hagamos click en el botón "Crear alerta" y configurémoslo: selecciona nuestra estrategia como condición, nombra nuestra alerta y configura el mensaje:

Siguiente, vamos a establecer la dirección URL del webhook. Encontrarás esta dirección URL  en uno de los bloques webhook de tu estrategia de Kryll.

Finalmente, haz click en Crear para validar la creación de tu alerta y podrás encontrar tu alerta en la lista de alertas de TradingView.

Permite que Kryll y TradingView operen por ti

En este punto, si tu alerta está activa en TradingView y tu estrategia se lanza en Kryll, las dos plataformas deben comunicarse.

Para ir más alla ...

Enriquece tus creaciones

El ejemplo descrito en este tutorial sigue siendo simple y podría enriquecerse añadiendo un Take Profit o un Stop Loss, que luego serían nuevos bloques de Webhook que conducirían a otro flujo.

Crea tus propios indicadores

La interfaz de TradingView y Kryll abre un número infinito de posibilidades para los usuarios de Kryll. ¡Ahora puedes crear tus propios indicadores técnicos, mezclarlos, clonar indicadores o estrategias de la comunidad de TradingView y usar todo esto para crear tus propias estrategias de trading automatizado!

Para ayudarte con esta tarea, aquí hay dos plantillas de estrategia que pueden servir como punto de partida para tus próximas operaciones de Spot y Futures.

//@version=5
// KRYLL Webhook - Tradingview strategy template
strategy("Kryll Spot Template", overlay=true)

payload_start="{\"action_id\" : \""
payload_end="\",\"pair\":\""+syminfo.ticker+"\"}"
kryll_action=""
payload=""
kryll_action="none"

id_block_buy = "put here your block id"
id_block_sell = "put here your block id"

// ----------------------- YOUR CODE HERE ---------------
// [...]
// In your code, set kryll_action to 'buy' or 'sell' mode, depending on the desired behavior.
//
// exemple
// kryll_action := 'sell'
// ----------------------- KRYLL FINAL CODE ---------------


if (kryll_action == "buy")
    payload := payload_start + id_block_buy + payload_end
    strategy.entry("trade", strategy.long, comment="Buy", alert_message=payload)

if (kryll_action == "sell")
    payload := payload_start + id_block_sell + payload_end
    strategy.entry("trade", strategy.close, comment="Sell", alert_message=payload)
Estrategia Spot (compra/venta)
//@version=5
// KRYLL Webhook - Tradingview strategy template
strategy("Kryll Futures Template", overlay=true)

payload_start="{\"action_id\" : \""
payload_end="\",\"pair\":\""+syminfo.ticker+"\"}"
kryll_action=""
payload=""
kryll_action="none"

id_block_long = "put here your block id"
id_block_short = "put here your block id"
id_block_close = "put here your block id"

// ----------------------- YOUR CODE HERE ---------------
// [...]
// In your code, set kryll_action to 'long', 'short' or 'close' mode depending on the desired behavior.
//
// exemple
// kryll_action := 'sell'
// ----------------------- KRYLL FINAL CODE ---------------


if (kryll_action == "long")
    payload := payload_start + id_block_long + payload_end
    strategy.entry("trade", strategy.long, comment="Long", alert_message=payload)

if (kryll_action == "short")
    payload := payload_start + id_block_short + payload_end
    strategy.entry("trade", strategy.short, comment="Short", alert_message=payload)

if (kryll_action == "close")
    payload := payload_start + id_block_close + payload_end
    strategy.entry("trade", strategy.close, comment="Close", alert_message=payload)
Estrategia de futuros(long/short/close)

Aprende más

Hay varios tutoriales disponibles si quieres obtener más información. El equipo de Kryll ha escrito varios otros artículos sobre este tema:


¡Gracias por seguir este tutorial! ¡A tus Webhooks!

Kryll.io

Sitio Web:https://kryll.io
Twitter:@kryll_es
Twitch:https://www.twitch.tv/kryll_es
Telegram EN:https://t.me/kryll_io
Telegram FR:https://t.me/kryll_fr
Telegram ES:https://t.me/kryll_es
Discord:https://discord.gg/PDcHd8K
Facebook:https://www.facebook.com/kryll.io
Youtube:https://www.youtube.com/c/KryllESLatam
TikTok:https://www.tiktok.com/@kryll.io
Soporte: support@kryll.io

Author image

About Seba Kryll ES

  • Argentina