跳转至

如何在 5 分钟内为 cTrader 创建一个 cBot

在本文及其对应的视频中,我们将描述一种快速创建 cBot 的方法。 我们将创建的 cBot 将实现一个名为 three white soldiers 和 three black crows 的简单交易策略。 您可以在 我们的知识库 中了解更多关于此策略的信息。

在遵循我们的说明之前,请确保您已经从 官方网站 下载并安装了 cTrader Windows 或 Mac 应用程序。 启动它,并导航到 cTrader Algo 部分。 您可以在左侧面板中找到它。 点击 Algo 选项卡,cTrader Algo 部分应该会出现。

添加一个新的 cBot

点击 cTrader Algo 中的 新建 按钮以开始 创建一个新的 cBot。 输入一个名称,选择 C# 或 Python 作为编程语言,并继续操作,直到代码编辑器打开。

添加 cBot 设置

在我们开始实施交易策略之前,我们将查看基本的 cBot 参数和方法。 您还可以查阅 我们的文档 以熟悉不同参数和方法的作用。

  • cBot 参数 – 允许您定义可配置的属性,例如交易量或止损/止盈距离。

  • cBot 方法 – 定义您的 cBot 在特定事件发生时的行为。 在开发 cTrader cBot 时,您需要处理四个主要事件,每个事件都由 cTrader 提供的相应方法管理。 这些方法是 C# 的 OnStart()OnTick()OnBar()OnStop() 和 Python 的 on_start()on_tick()on_bar_closed()on_stop()。 请注意,C# 的 OnBar() 和 Python 的 on_bar_closed() 方法不包含在默认代码模板中。

下表详细定义了这四个方法。

C# Python 目的
OnStart() on_start() 当 cBot 实例开始操作时触发。 它用于初始化您计划在 cBot 中使用的任何变量,例如指标、计数器、事件处理程序或计时器。
OnTick() on_tick() 在 cBot 实例运行的交易图表上每次价格更新时触发。 通常用于基于实时数据的快速入场或出场逻辑。 在此方法中,您可以编程自定义的入场和出场条件,以及在新价格到达时需要运行的任何其他辅助功能。
OnBar() on_bar_closed() 在每个柱线关闭时触发。 在此方法中,您可以编程自定义的入场和出场条件,或需要在每个新柱线形成时运行的任何其他功能。
OnStop() on_stop() 当 cBot 停止时调用。 用于执行最终操作,例如关闭头寸、保存状态等。

添加交易逻辑

我们现在将为我们的交易策略添加代码。 我们的 cBot 应在图表上形成三个绿色柱线时开立买入头寸,并在连续出现三个红色柱线时开立卖出头寸。

首先,我们需要定义 cBot 的参数。 这些参数将可以从 cTrader UI 完全自定义。 我们将在 cBot 中定义三个参数。

  1. 每笔交易的交易量。
  2. 止损点数。
  3. 止盈点数。

将以下代码粘贴到您的代码编辑器中,紧接在类声明 (public class NewcBot : Robot) 之后的花括号下方。

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

注意

Python cBot 使用在其 .cs 文件 中声明的可自定义参数。

1
2
3
4
5
6
7
8
[Parameter(DefaultValue = 1000)]
public double Volume { get; set; }
        
[Parameter(DefaultValue = 10)]
public double TakeProfit { get; set; }
        
[Parameter(DefaultValue = 10)]
public double StopLoss { get; set; }

我们现在需要实现交易策略背后的逻辑。 将以下代码粘贴到您的 OnBar()on_bar_closed() 方法中。 请记住,此方法在每次形成新柱线时被调用。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
//Three White Soldiers
if(Bars.ClosePrices.Last(1) > Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) > Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) > Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume, "", StopLoss, TakeProfit);
}
            
//Three Black Crows
if(Bars.ClosePrices.Last(1) < Bars.OpenPrices.Last(1) 
&& Bars.ClosePrices.Last(2) < Bars.OpenPrices.Last(2)  
&& Bars.ClosePrices.Last(3) < Bars.OpenPrices.Last(3))
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, "", StopLoss, TakeProfit);
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Three White Soldiers
if (close.Last(1) > open_.Last(1) and
    close.Last(2) > open_.Last(2) and
    close.Last(3) > open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

# Three Black Crows
elif (close.Last(1) < open_.Last(1) and
      close.Last(2) < open_.Last(2) and
      close.Last(3) < open_.Last(3)):
    api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, api.Volume, "", api.StopLoss, api.TakeProfit)

现在我们将更仔细地检查代码。 cTrader 提供了对图表历史柱线的访问,允许我们检查最后三个柱线是否都是绿色或红色。 在上面的 C# OnBar() 和 Python on_bar_closed() 方法中,我们首先检查最后三个柱线是否都是绿色。 然后我们评估这些柱线是否都是红色。

如果其中一个条件为真,我们使用 ExecuteMarketOrder() 方法下达市价单。 它接受多个输入(参数),其中最重要的是交易方向、交易品种、交易量、止损和止盈。

在我们的案例中,订单方向 (TradeType.Buy, TradeType.Sell) 由交易策略条件决定。 交易品种名称直接从我们的 cBot 运行的图表中获取 SymbolName。 交易量、止损和止盈(C# 的 VolumeStopLossTakeProfit 和 Python 的 VolumeInLotsStopLossInPipsTakeProfitInPips)都从我们定义的 cBot 参数中获取。

构建并运行 cBot

我们现在需要检查我们的 cBot 是否成功构建。 默认情况下,构建结果窗口位于代码编辑器的正下方。 如果您没有看到它,请点击 cTrader 界面最顶部的 布局 按钮,然后选择 构建结果。 此操作的键盘快捷键是 Ctrl + W

之后,点击 cTrader 界面最顶部的 构建 按钮。 或者,右键点击您的 cBot,并在新出现的菜单中点击 构建,或者直接按下 Ctrl + B

Image title

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

Image title

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

Image title

在您的 cBot 成功构建后,您就可以开始使用它了。 您只需要在交易图表上 添加一个实例。 为此,只需点击 cBot 名称右侧的 + 图标。 您将看到可以运行 cBot 的所有交易品种列表。

Image title

我们将选择 EURUSD。 选择交易品种后,将添加一个新的 cBot 实例。 您将在 cBot 列表中看到一个新的项目,其中包含交易品种名称和您希望交易的时间周期。

您还应该看到您在 参数 选项卡中编码的参数,该选项卡位于交易图表的正下方。

Image title

您可以随意更改这些参数,或者保持它们的默认值。

此外,您将在 EURUSD 图表的顶部看到一个 播放 按钮。

Image title

要启动您的实例,请按下此按钮。 或者,此按钮的副本也位于左侧 cBot 列表中实例的右侧。 这两个按钮中的任何一个都会启动 cBot。

点击任一按钮后,您应该会看到它变为橙色,这意味着我们的 cBot 实例现在正在运行。 在 日志 选项卡中,您还应该看到一条新行,表明 cBot 已启动。

回测 cBot

我们的 cBot 在实盘交易图表上可能需要很长时间才能开仓。 我们将运行一个快速回测,以查看它在历史数据上的表现。 为此,请打开 回测 选项卡。

Image title

使用屏幕顶部附近的日历滑块选择您希望用于回测的日期范围。 启用 可视化模式 标志以实时跟踪回测结果。

我们将滑块向后移动一个月。 点击 播放 按钮以在选定的历史数据上启动 cBot。

之后,您将能够在交易图表下方和 参数 部分右侧的选项卡中看到新仓位的开仓和/或平仓。 具体来说,在检测到我们编码的两种模式中的任何一种后,cBot 将下买单或卖单。

运行回测是分析您的 cBot 是否正常工作的有用方法。

总结

我们希望本文对您有所帮助,展示了如何使用 cTrader 创建自动交易机器人。

Image title