Ora
All documentation Overview

Get started

IntroductionQuickstartHow ora-fin1 decidesHow to build with OraUse-case map

Rule language

OverviewGrammarOperators and beliefsPrices and offsetsWindowsIndicatorsSignals and eventsPattern functionsFunction referenceRule libraryCommon mistakesError messagesEarnings and dividend facts

Questions & answers

Questionsyes_no (noul)choicescoreConfidenceThresholds and calibrationStateAsk by symbol

Patterns

Patterns

Actions & workflows

OverviewRules and templatesDestinationsWebhooks and signaturesWorkflows

API reference

POST /v1/systemoneGET /v1/models

Errors & limits

ErrorsRate limitsKnown limitations

Pricing

Pricing

Resources

FAQChangelogModels & versionsCode in 8 languages

Docs / Rule language

Rule language

Pattern functions

25 candlestick patterns, built into Ora's rule language. Each takes no arguments, reads the latest bar and the ones before it, and is shorthand for a rule, so it answers with a graded belief and combines with anything else.

ConventionsBody = |C − O|, range = H − L, upper wick = H − greatest(O, C), lower wick = least(O, C) − L. "After a decline" or "rise" compares the close with the close five bars back.
GradedA pattern is several conditions joined by and, so its belief is its weakest part: a bar that nearly qualifies scores above one that is nowhere close.
EnglishQuestions such as "Is today an inside bar?" compile to the pattern: on TSLA it ran inside_bar() with basis pattern.
ContextA candle means more where it appears: hammer() and L <= 1.01 * lowest(L, 20), engulfing_bull() and C > sma(C, 50). More in the Rule library.

All patterns

doji()

Body at most 10% of the day's range.

Expands to
(H > L) and (abs(C - O) <= 0.1 * (H - L))
Belief, 2026-10-30SPY 0.0579NVDA 0.0735TSLA 0.1254XLE 0.1441Try it
dragonfly_doji()

Doji with a long lower wick (60%+ of the range) and almost no upper wick.

Expands to
((H > L) and (abs(C - O) <= 0.1 * (H - L))) and ((H - greatest(O, C)) <= 0.1 * (H - L)) and ((least(O, C) - L) >= 0.6 * (H - L))
Belief, 2026-10-30SPY 0.0579NVDA 0.0735TSLA 0.0973XLE 0.1409Try it
gravestone_doji()

Doji with a long upper wick and almost no lower wick.

Expands to
((H > L) and (abs(C - O) <= 0.1 * (H - L))) and ((least(O, C) - L) <= 0.1 * (H - L)) and ((H - greatest(O, C)) >= 0.6 * (H - L))
Belief, 2026-10-30SPY 0.0537NVDA 0.0537TSLA 0.0696XLE 0.1266Try it
spinning_top()

Small body (10–30% of range) with wicks of at least a quarter of the range on both sides.

Expands to
(H > L) and (abs(C - O) <= 0.3 * (H - L)) and (abs(C - O) > 0.1 * (H - L)) and ((H - greatest(O, C)) >= 0.25 * (H - L)) and ((least(O, C) - L) >= 0.25 * (H - L))
Belief, 2026-10-30SPY 0.0562NVDA 0.0718TSLA 0.2832XLE 0.209Try it
marubozu()

Body at least 90% of the range: almost no wicks.

Expands to
(H > L) and (abs(C - O) >= 0.9 * (H - L))
Belief, 2026-10-30SPY 0.0537NVDA 0.0556TSLA 0.0551XLE 0.1449Try it
hammer()

Lower wick at least twice the body, upper wick at most 10% of the range, closing below the close five bars back.

Expands to
((H > L) and (abs(C - O) > 0) and ((least(O, C) - L) >= 2 * abs(C - O)) and ((H - greatest(O, C)) <= 0.1 * (H - L))) and (C < C[-5])
Belief, 2026-10-30SPY 0.0941NVDA 0.1245TSLA 0.0735XLE 0.179Try it
hanging_man()

Hammer shape, closing above the close five bars back.

Expands to
((H > L) and (abs(C - O) > 0) and ((least(O, C) - L) >= 2 * abs(C - O)) and ((H - greatest(O, C)) <= 0.1 * (H - L))) and (C > C[-5])
Belief, 2026-10-30SPY 0.0941NVDA 0.1245TSLA 0.1396XLE 0.179Try it
shooting_star()

Upper wick at least twice the body, lower wick at most 10% of the range, after a five-bar rise.

Expands to
((H > L) and (abs(C - O) > 0) and ((H - greatest(O, C)) >= 2 * abs(C - O)) and ((least(O, C) - L) <= 0.1 * (H - L))) and (C > C[-5])
Belief, 2026-10-30SPY 0.0537NVDA 0.0537TSLA 0.0696XLE 0.1666Try it
inverted_hammer()

Shooting-star shape after a five-bar decline.

Expands to
((H > L) and (abs(C - O) > 0) and ((H - greatest(O, C)) >= 2 * abs(C - O)) and ((least(O, C) - L) <= 0.1 * (H - L))) and (C < C[-5])
Belief, 2026-10-30SPY 0.0537NVDA 0.0537TSLA 0.0696XLE 0.1666Try it
engulfing_bull()

A green body that engulfs yesterday's red body.

Expands to
(C[-1] < O[-1]) and (C > O) and (O <= C[-1]) and (C >= O[-1]) and (abs(C - O) > abs(C[-1] - O[-1]))
Belief, 2026-10-30SPY 0.0597NVDA 0.0763TSLA 0.2167XLE 0.1025Try it
engulfing_bear()

A red body that engulfs yesterday's green body.

Expands to
(C[-1] > O[-1]) and (C < O) and (O >= C[-1]) and (C <= O[-1]) and (abs(C - O) > abs(C[-1] - O[-1]))
Belief, 2026-10-30SPY 0.0604NVDA 0.0932TSLA 0.0708XLE 0.1565Try it
harami_bull()

A small green body inside yesterday's red body.

Expands to
(C[-1] < O[-1]) and (C > O) and (abs(C - O) < abs(C[-1] - O[-1])) and (O >= C[-1]) and (C <= O[-1])
Belief, 2026-10-30SPY 0.0604NVDA 0.0932TSLA 0.0708XLE 0.1565Try it
harami_bear()

A small red body inside yesterday's green body.

Expands to
(C[-1] > O[-1]) and (C < O) and (abs(C - O) < abs(C[-1] - O[-1])) and (O <= C[-1]) and (C >= O[-1])
Belief, 2026-10-30SPY 0.0597NVDA 0.0763TSLA 0.1487XLE 0.1025Try it
piercing_line()

After a red day, opens below its close and closes above the middle of its body (but under its open).

Expands to
(C[-1] < O[-1]) and (C > O) and (O < C[-1]) and (C > (O[-1] + C[-1]) / 2) and (C < O[-1])
Belief, 2026-10-30SPY 0.0561NVDA 0.0715TSLA 0.2393XLE 0.1025Try it
dark_cloud()

After a green day, opens above its close and closes below the middle of its body (but above its open).

Expands to
(C[-1] > O[-1]) and (C < O) and (O > C[-1]) and (C < (O[-1] + C[-1]) / 2) and (C > O[-1])
Belief, 2026-10-30SPY 0.0597NVDA 0.0763TSLA 0.0708XLE 0.1085Try it
morning_star()

A red bar, a small bar (half its body or less) that stays under its close, then a green bar closing above the middle of the first.

Expands to
(C[-2] < O[-2]) and (abs(C[-1] - O[-1]) <= 0.5 * abs(C[-2] - O[-2])) and (greatest(O[-1], C[-1]) <= C[-2]) and (C > O) and (C > (O[-2] + C[-2]) / 2)
Belief, 2026-10-30SPY 0.0579NVDA 0.0682TSLA 0.2069XLE 0.1509Try it
evening_star()

A green bar, a small bar that stays above its close, then a red bar closing below the middle of the first.

Expands to
(C[-2] > O[-2]) and (abs(C[-1] - O[-1]) <= 0.5 * abs(C[-2] - O[-2])) and (least(O[-1], C[-1]) >= C[-2]) and (C < O) and (C < (O[-2] + C[-2]) / 2)
Belief, 2026-10-30SPY 0.1524NVDA 0.0975TSLA 0.1487XLE 0.1036Try it
three_white_soldiers()

Three green bars, each closing higher and opening inside the previous body.

Expands to
(C > O) and (C[-1] > O[-1]) and (C[-2] > O[-2]) and (C > C[-1]) and (C[-1] > C[-2]) and (O >= O[-1]) and (O <= C[-1]) and (O[-1] >= O[-2]) and (O[-1] <= C[-2])
Belief, 2026-10-30SPY 0.0552NVDA 0.0732TSLA 0.0867XLE 0.1025Try it
three_black_crows()

Three red bars, each closing lower and opening inside the previous body.

Expands to
(C < O) and (C[-1] < O[-1]) and (C[-2] < O[-2]) and (C < C[-1]) and (C[-1] < C[-2]) and (O <= O[-1]) and (O >= C[-1]) and (O[-1] <= O[-2]) and (O[-1] >= C[-2])
Belief, 2026-10-30SPY 0.0604NVDA 0.0932TSLA 0.0708XLE 0.0915Try it
tweezer_bottom()

Red then green, with lows within 0.1% of each other.

Expands to
(C[-1] < O[-1]) and (C > O) and (abs(L - L[-1]) <= 0.001 * C[-1])
Belief, 2026-10-30SPY 0.0537NVDA 0.0537TSLA 0.054XLE 0.0537Try it
tweezer_top()

Green then red, with highs within 0.1%.

Expands to
(C[-1] > O[-1]) and (C < O) and (abs(H - H[-1]) <= 0.001 * C[-1])
Belief, 2026-10-30SPY 0.0537NVDA 0.0664TSLA 0.1487XLE 0.0663Try it
inside_bar()

Today's high and low are inside yesterday's (equal counts).

Expands to
(H <= H[-1]) and (L >= L[-1])
Belief, 2026-10-30SPY 0.0537NVDA 0.0564TSLA 0.0795XLE 0.0998Try it
outside_bar()

Today's high above yesterday's and low below it.

Expands to
(H > H[-1]) and (L < L[-1])
Belief, 2026-10-30SPY 0.0614NVDA 0.0943TSLA 0.3172XLE 0.0814Try it
gap_up()

Today's whole range is above yesterday's high: an unfilled gap up.

Expands to
L > H[-1]
Belief, 2026-10-30SPY 0.0537NVDA 0.0537TSLA 0.0577XLE 0.5559Try it
gap_down()

Today's whole range is below yesterday's low.

Expands to
H < L[-1]
Belief, 2026-10-30SPY 0.8761NVDA 0.8033TSLA 0.2768XLE 0.0546Try it

Information, not investment advice. Beliefs and probabilities on this page are real responses for the session shown and change with every session.

Create an account Open the Playground Everything here also lives in the console, next to your keys and usage.