Custom Frame Sample¶
概述 ¶
Custom Frame Sample 插件支持在 cTrader 图表界面中进行基本的框架管理。 它控制自定义框架在图表上的显示方式,提供了一种简单的方法来组织视觉元素,并通过以下关键功能定制您的工作空间:
- 一键将自定义框架添加到图表界面。
- 分离或重新附加框架,以支持多屏幕布局和灵活的工作空间配置。
- 在不再需要时移除框架,以保持图表区域清晰和专注。
- 在框架内显示自定义文本块,以支持实时图表定制和视觉反馈。

该插件在活跃交易品种面板中创建了一个简单的界面,允许您添加、移除、附加或分离自定义图表框架。 每个按钮都会触发特定操作,使您能够直接在图表上轻松管理视觉元素。 该插件仅在 cTrader Windows 或 Mac 打开时运行,并在平台关闭时自动停止。
插件创建 ¶
了解如何通过我们的分步指南创建、编辑和构建插件,无论是从模板还是从头开始。
您可以在GitHub上找到 Custom Frame Sample 插件的代码,或直接复制下面的代码。
示例代码
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
};
}
}
}
自定义选项 ¶
Custom Frame Sample 包括控制按钮,允许您直接在图表上添加、移除和与自定义框架进行交互。 下表概述了其关键组件及其功能:
| 参数 | 描述 | 可选值 |
|---|---|---|
panel | 添加或重新排序按钮以用于附加框架操作或UI选项。 | stackpanel [panel] |
Text | 编辑按钮文本以提高清晰度。 | Add custom frame, Remove custom frame, Detach custom frame, Attach custom frame |
Margin | 更改边距以实现视觉平衡。 | 5, 8, 12, 等。 |
AddCustomFrame | 修改框架标题以反映用途或符号。 | chartmanager.addcustomframe(Custom frame) |
TextBlock.Text | 更改消息以反映上下文或标识符。 | Custom frame sample |
FontSize | 调整大小以提高清晰度和布局适配。 | 32, 36, 40, 等。 |
HorizontalAlignment | 调整对齐方式以改变水平内容呈现。 | horizontalalignment.center |
VerticalAlignment | 调整对齐方式以改变垂直内容呈现。 | verticalalignment.center |
Attach() | 当框架重新附加到图表时添加消息。 | customframe.attach() |
Detach() | 当框架从图表分离时添加消息。 | customframe.detach() |
RemoveFrame | 重命名按钮以反映其用途。 | chartmanager.removeframe(customframe.id) |
用例 ¶
Custom Frame Sample 无需外部服务即可实现交互式图表管理。 以下用例展示了该插件如何增强交易体验。
| 使用场景 | 场景 | 值 |
|---|---|---|
| 高亮交易信号 | 添加一个带有消息的框架,例如Watch for breakout on EURUSD。 | 吸引对特定图表警报或用户注释的关注。 |
| 多屏幕管理 | 分离框架并将其移动到其他屏幕。 | 扩展图表可见性并支持多屏幕交易设置。 |
| 自定义工作区组织 | 使用框架组织图表区域,以匹配您的个人交易流程。 | 帮助您根据个人交易流程组织图表区域。 |
| 自定义视觉标记 | 手动添加带有注释的框架,以突出显示订单入场等图表事件。 | 提供一种灵活的方式来标记图表上的关键点,而无需永久绘图。 |
总结 ¶
此插件提供了一种直接在 cTrader 图表上管理自定义框架的实用方法。 通过简单的控件添加、删除、附加或分离框架,它帮助您个性化工作区,突出关键信息并轻松组织图表布局。
有关进一步的开发细节,请参阅我们的插件文档。