تكمل هذه المقالة قائمتنا الشاملة من عينات كود المؤشرات. نتوسع في بعض المفاهيم المذكورة في عينات الكود هذه ونناقش العديد من الميزات المتقدمة التي يمكنك تنفيذها عند إنشاء مؤشرات جديدة.
سمة السحابة
من المحتمل أنك رأيت سحابًا شفافة على مخططات التداول.
يمكنك إضافة سحب إلى مخرجات المؤشر الخاص بك باستخدام سمة الفئة CloudAttribute كما هو موضح في المثال أدناه:
usingcAlgo.API;usingcAlgo.API.Indicators;usingSystem;namespacecAlgo{/// <summary>/// This indicator shows how to make a built-in cTrader indicator multi time frame and how to use cloud attribute/// </summary>[Indicator(IsOverlay = true, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None), Cloud("Top", "Bottom", Opacity = 0.2)]publicclassBollingerBandsMTFCloudSample:Indicator{privateBollingerBands_bollingerBands;privateBars_baseBars;[Parameter("Base TimeFrame", DefaultValue = "Daily")]publicTimeFrameBaseTimeFrame{get;set;}[Parameter("Source", DefaultValue = DataSeriesType.Close)]publicDataSeriesTypeDataSeriesType{get;set;}[Parameter("Periods", DefaultValue = 14, MinValue = 0)]publicintPeriods{get;set;}[Parameter("Standard Deviation", DefaultValue = 2, MinValue = 0)]publicdoubleStandardDeviation{get;set;}[Parameter("MA Type", DefaultValue = MovingAverageType.Simple)]publicMovingAverageTypeMaType{get;set;}[Output("Main", LineColor = "Yellow", PlotType = PlotType.Line, Thickness = 1)]publicIndicatorDataSeriesMain{get;set;}[Output("Top", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]publicIndicatorDataSeriesTop{get;set;}[Output("Bottom", LineColor = "Red", PlotType = PlotType.Line, Thickness = 1)]publicIndicatorDataSeriesBottom{get;set;}protectedoverridevoidInitialize(){_baseBars=MarketData.GetBars(BaseTimeFrame);varbaseSeries=GetBaseSeries();_bollingerBands=Indicators.BollingerBands(baseSeries,Periods,StandardDeviation,MaType);}publicoverridevoidCalculate(intindex){varbaseIndex=_baseBars.OpenTimes.GetIndexByTime(Bars.OpenTimes[index]);Main[index]=_bollingerBands.Main[baseIndex];Top[index]=_bollingerBands.Top[baseIndex];Bottom[index]=_bollingerBands.Bottom[baseIndex];}privateDataSeriesGetBaseSeries(){switch(DataSeriesType){caseDataSeriesType.Open:return_baseBars.OpenPrices;caseDataSeriesType.High:return_baseBars.HighPrices;caseDataSeriesType.Low:return_baseBars.LowPrices;caseDataSeriesType.Close:return_baseBars.ClosePrices;default:thrownewArgumentOutOfRangeException("DataSeriesType");}}}publicenumDataSeriesType{Open,High,Low,Close}}
يأخذ منشئ CloudAttribute اسمين لخطي الإخراج. بعد ذلك، يقوم تلقائيًا برسم السحابة لتتطابق مع المساحة بين هذين المخرجين.
يمكنك أيضًا تعيين شفافية السحابة باستخدام خاصية Opacity. لإعداد لون السحابة، استخدم خاصية FirstColor. بشكل افتراضي، سيتطابق لون السحابة مع لون الخط الأول في مخرج المؤشر.
العمل مع الألوان
تتضمن واجهة برمجة التطبيقات Algo enumColor التي يمكن استخدامها لتكوين الألوان لكائنات Chart، وعناصر التحكم في المخطط والمخرجات.
تمثل قيم enumColor الألوان شائعة الاستخدام. يمكنك استخدامها دون الحاجة إلى التعامل مع رموز الألوان السداسية عشرية أو ARGB.
عند تخصيص المخرجات، يمكنك تعيين ألوانها باستخدام خاصية السلسلة LineColor. كما هو موضح أدناه، فإنها تقبل كلاً من الألوان المسماة ورموز الألوان السداسية عشرية.
1234
_=Chart.DrawStaticText("NamedColor","This is text using Color class color name properties",VerticalAlignment.Center,HorizontalAlignment.Center,Color.Red);_=Chart.DrawStaticText("HexadecimalColor","This is text using Hexadecimal color",VerticalAlignment.Bottom,HorizontalAlignment.Center,Color.FromHex("#FF5733"));_=Chart.DrawStaticText("ARGBColor","This is text using ARGB color",VerticalAlignment.Top,HorizontalAlignment.Center,Color.FromArgb(255,200,100,60));_=Chart.DrawStaticText("ParsedNameColor","This is text using color name by parsing it from string",VerticalAlignment.Center,HorizontalAlignment.Left,Color.FromName("Yellow"));
1 2 3 4 5 6 7 8 910111213
varstackPanel=newStackPanel{Orientation=Orientation.Vertical,HorizontalAlignment=HorizontalAlignment.Center,VerticalAlignment=VerticalAlignment.Center};stackPanel.AddChild(newTextBlock{Text="Red Color property",BackgroundColor=Color.Red});stackPanel.AddChild(newTextBlock{Text="Hexadecimal Color code",BackgroundColor=Color.FromHex("#FF5733")});stackPanel.AddChild(newTextBlock{Text="ARGB Color",BackgroundColor=Color.FromArgb(200,100,40,80)});stackPanel.AddChild(newTextBlock{Text="Color Name",BackgroundColor=Color.FromName("Green")});Chart.AddControl(stackPanel);
يمكن أيضًا معاملة الألوان كمعلمات قابلة للتخصيص. للسماح للمستخدمين باختيار ألوان مخصصة (على سبيل المثال، ألوان الخطوط التي يرسمها المؤشر)، قم بإعلان معلمة من نوع Color.
استخدم خاصية Application.UserTimeOffset للحصول على المنطقة الزمنية لمنصة المستخدم. يُستخدم هذا بشكل أساسي لتحويل وقت المؤشر الخاص بك إلى المنطقة الزمنية للمستخدم.
تدعم cTrader أنواع معاملات التاريخ والوقت المخصصة التي تسمح لك بالحصول على قيم التاريخ والوقت ذات الأنواع القوية كمدخلات للخوارزميات الخاصة بك بدلاً من استخدام نوع المعامل string.
باستخدام أنواع معاملات التاريخ والوقت الجديدة، يمكنك الحصول على القيم في المنطقة الزمنية للخوارزمية الخاصة بك مع التحقق المدمج من الحد الأدنى والأقصى ودعم التحسين الكامل، تمامًا مثل أنواع المعاملات الأخرى.
للحصول على قيمة وقت معينة عبر معامل قابل للتخصيص، يمكنك استخدام أنواع C# التالية: