Using Clouds in Indicator
Draw highlighted areas between two indicator lines.
Last updated
Was this helpful?
Was this helpful?
[InputParameter("Fast SMA period", 10, 1, 9999, 1, 0)]public int FastPeriod = 50;[InputParameter("Slow SMA period", 20, 1, 9999, 1, 0)]public int SlowPeriod = 100;[InputParameter("Fast line above cloud style", 30)]public Color FastAboveCloudColor;[InputParameter("Slow line above cloud style", 40)]public Color SlowAboveCloudColor;private Indicator fastSma;private Indicator slowSma;this.Name = "Crossing lines";this.AddLineSeries("Fast SMA line", Color.Red, 3, LineStyle.Solid);this.AddLineSeries("Slow SMA line", Color.Green, 3, LineStyle.Solid);this.FastAboveCloudColor = Color.FromArgb(127, Color.Green);this.SlowAboveCloudColor = Color.FromArgb(127, Color.Red);protected override void OnInit(){ this.fastSma = Core.Instance.Indicators.BuiltIn.SMA(this.FastPeriod, PriceType.Close); this.slowSma = Core.Instance.Indicators.BuiltIn.SMA(this.SlowPeriod, PriceType.Close); this.AddIndicator(this.fastSma); this.AddIndicator(this.slowSma);}protected override void OnUpdate(UpdateArgs args){ var currFastValue = this.fastSma.GetValue(); var currSlowValue = this.slowSma.GetValue(); var prevFastValue = this.fastSma.GetValue(1); var prevSlowValue = this.slowSma.GetValue(1); var isCrossing = currFastValue > currSlowValue && prevFastValue < prevSlowValue || currFastValue < currSlowValue && prevFastValue > prevSlowValue; this.SetValue(currFastValue, 0); this.SetValue(currSlowValue, 1); if (isCrossing) { this.EndCloud(0, 1, Color.Empty); if (currFastValue > currSlowValue) this.BeginCloud(0, 1, this.FastAboveCloudColor); else if (currFastValue < currSlowValue) this.BeginCloud(0, 1, this.SlowAboveCloudColor); }}protected override void OnClear(){ this.RemoveIndicator(this.fastSma); this.RemoveIndicator(this.slowSma);}