跳转至

如何在 cTrader 中创建自定义指标

在本文及其对应的视频中,我们将讨论如何在 cTrader 中创建新的自定义指标。 我们将创建一个简单的移动平均线指标,并向你展示如何快速自定义指标参数。

在按照我们的说明操作之前,请确保你已从 官方网站 下载并安装了 cTrader Windows 或 cTrader Mac 应用程序。 启动它,并导航到 cTrader Algo 部分。 在左侧面板中找到 Algo 选项卡并点击它。 你现在应该看到 cTrader Algo 界面。

添加新的自定义指标

要创建新的自定义指标,我们需要点击新建按钮并选择空白。 一个新的指标将出现在指标列表的底部,同时在右侧面板中显示代码模板。

接下来,更改指标的默认名称。 为此,右键点击它并选择重命名,或选中它并按F2。 我们将输入Simple moving average作为我们指标的新名称。 完成后,按 Enter。 此时,我们已准备好开始编写自定义指标的逻辑和公式。

查看指标结构

在开始之前,我们将快速浏览一下代码编辑器窗口中显示的指标代码结构。 该结构包括默认的参数设置以及用于计算和在图表上显示指标的方法。

首先,每个指标都有一个包含其类属性的部分。 在这里,您可以配置指标的访问权限、指标在图表上的显示位置、指标使用的时区、指标的缩放以及其他一些高级设置。

您还会注意到,每个新的指标代码模板都定义了一个名为NewIndicator的类,其中包含所有指标事件和任何自定义方法。 类名声明后跟: Indicator。 这意味着NewIndicator类继承自Indicator基类,而基类又包含我们在构建自定义指标时将访问的所有预定义对象。

有关指标代码结构和继承原则的更详细说明,请参阅我们的技术文档

在下面的部分中,您将看到包含所有默认指标设置的代码块。 最初,此部分仅包含以下代码。

1
2
3
4
5
[Parameter(DefaultValue = "Hello world!")]
public string Message { get; set; }

[Output("Main")]
public IndicatorDataSeries Result { get; set; }

在参数声明下方,您应该会看到指标方法。 可以将方法视为某些事件,这些事件在指标启动时以及新价格数据输入到指标时执行。 下表定义了三个关键的指标方法。

方法名称 定义
Initialize() 当指标附加到图表时调用此事件方法。 它用于初始化您计划在指标中使用的任何变量。 您还可以定义和引用其他指标,以使用其他指标的公式创建单个指标。
OnCalculate() 每次传入的数据跳动时都会调用此方法。 在此方法中,您可以编写逻辑来处理传入的数据,以计算指标应显示的下一个绘制线。
OnExcepion() 如果您的指标遇到异常,则会调用此方法。 您可以使用它来定义指标在捕获错误时应执行的操作。 请注意,默认指标代码模板中不存在此方法。

编写指标代码

我们现在将继续为我们的简单移动平均指标添加自定义代码。 我们的指标将作为重叠指标显示在交易图表上,覆盖当前图表类型。

首先,我们必须如前所述声明指标类属性。 我们将为指标添加以下属性设置。

1
[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AutoRescale = false, AccessRights = AccessRights.None)] 

您可以按如下方式解释上述代码:

  • IsOverlay = true - 指标将绘制在图表上,覆盖蜡烛图、区间柱、砖形图或其他元素,具体取决于所选的图表类型。
  • TimeZone = TimeZones.UTC - 指标将使用协调世界时,这是所有指标的默认值。 仅当您的指标在其计算中使用任何日期和时间功能时,才建议更改此属性的值。
  • AutoRescale = false - 此属性定义指标是否应自动重新缩放其附加的图表。 由于此属性的值为false,我们的指标将不会重新缩放图表。
  • AccessRights = AccessRights.None - 指标将不被允许访问互联网或操作本地机器上的文件。

我们现在可以定义指标的参数。 这些是添加指标到图表后可以在设置面板中调整的设置。 我们将编写以下参数:

  • 指标公式的数据源。
  • 公式中使用的周期。
  • 指标输出结果的绘制线。

将以下代码片段添加到指标中。

1
2
3
4
5
6
7
8
[Parameter("Source")]
public DataSeries Source { get; set; }

[Parameter("Periods", DefaultValue = 14)]
public int Periods { get; set; }

[Output("Main", LineColor = "Turquoise")]
public IndicatorDataSeries Result { get; set; }

我们将14设置为Periods参数的默认值,并将turquoise设置为默认线条颜色。 但是,您可以将这些参数设置为cTrader支持的几乎任何默认值。

现在,我们可以使用Calculate()事件方法添加将在图表上绘制指标输出的代码。

1
2
3
4
5
6
7
8
9
public override void Calculate(int index)
{
    var sum = 0.0;

    for (var i = index - Periods + 1; i <= index; i++)
    sum += Source[i];

    Result[index] = sum / Periods;
}

此代码将指标计算的结果分配给我们之前定义的Result参数。

构建并测试指标

一旦我们完成了指标代码的编写,就可以点击cTrader UI顶部栏中的构建按钮。 或者,右键点击您的指标并在新打开的菜单中选择构建,或按Ctrl + B

如果构建成功,您将在代码编辑器底部的构建结果区域看到绿色消息。

Image title

但是,如果您的代码存在问题,您将看到红色消息以及所有构建错误的详细摘要。

Image title

成功构建指标后,我们现在可以继续创建实例。 最简单的方法是右键点击指标并选择添加实例选项。

Image title

这将为h1图表的EURUSD创建一个新指标实例。 不过,您可以通过点击实例并打开相关菜单来更改图表类型、时间周期和交易品种。

新出现的参数选项卡应显示我们之前编码的三个可自定义参数。 您可以保持它们不变,或直接在cTrader界面中更改它们的值。

交易图表现在应显示指标输出。 在我们的案例中,这将是一条显示简单移动平均线的青绿色线。

如果您右键点击该线,您将看到一个允许自定义指标参数的新窗口。 例如,我们可以将输出线的颜色从青绿色切换为蓝色。 我们还可以调整线的粗细。 要保存更改,请点击确定

注意

cTrader允许快速在实例输出和代码编辑器窗口之间切换,以便自定义指标。 这使其成为快速测试某些指标参数或任何自定义计算逻辑的理想工具。

将指标添加到实时图表

我们现在将切换到cTrader中的交易选项卡,将我们的自定义指标附加到实时图表上。 打开您想要分析的交易品种的图表。

在顶部菜单中,点击指标图标以打开一个新部分。

然后选择自定义,并在新出现的菜单中选择我们创建的自定义指标(简单移动平均线)。

您将看到一个允许您自定义指标参数的新窗口。 选择您偏好的值后,点击确定将指标添加到所选交易品种的图表中。

要返回指标设置窗口,请右键点击指标输出。 在我们的案例中,我们可以右键点击青绿色线。 或者,点击图表上悬停在指标名称上时出现的属性图标。

指标设置窗口将出现,您将能够更改绘制线的颜色及其粗细。

Image title