PINE LIBRARY
Обновлено

lib_statemachine_modified

288
Library "lib_statemachine_modified"

Modified to fix bugs and create getState and priorState methods.

method step(this, before, after, condition)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    before (int): (int): Current state before transition
    after (int): (int): State to transition to
    condition (bool): (bool): Condition to trigger the transition
  Returns: (bool): True if the state changed, else False

method step(this, after, condition)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    after (int): (int): State to transition to
    condition (bool): (bool): Condition to trigger the transition
  Returns: (bool): True if the state changed, else False

method currentState(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

method previousState(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

method changed(this, within_bars)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    within_bars (int): (int): Number of bars to look back for a state change
  Returns: (bool): True if a state change occurred within the timeframe, else False

method reset(this, condition, min_occurrences)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    condition (bool): (bool): Condition to trigger the reset
    min_occurrences (int): (int): Minimum number of times the condition must be true to reset
  Returns: (bool): True if the state was reset, else False

StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_state (series int)
    last_change_bar (series int)
Информация о релизе
v2

Added:
method didWeJustChangeThisBar(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

method didWeChangeFromTo(this, fromState, toState, within_bars)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    fromState (int)
    toState (int)
    within_bars (int)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_state (series int)
    last_change_bar (series int)
    last_distinct_prior_state (series int)
Информация о релизе
v3

Added:
method getLatestState(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_state (series int)
    last_change_bar (series int)
    last_distinct_prior_state (series int)
    stateHistory (array<float>)
Информация о релизе
v4

Added:
method changedPriorToCurrentBar(this, within_bars)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    within_bars (int): (int): Number of bars to look back for a state change
  Returns: (bool): True if a state change occurred within the timeframe, else False

Removed:
method changed(this, within_bars)
Информация о релизе
v5

Added:
method getLatestIndexOfState(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

StateRecord
  Fields:
    state (series int)
    bar_index (series int)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_state (series int)
    last_change_bar (series int)
    last_distinct_prior_state (series int)
    stateHistory (array<StateRecord>)
Информация о релизе
Library: lib_statemachine_modified (v6)
Types
StateRecord

Fields:
state (int): The state value recorded at a given moment.
bar_index (int): The bar index when that state was recorded.
StateMachine

Fields:
state (int): The current state of the machine (default 0).
neutral (int): The designated neutral (default) state.
enabled (bool): Flag to enable/disable state transitions.
reset_counter (int): Counter tracking how many times the reset condition has been met.
prior_state (int): The state immediately preceding the current state.
last_change_bar (int): The bar index at which the last state change occurred (or na if none).
last_distinct_prior_state (int): The last distinct state before the current transition.
stateHistory (StateRecord[]): An array storing a history of state transitions.
Methods
step(this, before, after, condition)

Namespace: StateMachine
Parameters:
this (StateMachine): The state machine instance.
before (int): The expected current state before the transition.
after (int): The target state to transition to.
condition (bool): Condition that triggers the transition.
Returns: (bool) — true if the state transition occurs; otherwise, false.
Notes:
If after differs from the current state, a new StateRecord is appended to stateHistory.
Updates prior_state, last_change_bar, and resets the reset_counter.
Overloaded step(this, after, condition)

Uses the current state as the expected before value.
Parameters:
this (StateMachine)
after (int): The target state.
condition (bool): Trigger condition.
Returns: (bool) — true if the state changed; otherwise, false.
currentState(this)

Parameters: this (StateMachine)
Returns: (int) — The current state.
previousState(this)

Parameters: this (StateMachine)
Returns: (int) — The state immediately prior to the current state change.
changedPriorToCurrentBar(this, within_bars)

Parameters:
this (StateMachine)
within_bars (int): Number of bars to look back for a state change (excluding the current bar).
Returns: (bool) — true if a state change occurred within the specified timeframe; otherwise, false.
didWeJustChangeThisBar(this)

Parameters: this (StateMachine)
Returns: (bool) — true if the state changed exactly on the current bar; otherwise, false.
didWeChangeFromTo(this, fromState, toState, within_bars)

Parameters:
this (StateMachine)
fromState (int): The state expected before the transition.
toState (int): The state expected after the transition.
within_bars (int): The timeframe (in bars) within which the transition should have occurred.
Returns: (bool) — true if the specific transition occurred recently; otherwise, false.
reset(this, condition, min_occurrences)

Parameters:
this (StateMachine)
condition (bool): The condition that may trigger a reset.
min_occurrences (int): The number of times the condition must be met before the reset occurs.
Returns: (bool) — true if the state machine was reset to the neutral state; otherwise, false.
getLatestState(this)

Parameters: this (StateMachine)
Returns: (int) — The latest recorded state from stateHistory (or na if none exists).
getLatestIndexOfState(this)

Parameters: this (StateMachine)
Returns: (int) — The bar index of the latest state record (or na if stateHistory is empty).
barsSinceState(this, searchState)

Parameters:
this (StateMachine)
searchState (int): The state to search for in the history.
Returns: (int) — The number of bars since the specified state was last active; returns na if that state has never been active.
Notes:
Iterates through stateHistory (accessed in reverse order) to find the most recent occurrence of searchState and computes the difference between the current bar index and the recorded bar index.
Информация о релизе
v7

Updated:
method barsSinceState(this, searchState, isLast)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    searchState (int): (int): The state to search for.
    isLast (bool): (bool): (Optional, default = true)
      If true, returns the number of bars elapsed since the most recent record where the state is active
        (i.e. where record.state == searchState);
      if false, returns the number of bars elapsed since the record where the state was first triggered
        (i.e. where record.before == searchState).
  Returns: (int): Number of bars since the state was active, or na if never active.

StateRecord
  Fields:
    before (series int)
    state (series int)
    barIndex (series int)
Информация о релизе
v8

Added:
method previousBarState(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
Информация о релизе
v9

Added:
method print_transitions(this, n)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    n (int): (int): The number of most recent transitions to include in the log.
  Returns: (string): A log of the last N state transitions.

method wasConditionMetOnBar(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_bar_state (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
Информация о релизе
v10
Fix issue with print_transitions
Информация о релизе
v11
Информация о релизе
v12

Added:
method setStateNames(this, mapping)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    mapping (array<string>)

method getStateName(this, s)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    s (int)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_bar_state (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
Информация о релизе
v13

Added:
method print_transitions_array(this, n)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    n (int): (int): The number of most recent transitions to include in the array (default is 2).
  Returns: (int[]): An array of state integers from the last n transitions.
Информация о релизе
v14

Added:
method statesArrayToText(this, states)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    states (array<int>): (int[]): An array of state integers.
  Returns: (string): A string with each state name on a separate line.

method print_transitions_names(this, n)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    n (int): (int): The number of most recent transitions to include (default is 2).
  Returns: (string): A formatted string where each state's name is on a new line.
Информация о релизе
v15
- fix bug method statesArrayToText(StateMachine this, int[] states) check for empty array
Информация о релизе
v16

Added:
method getOverlappingTransitions(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)

StateOverlap
  Fields:
    state1 (series int)
    state2 (series int)
    barIndex (series int)

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    prior_bar_state (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
Информация о релизе
v17

Added:
method printOverlappingTransitions(this)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
Информация о релизе
v18

Added:
method showStateHistory(this, s)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    s (int): (int): The state to search for in the state history.
  Returns: (string): A summary message indicating how many labels were created.
Информация о релизе
v19
fix bugs
Информация о релизе
v20
Fixing the bug in previousState
Информация о релизе
v21
Информация о релизе
v22

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prev_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
Информация о релизе
v23

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prior_bar_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
Информация о релизе
v24
Информация о релизе
v25 update wasConditionMetOnBar
Информация о релизе
v26

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_processed_bar (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prior_bar_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
Информация о релизе
v27

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_processed_bar (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prior_bar_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
    just_changed_flag (series bool)
Информация о релизе
v28

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_processed_bar (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prior_bar_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
    just_changed_flag (series bool)
    lastTrueConditionState (series int)
Информация о релизе
v29

Added:
method visualizeStateTransition(this, labelPrefix)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    labelPrefix (string)

method debugStateTransition(this, expectedFromState, expectedToState)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    expectedFromState (int)
    expectedToState (int)

Updated:
method didWeChangeFromTo(this, fromState, toState, within_bars)
  Namespace types: StateMachine
  Parameters:
    this (StateMachine)
    fromState (int): (int): The state expected before the transition
    toState (int): (int): The state expected after the transition
    within_bars (int): (int): Number of bars within which the transition must have occurred
  Returns: (bool): True if the specific transition occurred recently, else False
Enhanced version of didWeChangeFromTo with more robust checking
Информация о релизе
v30 fix bug
Информация о релизе
v31
Информация о релизе
v32

Updated:
StateMachine
  Fields:
    state (series int)
    neutral (series int)
    enabled (series bool)
    reset_counter (series int)
    last_processed_bar (series int)
    last_change_bar (series int)
    last_condition_bar (series int)
    prior_bar_state (series int)
    previous_distinct_state (series int)
    transitions_this_bar (series int)
    stateHistory (array<StateRecord>)
    stateNames (array<string>)
    overlapList (array<StateOverlap>)
    just_changed_flag (series bool)
    lastTrueConditionState (series int)
    offset (series int)
Информация о релизе
v33
Информация о релизе
v34

Отказ от ответственности

Все виды контента, которые вы можете увидеть на TradingView, не являются финансовыми, инвестиционными, торговыми или любыми другими рекомендациями. Мы не предоставляем советы по покупке и продаже активов. Подробнее — в Условиях использования TradingView.