콘텐츠로 이동

WebSocket Sample

개요

WebSocket Sample 플러그인은 다음과 같은 주요 기능을 통해 cTrader에서 실시간 데이터 통합을 가능하게 합니다:

  • cTrader를 외부 WebSocket 서버에 연결하여 실시간 데이터 스트림을 수신합니다.
  • 사용자 정의 텍스트 블록을 사용하여 뉴스나 거래 알림과 같은 실시간 콘텐츠를 활성 심벌 패널에 직접 표시합니다.
  • 새 메시지를 받으면 패널을 자동으로 업데이트하여 시기적절한 정보를 제공합니다.

이 플러그인은 사용자가 구성할 수 있는 패널을 통해 작동합니다. cTrader Windows 또는 Mac이 실행되는 동안 활성 상태를 유지하며 중지될 때 시스템 리소스를 자동으로 해제합니다.

플러그인 생성

단계별 가이드에서 템플릿 또는 처음부터 플러그인을 생성, 편집 및 빌드하는 방법을 알아보세요.

WebSocket Sample 플러그인의 코드는 GitHub에서 찾을 수 있으며, 아래에서 간단히 복사할 수도 있습니다.

샘플 코드
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;
            }
        }
    }        
}

사용자 지정 옵션

이 플러그인은 WebSocket 설정과 UI 요소를 결합하여 실시간 텍스트 콘텐츠를 제공합니다. 다음은 주요 구성 요소와 그 기능에 대한 설명입니다:

매개변수 설명 가능한 값
Text 텍스트 블록에 초기 콘텐츠를 표시합니다. Starting news feed…
AddBlock 활성 심벌 패널에 블록을 추가합니다. asp.symboltab.addblock(news)
_textBlock.Text 수신된 WebSocket 메시지로 텍스트 블록을 업데이트합니다. args.text
FontSize 텍스트의 크기를 설정합니다. 16, 18, 20 등.
FontWeight 텍스트의 두께를 정의합니다. regular, bold, extrabold 등.
TextAlignment 텍스트 블록 내에서 텍스트를 정렬합니다. left, centre 등.
Padding 텍스트 블록 주변의 공간을 지정합니다. (5, 5, 5, 5), (8, 8, 8, 8) 등.
aspBlock.Height 사용자 인터페이스에서 사용자 정의 블록의 높이를 설정합니다. 300px, 350px 등.
_targetUri 데이터 피드를 위한 WebSocket 엔드포인트를 제공합니다. wss://marketdata.tradermade.com/feedadv
KeepAliveInterval WebSocket 연결 유지를 위한 핑 간격을 정의합니다. (0, 1, 30) (시간, 분, 초)
_webSocketClient.Send WebSocket 서버에 초기 구독 메시지를 보냅니다. {userkey:..., symbol:eurusd}
UseDefaultCredentials WebSocket 연결을 위한 인증 설정을 구성합니다. true 또는 false

참고

WebSocket 서버가 구현에서 예상하는 프로토콜과 메시지 형식을 지원하는지 확인하세요.

사용 사례

WebSocket Sample은 실시간 데이터 피드로 cTrader를 확장할 수 있는 강력하고 유연한 방법을 제공합니다. 다양한 거래 요구에 맞춘 광범위한 통합을 지원합니다. 아래는 플러그인이 거래 경험을 향상시킬 수 있는 방법을 보여주는 실용적인 사용 사례입니다.

사용 사례 시나리오 가치
뉴스와이어 피드 플랫폼에서 직접 실시간 경제 뉴스, 시장 움직임에 영향을 주는 헤드라인 및 속보 이벤트를 볼 수 있습니다. 시장 움직임에 영향을 줄 수 있는 속보를 계속 알려줍니다.
암호화폐 거래소 데이터 암호화폐 자산에 대한 실시간 거래 업데이트, 가격 티커, 주문장 변경 또는 변동성 알림을 스트리밍합니다. 암호화폐 시장 상황과 급격한 가격 변동에 대한 실시간 인식을 향상시킵니다.
변동성 및 거시 지표 목표 상품의 실시간 변동성 수준이나 비정상적인 활동 지표를 활성 심벌 패널에 표시합니다. 거시적 수준의 인식을 지원하고 시장 극단 상황에서 거래 기회를 식별하는 데 도움을 줍니다.
퀀트 모델 출력 뷰어 동적 모델 출력을 볼 수 있습니다(예: EURUSD의 모멘텀 증가). 정량적 분석을 시각적으로 접근 가능한 방식으로 거래 결정과 연결합니다.
외부 거래 신호 스트림 WebSocket을 통해 라우팅된 외부 서비스 머신 러닝(ML) 모델의 자동화된 신호를 스트리밍합니다. 알고리즘 전략이나 제3자 봇을 따르는 사용자를 위해 즉각적인 신호 전달을 가능하게 합니다.

요약

이 플러그인 샘플은 WebSocket 연결을 사용하여 실시간 외부 콘텐츠를 cTrader에 통합하는 방법을 보여줍니다. 이 샘플은 활성 심벌 패널에서 실시간 뉴스 피드를 보여주지만, 동일한 접근 방식으로 신호, 알림, 분석 등을 지원합니다.

추가 개발 세부 사항은 플러그인 문서를 참조하세요.