Saltar a contenido

WebSocket Sample

Descripción general

El plugin WebSocket Sample permite la integración de datos en tiempo real en cTrader a través de las siguientes funcionalidades clave:

  • Conecta cTrader a un servidor WebSocket externo para recibir flujos de datos en tiempo real.
  • Muestra contenido en vivo como noticias o alertas de operaciones directamente en el Panel de símbolo activo usando un bloque de texto personalizado.
  • Actualiza automáticamente el panel con nuevos mensajes cuando se reciben, permitiendo información oportuna.

El plugin funciona a través de un panel configurable por el usuario. Permanece activo mientras cTrader Windows o Mac está en ejecución y libera automáticamente los recursos del sistema cuando se detiene.

Creación del plugin

Aprenda cómo crear, editar y construir plugins desde una plantilla o desde cero en nuestra guía paso a paso.

Puede encontrar el código del plugin WebSocket Sample en GitHub, o simplemente copiarlo a continuación.

Código de ejemplo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class WebSocketSample : Plugin
    {
        // Declaring our TextBlock that will display the news contents
        private TextBlock _textBlock = new TextBlock
        {
            Text = "Starting news feed...",
            FontSize = 20,
            FontWeight = FontWeight.ExtraBold,
            TextAlignment = TextAlignment.Center,
            Padding = new Thickness(5, 5, 5, 5),
        };

        // _webSocketClientOptions allow us to define several settings
        // such as the keep-alive interval of the WebSocket connection
        private static WebSocketClientOptions _webSocketClientOptions = new WebSocketClientOptions 
        {
            KeepAliveInterval = new TimeSpan(0, 1, 30),
            UseDefaultCredentials = true,
        };

        // Passing our _webSocketClientOptions to the WebSocketClient
        // constructor
        private WebSocketClient _webSocketClient = new WebSocketClient(_webSocketClientOptions);

        // This API is entirely fictional
        private readonly Uri _targetUri = new Uri("ws://amazingnews.com:8000");

        protected override void OnStart()
        {
            // Connecting to the API and sending the initial message
            _webSocketClient.Connect(_targetUri);
            _webSocketClient.Send("Hello");

            // Declaring a custom handler for the TextReceived event
            _webSocketClient.TextReceived += NewsReceived;

            // Adding our TextBlock as a child of a custom
            // AspBlock
            var aspBlock = Asp.SymbolTab.AddBlock("News");
            aspBlock.Height = 300;
            aspBlock.Child = _textBlock;
        }

        protected override void OnStop()
        {
            // The WebSocketClient must be disposed of in OnStop,
            // otherwise it will consume system resources
            _webSocketClient.Close(WebSocketClientCloseStatus.NormalClosure);
        }

        private void NewsReceived(WebSocketClientTextReceivedEventArgs args) 
        {
            // Updading the text inside the TextBlock on every
            // piece of news received
            if (args.Text.Length != 0) 
            {
                _textBlock.Text = args.Text;
            }
        }
    }        
}

Opciones de personalización

El plugin combina la configuración de WebSocket con elementos de la interfaz de usuario para entregar contenido de texto en vivo. A continuación se muestra un desglose de sus componentes clave y sus funciones:

Parámetro Descripción Valores posibles
Text Muestra el contenido inicial en el bloque de texto. Starting news feed…
AddBlock Agrega un bloque al Panel de símbolo activo. asp.symboltab.addblock(news)
_textBlock.Text Actualiza el bloque de texto con el mensaje WebSocket recibido. args.text
FontSize Establece el tamaño del texto. 16, 18, 20, etc.
FontWeight Define el grosor del texto. regular, bold, extrabold, etc.
TextAlignment Alinea el texto dentro del bloque de texto. left, centre, etc.
Padding Especifica el espacio alrededor del bloque de texto. (5, 5, 5, 5), (8, 8, 8, 8), etc.
aspBlock.Height Establece la altura del bloque personalizado en la interfaz de usuario. 300px, 350px, etc.
_targetUri Proporciona el punto final de WebSocket para el flujo de datos. wss://marketdata.tradermade.com/feedadv
KeepAliveInterval Define el intervalo para los pings de mantenimiento de WebSocket. (0, 1, 30) (horas, minutos, segundos)
_webSocketClient.Send Envía el mensaje de suscripción inicial al servidor WebSocket. {userkey:..., symbol:eurusd}
UseDefaultCredentials Configura los ajustes de autenticación para la conexión WebSocket. true o false

Nota

Asegúrese de que el servidor WebSocket admita el protocolo y los formatos de mensaje esperados por su implementación.

Casos de uso

WebSocket Sample proporciona una forma potente y flexible de ampliar cTrader con fuentes de datos en tiempo real. Admite una amplia gama de integraciones adaptadas a diversas necesidades de operación. A continuación se presentan casos de uso prácticos que demuestran cómo el plugin puede mejorar la experiencia de operación.

Caso de uso Escenario Valor
Fuentes de noticias Vea noticias económicas en tiempo real, titulares que mueven el mercado y eventos de última hora directamente en la plataforma. Le mantiene informado de las noticias de última hora que pueden afectar a los movimientos del mercado.
Datos de intercambio de criptomonedas Transmita actualizaciones de operaciones en vivo, tickers de precios, cambios en el libro de órdenes o alertas sobre volatilidad para activos cripto. Mejora el conocimiento en tiempo real de las condiciones del mercado cripto y los movimientos repentinos de precios.
Volatilidad y métricas macro Muestra niveles de volatilidad en tiempo real o indicadores de actividad inusual para instrumentos objetivo en el Panel de símbolo activo. Apoya la conciencia a nivel macro y ayuda a identificar oportunidades de operación durante extremos del mercado.
Visor de salida de modelo cuantitativo Ver salida dinámica del modelo (como aumento de momentum en EURUSD). Conecta el análisis cuantitativo con decisiones de operación de una manera visualmente accesible.
Flujos de señales de operación externas Transmite señales automatizadas desde servicios externos de modelos de aprendizaje automático (ML) enrutados a través de WebSocket. Permite la entrega inmediata de señales para usuarios que siguen estrategias algorítmicas o bots de terceros.

Resumen

Esta muestra de plugin muestra cómo integrar contenido externo en tiempo real en cTrader usando una conexión WebSocket. Si bien la muestra demuestra un feed de noticias en vivo en el Panel de símbolo activo, el mismo enfoque admite señales, alertas, análisis y más.

Para más detalles sobre el desarrollo, consulte nuestra documentación de plugins.