Saltar a contenido

Custom Frame Sample

Descripción general

El plugin Custom Frame Sample permite la gestión básica de marcos dentro de la interfaz de gráficos de cTrader. Controla cómo aparecen los marcos personalizados en el gráfico, ofreciendo una forma sencilla de organizar elementos visuales y personalizar su espacio de trabajo a través de las siguientes funcionalidades clave:

  • Añade un marco personalizado a la interfaz del gráfico con un solo clic.
  • Separa o vuelve a adjuntar el marco para admitir diseños multipantalla y configuraciones flexibles del espacio de trabajo.
  • Elimina el marco cuando ya no se necesita para mantener el área del gráfico clara y enfocada.
  • Muestra un bloque de texto personalizado dentro del marco para admitir la personalización de gráficos en tiempo real y retroalimentación visual.

Este plugin crea una interfaz simple en el Panel de símbolo activo que le permite añadir, eliminar, adjuntar o separar un marco de gráfico personalizado. Cada botón activa una acción específica, facilitando la gestión de elementos visuales directamente en el gráfico. El plugin se ejecuta solo mientras cTrader Windows o Mac está abierto y se detiene automáticamente cuando se cierra la plataforma.

Creación del plugin

Aprenda cómo crear, editar y construir plugins desde una plantilla o desde cero en nuestra guía paso a paso.

Puede encontrar el código del plugin Custom Frame Sample en GitHub, o simplemente copiarlo a continuación.

Código de ejemplo
using System.Linq; 
using cAlgo.API;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class CustomFrameSample : Plugin
    {
        protected override void OnStart()
        {
            var aspBlock = Asp.SymbolTab.AddBlock("Custom Frame Sample");

            var panel = new StackPanel();

            var addCustomFrameButton = new Button { Text = "Add Custom Frame", Margin = 5 };
            addCustomFrameButton.Click += OnAddCustomFrameButtonClick;
            panel.AddChild(addCustomFrameButton);

            var removeCustomFrameButton = new Button { Text = "Remove Custom Frame", Margin = 5 };
            removeCustomFrameButton.Click += OnRemoveCustomFrameButtonClick;
            panel.AddChild(removeCustomFrameButton);

            var detachCustomFrameButton = new Button { Text = "Detach Custom Frame", Margin = 5 };
            detachCustomFrameButton.Click += OnDetachCustomFrameButtonClick;
            panel.AddChild(detachCustomFrameButton);

            var attachCustomFrameButton = new Button { Text = "Attach Custom Frame", Margin = 5 };
            attachCustomFrameButton.Click += OnAttachCustomFrameButtonClick;
            panel.AddChild(attachCustomFrameButton);

            aspBlock.Child = panel;
        }

        private void OnAttachCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault(c => !c.IsAttached) is not {} customFrame)
                return;

            customFrame.Attach();
        }

        private void OnDetachCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault(c => c.IsAttached) is not {} customFrame)
                return;

            customFrame.Detach();
        }

        private void OnRemoveCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault() is not {} customFrame)
                return;

            ChartManager.RemoveFrame(customFrame.Id);
        }

        private void OnAddCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            var customFrame = ChartManager.AddCustomFrame("Custom Frame");

            customFrame.Child = new TextBlock
            {
                Text = $"Custom Frame {customFrame.Id} Child Control",
                FontSize = 32,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };
        }
    }        
}

Opciones de personalización

Custom Frame Sample incluye botones de control que le permiten añadir, eliminar e interactuar con un marco personalizado directamente en el gráfico. La siguiente tabla describe sus componentes clave y sus funciones:

Parámetro Descripción Valores posibles
panel Añade o reordena botones para acciones de marco adicionales u opciones de interfaz de usuario. stackpanel [panel]
Text Edita el texto del botón para mayor claridad. Add custom frame, Remove custom frame, Detach custom frame, Attach custom frame
Margin Cambia los márgenes para el equilibrio visual. 5, 8, 12, etc.
AddCustomFrame Modifica el título del marco para reflejar el propósito o símbolo. chartmanager.addcustomframe(Custom frame)
TextBlock.Text Cambia el mensaje para reflejar el contexto o identificador. Custom frame sample
FontSize Ajusta el tamaño para mayor claridad y ajuste del diseño. 32, 36, 40, etc.
HorizontalAlignment Ajusta la alineación para cambiar la presentación horizontal del contenido. horizontalalignment.center
VerticalAlignment Ajusta la alineación para cambiar la presentación vertical del contenido. verticalalignment.center
Attach() Agrega un mensaje cuando el marco se vuelve a adjuntar al gráfico. customframe.attach()
Detach() Agrega un mensaje cuando el marco se separa del gráfico. customframe.detach()
RemoveFrame Renombra el botón para reflejar su propósito. chartmanager.removeframe(customframe.id)

Casos de uso

Custom Frame Sample permite la gestión interactiva del gráfico sin requerir servicios externos. Los siguientes casos de uso muestran cómo el plugin puede mejorar la experiencia de operación.

Caso de uso Escenario Valor
Resaltar señales de operación Agregar un marco con un mensaje como Watch for breakout on EURUSD. Llama la atención sobre alertas específicas del gráfico o notas del usuario.
Gestión de múltiples pantallas Separar marcos y moverlos a otras pantallas. Expande la visibilidad del gráfico y admite configuraciones de operación con múltiples pantallas.
Organización personalizada del espacio de trabajo Organice el área del gráfico usando marcos para que coincida con su flujo de trabajo personal de operación. Le ayuda a organizar el área del gráfico según su flujo de trabajo personal de operación.
Marcadores visuales personalizados Agregar manualmente marcos con notas para resaltar eventos del gráfico como entradas de órdenes. Proporciona una forma flexible de etiquetar puntos clave en el gráfico sin dibujos permanentes.

Resumen

Este plugin ofrece una forma práctica de gestionar marcos personalizados directamente en los gráficos de cTrader. Con controles simples para agregar, eliminar, adjuntar o separar marcos, le ayuda a personalizar su espacio de trabajo, resaltar información clave y organizar diseños de gráficos fácilmente.

Para más detalles sobre el desarrollo, consulte nuestra documentación de plugins.