Fractal Buy/Up (Bill Williams)

Modified on 2013/08/16 10:54 by Administrator — Categorized as: Community Indicators


public FractalUp(DataSeries ds, string description)
public static FractalUp Series(DataSeries ds)

Parameter Description

ds Any DataSeries. Typically pass Bars.High


Fractals per Bill Williams in Trading Chaos, Second Edition are an indication of a change in market direction/behavior. An up (or buy) fractal is a minimum of 5-bar pattern where the center bar's high is greater than the high of the two bars on either side of it. FractalUp returns the value of the most recent up/buy fractal as of the current bar.

See also: FractalUpBar, FractalDown, FractalDownBar, Alligator


A fractal "buy" occurs when price crosses an up/buy fractal if it is above the Alligator teeth at the time of the crossing. You can use fractal buy signals to cover short positions and/or to add long positions.


The example plots the FractalUp and FractalDown Series and also uses the FractalUpBar and FractalDownBar indicators to annotate the fractal bars.

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Indicators;

namespace WealthLab.Strategies { public class ShowFractalDemo : WealthScript { public void ShowFractals(DataSeries fractalupbars, DataSeries fractaludnbars) { Font _wing = new Font("Wingdings", 11, FontStyle.Bold); string _upFractal = Convert.ToChar(0x00D9).ToString(); string _dnFractal = Convert.ToChar(0x00DA).ToString(); for(int n = 5; n < fractalupbars.Count; n++) { if (fractalupbars[n] > fractalupbars[n-1]) { int fbar = (int)fractalupbars[n]; AnnotateBar(_upFractal, fbar, true, Color.Silver, Color.Transparent, _wing); } if (fractaludnbars[n] > fractaludnbars[n-1]) { int fbar = (int)fractaludnbars[n]; AnnotateBar(_dnFractal, fbar, false, Color.Silver, Color.Transparent, _wing); } } } protected override void Execute() { /* Fractals */ DataSeries frUpBar = FractalUpBar.Series(High); DataSeries frDnBar = FractalDownBar.Series(Low); ShowFractals(frUpBar, frDnBar); DataSeries frUp = FractalUp.Series(High); DataSeries frDn = FractalDown.Series(Low); PlotSeries(PricePane, frUp, Color.Blue, LineStyle.Dots, 3); PlotSeries(PricePane, frDn, Color.Fuchsia, LineStyle.Dots, 3); } } }