Williams Fractal
Created by Larry Williams, Fractal is a retrospective price pattern that identifies a central high or low point chevron. [Discuss] 💬
// C# usage syntax
IReadOnlyList<FractalResult> results =
bars.ToFractal(windowSpan);Parameters
| param | type | description |
|---|---|---|
windowSpan | int | Evaluation window span width (S). Must be at least 2. Default is 2. |
endType | EndType | Determines whether Close or High/Low are used to find end points. Default is EndType.HighLow. |
The total evaluation window size is 2×S+1, representing ±S from the evaluation date.
Historical price bars requirements
You must have at least 2×S+1 periods of bars to cover the warmup periods; however, more is typically provided since this is a chartable candlestick pattern.
bars is a collection of generic TBar historical price bars. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.
EndType enum options
| enum | int | description |
|---|---|---|
EndType.Close | 0 | Threshold measured from bar Close price |
EndType.HighLow | 1 | Threshold measured from bar High and Low price |
Response
IReadOnlyList<FractalResult>- This method returns a time series of all available indicator values for the
barsprovided. - It always returns the same number of elements as there are in the historical price bars.
- It does not return a single incremental indicator value.
- The first and last
Speriods inbarsare unable to be calculated since there's not enough prior/following data.
️🖌️ Repaint warning
This price pattern uses future bars and will never identify a fractal in the last S periods of bars. Fractals are retroactively identified.
FractalResult
| property | type | description |
|---|---|---|
Timestamp | DateTime | Date from evaluated TBar |
FractalBear | decimal | Value indicates a high point; otherwise null is returned. |
FractalBull | decimal | Value indicates a low point; otherwise null is returned. |
Utilities
See Utilities and helpers for more information.
Chaining
This indicator is not chain-enabled and must be generated from bars. It cannot be used for further processing by other chain-enabled indicators.
See Chaining indicators for more.
Streaming
Use the buffer-style List<T> when you need incremental calculations without a hub:
FractalList fractalList = new(windowSpan);
foreach (IBar bar in bars) // simulating stream
{
fractalList.Add(bar);
}
// based on `ICollection<FractalResult>`
IReadOnlyList<FractalResult> results = fractalList;Subscribe to a BarHub for advanced streaming scenarios:
BarHub barHub = new();
FractalHub observer = barHub.ToFractalHub(windowSpan);
foreach (IBar bar in bars) // simulating stream
{
barHub.Add(bar);
}
IReadOnlyList<FractalResult> results = observer.Results;See Buffer lists and Stream hubs for full usage guides.