跳转至

cTrader 中的 Renko 策略

Renko 图表是一种仅使用价格变动构建的图表。 只有当交易品种的价格变动超过某个点数阈值时,才会形成新的 Renko 砖块;蜡烛图中通常使用的时间成分在此完全不存在。 cTrader 允许交易者基于 Renko 柱开发自动化策略,其方式与基于时间的蜡烛柱开发此类策略完全相同。 在本文及其对应的视频中,我们将创建一个使用基于 Renko 策略的简单 cBot,并对其进行回测。

定义交易策略

我们将从定义买入信号开始。 由于 Renko 柱与时间无关,它们自然过滤了市场噪音,使其在识别趋势衰竭和潜在反转时非常有用。 当两个看跌 Renko 柱后跟随两个看涨柱时,我们将下达新的买入订单。

我们的卖出信号将遵循相反的设置。 当两个看涨 Renko 柱后跟随两个看跌柱时,我们将下达卖出订单。

创建示例 cBot

现在我们可以根据上述策略编写 cBot 代码。 首先,我们将定义订单数量以及相对止损和止盈水平的参数。

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

[Parameter(DefaultValue = 20)]
public double StopLoss { get; set; }

[Parameter(DefaultValue = 20)]
public double TakeProfit { get; set; }

我们将在 OnBarClosed() 方法中实现我们的交易策略。 对于我们的看涨设置,我们将检查索引为 32 的柱的收盘价是否低于开盘价,同时检查索引为 10 的柱的收盘价是否高于开盘价。

1
2
3
4
if (Bars.Last(3).Close < Bars.Last(3).Open && Bars.Last(2).Close < Bars.Last(2).Open && Bars.Last(1).Close > Bars.Last(1).Open && Bars.Last(0).Close > Bars.Last(0).Open)
{
    ExecuteMarketOrder(TradeType.Buy, SymbolName, Volume,InstanceId, StopLoss, TakeProfit);
}

对于我们的看跌设置,我们将检查相反的情况。 索引为 32 的柱的收盘价必须高于其开盘价;索引为 10 的柱的开盘价必须高于其收盘价。

1
2
3
4
if (Bars.Last(3).Close > Bars.Last(3).Open && Bars.Last(2).Close > Bars.Last(2).Open && Bars.Last(1).Close < Bars.Last(1).Open && Bars.Last(0).Close < Bars.Last(0).Open)
{
    ExecuteMarketOrder(TradeType.Sell, SymbolName, Volume, InstanceId, StopLoss, TakeProfit);
}

回测 cBot

保存并构建 cBot 后,我们可以直接进行回测。 如果我们将 cBot 添加到 EURUSD 图表中,并设置 20 点 Renko 阈值,我们应该会得到令人鼓舞的结果。

注意

基于 Renko 的策略使用与基于时间的蜡烛图相同的数据结构。 例如,我们使用了 Bars 集合来检索 Renko 柱,就像我们检索蜡烛图中的蜡烛一样。 此功能允许开发可以在任何图表类型上测试和运行的策略,而无需进行任何修改。 如果我们在蜡烛图上回测 cBot,所有操作仍将按照指定规则执行。

注意

基于 Renko 的策略可以像基于蜡烛图的策略一样在优化选项卡中进行优化。

在本指南中,我们以最少的努力创建了一个成功的基于 Renko 的 cBot。