Three Outside Up/Down
Install and import#
npm install fintech-algorithmsimport { threeOutsideUpDown } from "fintech-algorithms/price-action-and-candlesticks/multi-candle-patterns/three-outside-up-down";Signature#
threeOutsideUpDown(inputs)Evaluates exactly three candles against explicit outside-pair engulfing, confirmation, scale, and trend-context conventions.
Parameters#
| Name | Type | Notes |
|---|---|---|
inputs | { candles: { open: number; high: number; low: number; close: number }[]; trend_context: string; prior_bodies: number[]; prior_ranges: number[]; tick_size: number; penetration_fraction: number } | Record containing three candles, trend context, prior body/range history, tick size, and penetration fraction. |
Returns#
{ topic_id, pattern, matched, state, direction, trend_context, required_context, history_count, body_scale, range_scale, geometry_score, checks, failed_checks, reason, thresholds, candles }
One three-candle pattern record. state is warmup, wrong-context, matched, or not-matched; readiness is record state, not positional output.
Warm-up#
The first 5 prior observations positions are state: warmup. The detector returns one readiness record before five prior body/range observations are available; it does not emit a positional null prefix.
Errors#
- When the record does not contain exactly three valid candles or scale/context inputs are invalid — throws
Complexity: time ,
space .
Worked example#
executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.
Input#
{
"candles": [
{
"open": 103,
"high": 103.3,
"low": 100.7,
"close": 101
},
{
"open": 100.5,
"high": 103.8,
"low": 100.3,
"close": 103.5
},
{
"open": 103,
"high": 104.7,
"low": 102.8,
"close": 104.5
}
],
"trend_context": "downtrend",
"prior_bodies": [2, 2.1, 1.9, 2.2, 2, 2.1],
"prior_ranges": [3, 3.2, 2.9, 3.1, 3, 3.3],
"tick_size": 0.1,
"penetration_fraction": 0.5
}Call#
threeOutsideUpDown(inputs)Returns#
object with 16 fields: topic_id, pattern, matched, state, direction, trend_context, required_context, history_count, …
{
"topic_id": "D06-F04-A06",
"pattern": "Three Outside Up/Down",
"matched": true,
"state": "matched",
"direction": "bullish",
"trend_context": "downtrend",
"required_context": "downtrend",
"history_count": 10,
"body_scale": 2,
"range_scale": 3,
"geometry_score": 1,
"checks": {
"opposite_first_pair": true,
"second_body_engulfs": true,
"third_confirms_beyond_second_close": true
},
"failed_checks": [],
"reason": "all declared checks pass"
}Showing 14 of 16 fields.
Other exports#
This module also exports
calculate, morningStar, eveningStar, threeWhiteSoldiers, threeBlackCrows, threeInsideUpDown, abandonedBaby. Every module additionally exports run as an alias of its
primary function, and a meta object carrying its catalog id, domain, family,
shape and article URL.
Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- CDL3OUTSIDE function documentation — TA-Lib project
- TA-Lib Pattern Recognition Functions — TA-Lib project
- Japanese Candlestick Charting Techniques, Second Edition — Steve Nison; Prentice Hall Press
- Measures of Location: Mean and Median — NIST/SEMATECH
- Evidence boundary