Skip to content

Basic price bar transforms

Returns a reusable (chainable) basic bar transform (e.g. HL2, OHL3, etc.) by isolating a single component part value or calculated value from the full OHLCV bar candle parts.

csharp
// C# usage syntax
IReadOnlyList<TimeValue> results =
  bars.Use(candlePart);

// alternate syntax
IReadOnlyList<TimeValue> results =
  bars.ToBarPart(candlePart);

Parameters

paramtypedescription
candlePartCandlePartThe OHLCV element or simple price transform

Historical price bars requirements

You must have at least 1 period of bars.

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.

CandlePart enum options

enumintdescription
CandlePart.Open0Open price
CandlePart.High1High price
CandlePart.Low2Low price
CandlePart.Close3Close price
CandlePart.Volume4Volume
CandlePart.HL25(High+Low)/2
CandlePart.HLC36(High+Low+Close)/3
CandlePart.OC27(Open+Close)/2
CandlePart.OHL38(Open+High+Low)/3
CandlePart.OHLC49(Open+High+Low+Close)/4

Response

csharp
IReadOnlyList<TimeValue>
  • This method returns a time series of all available indicator values for the bars provided.
  • 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.

TimeValue type

propertytypedescription
TimestampDateTimeDate from evaluated TBar
ValuedoublePrice of CandlePart option

Utilities

See Utilities and helpers for more information.

Chaining

Results can be further processed on Value with additional chain-enabled indicators.

csharp
// example
var results = bars
    .Use(CandlePart.OHLC4)
    .ToRsi(..);

This indicator must be generated from bars and cannot be generated from results of another chain-enabled indicator or method.

See Chaining indicators for more.

Streaming

Subscribe to a BarHub for streaming scenarios:

csharp
BarHub barHub = new();
BarPartHub observer = barHub.ToBarPartHub(CandlePart.HL2);

foreach (IBar bar in bars)  // simulating stream
{
  barHub.Add(bar);
}

IReadOnlyList<TimeValue> results = observer.Results;

See Buffer lists and Stream hubs for full usage guides.

Buffering

Use a BarPartList for incremental buffering scenarios:

csharp
BarPartList buffer = new(CandlePart.Close);

foreach (IBar bar in bars)  // simulating stream
{
  buffer.Add(bar);
}

IReadOnlyList<TimeValue> results = buffer;