smc_observability_private.pine
Copy
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=6
library("smc_observability_private", overlay = true)
import preuss_steffen/smc_utils/4 as u
debug_mode_is_full(string long_engine_debug_mode) =>
long_engine_debug_mode == 'Full'
compose_long_debug_compact_text(string long_setup_source_display, string long_ready_blocker_text, string long_strict_blocker_text) =>
'src=' + long_setup_source_display + ' | rdy=' + long_ready_blocker_text + ' | st=' + long_strict_blocker_text
compose_long_debug_source_touch_text(string long_setup_source_display, int long_setup_backing_zone_touch_count) =>
'src=' + long_setup_source_display + ' | touch=' + str.tostring(long_setup_backing_zone_touch_count)
compose_long_debug_ready_strict_text(string long_ready_blocker_text, string long_strict_blocker_text) =>
'ready=' + long_ready_blocker_text + ' | strict=' + long_strict_blocker_text
compose_long_debug_fresh_source_text(string freshness_text, string source_state_text) =>
'fresh=' + freshness_text + ' | ' + source_state_text
compose_long_debug_zone_env_text(string zone_quality_text, string long_environment_focus_display) =>
'zone=' + zone_quality_text + ' | env=' + long_environment_focus_display
compose_long_debug_upgrade_text(string long_source_upgrade_reason) =>
'upgrade=' + long_source_upgrade_reason
compose_long_debug_last_invalid_text(string long_last_invalid_source) =>
'last=' + long_last_invalid_source
compose_long_debug_reason_text(string long_last_invalid_source) =>
'reason=' + long_last_invalid_source
compose_long_debug_pipe_upgrade_text(string long_source_upgrade_reason) =>
' | ' + compose_long_debug_upgrade_text(long_source_upgrade_reason)
compose_long_debug_pipe_reason_text(string long_last_invalid_source) =>
' | ' + compose_long_debug_reason_text(long_last_invalid_source)
compose_long_debug_event_context_text(int long_setup_backing_zone_touch_count, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display) =>
'touch=' + str.tostring(long_setup_backing_zone_touch_count) + ' | ' + compose_long_debug_fresh_source_text(freshness_text, source_state_text) + ' | ' + compose_long_debug_zone_env_text(zone_quality_text, long_environment_focus_display)
compose_long_debug_event_state_text(bool debug_mode_full, int long_setup_backing_zone_touch_count, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display, string long_ready_blocker_text, string long_strict_blocker_text) =>
string event_state_text = ' | ' + compose_long_debug_ready_strict_text(long_ready_blocker_text, long_strict_blocker_text)
if debug_mode_full
event_state_text := ' | ' + compose_long_debug_event_context_text(long_setup_backing_zone_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display) + event_state_text
event_state_text
compose_long_debug_primary_line(bool debug_mode_full, string long_setup_source_display, int long_setup_backing_zone_touch_count, string long_ready_blocker_text, string long_strict_blocker_text) =>
string primary_line = compose_long_debug_compact_text(long_setup_source_display, long_ready_blocker_text, long_strict_blocker_text)
if debug_mode_full
primary_line := compose_long_debug_source_touch_text(long_setup_source_display, long_setup_backing_zone_touch_count)
primary_line
compose_long_debug_full_summary_text(string long_setup_source_display, int long_setup_backing_zone_touch_count, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display, string long_ready_blocker_text, string long_strict_blocker_text) =>
compose_long_debug_source_touch_text(long_setup_source_display, long_setup_backing_zone_touch_count) + ' | ' + compose_long_debug_fresh_source_text(freshness_text, source_state_text) + ' | ' + compose_long_debug_zone_env_text(zone_quality_text, long_environment_focus_display) + ' | ' + compose_long_debug_ready_strict_text(long_ready_blocker_text, long_strict_blocker_text)
compose_long_debug_event_header_text(string event_name, string long_setup_source_display, float long_setup_trigger, float long_invalidation_level) =>
event_name + ' | src=' + long_setup_source_display + ' | trig=' + u.format_level(long_setup_trigger) + ' | inv=' + u.format_level(long_invalidation_level)
export compose_long_debug_summary_text(string long_engine_debug_mode, bool long_setup_armed, bool long_setup_confirmed, bool long_ready_state, string long_setup_source_display, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display, int long_setup_backing_zone_touch_count, bool long_source_upgrade_now, string long_source_upgrade_reason, string long_last_invalid_source, string long_ready_blocker_text, string long_strict_blocker_text) =>
string debug_text = 'idle'
bool debug_mode_full = debug_mode_is_full(long_engine_debug_mode)
if long_setup_armed or long_setup_confirmed or long_ready_state
if debug_mode_full
debug_text := compose_long_debug_full_summary_text(long_setup_source_display, long_setup_backing_zone_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_ready_blocker_text, long_strict_blocker_text)
else
debug_text := compose_long_debug_primary_line(debug_mode_full, long_setup_source_display, long_setup_backing_zone_touch_count, long_ready_blocker_text, long_strict_blocker_text)
else if long_last_invalid_source != 'None'
debug_text := compose_long_debug_last_invalid_text(long_last_invalid_source)
if long_source_upgrade_now
debug_text += compose_long_debug_pipe_upgrade_text(long_source_upgrade_reason)
debug_text
export compose_long_engine_event_log(string long_engine_debug_mode, string event_name, string long_setup_source_display, float long_setup_trigger, float long_invalidation_level, int long_setup_backing_zone_touch_count, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display, bool long_source_upgrade_now, string long_source_upgrade_reason, string long_last_invalid_source, string long_ready_blocker_text, string long_strict_blocker_text) =>
bool debug_mode_full = debug_mode_is_full(long_engine_debug_mode)
string event_text = compose_long_debug_event_header_text(event_name, long_setup_source_display, long_setup_trigger, long_invalidation_level)
event_text += compose_long_debug_event_state_text(debug_mode_full, long_setup_backing_zone_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_ready_blocker_text, long_strict_blocker_text)
if long_source_upgrade_now
event_text += compose_long_debug_pipe_upgrade_text(long_source_upgrade_reason)
if long_last_invalid_source != 'None'
event_text += compose_long_debug_pipe_reason_text(long_last_invalid_source)
event_text
export resolve_long_debug_event_values(bool long_invalidate_signal, string long_setup_source_display, string long_debug_event_source_display, int long_setup_backing_zone_touch_count, int long_debug_event_touch_count, float long_setup_trigger, float long_debug_event_trigger, float long_invalidation_level, float long_debug_event_invalidation) =>
string debug_log_source_display = long_setup_source_display
if long_invalidate_signal
debug_log_source_display := long_debug_event_source_display
int debug_log_touch_count = long_setup_backing_zone_touch_count
if long_invalidate_signal
debug_log_touch_count := long_debug_event_touch_count
float debug_log_trigger = long_setup_trigger
if long_invalidate_signal
debug_log_trigger := long_debug_event_trigger
float debug_log_invalidation = long_invalidation_level
if long_invalidate_signal
debug_log_invalidation := long_debug_event_invalidation
[debug_log_source_display, debug_log_touch_count, debug_log_trigger, debug_log_invalidation]
export resolve_long_ready_signal_state(bool long_ready_state, bool prior_bar_ready_state, int ready_state_rt_prev, bool ready_fired_this_bar, bool current_bar_is_new) =>
int helper_ready_state_rt_prev = ready_state_rt_prev
bool helper_ready_fired_this_bar = ready_fired_this_bar
if current_bar_is_new
helper_ready_state_rt_prev := 0
if prior_bar_ready_state
helper_ready_state_rt_prev := 1
helper_ready_fired_this_bar := false
bool helper_long_ready_signal = false
if long_ready_state and helper_ready_state_rt_prev == 0 and not helper_ready_fired_this_bar
helper_long_ready_signal := true
if helper_long_ready_signal
helper_ready_fired_this_bar := true
helper_ready_state_rt_prev := 0
if long_ready_state
helper_ready_state_rt_prev := 1
[helper_ready_state_rt_prev, helper_ready_fired_this_bar, helper_long_ready_signal]
export emit_long_engine_debug_logs(bool show_long_engine_debug_eff, string long_engine_debug_mode_eff, bool long_source_upgrade_now, bool long_arm_signal, bool long_confirm_signal, bool long_ready_signal, bool long_invalidate_signal, bool long_state_armed, bool long_state_confirmed, bool long_ready_state, string long_setup_source_display, string long_debug_event_source_display, int long_state_backing_zone_touch_count, int long_debug_event_touch_count, float long_state_trigger, float long_debug_event_trigger, float long_state_invalidation_level, float long_debug_event_invalidation, string freshness_text, string source_state_text, string zone_quality_text, string long_environment_focus_display, string long_source_upgrade_reason, string long_last_invalid_source, string long_ready_blocker_text, string long_strict_blocker_text) =>
[debug_log_source_display, debug_log_touch_count, debug_log_trigger, debug_log_invalidation] = resolve_long_debug_event_values(long_invalidate_signal, long_setup_source_display, long_debug_event_source_display, long_state_backing_zone_touch_count, long_debug_event_touch_count, long_state_trigger, long_debug_event_trigger, long_state_invalidation_level, long_debug_event_invalidation)
string helper_summary = compose_long_debug_summary_text(long_engine_debug_mode_eff, long_state_armed, long_state_confirmed, long_ready_state, long_setup_source_display, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_state_backing_zone_touch_count, long_source_upgrade_now, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text)
if show_long_engine_debug_eff and long_source_upgrade_now
log.info('{0}', compose_long_engine_event_log(long_engine_debug_mode_eff, 'LONG UPGRADE', debug_log_source_display, debug_log_trigger, debug_log_invalidation, debug_log_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, true, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text))
if show_long_engine_debug_eff and long_arm_signal
log.info('{0}', compose_long_engine_event_log(long_engine_debug_mode_eff, 'LONG ARMED', debug_log_source_display, debug_log_trigger, debug_log_invalidation, debug_log_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_source_upgrade_now, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text))
if show_long_engine_debug_eff and long_confirm_signal
log.info('{0}', compose_long_engine_event_log(long_engine_debug_mode_eff, 'LONG CONFIRMED', debug_log_source_display, debug_log_trigger, debug_log_invalidation, debug_log_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_source_upgrade_now, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text))
if show_long_engine_debug_eff and long_ready_signal
log.info('{0}', compose_long_engine_event_log(long_engine_debug_mode_eff, 'LONG READY', debug_log_source_display, debug_log_trigger, debug_log_invalidation, debug_log_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_source_upgrade_now, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text))
if show_long_engine_debug_eff and long_invalidate_signal
log.info('{0}', compose_long_engine_event_log(long_engine_debug_mode_eff, 'LONG INVALID', debug_log_source_display, debug_log_trigger, debug_log_invalidation, debug_log_touch_count, freshness_text, source_state_text, zone_quality_text, long_environment_focus_display, long_source_upgrade_now, long_source_upgrade_reason, long_last_invalid_source, long_ready_blocker_text, long_strict_blocker_text))
helper_summary
Show all 132 lines