Saltar a contenido

Ubicaciones de plugins en la interfaz de usuario de cTrader

Los plugins pueden agregar elementos personalizados a áreas de la interfaz de usuario de cTrader como el Panel de símbolo activo (ASP), Visualización de operaciones (TW), gráfico y marcos personalizados, ventana personalizada y área del menú principal. Esta guía demuestra cómo utilizar cada una de estas opciones y sugiere casos de uso relevantes.

¡Ubicaciones de plugins en un minuto!

  • Al extender la interfaz de usuario de cTrader, puede integrar perfectamente servicios de terceros con el terminal de operaciones.
  • Un solo plugin puede ejecutar diferentes funcionalidades en diferentes áreas de la interfaz de usuario, permitiéndole personalizar el aspecto y la sensación de cTrader.
  • Puede configurar los elementos personalizados creados por el plugin para que puedan separarse y volver a adjuntarse a sus ubicaciones originales en la interfaz de usuario de cTrader.
  • Ciertas ideas pueden encajar mejor en áreas específicas de la interfaz de usuario. Puede experimentar con las ubicaciones para descubrir qué funciona mejor.

ASP

El ASP se encuentra a la derecha de la visualización del gráfico. Un plugin puede agregar uno o más elementos personalizados utilizando las siguientes opciones:

  • Como un AspTab. Cuando se usa esta opción, el plugin muestra elementos personalizados en pestañas separadas junto a Símbolo, DoM y otros.
  • Como un AspBlock. Cuando se usa esta opción, el plugin muestra elementos personalizados en la pestaña Símbolo en nuevas secciones plegables y expandibles con títulos y posiciones personalizables.

Así es como se ve el mismo plugin como un bloque y como una pestaña.

Casos de uso

Aquí hay algunas ideas para plugins que muestran elementos personalizados en un bloque ASP:

  • Una pequeña calculadora de niveles de protección para un símbolo dado.
  • Una cuadrícula que muestra información adicional sobre el símbolo actualmente activo.

Las siguientes ideas funcionarían mejor cuando se integran como una pestaña ASP:

  • Una lista que contiene análisis personalizados sobre todas las posiciones actualmente abiertas.
  • Una WebView de un medio de noticias financieras.

Para agregar elementos personalizados como un bloque ASP, use el método 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; 

Para agregar elementos personalizados como una pestaña ASP, use el método 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;

Para determinar el orden en el que aparece un bloque o pestaña en el ASP, use la propiedad Index de AspBlock y AspTab, respectivamente.

Advertencia

Tenga en cuenta que no se pueden colocar pestañas personalizadas antes de la pestaña Símbolo. Tampoco puede incrustar su bloque más arriba que la sección Nueva orden en la pestaña Símbolo. Como resultado, el índice más pequeño posible para un bloque integrado en el ASP es 1.

Visualización de operaciones

La Visualización de operaciones se encuentra justo debajo del área del gráfico. Puede añadir elementos personalizados allí como una pestaña separada.

Así es como podría verse un plugin cuando se añade a la visualización.

Casos de uso

Las siguientes ideas son adecuadas para mostrarse en la visualización de Visualización de operaciones.

  • Un conjunto de análisis personalizado que muestra varias estadísticas sobre la cuenta actual del usuario.
  • Una WebView de un foro web orientado a las operaciones.

Para añadir elementos personalizados como una nueva pestaña en la visualización de Visualización de operaciones, utilice el método 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;

De manera similar a los bloques y pestañas del ASP, puede utilizar la propiedad Index de un Trade WatchTab para definir su posición relativa a otras pestañas en la visualización de Visualización de operaciones.

Nota

Todas las pestañas personalizadas colocadas en la visualización de Visualización de operaciones aparecen solo en el extremo derecho de las pestañas predeterminadas incluidas en la interfaz de usuario de cTrader al iniciar por primera vez el terminal. Por consiguiente, el Index de estas pestañas debe ser 1 o mayor; el índice solo determina la posición relativa de las pestañas del plugin en comparación con otras pestañas del plugin.

Gráfico y marco personalizado

También puede elegir mostrar elementos personalizados en un marco de gráfico separado, esencialmente añadiéndolo como un nuevo gráfico a su vista de gráfico actual. Además, un plugin puede abrir cualquier número de gráficos para cualquier símbolo y marco de gráfico disponible.

Así es como se ve un marco de gráfico personalizado con una WebView junto a un gráfico normal.

Casos de uso

Las siguientes ideas se verían y funcionarían mejor cuando se integran en un marco personalizado:

  • Una WebView de otro servicio de gráficos.
  • Un panel de operaciones personalizado a gran escala.
  • Una WebView de un servicio de IA generativa que un operador puede consultar al decidir cómo reaccionar a los movimientos del mercado.

Para añadir un nuevo marco personalizado, utilice el método 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;

Para que su plugin abra un nuevo gráfico, utilice el método ChartManager.AddChartFrame(string symbolName, TimeFrame timeFrame).

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

Nota

Una vez que un plugin añade un nuevo marco personalizado o gráfico, cTrader cambiará al modo multigráfico incluso si el modo de un solo gráfico o el modo de gráfico libre estaba activado anteriormente.

Los plugins se pueden programar para añadir secciones personalizadas a la interfaz de usuario del menú principal, además de las secciones existentes como Operar, Algo, Copy y Analizar. Cualquier sección personalizada añadida puede contener sitios web, paneles, botones, herramientas y más.

Este es el código de un plugin simple que añade una sección personalizada cTrader Store, que alberga el sitio web cTrader Store, al menú principal:

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

Al seleccionar cTrader Store se navega a la sección personalizada, revelando su contenido como se muestra a continuación.

Múltiples ubicaciones

El siguiente plugin añade elementos personalizados a varias ubicaciones de la interfaz de usuario de cTrader a la vez:

  • El plugin muestra la suma de las comisiones de todas las posiciones actualmente abiertas en un bloque del ASP.
  • En la visualización de Visualización de operaciones, el plugin muestra el volumen acumulado de todas las posiciones abiertas.
  • El plugin también muestra una WebView de ctrader.com en un marco de gráfico personalizado.
 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();
        }
    }
}

Resumen

cTrader proporciona varias opciones para colocar elementos personalizados a través de plugins. Puede utilizarlos para personalizar la interfaz de usuario de cTrader y hacer que la plataforma sea verdaderamente suya.

Image title