WebSocket Sample¶
Visão geral ¶
O plugin WebSocket Sample permite a integração de dados em tempo real no cTrader através das seguintes funcionalidades principais:
- Liga o cTrader a um servidor WebSocket externo para receber fluxos de dados em tempo real.
- Exibe conteúdo em direto como notícias ou alertas de negociação diretamente no Painel de símbolo ativo usando um bloco de texto personalizado.
- Atualiza automaticamente o painel com novas mensagens quando recebidas, permitindo informação oportuna.

O plugin opera através de um painel configurável pelo utilizador. Permanece ativo enquanto o cTrader Windows ou Mac estiver em execução e liberta automaticamente os recursos do sistema quando parado.
Criação do plugin ¶
Aprenda como criar, editar e compilar plugins a partir de um modelo ou do zero no nosso guia passo a passo.
Pode encontrar o código do plugin WebSocket Sample no GitHub, ou simplesmente copiá-lo abaixo.
Código de exemplo
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;
}
}
}
}
Opções de personalização ¶
O plugin combina definições WebSocket com elementos de interface do utilizador para fornecer conteúdo de texto em direto. Abaixo está uma análise dos seus componentes principais e as suas funções:
| Parâmetro | Descrição | Valores possíveis |
|---|---|---|
Text | Exibe o conteúdo inicial no bloco de texto. | Starting news feed… |
AddBlock | Adiciona um bloco ao Painel de símbolo ativo. | asp.symboltab.addblock(news) |
_textBlock.Text | Atualiza o bloco de texto com a mensagem WebSocket recebida. | args.text |
FontSize | Define o tamanho do texto. | 16, 18, 20, etc. |
FontWeight | Define a espessura do texto. | regular, bold, extrabold, etc. |
TextAlignment | Alinha o texto dentro do bloco de texto. | left, centre, etc. |
Padding | Especifica o espaço à volta do bloco de texto. | (5, 5, 5, 5), (8, 8, 8, 8), etc. |
aspBlock.Height | Define a altura do bloco personalizado na interface do utilizador. | 300px, 350px, etc. |
_targetUri | Fornece o endpoint WebSocket para o feed de dados. | wss://marketdata.tradermade.com/feedadv |
KeepAliveInterval | Define o intervalo para pings keep-alive do WebSocket. | (0, 1, 30) (horas, minutos, segundos) |
_webSocketClient.Send | Envia a mensagem inicial de subscrição para o servidor WebSocket. | {userkey:..., symbol:eurusd} |
UseDefaultCredentials | Configura a definição de autenticação para a ligação WebSocket. | true ou false |
Nota
Certifique-se de que o servidor WebSocket suporta o protocolo e os formatos de mensagem esperados pela sua implementação.
Casos de uso ¶
O WebSocket Sample oferece uma forma poderosa e flexível de expandir o cTrader com feeds de dados em tempo real. Suporta uma ampla gama de integrações adaptadas a várias necessidades de negociação. Abaixo estão casos práticos de uso que demonstram como o plugin pode melhorar a experiência de negociação.
| Caso de uso | Cenário | Valor |
|---|---|---|
| Feeds de notícias | Veja notícias económicas em tempo real, manchetes que movimentam o mercado e eventos de última hora diretamente na plataforma. | Mantém-no informado sobre notícias de última hora que podem ter impacto nos movimentos do mercado. |
| Dados de câmbio de criptomoedas | Transmita atualizações de negociação em tempo real, tickers de preços, alterações no livro de ordens ou alertas sobre volatilidade para ativos cripto. | Melhora a perceção em tempo real das condições do mercado cripto e movimentos súbitos de preços. |
| Métricas de volatilidade e macro | Exiba níveis de volatilidade em tempo real ou indicadores de atividade incomum para instrumentos-alvo no Painel de símbolo ativo. | Suporta a perceção a nível macro e ajuda a identificar oportunidades de negociação durante extremos de mercado. |
| Visualizador de saída de modelo quant | Veja a saída dinâmica do modelo (como o aumento de momentum no EURUSD). | Liga a análise quantitativa às decisões de negociação de uma forma visualmente acessível. |
| Fluxos de sinais de negociação externos | Transmita sinais automatizados de modelos de machine learning (ML) de serviços externos encaminhados através de WebSocket. | Permite a entrega imediata de sinais para utilizadores que seguem estratégias algorítmicas ou bots de terceiros. |
Resumo ¶
Esta amostra de plugin mostra como integrar conteúdo externo em tempo real no cTrader usando uma ligação WebSocket. Embora a amostra demonstre um feed de notícias em tempo real no Painel de símbolo ativo, a mesma abordagem suporta sinais, alertas, análises e muito mais.
Para mais detalhes de desenvolvimento, consulte a nossa documentação de plugins.