Skip to main content

Crate tulip_rs_shared

Crate tulip_rs_shared 

Source
Expand description

§tulip_rs_shared

Shared constants and helper functions for candlestick bitmask encoding.

This crate provides the single source of truth for bit positions and encoding used by build.rs, proc macros, and runtime code.

§CandleBits layout

CandleBits is split into two separate fields:

§mandatory: u32 (always computed at bar creation, 27 bits used)

Tight-packed — no byte-boundary waste:

  Bits  0– 5   Basic variants      (6 types, 1-hot)
  Bits  6–10   Doji variants       (5 types, 1-hot)
  Bits 11–16   Marubozu variants   (6 types, 1-hot)
  Bits 17–19   SpinningTop variants(3 types, 1-hot)
  Bit  20      OTHER
  Bit  21      COLOUR   (GREEN=1, RED=0)
  Bit  22      FILL     (HOLLOW=1, FILLED=0)
  Bit  23      TREND    (UP=1, DOWN=0)
  Bit  24      LINE_HEIGHT (LONG=1, SHORT=0)
  Bit  25      LOWER_WICK_LT_BODY  (lower wick < body height)
  Bit  26      UPPER_WICK_LT_BODY  (upper wick < body height)
  Bit  27      BODY_HEIGHT         (LONG=1, SHORT=0)
  Bits 28–31  4 spare

§lazy_value / lazy_computed: u16 (computed on demand, all 16 bits used)

  Bit  0   OPEN_ABOVE_PREV_BODY_MID  (my open > prev body midpoint)
  Bit  1   OPEN_IN_PREV_BODY     (my open ∈ prev body)
  Bit  2   CLOSE_ABOVE_PREV_BODY_MID (my close > prev body midpoint)
  Bit  3   CLOSE_IN_PREV_BODY    (my close ∈ prev body)
  Bit  4   HIGH_ABOVE_PREV_BODY_MID  (my high > prev body midpoint)
  Bit  5   HIGH_IN_PREV_BODY     (my high ∈ prev body)
  Bit  6   HIGH_IN_PREV_LINE     (my high ∈ [prev LOW, prev HIGH])
  Bit  7   LOW_ABOVE_PREV_BODY_MID   (my low > prev body midpoint)
  Bit  8   LOW_IN_PREV_BODY      (my low ∈ prev body)
  Bit  9   LOW_IN_PREV_LINE      (my low ∈ [prev LOW, prev HIGH])
  Bit 10   I_ENGULF_PREV_BODY    (prev open AND prev close both ∈ my body)
  Bit 11   PREV_HIGH_IN_MY_BODY  (prev bar's high ∈ my body)
  Bit 12   PREV_LOW_IN_MY_BODY   (prev bar's low ∈ my body)
  Bit 13   LOWER_WICK_LONG_2X    (lower wick ≥ 2× body height)
  Bit 14   UPPER_WICK_LONG_2X    (upper wick ≥ 2× body height)
  Bit 15   BODY_GT_PREV_BODY     (body height > previous bar's body height)

Constants§

BASIC_MASK
BASIC_OFFSET
BLACK_CANDLE
BLACK_MARUBOZU
BLACK_SPINNING_TOP
BODY_GAP_DOWN
Current body is entirely below prev body; wicks may still overlap.
BODY_GAP_UP
Current body is entirely above prev body; wicks may still overlap.
BODY_GT_PREV_BODY
BODY_GT_PREV_BODY_BIT
BODY_HEIGHT_BIT
BODY_HEIGHT_LONG
BODY_HEIGHT_SHORT
CANDLE_TYPE_MASK
CLOSE_ABOVE_PREV_BODY_MID
CLOSE_ABOVE_PREV_BODY_MID_BIT
CLOSE_IN_PREV_BODY
CLOSE_IN_PREV_BODY_BIT
CLOSING_BLACK_MARUBOZU
CLOSING_WHITE_MARUBOZU
COLOUR_BIT
COLOUR_GREEN
COLOUR_RED
COMPULSORY_MASK
Mask covering all compulsory mandatory bits
DOJI
DOJI_MASK
DOJI_OFFSET
DRAGONFLY_DOJI
ENGULF_BODY
Body-only engulf — current/previous body spans the target body.
ENGULF_LINE
Full-line engulf — current/previous body spans the target body AND wicks.
FILL_BIT
FILL_FILLED
FILL_HOLLOW
FOUR_PRICE_DOJI
GRAVESTONE_DOJI
HIGH_ABOVE_PREV_BODY_MID
HIGH_ABOVE_PREV_BODY_MID_BIT
HIGH_IN_PREV_BODY
HIGH_IN_PREV_BODY_BIT
HIGH_IN_PREV_LINE
HIGH_IN_PREV_LINE_BIT
HIGH_WAVE
I_ENGULF_PREV_BODY
I_ENGULF_PREV_BODY_BIT
LAZY_MASK
Mask covering all currently-defined lazy bits
LINE_HEIGHT_BIT
LINE_HEIGHT_LONG
LINE_HEIGHT_SHORT
LONG_BLACK_CANDLE
LONG_LEGGED_DOJI
LONG_WHITE_CANDLE
LOWER_WICK_LONG_2X
LOWER_WICK_LONG_2X_BIT
LOWER_WICK_LT_BODY
LOWER_WICK_LT_BODY_BIT
LOW_ABOVE_PREV_BODY_MID
LOW_ABOVE_PREV_BODY_MID_BIT
LOW_IN_PREV_BODY
LOW_IN_PREV_BODY_BIT
LOW_IN_PREV_LINE
LOW_IN_PREV_LINE_BIT
MARUBOZU_MASK
MARUBOZU_OFFSET
NO_GAP
No gap — bodies overlap.
OPENING_BLACK_MARUBOZU
OPENING_WHITE_MARUBOZU
OPEN_ABOVE_PREV_BODY_MID
OPEN_ABOVE_PREV_BODY_MID_BIT
OPEN_IN_PREV_BODY
OPEN_IN_PREV_BODY_BIT
OTHER
OTHER_BIT
PREV_HIGH_IN_MY_BODY
PREV_HIGH_IN_MY_BODY_BIT
PREV_LOW_IN_MY_BODY
PREV_LOW_IN_MY_BODY_BIT
SHORT_BLACK_CANDLE
SHORT_WHITE_CANDLE
SPINNING_TOP_MASK
SPINNING_TOP_OFFSET
TREND_BIT
TREND_DOWN
TREND_UP
UPPER_WICK_LONG_2X
UPPER_WICK_LONG_2X_BIT
UPPER_WICK_LT_BODY
UPPER_WICK_LT_BODY_BIT
WHITE_CANDLE
WHITE_MARUBOZU
WHITE_SPINNING_TOP
WICK_GAP_DOWN
Entire current candle (including wicks) is below prev candle.
WICK_GAP_UP
Entire current candle (including wicks) is above prev candle.

Functions§

encode_basic_variant
encode_doji_variant
encode_marubozu_variant
encode_spinning_top_variant
variant_to_bit
Convert a variant discriminant to a 1-hot bit value