غالبًا ما تحتاج الاستراتيجيات الآلية إلى النظر في المعلومات من أطر زمنية مختلفة قبل اتخاذ قرار التداول. لحسن الحظ، يوفر cTrader الكثير من الأدوات التي تسمح للخوارزميات بالوصول بسهولة إلى البيانات من أطر زمنية متعددة. في هذا الفيديو والمقال المقابل له، سنشرح كيف يمكنك استخدام هذه الأدوات لإنشاء cBot فعال.
إعلان معلمات cBot
سنبدأ بإعلان المعلمات الضرورية للمتوسط المتحرك. سنحتاج إلى الفترة، والإطار الزمني، ونوع المتوسط المتحرك.
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);}
تنفيذ منطق التداول
في هذه المرحلة، يمكننا تنفيذ منطق التداول. ستحتفظ استراتيجيتنا بمركز شراء عندما تكون جميع المتوسطات المتحركة في ارتفاع ومركز بيع عندما تكون المتوسطات المتحركة في انخفاض. إليك الكود لجميع منطق جانب الشراء.
أخيرًا، يجب علينا اختبار cBot الجديد الخاص بنا. يمكننا أن نرى أن cBot يدخل في مراكز عندما تكون المتوسطات المتحركة متزامنة في نفس الاتجاه ويبقى خارج السوق عندما يشير كل مؤشر إلى اتجاه مختلف.