Ir para o conteúdo

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.