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에 통합하는 방법을 보여줍니다. 이 샘플은 활성 심벌 패널에서 실시간 뉴스 피드를 보여주지만, 동일한 접근 방식으로 신호, 알림, 분석 등을 지원합니다.
추가 개발 세부 사항은 플러그인 문서를 참조하세요.