Langkau tajuk talian

Penempatan plugin dalam UI cTrader

Plugin boleh menambah elemen tersuai ke kawasan UI cTrader seperti Panel Simbol Aktif (ASP), Pantau Dagangan (TW), carta dan bingkai tersuai, tetingkap tersuai dan kawasan menu utama. Panduan ini menunjukkan cara menggunakan setiap pilihan ini dan mencadangkan kes penggunaan yang relevan.

Penempatan plugin dalam satu minit!

  • Dengan mengembangkan UI cTrader, anda boleh mengintegrasikan perkhidmatan pihak ketiga dengan terminal dagangan secara lancar.
  • Satu plugin boleh melaksanakan fungsi yang berbeza di kawasan UI yang berbeza, membolehkan anda menyesuaikan rupa dan rasa cTrader.
  • Anda boleh mengkonfigurasi elemen tersuai yang dicipta oleh plugin supaya ia boleh dilepaskan dan dipasang semula ke lokasi asalnya dalam UI cTrader.
  • Idea tertentu mungkin lebih sesuai di kawasan UI tertentu. Anda boleh bereksperimen dengan penempatan untuk menemui apa yang berfungsi dengan terbaik.

ASP

ASP terletak di sebelah kanan paparan carta. Plugin boleh menambah satu atau lebih elemen tersuai menggunakan pilihan berikut:

  • Sebagai AspTab. Apabila pilihan ini digunakan, plugin memaparkan elemen tersuai dalam tab berasingan bersama Simbol, DoM dan lain-lain.
  • Sebagai AspBlock. Apabila pilihan ini digunakan, plugin memaparkan elemen tersuai dalam tab Simbol dalam bahagian baharu yang boleh diruntuhkan dan dikembangkan dengan tajuk dan kedudukan yang boleh disesuaikan.

Berikut ialah cara plugin yang sama kelihatan sebagai blok dan sebagai tab.

Kes penggunaan

Berikut ialah beberapa idea untuk plugin yang memaparkan elemen tersuai dalam blok ASP:

  • Kalkulator kecil tahap perlindungan untuk simbol tertentu.
  • Grid yang memaparkan maklumat tambahan tentang simbol aktif semasa.

Idea berikut akan berfungsi paling baik apabila dibenamkan sebagai tab ASP:

  • Senarai yang mengandungi analitik tersuai tentang semua posisi terbuka semasa.
  • WebView saluran berita kewangan.

Untuk menambah elemen tersuai sebagai blok ASP, gunakan kaedah 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; 

Untuk menambah elemen tersuai sebagai tab ASP, gunakan kaedah 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;

Untuk menentukan susunan blok atau tab muncul dalam ASP, gunakan sifat Index AspBlock dan AspTab, masing-masing.

Amaran

Ambil perhatian bahawa tiada tab tersuai boleh diletakkan sebelum tab Simbol. Anda juga tidak boleh membenamkan blok anda lebih tinggi daripada bahagian Pesanan Baharu dalam tab Simbol. Hasilnya, indeks terkecil yang mungkin untuk blok yang dibenamkan ke dalam ASP ialah 1.

Pantau Dagangan

Pantau Dagangan terletak tepat di bawah kawasan carta. Anda boleh menambah elemen tersuai di sana sebagai tab berasingan.

Berikut ialah cara plugin boleh kelihatan apabila ditambah ke paparan.

Kes penggunaan

Idea berikut sesuai untuk ditunjukkan dalam paparan Pantau Dagangan.

  • Suit analitik tersuai yang menunjukkan pelbagai statistik tentang akaun semasa pengguna.
  • WebView forum web berorientasikan dagangan.

Untuk menambah elemen tersuai sebagai tab baharu dalam paparan Pantau Dagangan, gunakan kaedah 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;

Sama seperti blok dan tab ASP, anda boleh menggunakan sifat Index Trade WatchTab untuk menentukan kedudukannya berbanding tab lain dalam paparan Pantau Dagangan.

Nota

Semua tab tersuai yang diletakkan ke dalam paparan Pantau Dagangan hanya muncul di sebelah kanan tab lalai yang disertakan dalam UI cTrader semasa pelancaran pertama terminal. Seterusnya, Index tab ini mestilah 1 atau lebih; indeks hanya menentukan kedudukan relatif tab plugin berbanding tab plugin lain.

Carta dan bingkai tersuai

Anda juga boleh memilih untuk memaparkan elemen tersuai dalam bingkai carta berasingan, pada dasarnya menambahkannya sebagai carta baharu ke paparan carta semasa anda. Selain itu, plugin boleh membuka sebarang bilangan carta untuk sebarang simbol dan bingkai carta yang tersedia.

Berikut ialah cara bingkai carta tersuai dengan WebView kelihatan bersebelahan dengan carta biasa.

Kes penggunaan

Idea berikut akan kelihatan dan berfungsi paling baik apabila dibenamkan dalam bingkai tersuai:

  • WebView perkhidmatan pembuatan carta lain.
  • Panel dagangan tersuai berskala besar.
  • WebView perkhidmatan AI generatif yang boleh dirujuk oleh pedagang apabila memutuskan cara untuk bertindak balas terhadap pergerakan pasaran.

Untuk menambah bingkai tersuai baharu, gunakan kaedah 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;

Untuk plugin anda membuka carta baharu, gunakan kaedah ChartManager.AddChartFrame(string symbolName, TimeFrame timeFrame).

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

Nota

Sebaik sahaja plugin menambah bingkai tersuai atau carta baharu, cTrader akan bertukar kepada mod berbilang carta walaupun mod carta tunggal atau mod carta bebas telah didayakan sebelumnya.

Plugin boleh dikodkan untuk menambah bahagian tersuai ke UI menu utama, selain bahagian sedia ada seperti Dagangan, Algo, Salin dan Analisis. Mana-mana bahagian tersuai yang ditambah boleh mengandungi laman web, papan pemuka, butang, alat dan banyak lagi.

Berikut adalah kod untuk plugin mudah yang menambah bahagian tersuai cTrader Store, yang menempatkan laman web cTrader Store, ke menu utama:

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

Memilih cTrader Store akan mengarahkan ke bahagian tersuai, mendedahkan kandungannya seperti yang ditunjukkan di bawah.

Pelbagai penempatan

Plugin berikut menambah elemen tersuai ke beberapa lokasi UI cTrader sekaligus:

  • Plugin memaparkan jumlah komisen untuk semua posisi terbuka semasa dalam blok ASP.
  • Dalam paparan Pantau Dagangan, plugin menunjukkan volum kumulatif semua posisi terbuka.
  • Plugin juga menunjukkan WebView ctrader.com dalam bingkai carta tersuai.
 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();
        }
    }
}

Ringkasan

cTrader menyediakan beberapa pilihan untuk meletakkan elemen tersuai melalui plugin. Anda boleh menggunakannya untuk menyesuaikan UI cTrader dan menjadikan platform ini benar-benar milik anda.

Image title