Lewati ke isi

WebSocket Sample

Ikhtisar

Plugin WebSocket Sample memungkinkan integrasi data real-time di cTrader melalui fungsionalitas utama berikut:

  • Menghubungkan cTrader ke server WebSocket eksternal untuk menerima aliran data real-time.
  • Menampilkan konten langsung seperti berita atau peringatan trading langsung di Panel Simbol Aktif menggunakan blok teks khusus.
  • Memperbarui panel secara otomatis dengan pesan baru saat diterima, memungkinkan informasi yang tepat waktu.

Plugin ini beroperasi melalui panel yang dapat dikonfigurasi oleh pengguna. Tetap aktif saat cTrader Windows atau Mac berjalan dan secara otomatis melepaskan sumber daya sistem saat dihentikan.

Pembuatan Plugin

Pelajari cara membuat, mengedit, dan membangun plugin dari template atau dari awal dalam panduan langkah demi langkah kami.

Anda dapat menemukan kode plugin WebSocket Sample di GitHub, atau cukup salin di bawah ini.

Sampel kode
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;
            }
        }
    }        
}

Opsi Kustomisasi

Plugin ini menggabungkan pengaturan WebSocket dengan elemen UI untuk menyampaikan konten teks langsung. Berikut adalah rincian komponen utama dan fungsinya:

Parameter Deskripsi Nilai yang Mungkin
Text Menampilkan konten awal di blok teks. Starting news feed…
AddBlock Menambahkan blok ke Panel Simbol Aktif. asp.symboltab.addblock(news)
_textBlock.Text Memperbarui blok teks dengan pesan WebSocket yang diterima. args.text
FontSize Menetapkan ukuran teks. 16, 18, 20, dst.
FontWeight Menentukan ketebalan teks. regular, bold, extrabold, dst.
TextAlignment Meratakan teks dalam blok teks. left, centre, dst.
Padding Menentukan jarak di sekitar blok teks. (5, 5, 5, 5), (8, 8, 8, 8), dst.
aspBlock.Height Menetapkan tinggi blok khusus di antarmuka pengguna. 300px, 350px, dst.
_targetUri Menyediakan endpoint WebSocket untuk umpan data. wss://marketdata.tradermade.com/feedadv
KeepAliveInterval Menentukan interval untuk ping keep-alive WebSocket. (0, 1, 30) (jam, menit, detik)
_webSocketClient.Send Mengirim pesan langganan awal ke server WebSocket. {userkey:..., symbol:eurusd}
UseDefaultCredentials Mengonfigurasi pengaturan otentikasi untuk koneksi WebSocket. true atau false

Catatan

Pastikan server WebSocket mendukung protokol dan format pesan yang diharapkan oleh implementasi Anda.

Kasus Penggunaan

WebSocket Sample menyediakan cara yang kuat dan fleksibel untuk memperluas cTrader dengan umpan data real-time. Mendukung berbagai integrasi yang disesuaikan dengan berbagai kebutuhan trading. Berikut adalah kasus penggunaan praktis yang menunjukkan bagaimana plugin dapat meningkatkan pengalaman trading.

Kasus Penggunaan Skenario Nilai
Umpan berita Lihat berita ekonomi real-time, headline yang menggerakkan pasar, dan peristiwa terkini langsung di platform. Menginformasikan Anda tentang berita terkini yang mungkin memengaruhi pergerakan pasar.
Data bursa kripto Stream pembaruan trading live, ticker harga, perubahan order book, atau peringatan volatilitas untuk aset kripto. Meningkatkan kesadaran real-time tentang kondisi pasar kripto dan pergerakan harga mendadak.
Metrik volatilitas dan makro Tampilkan level volatilitas real-time atau indikator aktivitas tidak biasa untuk instrumen target di Panel Simbol Aktif. Mendukung kesadaran tingkat makro dan membantu mengidentifikasi peluang trading selama kondisi pasar ekstrem.
Penampil output model kuantitatif Lihat output model dinamis (seperti peningkatan momentum pada EURUSD). Menghubungkan analisis kuantitatif dengan keputusan trading dengan cara yang mudah diakses secara visual.
Aliran sinyal perdagangan eksternal Stream sinyal otomatis dari layanan eksternal model machine learning (ML) yang diarahkan melalui WebSocket. Memungkinkan pengiriman sinyal segera bagi pengguna yang mengikuti strategi algoritmik atau bot pihak ketiga.

Ringkasan

Contoh plugin ini menunjukkan cara mengintegrasikan konten eksternal real-time ke cTrader menggunakan koneksi WebSocket. Sementara contoh ini menunjukkan feed berita live di Panel Simbol Aktif, pendekatan yang sama mendukung sinyal, peringatan, analitik, dan lainnya.

Untuk detail pengembangan lebih lanjut, lihat dokumentasi plugin kami.