コンテンツにスキップ

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 テキストのサイズを設定します。 161820など。
FontWeight テキストの太さを定義します。 regularboldextraboldなど。
TextAlignment テキストブロック内のテキストを配置します。 leftcentreなど。
Padding テキストブロックの周りのスペースを指定します。 (5, 5, 5, 5)(8, 8, 8, 8)など。
aspBlock.Height ユーザーインターフェイスのカスタムブロックの高さを設定します。 300px350pxなど。
_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にリアルタイムの外部コンテンツを統合する方法を示しています。 サンプルではアクティブ通貨ペアパネルでのライブニュースフィードを示していますが、同じアプローチでシグナル、アラート、分析などもサポートします。

開発の詳細については、プラグインのドキュメントを参照してください。