Bỏ qua

Vị trí plugin trong giao diện cTrader

Các plugin có thể thêm các phần tử tùy chỉnh vào các khu vực của giao diện cTrader như Bảng ký hiệu đang hoạt động (ASP), Màn hình theo dõi giao dịch (TW), biểu đồ và khung tùy chỉnh, cửa sổ tùy chỉnh và khu vực menu chính. Hướng dẫn này trình bày cách sử dụng từng tùy chọn này và đề xuất các trường hợp sử dụng phù hợp.

Vị trí plugin trong một phút!

  • Bằng cách mở rộng giao diện cTrader, bạn có thể tích hợp liền mạch các dịch vụ của bên thứ ba với thiết bị đầu cuối giao dịch.
  • Một plugin đơn lẻ có thể thực hiện các chức năng khác nhau trong các khu vực khác nhau của giao diện, cho phép bạn tùy chỉnh giao diện và cảm nhận của cTrader.
  • Bạn có thể cấu hình các phần tử tùy chỉnh được tạo bởi plugin để chúng có thể được tách ra và gắn lại vào vị trí ban đầu của chúng trong giao diện cTrader.
  • Một số ý tưởng có thể phù hợp hơn với các khu vực cụ thể trong giao diện. Bạn có thể thử nghiệm với các vị trí để khám phá điều gì hoạt động tốt nhất.

ASP

ASP nằm ở bên phải hiển thị biểu đồ. Một plugin có thể thêm một hoặc nhiều phần tử tùy chỉnh bằng cách sử dụng các tùy chọn sau:

  • Như một AspTab. Khi sử dụng tùy chọn này, plugin hiển thị các phần tử tùy chỉnh trong (các) tab riêng biệt cùng với Ký hiệu, DoM và các tab khác.
  • Như một AspBlock. Khi sử dụng tùy chọn này, plugin hiển thị các phần tử tùy chỉnh trong tab Ký hiệu trong (các) phần mới có thể thu gọn và mở rộng với tiêu đề và vị trí có thể tùy chỉnh.

Đây là cách cùng một plugin trông như thế nào dưới dạng khối và dưới dạng tab.

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

Dưới đây là một số ý tưởng cho các plugin hiển thị các phần tử tùy chỉnh trong một khối ASP:

  • Một máy tính nhỏ về mức bảo vệ cho một ký hiệu nhất định.
  • Một lưới hiển thị thông tin bổ sung về ký hiệu đang hoạt động hiện tại.

Các ý tưởng sau sẽ hoạt động tốt nhất khi được nhúng dưới dạng tab ASP:

  • Một danh sách chứa phân tích tùy chỉnh về tất cả các vị thế đang mở hiện tại.
  • Một WebView của một trang tin tức tài chính.

Để thêm các phần tử tùy chỉnh dưới dạng khối ASP, sử dụng phương thức Asp.SymbolTab.AddBlock(string title).

1
2
3
var child = ... // Insert the contents you want the block to have here
AspBlock aspBlock = Asp.SymbolTab.AddBlock("Cool Plugin");
aspBlock.Child = child; 

Để thêm các phần tử tùy chỉnh dưới dạng tab ASP, sử dụng phương thức Asp.AddTab(string title).

1
2
3
var child = ... // Insert the contents you want the tab to have here
AspTab pluginTab = Asp.AddTab("Another Cool Plugin");
pluginTab.Child = child;

Để xác định thứ tự xuất hiện của một khối hoặc tab trong ASP, sử dụng thuộc tính Index của AspBlockAspTab tương ứng.

Cảnh báo

Lưu ý rằng không thể đặt tab tùy chỉnh nào trước tab Ký hiệu. Bạn cũng không thể nhúng khối của mình cao hơn phần Lệnh mới trong tab Ký hiệu. Do đó, chỉ số nhỏ nhất có thể cho một khối được nhúng vào ASP là 1.

Màn hình theo dõi giao dịch

Màn hình theo dõi giao dịch nằm ngay dưới khu vực biểu đồ. Bạn có thể thêm các phần tử tùy chỉnh ở đó dưới dạng một tab riêng biệt.

Đây là cách một plugin có thể trông như thế nào khi được thêm vào màn hình.

Trường hợp sử dụng

Những ý tưởng sau đây phù hợp để hiển thị trong màn hình Màn hình theo dõi giao dịch.

  • Một bộ phân tích tùy chỉnh hiển thị các thống kê khác nhau về tài khoản hiện tại của người dùng.
  • Một WebView của diễn đàn web về giao dịch.

Để thêm các phần tử tùy chỉnh dưới dạng tab mới trong màn hình Màn hình theo dõi giao dịch, sử dụng phương thức Trade Watch.AddTab(string title).

1
2
3
var child = ... // Insert the contents you want the plugin to have here
Trade WatchTab Trade WatchTab = Trade Watch.AddTab("Yet Another Cool Plugin");
Trade WatchTab.Child = child;

Tương tự như các khối và tab ASP, bạn có thể sử dụng thuộc tính Index của Trade WatchTab để xác định vị trí của nó so với các tab khác trong màn hình Màn hình theo dõi giao dịch.

Ghi chú

Tất cả các tab tùy chỉnh được đặt vào màn hình Màn hình theo dõi giao dịch chỉ xuất hiện ở phía bên phải cùng của các tab mặc định có trong giao diện người dùng cTrader khi khởi chạy lần đầu tiên. Do đó, Index của các tab này phải là 1 hoặc lớn hơn; chỉ số này chỉ xác định vị trí tương đối của các tab plugin so với các tab plugin khác.

Biểu đồ và khung tùy chỉnh

Bạn cũng có thể chọn hiển thị các phần tử tùy chỉnh trong một khung biểu đồ riêng biệt, về cơ bản là thêm nó như một biểu đồ mới vào chế độ xem biểu đồ hiện tại của bạn. Ngoài ra, một plugin có thể mở bất kỳ số lượng biểu đồ nào cho bất kỳ ký hiệu và khung biểu đồ có sẵn nào.

Đây là cách một khung biểu đồ tùy chỉnh với WebView trông như thế nào bên cạnh một biểu đồ thông thường.

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

Những ý tưởng sau đây sẽ trông đẹp nhất và hoạt động tốt nhất khi được nhúng vào một khung tùy chỉnh:

  • Một WebView của dịch vụ biểu đồ khác.
  • Một bảng giao dịch tùy chỉnh quy mô lớn.
  • Một WebView của dịch vụ AI tạo sinh mà nhà giao dịch có thể tham khảo khi quyết định cách phản ứng với biến động thị trường.

Để thêm một khung tùy chỉnh mới, sử dụng phương thức ChartManager.AddCustomFrame(string title).

1
2
3
var child = ... // Insert the contents you want the plugin to have here
var newCustomFrame = ChartManager.AddCustomFrame("Best Plugin");
newCustomFrame.Child = child;

Để plugin của bạn mở một biểu đồ mới, sử dụng phương thức ChartManager.AddChartFrame(string symbolName, TimeFrame timeFrame).

1
var newChart = ChartManager.AddChartFrame("EURUSD", TimeFrame.Day2);

Ghi chú

Khi một plugin thêm một khung tùy chỉnh hoặc biểu đồ mới, cTrader sẽ chuyển sang chế độ đa biểu đồ ngay cả khi chế độ biểu đồ đơn hoặc chế độ biểu đồ tự do đã được kích hoạt trước đó.

Các plugin có thể được mã hóa để thêm các phần tùy chỉnh vào giao diện người dùng menu chính, bên cạnh các phần hiện có như Giao dịch, Algo, Copy và Phân tích. Bất kỳ phần tùy chỉnh nào được thêm vào đều có thể chứa các trang web, bảng điều khiển, nút bấm, công cụ và hơn thế nữa.

Đây là mã cho một plugin đơn giản thêm phần tùy chỉnh cTrader Store, chứa trang web cTrader Store, vào menu chính:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo
{
    [Plugin(AccessRights = AccessRights.None)]
    public class CTraderStorePlugin : Plugin
    {
        private MainMenuOwnCustomItem _storeItem;

        private const string StoreIconSvg = @"
        <svg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
          <path fill='white' d='M7 7V6a5 5 0 0 1 10 0v1h2a1 1 0 0 1 1 1l-1 11a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2L4 8a1 1 0 0 1 1-1h2zm2 0h6V6a3 3 0 0 0-6 0v1z' />
        </svg>";

        protected override void OnStart()
        {
            _storeItem = MainMenu.AddItem("cTrader Store", new SvgIcon(StoreIconSvg));

            var webView = new WebView();
            webView.Loaded += _ =>
            {
                webView.NavigateAsync("http://ctrader.com");
            };

            _storeItem.Child = webView;

            MainMenu.SelectedItemChanged += OnSelectedItemChanged;
        }

        private void OnSelectedItemChanged(MainMenuSelectedItemChangedEventArgs args)
        {
            if (args.NewItem == _storeItem)
            {
                MainMenu.IsExpanded = true;
            }
        }

        protected override void OnStop()
        {
            MainMenu.SelectedItemChanged -= OnSelectedItemChanged;

            if (_storeItem != null)
            {
                MainMenu.RemoveItem(_storeItem);
                _storeItem = null;
            }
        }
    }
}

Chọn cTrader Store sẽ điều hướng đến phần tùy chỉnh, hiển thị nội dung của nó như bên dưới.

Nhiều vị trí đặt

Plugin sau đây thêm các phần tử tùy chỉnh vào nhiều vị trí trong giao diện người dùng cTrader cùng một lúc:

  • Plugin hiển thị tổng phí giao dịch cho tất cả các vị thế đang mở trong một khối ASP.
  • Trong màn hình Màn hình theo dõi giao dịch, plugin hiển thị tổng khối lượng của tất cả các vị thế mở.
  • Plugin cũng hiển thị một WebView của ctrader.com trong một khung biểu đồ tùy chỉnh.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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 PluginPlacementTest : Plugin
    {

        private TextBlock _commissionsText;
        private TextBlock _volumeText;
        private WebView _cTraderWebView;

        protected override void OnStart()
        {
            _cTraderWebView = new WebView();
            _cTraderWebView.Loaded += ShowWebsite;

            _commissionsText = new TextBlock
            {
                Text = ShowCommissions(),
                FontSize = 100,
                TextAlignment = TextAlignment.Center,
                FontWeight = FontWeight.ExtraBold,
            };

            _volumeText = new TextBlock
            {
                Text = ShowVolume(),
                FontSize = 100,
                TextAlignment = TextAlignment.Center,
                FontWeight = FontWeight.ExtraBold,
            };

            ChartManager.AddCustomFrame("cTrader.com").Child = _cTraderWebView;
            Asp.SymbolTab.AddBlock("Commissions").Child = _commissionsText;
            TradeWatch.AddTab("Volume").Child = _volumeText;
            Timer.Start(TimeSpan.FromSeconds(0.5));

        }

        protected void ShowWebsite(WebViewLoadedEventArgs args)
        {
            _cTraderWebView.NavigateAsync("https://ctrader.com");
        }

        protected string ShowCommissions()
        {
            double commissionsCounter = 0;
            foreach (var position in Positions)
            {
                commissionsCounter += position.Commissions;
            }
            return commissionsCounter.ToString();
        }

        protected string ShowVolume() 
        {
            double volumeCounter = 0;
            foreach (var position in Positions) 
            {
                volumeCounter += position.VolumeInUnits;
            }
            return volumeCounter.ToString();
        }

        protected override void OnTimer()
        {
            _commissionsText.Text = ShowCommissions();
            _volumeText.Text = ShowVolume();
        }
    }
}

Tóm tắt

cTrader cung cấp một số tùy chọn để đặt các phần tử tùy chỉnh thông qua plugin. Bạn có thể sử dụng chúng để tùy chỉnh giao diện người dùng cTrader và biến nền tảng thực sự trở thành của riêng bạn.

Image title