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のキープアライブpingの間隔を定義します。 | (0, 1, 30)(時間、分、秒) |
_webSocketClient.Send | WebSocketサーバーに初期サブスクリプションメッセージを送信します。 | {userkey:..., symbol:eurusd} |
UseDefaultCredentials | WebSocket接続の認証設定を構成します。 | trueまたはfalse |
注意
WebSocketサーバーが、実装で期待されるプロトコルとメッセージフォーマットをサポートしていることを確認してください。
ユースケース ¶
WebSocket Sampleは、cTraderをリアルタイムデータフィードで拡張する強力で柔軟な方法を提供します。 様々な取引ニーズに合わせた幅広い統合をサポートしています。 以下は、このプラグインが取引体験をどのように向上させるかを示す実践的なユースケースです。
| ユースケース | シナリオ | 価値 |
|---|---|---|
| ニュースワイヤーフィード | リアルタイムの経済ニュース、市場を動かすヘッドライン、速報イベントをプラットフォーム内で直接表示します。 | 市場の動きに影響を与える可能性のある速報ニュースを常に把握できます。 |
| 暗号資産取引所データ | ライブ取引更新、価格ティッカー、オーダーブックの変更、または暗号資産のボラティリティに関するアラートをストリーミングします。 | 暗号資産市場の状況や急激な価格変動のリアルタイムな認識を向上させます。 |
| ボラティリティとマクロ指標 | アクティブ通貨ペアパネルで対象銘柄のリアルタイムのボラティリティレベルや異常な活動指標を表示します。 | マクロレベルの認識をサポートし、市場の極端な状況での取引機会の特定に役立ちます。 |
| Quantモデル出力ビューア | 動的なモデル出力(EURUSDのモメンタム増加など)を表示します。 | 定量分析と取引判断を視覚的にアクセスしやすい方法で結びつけます。 |
| 外部取引シグナルストリーム | WebSocketを通じてルーティングされた外部サービスの機械学習(ML)モデルからの自動化されたシグナルをストリーミングします。 | アルゴリズム戦略やサードパーティのボットを利用するユーザーに即時のシグナル配信を可能にします。 |
概要 ¶
このプラグインサンプルは、WebSocket接続を使用してcTraderにリアルタイムの外部コンテンツを統合する方法を示しています。 サンプルではアクティブ通貨ペアパネルでのライブニュースフィードを示していますが、同じアプローチでシグナル、アラート、分析などもサポートします。
開発の詳細については、プラグインのドキュメントを参照してください。