Genellikle, otomatik stratejiler bir işlem kararı vermeden önce farklı zaman dilimlerinden gelen bilgileri dikkate almalıdır. Neyse ki, cTrader algoların birden fazla zaman diliminden verilere kolayca erişmesini sağlayan birçok araç sağlar. Bu videoda ve ilgili makalesinde, etkili bir cBot oluşturmak için bu araçları nasıl kullanabileceğinizi açıklayacağız.
cBot parametrelerini bildirin
Bir hareketli ortalama için gerekli parametreleri bildirerek başlayacağız. Döneme, zaman dilimine ve hareketli ortalama türüne ihtiyacımız olacak.
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;}
Sonra, hareketli ortalamayı tanımlayabiliriz.
1
privateMovingAverage_ma1;
Hareketli ortalamayı OnStart() metodunda başlatabiliriz. İlk hareketli ortalamanın barlarını almak ve bunları gösterge yapıcısına geçirmek için MarketData.GetBars() metodunu kullanacağız. GetBars() metodu, ihtiyacınız olan herhangi bir zaman dilimi ve herhangi bir sembol için bar verilerini almak için kullanışlıdır.
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);}
İşlem mantığını uygulayın
Bu noktada, işlem mantığını uygulayabiliriz. Stratejimiz, tüm hareketli ortalamalar yükselirken bir alış pozisyonu ve hareketli ortalamalar düşerken bir satış pozisyonu tutacaktır. İşte tüm alış tarafı mantığı için kod.
Çoklu zaman dilimi stratejisini geriye dönük test edin
Son olarak, yeni cBot'umuzu geriye dönük test etmeliyiz. Hareketli ortalamalar aynı yöne senkronize olduğunda cBot'un pozisyonlara girdiğini ve her gösterge farklı bir yöne işaret ettiğinde piyasadan uzak durduğunu görebiliriz.