### Fractals free

Description

The basic Fractals are created with 5 or more bars. With 5 bars, if the highest high is in the middle of the two lower highs on each side an up fractal is generated. Conversely, a down fractal is created when the lowest low is in the middle of two higher lows on each side. Since the fractal can only be created two bars later it is considered a lagging indicator, but if it is assumed that the reversal will last for more bars then the trend will remain as is.

**Notification**Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.

Formula / Source Code

using cAlgo.API; namespace cAlgo.Indicators { [Indicator(IsOverlay = true, AccessRights = AccessRights.None)] public class Fractals:Indicator { [Parameter(DefaultValue = 5, MinValue = 5)] public int Period { get; set; } [Output("Up Fractal", Color = Colors.Red, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries UpFractal { get; set; } [Output("Down Fractal", Color = Colors.Blue, PlotType = PlotType.Points, Thickness = 5)] public IndicatorDataSeries DownFractal { get; set; } public override void Calculate(int index) { if (index < Period) return; DrawUpFractal(index); DrawDownFractal(index); } private void DrawUpFractal(int index) { int period = Period % 2 == 0 ? Period - 1 : Period; int middleIndex = index - period / 2; double middleValue = MarketSeries.High[middleIndex]; bool up = true; for (int i = 0; i < period; i++) { if (middleValue < MarketSeries.High[index - i]) { up = false; break; } } if (up) UpFractal[middleIndex] = middleValue; } private void DrawDownFractal(int index) { int period = Period % 2 == 0 ? Period - 1 : Period; int middleIndex = index - period / 2; double middleValue = MarketSeries.Low[middleIndex]; bool down = true; for (int i = 0; i < period; i++) { if (middleValue > MarketSeries.Low[index - i]) { down = false; break; } } if (down) DownFractal[middleIndex] = middleValue; } } }

Comments