Morning Star
Install and import#
npm install fintech-algorithmsimport { morningStar } from "fintech-algorithms/price-action-and-candlesticks/multi-candle-patterns/morning-star";Signature#
morningStar(inputs)Evaluates exactly three candles against explicit morning-star gap, penetration, scale, and downtrend 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 optional 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": 105,
"high": 105.5,
"low": 100.5,
"close": 101
},
{
"open": 100.4,
"high": 101.2,
"low": 99.8,
"close": 100.8
},
{
"open": 100.7,
"high": 104.2,
"low": 100.6,
"close": 103.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#
morningStar(inputs)Returns#
object with 16 fields: topic_id, pattern, matched, state, direction, trend_context, required_context, history_count, …
{
"topic_id": "D06-F04-A01",
"pattern": "Morning Star",
"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": {
"first_bearish": true,
"first_long": true,
"second_short": true,
"body_gap_down": true,
"third_bullish": true,
"third_penetrates": true
},
"failed_checks": [],
"reason": "all declared checks pass"
}Showing 14 of 16 fields.
Other exports#
This module also exports
calculate, eveningStar, threeWhiteSoldiers, threeBlackCrows, threeInsideUpDown, threeOutsideUpDown, 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#
- CDLMORNINGSTAR 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