Bỏ qua

WebSocket Sample

Tổng quan

Plugin WebSocket Sample cho phép tích hợp dữ liệu thời gian thực trong cTrader thông qua các chức năng chính sau:

  • Kết nối cTrader với máy chủ WebSocket bên ngoài để nhận các luồng dữ liệu thời gian thực.
  • Hiển thị nội dung trực tiếp như tin tức hoặc cảnh báo giao dịch trực tiếp trong Bảng ký hiệu đang hoạt động bằng cách sử dụng một khối văn bản tùy chỉnh.
  • Tự động cập nhật bảng với các thông báo mới khi nhận được, giúp cung cấp thông tin kịp thời.

Plugin hoạt động thông qua một bảng có thể cấu hình bởi người dùng. Nó vẫn hoạt động trong khi cTrader Windows hoặc Mac đang chạy và tự động giải phóng tài nguyên hệ thống khi dừng lại.

Tạo plugin

Tìm hiểu cách tạo, chỉnh sửa và xây dựng plugin từ một mẫu hoặc từ đầu trong hướng dẫn từng bước của chúng tôi.

Bạn có thể tìm thấy mã của plugin WebSocket Sample trên GitHub, hoặc đơn giản sao chép nó bên dưới.

Mã mẫu
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;
            }
        }
    }        
}

Tùy chọn tùy chỉnh

Plugin kết hợp các cài đặt WebSocket với các phần tử giao diện người dùng để cung cấp nội dung văn bản trực tiếp. Dưới đây là phân tích các thành phần chính và chức năng của chúng:

Tham số Mô tả Giá trị có thể
Text Hiển thị nội dung ban đầu trong khối văn bản. Starting news feed…
AddBlock Thêm một khối vào Bảng ký hiệu đang hoạt động. asp.symboltab.addblock(news)
_textBlock.Text Cập nhật khối văn bản với thông báo WebSocket nhận được. args.text
FontSize Đặt kích thước của văn bản. 16, 18, 20, v.v.
FontWeight Xác định độ dày của văn bản. regular, bold, extrabold, v.v.
TextAlignment Căn chỉnh văn bản trong khối văn bản. left, centre, v.v.
Padding Xác định khoảng cách xung quanh khối văn bản. (5, 5, 5, 5), (8, 8, 8, 8), v.v.
aspBlock.Height Đặt chiều cao của khối tùy chỉnh trong giao diện người dùng. 300px, 350px, v.v.
_targetUri Cung cấp điểm cuối WebSocket cho luồng dữ liệu. wss://marketdata.tradermade.com/feedadv
KeepAliveInterval Xác định khoảng thời gian cho các ping keep-alive của WebSocket. (0, 1, 30) (giờ, phút, giây)
_webSocketClient.Send Gửi thông báo đăng ký ban đầu đến máy chủ WebSocket. {userkey:..., symbol:eurusd}
UseDefaultCredentials Cấu hình cài đặt xác thực cho kết nối WebSocket. true hoặc false

Ghi chú

Đảm bảo máy chủ WebSocket hỗ trợ giao thức và định dạng thông báo mà triển khai của bạn mong đợi.

Các trường hợp sử dụng

WebSocket Sample cung cấp một cách mạnh mẽ và linh hoạt để mở rộng cTrader với các luồng dữ liệu thời gian thực. Nó hỗ trợ một loạt các tích hợp được thiết kế theo các nhu cầu giao dịch khác nhau. Dưới đây là các trường hợp sử dụng thực tế minh họa cách plugin có thể nâng cao trải nghiệm giao dịch.

Trường hợp sử dụng Kịch bản Giá trị
Nguồn cấp tin tức mới Xem tin tức kinh tế theo thời gian thực, các tiêu đề ảnh hưởng thị trường và sự kiện nóng trực tiếp trên nền tảng. Giúp bạn cập nhật tin tức nóng có thể tác động đến biến động thị trường.
Dữ liệu sàn giao dịch tiền điện tử Cập nhật trực tiếp các giao dịch, bảng giá ticker, thay đổi sổ lệnh hoặc cảnh báo biến động cho tài sản tiền điện tử. Nâng cao nhận thức thời gian thực về điều kiện thị trường tiền điện tử và các biến động giá đột ngột.
Chỉ số biến động và vĩ mô Hiển thị mức độ biến động thời gian thực hoặc các chỉ báo hoạt động bất thường cho các công cụ mục tiêu trong Bảng ký hiệu đang hoạt động. Hỗ trợ nhận thức ở cấp độ vĩ mô và giúp xác định cơ hội giao dịch trong các điều kiện thị trường cực đoan.
Trình xem đầu ra mô hình định lượng Xem đầu ra mô hình động (chẳng hạn như tăng động lượng trên EURUSD). Kết nối phân tích định lượng với quyết định giao dịch một cách trực quan và dễ tiếp cận.
Luồng tín hiệu giao dịch bên ngoài Luồng tín hiệu tự động từ các dịch vụ bên ngoài hoặc mô hình học máy (ML) được định tuyến qua WebSocket. Cho phép giao nhận tín hiệu ngay lập tức cho người dùng theo các chiến lược thuật toán hoặc bot của bên thứ ba.

Tổng quan

Mẫu plugin này cho thấy cách tích hợp nội dung bên ngoài theo thời gian thực vào cTrader bằng cách sử dụng kết nối WebSocket. Trong khi mẫu này thể hiện một nguồn cấp tin tức trực tiếp trong Bảng ký hiệu đang hoạt động, cách tiếp cận tương tự hỗ trợ tín hiệu, cảnh báo, phân tích và hơn thế nữa.

Để biết thêm chi tiết phát triển, hãy tham khảo tài liệu plugin của chúng tôi.