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.