Перейти к содержанию

Стратегии Ренко в cTrader

График Ренко — это тип графика, который строится только на основе движения цены. Новый кирпич Ренко формируется только тогда, когда движение цены для символа превышает определенный порог в пипах; временной компонент, обычно используемый в свечных графиках, полностью отсутствует. cTrader позволяет трейдерам разрабатывать автоматизированные стратегии на основе баров Ренко точно так же, как разрабатывать такие стратегии для свечных баров, основанных на времени. В этой статье и соответствующем видео мы создадим простой сиБот, который использует стратегию на основе Ренко, и протестируем его.

Определение торговой стратегии

Начнем с определения сигнала на покупку. Поскольку бары Ренко не зависят от времени, они естественным образом фильтруют рыночный шум, что делает их полезными для определения истощения тренда и потенциальных разворотов. Мы разместим новый ордер на покупку, когда за двумя медвежьими барами Ренко последуют два бычьих бара.

Наш сигнал на продажу будет следовать противоположной настройке. Мы разместим ордер на продажу, когда за двумя бычьими барами Ренко последуют два медвежьих бара.

Создайте пример сиБота

Теперь мы можем приступить к написанию кода сиБота на основе вышеуказанной стратегии. Для начала мы определим параметры для объема ордера и относительных уровней стоп-лосса и тейк-профита.

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(). Для нашей бычьей настройки мы проверим, имеют ли бары с индексами 3 и 2 цену закрытия ниже цены открытия, а также проверим, имеют ли бары с индексами 1 и 0 цену закрытия выше цены открытия.

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);
}

Для нашей медвежьей настройки мы проверим противоположное. Бары с индексами 3 и 2 должны иметь более высокую цену закрытия, чем их цена открытия; бары с индексами 1 и 0 должны иметь более высокую цену открытия, чем их цена закрытия.

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);
}

Бэктестинг сиБота

После того как мы сохраним и соберем наш сиБот, мы можем сразу приступить к бэктестингу. Если мы добавим сиБот на график для EURUSD с порогом Ренко в 20 пипов, мы должны получить обнадеживающие результаты.

Примечание

Стратегии на основе Ренко используют те же структуры данных, что и свечи, основанные на времени. Например, мы использовали коллекцию Bars для получения наших баров Ренко так же, как мы получали бы свечи со свечного графика. Эта функция позволяет разрабатывать стратегии, которые можно тестировать и запускать на любом типе графика без необходимости каких-либо изменений. Если мы протестируем наш сиБот на свечном графике, все операции по-прежнему будут выполняться в соответствии с указанными правилами.

Примечание

Стратегии на основе Ренко можно оптимизировать так же, как стратегии на основе свечей, на вкладке Optimisation.

В этом руководстве мы создали успешный сиБот на основе Ренко с минимальными усилиями.