Skip to content

Doji ​

Doji is a single-bar candlestick pattern where open and close price are virtually identical, representing market indecision. [Discuss] 💬

Loading chart data...
csharp
// C# usage syntax
IReadOnlyList<CandleResult> results =
  bars.ToDoji(maxPriceChangePercent);

Parameters ​

paramdescription
maxPriceChangePercent
double
Optional. Maximum absolute percent difference in open and close price. Example: 0.3% would be entered as 0.3 (not 0.003). Must be between 0 and 0.5 percent, if specified. Default is 0.1 (0.1%).

Historical price bars requirements ​

You must have at least one historical bar; 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.

Response ​

csharp
IReadOnlyList<CandleResult>
  • 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.
  • The candlestick pattern is indicated on dates where Match is Match.Neutral.
  • Price is Close price; however, all OHLCV elements are included in CandleProperties.
  • There is no intrinsic basis or confirmation signal provided for this pattern.

CandleResult ​

propertydescription
Timestamp
DateTime
Date from evaluated TBar
Price
decimal?
Price of the most relevant OHLC candle element when a signal is present
Match
Match
Indicates a matching signal type for this candlestick pattern
Candle
CandleProperties
Characteristics of the candle body and wicks

Match ​

When a candlestick pattern is recognized, it produces a matching signal. In some cases, an intrinsic confirmation is also available after the signal. In cases where previous bars were used to identify a pattern, they are indicated as the basis for the signal. This enum can also be referenced as an int value. Documentation for each candlestick pattern will indicate whether confirmation and/or basis information is produced.

enum / valuedescription
Match.BullConfirmed
200
Confirmation of a prior bull signal
Match.BullSignal
100
Bullish signal
Match.BullBasis
10
Bars supporting a bullish signal
Match.Neutral
1
Signal for non-directional patterns
Match.None
0
No match
Match.BearBasis
-10
Bars supporting a bearish signal
Match.BearSignal
-100
Bearish signal
Match.BearConfirmed
-200
Confirmation of a prior bear signal

CandleProperties ​

The CandleProperties record class extends the basic Bar type with calculated properties.

propertydescription
Timestamp
DateTime
Close date
Open
decimal
Open price
High
decimal
High price
Low
decimal
Low price
Close
decimal
Close price
Volume
decimal
Volume
Size
decimal?
High-Low
Body
decimal?
|Open-Close|
UpperWick
decimal?
Upper wick size
LowerWick
decimal?
Lower wick size
BodyPct
double?
Body/Size
UpperWickPct
double?
UpperWick/Size
LowerWickPct
double?
LowerWick/Size
IsBullish
bool
Close>Open direction
IsBearish
bool
Close<Open direction

Utilities ​

See Utilities and helpers for more information.

Streaming ​

Use the buffer-style List<T> when you need incremental calculations without a hub:

csharp
DojiList dojiList = new(maxPriceChangePercent);

// call from your WebSocket or SSE message handler
void OnBarReceived(IBar bar) => dojiList.Add(bar);

// based on `ICollection<CandleResult>`; fills as the handler runs
IReadOnlyList<CandleResult> results = dojiList;

Subscribe to a BarHub for advanced streaming scenarios:

csharp
BarHub barHub = new();
DojiHub observer = barHub.ToDojiHub(maxPriceChangePercent);

// call from your WebSocket or SSE message handler
void OnBarReceived(IBar bar) => barHub.Add(bar);

// results fill as the handler runs
IReadOnlyList<CandleResult> results = observer.Results;

See Buffer lists and Stream hubs for full usage guides.