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 | กำหนดช่วงเวลาสำหรับการส่ง ping keep-alive ของ WebSocket | (0, 1, 30) (ชั่วโมง, นาที, วินาที) |
_webSocketClient.Send | ส่งข้อความสมัครสมาชิกเริ่มต้นไปยังเซิร์ฟเวอร์ WebSocket | {userkey:..., symbol:eurusd} |
UseDefaultCredentials | กำหนดการตั้งค่าการตรวจสอบสิทธิ์สำหรับการเชื่อมต่อ WebSocket | true หรือ false |
หมายเหตุ
ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ WebSocket รองรับโปรโตคอลและรูปแบบข้อความที่คาดหวังโดยการใช้งานของคุณ
กรณีการใช้งาน ¶
WebSocket Sample ให้วิธีการที่ทรงพลังและยืดหยุ่นในการขยาย cTrader ด้วยการส่งข้อมูลแบบเรียลไทม์ มันรองรับการผสานรวมที่หลากหลายซึ่งปรับให้เหมาะกับความต้องการการเทรดต่างๆ ด้านล่างนี้คือกรณีการใช้งานจริงที่แสดงให้เห็นว่าปลั๊กอินสามารถปรับปรุงประสบการณ์การเทรดได้อย่างไร
| กรณีการใช้งาน | สถานการณ์ | คุณค่า |
|---|---|---|
| ฟีดข่าว | ดูข่าวเศรษฐกิจแบบเรียลไทม์ หัวข้อข่าวที่เคลื่อนตลาด และเหตุการณ์สำคัญโดยตรงในแพลตฟอร์ม | ทำให้คุณทราบข่าวด่วนที่อาจส่งผลต่อการเคลื่อนไหวของตลาด |
| ข้อมูลจากตลาดคริปโต | สตรีมการอัปเดตการเทรดแบบสด ตารางราคา การเปลี่ยนแปลงในสมุดคำสั่ง หรือการแจ้งเตือนความผันผวนสำหรับสินทรัพย์คริปโต | เพิ่มความตระหนักรู้แบบเรียลไทม์เกี่ยวกับสภาพตลาดคริปโตและการเคลื่อนไหวของราคาอย่างฉับพลัน |
| ตัวชี้วัดความผันผวนและมหภาค | แสดงระดับความผันผวนแบบเรียลไทม์หรือตัวชี้วัดกิจกรรมผิดปกติสำหรับเครื่องมือเป้าหมายในแผงสัญลักษณ์ที่ใช้งานอยู่ | สนับสนุนความตระหนักรู้ในระดับมหภาคและช่วยระบุโอกาสการเทรดในช่วงสุดขั้วของตลาด |
| ตัวแสดงผลลัพธ์ของโมเดลเชิงปริมาณ | ดูผลลัพธ์ของโมเดลแบบไดนามิก (เช่น การเพิ่มขึ้นของโมเมนตัมใน EURUSD) | เชื่อมโยงการวิเคราะห์เชิงปริมาณกับการตัดสินใจเทรดในรูปแบบที่เข้าถึงได้ทางสายตา |
| สตรีมสัญญาณการเทรดจากภายนอก | สตรีมสัญญาณอัตโนมัติจากบริการภายนอกหรือโมเดลการเรียนรู้ของเครื่อง (ML) ที่ส่งผ่าน WebSocket | เปิดใช้งานการส่งสัญญาณทันทีสำหรับผู้ใช้ที่ติดตามกลยุทธ์อัลกอริทึมหรือบอทจากบุคคลที่สาม |
สรุป ¶
ตัวอย่างปลั๊กอินนี้แสดงวิธีการผสานรวมเนื้อหาภายนอกแบบเรียลไทม์เข้าไปใน cTrader โดยใช้การเชื่อมต่อ WebSocket ในขณะที่ตัวอย่างแสดงการส่งข่าวสดในแผงสัญลักษณ์ที่ใช้งานอยู่ วิธีการเดียวกันนี้ยังรองรับสัญญาณ การแจ้งเตือน การวิเคราะห์ และอื่นๆ
สำหรับรายละเอียดการพัฒนาเพิ่มเติม โปรดดูที่เอกสารปลั๊กอิน ของเรา