Часто автоматизированным стратегиям необходимо учитывать информацию с разных таймфреймов перед принятием торгового решения. К счастью, cTrader предоставляет множество инструментов, которые позволяют алгоритмам легко получать доступ к данным с нескольких таймфреймов. В этом видео и соответствующей статье мы объясним, как вы можете использовать эти инструменты для создания эффективного сиБота.
Объявите параметры сиБота
Начнем с объявления необходимых параметров для скользящей средней. Нам понадобятся период, таймфрейм и тип скользящей средней.
12345678
[Parameter("MA 1 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}
Затем мы можем определить скользящую среднюю.
1
privateMovingAverage_ma1;
Мы можем инициализировать скользящую среднюю в методе OnStart(). Мы будем использовать метод MarketData.GetBars() для получения баров первой скользящей средней и передачи их в конструктор индикатора. Метод GetBars() полезен для получения данных баров для любого таймфрейма и любого необходимого вам инструмента.
Parameter("MA 1 Period",DefaultValue=14,Group="Moving Averages")]publicintMA1Period{get;set;}[Parameter("MA 1 Timeframe", DefaultValue = "Hour", Group = "Moving Averages")]publicTimeFrameMA1Timeframe{get;set;}[Parameter("MA 1 Type", Group = "Moving Averages")]publicMovingAverageTypeMA1Type{get;set;}[Parameter("MA 2 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA2Period{get;set;}[Parameter("MA 2 Timeframe", DefaultValue = "Hour2", Group = "Moving Averages")]publicTimeFrameMA2Timeframe{get;set;}[Parameter("MA 2 Type", Group = "Moving Averages")]publicMovingAverageTypeMA2Type{get;set;}[Parameter("MA 3 Period", DefaultValue = 14, Group = "Moving Averages")]publicintMA3Period{get;set;}[Parameter("MA 3 Timeframe", DefaultValue = "Hour4", Group = "Moving Averages")]publicTimeFrameMA3Timeframe{get;set;}[Parameter("MA 3 Type", Group = "Moving Averages")]publicMovingAverageTypeMA3Type{get;set;}privateMovingAverage_ma1;privateMovingAverage_ma2;privateMovingAverage_ma3;protectedoverridevoidOnStart(){_ma1=Indicators.MovingAverage(MarketData.GetBars(MA1Timeframe).ClosePrices,MA1Period,MA1Type);_ma2=Indicators.MovingAverage(MarketData.GetBars(MA2Timeframe).ClosePrices,MA2Period,MA2Type);_ma3=Indicators.MovingAverage(MarketData.GetBars(MA3Timeframe).ClosePrices,MA3Period,MA3Type);}
Реализуйте торговую логику
На этом этапе мы можем реализовать торговую логику. Наша стратегия будет удерживать позицию на покупку, когда все скользящие средние растут, и позицию на продажу, когда скользящие средние падают. Вот код для всей логики покупки.
Наконец, мы должны протестировать наш новый сиБот. Мы видим, что сиБот открывает позиции, когда скользящие средние синхронизированы в одном направлении, и остается вне рынка, когда каждый индикатор указывает на разное направление.