Bỏ qua

Cách tạo plugin khung tùy chỉnh

Các nhà giao dịch thường cố gắng giữ các trang web có thông tin giao dịch và phân tích kỹ thuật quan trọng càng gần biểu đồ càng tốt. Các plugin cho phép họ đạt được điều này thông qua các khung tùy chỉnh.

Trong bài viết này và video tương ứng, chúng tôi sẽ hướng dẫn bạn cách tạo các khung tùy chỉnh có thể chứa các trang web và hộp văn bản bằng cách sử dụng plugin.

Tạo một khung tùy chỉnh hiển thị một trang web

Chúng ta sẽ tạo một khung tùy chỉnh trong khu vực biểu đồ để chứa một trang web.

Chuyển đến ứng dụng Algo và chuyển sang tab Plugins. Nhấp vào nút Mới để tạo một plugin mới. Đánh dấu vào tùy chọn Trống. Đặt tên cho plugin của bạn, chẳng hạn như "Ví dụ khung tùy chỉnh của tôi", và nhấp vào nút Tạo.

Khi trình soạn thảo mã xuất hiện, khởi tạo một đối tượng WebView.

1
_cTraderWebView = new WebView();

Đăng ký sự kiện WebView đã tải.

1
_cTraderWebView.Loaded += _cTraderWebView_Loaded;

Đặt Diễn đàn cTrader làm trang web trong WebView khi nó tải.

1
2
3
4
private void _cTraderWebView_Loaded(WebViewLoadedEventArgs args) 
{
    _cTraderWebView.NavigateAsync("https://ctrader.com/forum");
}

Khởi tạo một khung biểu đồ tùy chỉnh.

1
var webViewFrame = ChartManager.AddCustomFrame("Forum");

Gán WebView làm phần tử con cho khung biểu đồ tùy chỉnh.

1
webViewFrame.Child = _cTraderWebView;

Đặt khung biểu đồ tùy chỉnh ở chế độ đa biểu đồ.

1
webViewFrame.ChartContainer.Mode = ChartMode.Multi;

Gắn nó vào biểu đồ.

1
webViewFrame.Attach();

Bạn có thể sao chép toàn bộ mã bên dưới:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class MyCustomFrameExample : Plugin
    {

        WebView _cTraderWebView = new WebView();

        protected override void OnStart()
        {
            _cTraderWebView.Loaded += _cTraderWebView_Loaded;
            var webViewFrame = ChartManager.AddCustomFrame("Forum");
            webViewFrame.Child = _cTraderWebView;
            webViewFrame.ChartContainer.Mode = ChartMode.Multi;
            webViewFrame.Attach();
        }

        private void _cTraderWebView_Loaded(WebViewLoadedEventArgs args)
        {
            _cTraderWebView.NavigateAsync("https://ctrader.com/forum");
        }

        protected override void OnStop()
        {
            // Handle Plugin stop here
        }
    }        
}

Để xây dựng plugin của chúng ta, sử dụng phím tắt Ctrl+B hoặc nhấp vào nút Xây dựng.

Để xem kết quả, hãy chuyển đến ứng dụng Trade. Trong trường hợp của chúng ta, trang web Diễn đàn cTrader hiện được hiển thị trong khung tùy chỉnh của chúng ta trong khu vực biểu đồ.

Quản lý khung tùy chỉnh

Khung tùy chỉnh chứa trang web Diễn đàn cTrader có thể được quản lý như bất kỳ khung biểu đồ nào trong cTrader. Nó có thể được tách rời và gắn lại vào khu vực biểu đồ, thay đổi kích thước, hoán đổi hoặc thay thế bằng các biểu đồ khác.

Thay đổi URL trang web

Chúng ta sẽ thay thế trang web Diễn đàn cTrader bằng một trang web khác.

Quay lại ứng dụng Algo và chỉnh sửa mã plugin. Thay thế URL Diễn đàn cTrader ("https://ctrader.com/forum") bằng URL Spotware ("https://www.spotware.com").

Đây sẽ là dòng mã kết quả:

1
_cTraderWebView.NavigateAsync("https://www.spotware.com");

Xây dựng lại plugin và chuyển đến ứng dụng Trade để xem các thay đổi. Trang web Spotware hiện được hiển thị trên khung tùy chỉnh.

Thêm nhiều khung

Chúng ta sẽ cập nhật mã plugin để thêm hai khung tùy chỉnh, mỗi khung hiển thị một trang web. Thêm một đối tượng WebView mới và lặp lại các bước và dòng mã từ ví dụ trước.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
WebView _cTraderWebView = new WebView();
WebView _cTraderWebViewSite = new WebView();

_cTraderWebViewSite.Loaded += _cTraderWebViewSite_Loaded;
var webViewFrameSite = ChartManager.AddCustomFrame("Site");
webViewFrameSite.Child = _cTraderWebViewSite;
webViewFrameSite.ChartContainer.Mode = ChartMode.Multi;
webViewFrameSite.Attach();

private void _cTraderWebViewSite_Loaded(WebViewLoadedEventArgs args)
{
    _cTraderWebViewSite.NavigateAsync("https://www.spotware.com");
}

Bạn có thể sao chép toàn bộ mã bên dưới:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class MyCustomFrameExample : Plugin
    {
        WebView _cTraderWebView = new WebView();
        WebView _cTraderWebViewSite = new WebView();

        protected override void OnStart()
        {
            _cTraderWebView.Loaded += _cTraderWebView_Loaded;
            var webViewFrame = ChartManager.AddCustomFrame("Forum");
            webViewFrame.Child = _cTraderWebView;
            webViewFrame.ChartContainer.Mode = ChartMode.Multi;
            webViewFrame.Attach();

            _cTraderWebViewSite.Loaded += _cTraderWebViewSite_Loaded;
            var webViewFrameSite = ChartManager.AddCustomFrame("Site");
            webViewFrameSite.Child = _cTraderWebViewSite;
            webViewFrameSite.ChartContainer.Mode = ChartMode.Multi;
            webViewFrameSite.Attach();
        }

        private void _cTraderWebView_Loaded(WebViewLoadedEventArgs args)
        {
           _cTraderWebView.NavigateAsync("https://www.ctrader.com/forum");
        }

        private void _cTraderWebViewSite_Loaded(WebViewLoadedEventArgs args)
        {
           _cTraderWebViewSite.NavigateAsync("https://www.spotware.com");
        }

        protected override void OnStop()
        {
            // Handle Plugin stop here
        }
    }        
}

Xây dựng plugin. Khi bạn quay lại ứng dụng Algo, bạn sẽ thấy hai trang web (Diễn đàn cTrader và Spotware) trong các khung riêng biệt.

Tạo một hộp văn bản

Ngoài các khung biểu đồ chứa các trang web, các plugin cho phép bạn thêm các khung tùy chỉnh chứa các đối tượng khác. Ví dụ, bạn có thể thêm một khung chứa một hộp văn bản.

Xóa tất cả các dòng mã WebView và thêm các dòng sau cho một hộp văn bản:

1
2
3
4
5
6
7
8
9
var webViewFrame = ChartManager.AddCustomFrame("Hello World");

var txtHelloWorld = new TextBlock
{
    Text = "Hello World"
};
webViewFrame.Child = txtHelloWorld;
webViewFrame.ChartContainer.Mode = ChartMode.Single;
webViewFrame.Attach();

Bạn có thể sao chép toàn bộ mã bên dưới.

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class MyCustomFrameExample : Plugin
    {
        protected override void OnStart()
        {
            var webViewFrame = ChartManager.AddCustomFrame("Hello World");

            var txtHelloWorld = new TextBlock
            {
                Text = "Hello World"
            };

            webViewFrame.Child = txtHelloWorld;
            webViewFrame.ChartContainer.Mode = ChartMode.Single;
            webViewFrame.Attach();
        }

        protected override void OnStop()
        {
            // Handle Plugin stop here
        }
    }        
}

Xây dựng plugin và xem kết quả trong ứng dụng Trade. Lần này, bạn sẽ thấy một hộp có văn bản Hello World trong khu vực biểu đồ.

Tổng quan

Bây giờ bạn nên thành thạo việc sử dụng các plugin để kết hợp các trang web, hộp văn bản và các yếu tố hữu ích khác vào khu vực biểu đồ.