FvgTypes█ OVERVIEW 
This library serves as a foundational module for Pine Script™ projects focused on Fair Value Gaps (FVGs). Its primary purpose is to define and centralize custom data structures (User-Defined Types - UDTs) and enumerations that are utilized across various components of an FVG analysis system. By providing standardized types for FVG characteristics and drawing configurations, it promotes code consistency, readability, and easier maintenance within a larger FVG indicator or strategy.
 █ CONCEPTS 
The library introduces several key data structures (User-Defined Types - UDTs) and an enumeration to organize Fair Value Gap (FVG) related data logically. These types are central to the functioning of FVG analysis tools built upon this library.
 Timeframe Categorization (`tfType` Enum) 
To manage and differentiate FVGs based on their timeframe of origin, the `tfType` enumeration is defined. It includes:
 
  `LTF`: Low Timeframe (typically the current chart).
  `MTF`: Medium Timeframe.
  `HTF`: High Timeframe.
 
This allows for distinct logic and visual settings to be applied depending on the FVG's source timeframe.
 FVG Data Encapsulation (`fvgObject` UDT) 
The `fvgObject` is a comprehensive UDT designed to encapsulate all pertinent information and state for an individual Fair Value Gap throughout its lifecycle. Instead of listing every field, its conceptual structure can be understood as holding:
 
   Core Definition:  The FVG's fundamental price levels (top, bottom) and its formation time (`startTime`).
   Classification Attributes:  Characteristics such as its direction (`isBullish`) and whether it qualifies as a Large Volume FVG (`isLV`), along with its originating timeframe category (`tfType`).
   Lifecycle State:  Current status indicators including full mitigation (`isMitigated`, `mitigationTime`), partial fill levels (`currentTop`, `currentBottom`), midline interaction (`isMidlineTouched`), and overall visibility (`isVisible`).
   Drawing Identifiers:  References (`boxId`, `midLineId`, `mitLineLabelId`, etc.) to the actual graphical objects drawn on the chart to represent the FVG and its components.
   Optimization Cache:  Previous-bar state values (`prevIsMitigated`, `prevCurrentTop`, etc.) crucial for optimizing drawing updates by avoiding redundant operations.
 
This comprehensive structure facilitates easy access to all FVG-related information through a single object, reducing code complexity and improving manageability.
 Drawing Configuration (`drawSettings` UDT) 
The `drawSettings` UDT centralizes all user-configurable parameters that dictate the visual appearance of FVGs across different timeframes. It's typically populated from script inputs and conceptually groups settings for:
 
   General Behavior:  Global FVG classification toggles (e.g., `shouldClassifyLV`) and general display rules (e.g., `shouldHideMitigated`).
   FVG Type Specific Colors:  Colors for standard and Large Volume FVGs, both active and mitigated (e.g., `lvBullColor`, `mitigatedBearBoxColor`).
   Timeframe-Specific Visuals (LTF, MTF, HTF):  Detailed parameters for each timeframe category, covering FVG boxes (visibility, colors, extension, borders, labels), midlines (visibility, style, color), and mitigation lines (visibility, style, color, labels, persistence after mitigation).
   Contextual Information:  The current bar's time (`currentTime`) for accurate positioning of time-dependent drawing elements and timeframe display strings (`tfString`, `mtfTfString`, `htfTfString`).
 
This centralized approach allows for extensive customization of FVG visuals and simplifies the management of drawing parameters within the main script. Such centralization also enhances the maintainability of the visual aspects of the FVG system.
 █ NOTES 
 
   User-Defined Types (UDTs):  This library extensively uses UDTs (`fvgObject`, `drawSettings`) to group related data. This improves code organization and makes it easier to pass complex data between functions and libraries.
   Mutability and Reference Behavior of UDTs:  When UDT instances are passed to functions or methods in other libraries (like `fvgObjectLib`), those functions might modify the fields of the passed object if they are not explicitly designed to return new instances. This is because UDTs are passed by reference and are mutable in Pine Script™. Users should be aware of this standard behavior to prevent unintended side effects.
   Optimization Fields:  The `prev_*` fields in `fvgObject` are crucial for performance optimization in the drawing logic. They help avoid unnecessary redrawing of FVG elements if their state or relevant settings haven't changed.
   No Direct Drawing Logic:  `FvgTypes` itself does not contain any drawing logic. It solely defines the data structures. The actual drawing and manipulation of these objects are handled by other libraries (e.g., `fvgObjectLib`).
   Centralized Definitions:  By defining these types in a separate library, any changes to the structure of FVG data or settings can be made in one place, ensuring consistency across all dependent scripts and libraries.
 
 █ EXPORTED TYPES 
 fvgObject 
  fvgObject                     Represents a Fair Value Gap (FVG) object. 
Fields:
     top (series float) : The top price level of the FVG. 
     bottom (series float) : The bottom price level of the FVG. 
     startTime (series int) : The start time (timestamp) of the bar where the FVG formed. 
     isBullish (series bool) : Indicates if the FVG is bullish (true) or bearish (false). 
     isLV (series bool) : Indicates if the FVG is a Large Volume FVG. 
     tfType (series tfType) : The timeframe type (LTF, MTF, HTF) to which this FVG belongs. 
     isMitigated (series bool) : Indicates if the FVG has been fully mitigated. 
     mitigationTime (series int) : The time (timestamp) when the FVG was mitigated. 
     isVisible (series bool) : The current visibility status of the FVG, typically managed by drawing logic based on filters. 
     isMidlineTouched (series bool) : Indicates if the price has touched the FVG's midline (50% level). 
     currentTop (series float) : The current top level of the FVG after partial fills. 
     currentBottom (series float) : The current bottom level of the FVG after partial fills. 
     boxId (series box) : The drawing ID for the main FVG box. 
     mitigatedBoxId (series box) : The drawing ID for the box representing the partially filled (mitigated) area. 
     midLineId (series line) : The drawing ID for the FVG's midline. 
     mitLineId (series line) : The drawing ID for the FVG's mitigation line. 
     boxLabelId (series label) : The drawing ID for the FVG box label. 
     mitLineLabelId (series label) : The drawing ID for the mitigation line label. 
     testedBoxId (series box) : The drawing ID for the box of a fully mitigated (tested) FVG, if kept visible. 
     keptMitLineId (series line) : The drawing ID for a mitigation line that is kept after full mitigation. 
     prevIsMitigated (series bool) : Stores the isMitigated state from the previous bar for optimization. 
     prevCurrentTop (series float) : Stores the currentTop value from the previous bar for optimization. 
     prevCurrentBottom (series float) : Stores the currentBottom value from the previous bar for optimization. 
     prevIsVisible (series bool) : Stores the visibility status from the previous bar for optimization (derived from isVisibleNow passed to updateDrawings). 
     prevIsMidlineTouched (series bool) : Stores the isMidlineTouched status from the previous bar for optimization. 
 drawSettings 
  drawSettings                              A structure containing settings for drawing FVGs. 
Fields:
     shouldClassifyLV (series bool) : Whether to classify FVGs as Large Volume (LV) based on ATR. 
     shouldHideMitigated (series bool) : Whether to hide FVG boxes once they are fully mitigated. 
     currentTime (series int) : The current bar's time, used for extending drawings. 
     lvBullColor (series color) : Color for Large Volume Bullish FVGs. 
     mitigatedLvBullColor (series color) : Color for mitigated Large Volume Bullish FVGs. 
     lvBearColor (series color) : Color for Large Volume Bearish FVGs. 
     mitigatedLvBearColor (series color) : Color for mitigated Large Volume Bearish FVGs. 
     shouldShowBoxes (series bool) : Whether to show FVG boxes for the LTF. 
     bullBoxColor (series color) : Color for LTF Bullish FVG boxes. 
     mitigatedBullBoxColor (series color) : Color for mitigated LTF Bullish FVG boxes. 
     bearBoxColor (series color) : Color for LTF Bearish FVG boxes. 
     mitigatedBearBoxColor (series color) : Color for mitigated LTF Bearish FVG boxes. 
     boxLengthBars (series int) : Length of LTF FVG boxes in bars (if not extended). 
     shouldExtendBoxes (series bool) : Whether to extend LTF FVG boxes to the right. 
     shouldShowCurrentTfBoxLabels (series bool) : Whether to show labels on LTF FVG boxes. 
     shouldShowBoxBorder (series bool) : Whether to show a border for LTF FVG boxes. 
     boxBorderWidth (series int) : Border width for LTF FVG boxes. 
     boxBorderStyle (series string) : Border style for LTF FVG boxes (e.g., line.style_solid). 
     boxBorderColor (series color) : Border color for LTF FVG boxes. 
     shouldShowMidpoint (series bool) : Whether to show the midline (50% level) for LTF FVGs. 
     midLineWidthInput (series int) : Width of the LTF FVG midline. 
     midpointLineStyleInput (series string) : Style of the LTF FVG midline. 
     midpointColorInput (series color) : Color of the LTF FVG midline. 
     shouldShowMitigationLine (series bool) : Whether to show the mitigation line for LTF FVGs. 
(Line always extends if shown)
     mitLineWidthInput (series int) : Width of the LTF FVG mitigation line. 
     mitigationLineStyleInput (series string) : Style of the LTF FVG mitigation line. 
     mitigationLineColorInput (series color) : Color of the LTF FVG mitigation line. 
     shouldShowCurrentTfMitLineLabels (series bool) : Whether to show labels on LTF FVG mitigation lines. 
     currentTfMitLineLabelOffsetX (series float) : The horizontal offset value for the LTF mitigation line's label. 
     shouldKeepMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated LTF FVGs. 
     mitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated LTF FVGs. 
     tfString (series string) : Display string for the LTF (e.g., "Current TF"). 
     shouldShowMtfBoxes (series bool) : Whether to show FVG boxes for the MTF. 
     mtfBullBoxColor (series color) : Color for MTF Bullish FVG boxes. 
     mtfMitigatedBullBoxColor (series color) : Color for mitigated MTF Bullish FVG boxes. 
     mtfBearBoxColor (series color) : Color for MTF Bearish FVG boxes. 
     mtfMitigatedBearBoxColor (series color) : Color for mitigated MTF Bearish FVG boxes. 
     mtfBoxLengthBars (series int) : Length of MTF FVG boxes in bars (if not extended). 
     shouldExtendMtfBoxes (series bool) : Whether to extend MTF FVG boxes to the right. 
     shouldShowMtfBoxLabels (series bool) : Whether to show labels on MTF FVG boxes. 
     shouldShowMtfBoxBorder (series bool) : Whether to show a border for MTF FVG boxes. 
     mtfBoxBorderWidth (series int) : Border width for MTF FVG boxes. 
     mtfBoxBorderStyle (series string) : Border style for MTF FVG boxes. 
     mtfBoxBorderColor (series color) : Border color for MTF FVG boxes. 
     shouldShowMtfMidpoint (series bool) : Whether to show the midline for MTF FVGs. 
     mtfMidLineWidthInput (series int) : Width of the MTF FVG midline. 
     mtfMidpointLineStyleInput (series string) : Style of the MTF FVG midline. 
     mtfMidpointColorInput (series color) : Color of the MTF FVG midline. 
     shouldShowMtfMitigationLine (series bool) : Whether to show the mitigation line for MTF FVGs. 
(Line always extends if shown)
     mtfMitLineWidthInput (series int) : Width of the MTF FVG mitigation line. 
     mtfMitigationLineStyleInput (series string) : Style of the MTF FVG mitigation line. 
     mtfMitigationLineColorInput (series color) : Color of the MTF FVG mitigation line. 
     shouldShowMtfMitLineLabels (series bool) : Whether to show labels on MTF FVG mitigation lines. 
     mtfMitLineLabelOffsetX (series float) : The horizontal offset value for the MTF mitigation line's label. 
     shouldKeepMtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated MTF FVGs. 
     mtfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated MTF FVGs. 
     mtfTfString (series string) : Display string for the MTF (e.g., "MTF"). 
     shouldShowHtfBoxes (series bool) : Whether to show FVG boxes for the HTF. 
     htfBullBoxColor (series color) : Color for HTF Bullish FVG boxes. 
     htfMitigatedBullBoxColor (series color) : Color for mitigated HTF Bullish FVG boxes. 
     htfBearBoxColor (series color) : Color for HTF Bearish FVG boxes. 
     htfMitigatedBearBoxColor (series color) : Color for mitigated HTF Bearish FVG boxes. 
     htfBoxLengthBars (series int) : Length of HTF FVG boxes in bars (if not extended). 
     shouldExtendHtfBoxes (series bool) : Whether to extend HTF FVG boxes to the right. 
     shouldShowHtfBoxLabels (series bool) : Whether to show labels on HTF FVG boxes. 
     shouldShowHtfBoxBorder (series bool) : Whether to show a border for HTF FVG boxes. 
     htfBoxBorderWidth (series int) : Border width for HTF FVG boxes. 
     htfBoxBorderStyle (series string) : Border style for HTF FVG boxes. 
     htfBoxBorderColor (series color) : Border color for HTF FVG boxes. 
     shouldShowHtfMidpoint (series bool) : Whether to show the midline for HTF FVGs. 
     htfMidLineWidthInput (series int) : Width of the HTF FVG midline. 
     htfMidpointLineStyleInput (series string) : Style of the HTF FVG midline. 
     htfMidpointColorInput (series color) : Color of the HTF FVG midline. 
     shouldShowHtfMitigationLine (series bool) : Whether to show the mitigation line for HTF FVGs. 
(Line always extends if shown)
     htfMitLineWidthInput (series int) : Width of the HTF FVG mitigation line. 
     htfMitigationLineStyleInput (series string) : Style of the HTF FVG mitigation line. 
     htfMitigationLineColorInput (series color) : Color of the HTF FVG mitigation line. 
     shouldShowHtfMitLineLabels (series bool) : Whether to show labels on HTF FVG mitigation lines. 
     htfMitLineLabelOffsetX (series float) : The horizontal offset value for the HTF mitigation line's label. 
     shouldKeepHtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated HTF FVGs. 
     htfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated HTF FVGs. 
     htfTfString (series string) : Display string for the HTF (e.g., "HTF").
Objects
lib_fvgLibrary   "lib_fvg" 
further expansion of my object oriented library toolkit. This lib detects Fair Value Gaps and returns them as objects.
Drawing them is a separate step so the lib can be used with securities. It also allows for usage of current/close price to detect fill/invalidation of a gap and to adjust the fill level dynamically. FVGs can be detected while forming and extended indefinitely while they're unfilled.
 method draw(this) 
  Namespace types: FVG
  Parameters:
     this (FVG) 
 method draw(fvgs) 
  Namespace types: FVG 
  Parameters:
     fvgs (FVG ) 
 is_fvg(mode, precondition, filter_insignificant, filter_insignificant_atr_factor, live) 
  Parameters:
     mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
     precondition (bool) : allows for other confluences to block/enable detection
     filter_insignificant (bool) : allows to ignore small gaps
     filter_insignificant_atr_factor (float) : allows to adjust how small (compared to a 50 period ATR)
     live (bool) : allows to detect FVGs while the third bar is forming -> will cause repainting
  Returns: a tuple of (bar_index of gap bar, gap top, gap bottom)
 create_fvg(mode, idx, top, btm, filled_at_pc, config) 
  Parameters:
     mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
     idx (int) : the bar_index of the FVG gap bar
     top (float) : the top level of the FVG
     btm (float) : the bottom level of the FVG
     filled_at_pc (float) : the ratio (0-1) that the fill source needs to retrace into the gap to consider it filled/invalidated/ready for removal
     config (FVGConfig) : the plot configuration/styles for the FVG
  Returns: a new FVG object if there was a new FVG, else na
 detect_fvg(mode, filled_at_pc, precondition, filter_insignificant, filter_insignificant_atr_factor, live, config) 
  Parameters:
     mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
     filled_at_pc (float) 
     precondition (bool) : allows for other confluences to block/enable detection
     filter_insignificant (bool) : allows to ignore small gaps
     filter_insignificant_atr_factor (float) : allows to adjust how small (compared to a 50 period ATR)
     live (bool) : allows to detect FVGs while the third bar is forming -> will cause repainting
     config (FVGConfig) 
  Returns: a new FVG object if there was a new FVG, else na
 method update(this, fill_src) 
  Namespace types: FVG
  Parameters:
     this (FVG) 
     fill_src (float) : allows for usage of different fill source series, e.g. high for bearish FVGs, low vor bullish FVGs or close for both
 method update(all, fill_src) 
  Namespace types: FVG 
  Parameters:
     all (FVG ) 
     fill_src (float) 
 method remove_filled(unfilled_fvgs) 
  Namespace types: FVG 
  Parameters:
     unfilled_fvgs (FVG ) 
 method delete(this) 
  Namespace types: FVG
  Parameters:
     this (FVG) 
 method delete_filled_fvgs_buffered(filled_fvgs, max_keep) 
  Namespace types: FVG 
  Parameters:
     filled_fvgs (FVG ) 
     max_keep (int) : the number of filled, latest FVGs to retain on the chart.
 FVGConfig 
  Fields:
     box_args (|robbatt/lib_plot_objects/36;BoxArgs|#OBJ) 
     line_args (|robbatt/lib_plot_objects/36;LineArgs|#OBJ) 
     box_show (series__bool) 
     line_show (series__bool) 
     keep_filled (series__bool) 
     extend (series__bool) 
 FVG 
  Fields:
     config (|FVGConfig|#OBJ) 
     startbar (series__integer) 
     mode (series__integer) 
     top (series__float) 
     btm (series__float) 
     center (series__float) 
     size (series__float) 
     fill_size (series__float) 
     fill_lvl_target (series__float) 
     fill_lvl_current (series__float) 
     fillbar (series__integer) 
     filled (series__bool) 
     _fvg_box (|robbatt/lib_plot_objects/36;Box|#OBJ) 
     _fill_line (|robbatt/lib_plot_objects/36;Line|#OBJ)
lib_plot_composite_objectsLibrary   "lib_plot_composite_objects" 
library building on top of lib_plot_objects for composite objects such as Triangles and Polygons. heavily using chart.points
 method tostring(this, date_format) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: TriangleFill 
  Parameters:
     this (TriangleFill ) 
     date_format (simple string) 
 method tostring(this, date_format) 
  Namespace types: PolygonFill 
  Parameters:
     this (PolygonFill ) 
     date_format (simple string) 
 method create_triangle(this, b, c, args) 
  Namespace types: chart.point
  Parameters:
     this (chart.point) 
     b (chart.point) 
     c (chart.point) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method create_triangle(this, c) 
  Namespace types: D.Line
  Parameters:
     this (Line type from robbatt/lib_plot_objects/32) 
     c (chart.point) 
 method create_polygon(points, args) 
  Namespace types: chart.point 
  Parameters:
     points (chart.point ) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method create_polygon(start, others, args) 
  Namespace types: chart.point
  Parameters:
     start (chart.point) 
     others (chart.point ) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method create_fill(this, fill_color) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     fill_color (color) 
 method create_fill(this, fill_color) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     fill_color (color) 
 method create_center_label(this, txt, args, tooltip) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     txt (string) 
     args (LabelArgs type from robbatt/lib_plot_objects/32) 
     tooltip (string) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     txt (string) 
     args (LabelArgs type from robbatt/lib_plot_objects/32) 
     tooltip (string) 
 method nz(this, default) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     default (Triangle) 
 method nz(this, default) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
     default (TriangleFill) 
 method nz(this, default) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     default (Polygon) 
 method nz(this, default) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
     default (PolygonFill) 
 method enqueue(id, item, max) 
  Namespace types: Triangle 
  Parameters:
     id (Triangle ) 
     item (Triangle) 
     max (int) 
 method enqueue(id, item, max) 
  Namespace types: Polygon 
  Parameters:
     id (Polygon ) 
     item (Polygon) 
     max (int) 
 method enqueue(id, item, max) 
  Namespace types: TriangleFill 
  Parameters:
     id (TriangleFill ) 
     item (TriangleFill) 
     max (int) 
 method enqueue(id, item, max) 
  Namespace types: PolygonFill 
  Parameters:
     id (PolygonFill ) 
     item (PolygonFill) 
     max (int) 
 method update(this, a, b, c) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     a (chart.point) 
     b (chart.point) 
     c (chart.point) 
 method update(this, points) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     points (chart.point ) 
 method delete(this) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
 method delete(this) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
 method delete(this) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
 method delete(this) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
 method delete(this) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
 method delete(this) 
  Namespace types: TriangleFill 
  Parameters:
     this (TriangleFill ) 
 method delete(this) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
 method delete(this) 
  Namespace types: PolygonFill 
  Parameters:
     this (PolygonFill ) 
 method draw(this, ab_args_override, ac_args_override, bc_args_override) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     ab_args_override (LineArgs type from robbatt/lib_plot_objects/32) 
     ac_args_override (LineArgs type from robbatt/lib_plot_objects/32) 
     bc_args_override (LineArgs type from robbatt/lib_plot_objects/32) 
 method draw(this) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
 method draw(this) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
 method draw(this) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
 method draw(this) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
 method draw(this) 
  Namespace types: TriangleFill 
  Parameters:
     this (TriangleFill ) 
 method draw(this) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
 method draw(this) 
  Namespace types: PolygonFill 
  Parameters:
     this (PolygonFill ) 
 method apply_style(this, args) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method apply_style(this, args) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method apply_style(this, args) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 method apply_style(this, args) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
     args (LineArgs type from robbatt/lib_plot_objects/32) 
 Triangle 
  Fields:
     a (chart.point) : first Corner
     b (chart.point) : second Corner
     c (chart.point) : third Corner
     args (LineArgs type from robbatt/lib_plot_objects/32) : Wrapper for reusable arguments for line.new()
     ab (Line type from robbatt/lib_plot_objects/32) 
     ac (Line type from robbatt/lib_plot_objects/32) 
     bc (Line type from robbatt/lib_plot_objects/32) 
 TriangleFill 
  Fields:
     triangle (Triangle) : The Triangle object
     plot (LineFill type from robbatt/lib_plot_objects/32) : The linefill object to be added and plotted via draw()
 Polygon 
  Fields:
     points (chart.point ) : array of points that make up the Polygon
     center (chart.point) : Center point of the Polygon, can be used for a label and will be center for PolygonFill
     args (LineArgs type from robbatt/lib_plot_objects/32) : Wrapper for reusable arguments for line.new()
     plot (Line  type from robbatt/lib_plot_objects/32) : An array of Lines that form Polygon Border
 PolygonFill 
  Fields:
     poly (Polygon) : the Polygon
     fill_color (series color) : The color used to fill the space between the lines.
     plot (TriangleFill )
lib_plot_objectsLibrary   "lib_plot_objects" 
library wrapping basic builtin object constructors, to be able to do calculations with points/lines/boxes/triangles/polygons via libraries and on securities. inspired by Trendoscope's ( and ) with added update mechanism to not have to recreate objects on every iteration for continously drawn items, automated xloc selection for coordinates, compatibility check for Points, added Triangle and Polygon types, object reflection via tostring to valid json (logging via webhook)
 method assert_same_xloc(a, b, test) 
  checks two points for compatibility, i.e. having the same xloc
  Namespace types: Point
  Parameters:
     a (Point) 
     b (Point) 
     test (Test type from robbatt/lib_unit/6) 
 method assert_same_xloc(a, b, test) 
  checks two lines for compatibility, i.e. having the same xloc
  Namespace types: Line
  Parameters:
     a (Line) 
     b (Line) 
     test (Test type from robbatt/lib_unit/6) 
 method or_default(args) 
  checks args oject for being na, if so, provide a default instead
  Namespace types: LineArgs
  Parameters:
     args (LineArgs) 
 method or_default(args) 
  checks args oject for being na, if so, provide a default instead
  Namespace types: LabelArgs
  Parameters:
     args (LabelArgs) 
 method or_default(args) 
  checks args oject for being na, if so, provide a default instead
  Namespace types: BoxArgs
  Parameters:
     args (BoxArgs) 
 method or_default(args) 
  checks args oject for being na, if so, provide a default instead
  Namespace types: BoxTextArgs
  Parameters:
     args (BoxTextArgs) 
 method x(point, xloc) 
  automatically returns the correct x coordinate, based on the point's set xloc
  Namespace types: Point
  Parameters:
     point (Point) 
     xloc (string) 
 method tostring(this, date_format) 
  converts object to json representation
  Namespace types: Point
  Parameters:
     this (Point) 
     date_format (string) 
 method tostring(this, date_format) 
  converts object to json representation
  Namespace types: Point 
  Parameters:
     this (Point ) 
     date_format (string) 
 method tostring(this) 
  converts object to json representation
  Namespace types: LineArgs
  Parameters:
     this (LineArgs) 
 method tostring(this, date_format) 
  converts object to json representation
  Namespace types: Line
  Parameters:
     this (Line) 
     date_format (string) 
 method tostring(this) 
  Namespace types: LabelArgs
  Parameters:
     this (LabelArgs) 
 method tostring(this, date_format) 
  Namespace types: Label
  Parameters:
     this (Label) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: LineFill
  Parameters:
     this (LineFill) 
     date_format (string) 
 method tostring(this) 
  Namespace types: BoxArgs
  Parameters:
     this (BoxArgs) 
 method tostring(this) 
  Namespace types: BoxTextArgs
  Parameters:
     this (BoxTextArgs) 
 method tostring(this, date_format) 
  Namespace types: Box
  Parameters:
     this (Box) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Line 
  Parameters:
     this (Line ) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Box 
  Parameters:
     this (Box ) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
     date_format (string) 
 method tostring(this, date_format) 
  Namespace types: PolygonFill 
  Parameters:
     this (PolygonFill ) 
     date_format (string) 
 method create_center(points) 
  Namespace types: Point 
  Parameters:
     points (Point ) 
 method create_center(this, other) 
  Namespace types: Point
  Parameters:
     this (Point) 
     other (Point) 
 method create_center(this) 
  Namespace types: Line
  Parameters:
     this (Line) 
 method create_line(this, other, args) 
  Namespace types: Point
  Parameters:
     this (Point) 
     other (Point) 
     args (LineArgs) 
 method create_triangle(this, b, c, args) 
  Namespace types: Point
  Parameters:
     this (Point) 
     b (Point) 
     c (Point) 
     args (LineArgs) 
 method create_triangle(this, c) 
  Namespace types: Line
  Parameters:
     this (Line) 
     c (Point) 
 method create_box(this, other, txt, args, text_args) 
  Namespace types: Point
  Parameters:
     this (Point) 
     other (Point) 
     txt (string) 
     args (BoxArgs) 
     text_args (BoxTextArgs) 
 method create_box(this, txt, args, text_args) 
  Namespace types: Line
  Parameters:
     this (Line) 
     txt (string) 
     args (BoxArgs) 
     text_args (BoxTextArgs) 
 method create_polygon(points, args) 
  Namespace types: Point 
  Parameters:
     points (Point ) 
     args (LineArgs) 
 method create_polygon(start, others, args) 
  Namespace types: Point
  Parameters:
     start (Point) 
     others (Point ) 
     args (LineArgs) 
 method create_fill(this, other, fill_color) 
  Namespace types: Line
  Parameters:
     this (Line) 
     other (Line) 
     fill_color (color) 
 method create_fill(this, fill_color) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     fill_color (color) 
 method create_fill(this, fill_color) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     fill_color (color) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Point
  Parameters:
     this (Point) 
     txt (string) 
     args (LabelArgs) 
     tooltip (string) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Line
  Parameters:
     this (Line) 
     txt (string) 
     args (LabelArgs) 
     tooltip (string) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Box
  Parameters:
     this (Box) 
     txt (string) 
     args (LabelArgs) 
     tooltip (string) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     txt (string) 
     args (LabelArgs) 
     tooltip (string) 
 method create_label(this, txt, args, tooltip) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     txt (string) 
     args (LabelArgs) 
     tooltip (string) 
 method update(this, bar_time, bar_idx, price) 
  Namespace types: Point
  Parameters:
     this (Point) 
     bar_time (int) 
     bar_idx (int) 
     price (float) 
 method update(this, update) 
  Namespace types: Point
  Parameters:
     this (Point) 
     update (Point) 
 method update(this, point) 
  Namespace types: Label
  Parameters:
     this (Label) 
     point (Point) 
 method update(this, start, end) 
  Namespace types: Line
  Parameters:
     this (Line) 
     start (Point) 
     end (Point) 
 method update(this, left_top, right_bottom) 
  Namespace types: Box
  Parameters:
     this (Box) 
     left_top (Point) 
     right_bottom (Point) 
 method update(this, a, b, c) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
     a (Point) 
     b (Point) 
     c (Point) 
 method update(this, points) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
     points (Point ) 
 method delete(this) 
  Namespace types: Line
  Parameters:
     this (Line) 
 method delete(this) 
  Namespace types: Label
  Parameters:
     this (Label) 
 method delete(this) 
  Namespace types: LineFill
  Parameters:
     this (LineFill) 
 method delete(this) 
  Namespace types: Box
  Parameters:
     this (Box) 
 method delete(this) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
 method delete(this) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
 method delete(this) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
 method delete(this) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
 method delete(this) 
  Namespace types: Line 
  Parameters:
     this (Line ) 
 method delete(this) 
  Namespace types: Label 
  Parameters:
     this (Label ) 
 method delete(this) 
  Namespace types: LineFill 
  Parameters:
     this (LineFill ) 
 method delete(this) 
  Namespace types: Box 
  Parameters:
     this (Box ) 
 method delete(this) 
  Namespace types: TriangleFill 
  Parameters:
     this (TriangleFill ) 
 method delete(this) 
  Namespace types: Polygon 
  Parameters:
     this (Polygon ) 
 method delete(this) 
  Namespace types: Triangle 
  Parameters:
     this (Triangle ) 
 method delete(this) 
  Namespace types: PolygonFill 
  Parameters:
     this (PolygonFill ) 
 method draw(this) 
  Namespace types: Label
  Parameters:
     this (Label) 
 method draw(this) 
  Namespace types: Line
  Parameters:
     this (Line) 
 method draw(this) 
  Namespace types: Box
  Parameters:
     this (Box) 
 method draw(this) 
  Namespace types: Triangle
  Parameters:
     this (Triangle) 
 method draw(this) 
  Namespace types: Polygon
  Parameters:
     this (Polygon) 
 method draw(this) 
  Namespace types: LineFill
  Parameters:
     this (LineFill) 
 method draw(this) 
  Namespace types: TriangleFill
  Parameters:
     this (TriangleFill) 
 method draw(this) 
  Namespace types: PolygonFill
  Parameters:
     this (PolygonFill) 
 Point 
  Fields:
     bar_time (series int) : time based x coordinate
     bar_idx (series int) : bar index based x coordinate
     price (series float) : price based y coordinate
     xloc (series string) : To select if x coordinate is represented by bar_idx or bar_time. Possible values: xloc.bar_index and xloc.bar_time. Default is xloc.bar_index.
 LabelArgs 
  Fields:
     text_color (series color) : Text color.
     bg_color (series color) : Color of the label border and arrow.
     text_font_family (series string) : The font family of the text. Optional. The default value is font.family_default. Possible values: font.family_default, font.family_monospace.
     yloc (series string) : Possible values are yloc.price, yloc.abovebar, yloc.belowbar. If yloc=yloc.price, y argument specifies the price of the label position. If yloc=yloc.abovebar, label is located above bar. If yloc=yloc.belowbar, label is located below bar. Default is yloc.price.
     style (series string) : Label style. Possible values: label.style_none, label.style_xcross, label.style_cross, label.style_triangleup, label.style_triangledown, label.style_flag, label.style_circle, label.style_arrowup, label.style_arrowdown, label.style_label_up, label.style_label_down, label.style_label_left, label.style_label_right, label.style_label_lower_left, label.style_label_lower_right, label.style_label_upper_left, label.style_label_upper_right, label.style_label_center, label.style_square, label.style_diamond, label.style_text_outline. Default is label.style_label_down.
     size (series string) : Label size. Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge. Default value is size.normal.
     text_align (series string) : Label text alignment. Possible values: text.align_left, text.align_center, text.align_right. Default value is text.align_center.
 Label 
  Fields:
     point (Point) : The Label coordinates
     txt (series string) : Label text. Default is empty string.
     args (LabelArgs) : Wrapper for reusable arguments for label.new()
     tooltip (series string) : Hover to see tooltip label.
     plot (series label) : The label object to be added and plotted via draw()
 LineArgs 
  Fields:
     line_color (series color) : Line color.
     style (series string) : Line style. Possible values: line.style_solid, line.style_dotted, line.style_dashed, line.style_arrow_left, line.style_arrow_right, line.style_arrow_both.
     width (series int) : Line width in pixels.
     extend (series string) : f extend=extend.none, draws segment starting at point (x1, y1) and ending at point (x2, y2). If extend is equal to extend.right or extend.left, draws a ray starting at point (x1, y1) or (x2, y2), respectively. If extend=extend.both, draws a straight line that goes through these points. Default value is extend.none.
 Line 
  Fields:
     start (Point) : starting point of the line
     end (Point) 
     args (LineArgs) : Wrapper for reusable arguments for line.new()
     plot (series line) : The line object to be added and plotted via draw()
 LineFill 
  Fields:
     a (Line) : The first Line object
     b (Line) : The second Line object
     fill_color (series color) : The color used to fill the space between the lines.
     plot (series linefill) : The linefill object to be added and plotted via draw()
 BoxArgs 
  Fields:
     border_color (series color) : Color of the four borders. Optional. The default is color.blue.
     border_width (series int) : Width of the four borders, in pixels. Optional. The default is 1 pixel.
     border_style (series string) : Style of the four borders. Possible values: line.style_solid, line.style_dotted, line.style_dashed. Optional. The default value is line.style_solid.
     bg_color (series color) : Background color of the box. Optional. The default is color.blue.
     extend (series string) : When extend.none is used, the horizontal borders start at the left border and end at the right border. With extend.left or extend.right, the horizontal borders are extended indefinitely to the left or right of the box, respectively. With extend.both, the horizontal borders are extended on both sides. Optional. The default value is extend.none.
 BoxTextArgs 
  Fields:
     text_color (series color) : The color of the text. Optional. The default is color.black.
     text_size (series string) : The size of the text. An optional parameter, the default value is size.auto. Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge.
     text_halign (series string) : The horizontal alignment of the box's text. Optional. The default value is text.align_center. Possible values: text.align_left, text.align_center, text.align_right.
     text_valign (series string) : The vertical alignment of the box's text. Optional. The default value is text.align_center. Possible values: text.align_top, text.align_center, text.align_bottom.
     text_wrap (series string) : Defines whether the text is presented in a single line, extending past the width of the box if necessary, or wrapped so every line is no wider than the box itself (and clipped by the bottom border of the box if the height of the resulting wrapped text is higher than the height of the box). Optional. The default value is text.wrap_none. Possible values: text.wrap_none, text.wrap_auto.
     text_font_family (series string) : The font family of the text. Optional. The default value is font.family_default. Possible values: font.family_default, font.family_monospace.
 Box 
  Fields:
     left_top (Point) : top-left corner of the box
     right_bottom (Point) : bottom-right corner of the box
     txt (series string) : The text to be displayed inside the box. Optional. The default is empty string.
     args (BoxArgs) : Wrapper for reusable arguments for box.new()
     text_args (BoxTextArgs) 
     plot (series box) : The box object to be added and plotted via draw()
 Triangle 
  Fields:
     a (Point) : first Corner
     b (Point) : second Corner
     c (Point) : third Corner
     args (LineArgs) : Wrapper for reusable arguments for line.new()
     plot_ab (series line) : The line object to be added and plotted via draw()
     plot_ac (series line) : The line object to be added and plotted via draw()
     plot_bc (series line) : The line object to be added and plotted via draw()
 TriangleFill 
  Fields:
     triangle (Triangle) : The Triangle object
     fill_color (series color) : The color used to fill the space between the lines.
     plot (series linefill) : The linefill object to be added and plotted via draw()
 Polygon 
  Fields:
     points (Point ) : array of points that make up the Polygon
     center (Point) : Center point of the Polygon, can be used for a label and will be center for PolygonFill
     args (LineArgs) : Wrapper for reusable arguments for line.new()
     plot (line ) : An array of Lines that form Polygon Border
 PolygonFill 
  Fields:
     poly (Polygon) : the Polygon
     fill_color (series color) : The color used to fill the space between the lines.
     plot_segments (line ) : An array of helper lines to create linefills
     plot_fills (linefill ) : An array of linefills that cover the Polygon surface
MiteTricksLibrary "MiteTricks"
Matrix Global Registry.
Get, Set, automatic growing, universal get/set,
multi-matrix dictionaries, multi-dictionary matrixes..
add slice matrixes of any type, share one common global key registry
pull up an item from a category, and item name ie a table of info.
same cell needs a color, a size, a string, a value, etc..
all of which can be pulled up with the same group id, and key id.
just swap which matrix you pull the value from.
this has a side benefit of non-repainting and recalculating
when pulling values, changing inputs..
makes for very fast/clean usage..
benefit :
floats = value
strings = names
lines = drawn items
table =table of data items for this key
colors = color for line/table/fill,label..
all of those can be pulled with "get(_VALUES,_groupIDX,_keyIDX)" where only the values matrix needs be swapped, and the same item/coordinates remains for all the possible matrixes that item appears in.
also useful as a dictionary/registry for any given type of item,,
and goes very handy with floats/strings/colors/bools with my matrixautotable
very helpful when prototyping or doing development work as a shortcut.
initRegistry()
  Registry inititalizer
  Returns: registry of string matrix type
newbool(optional, optional, optional)
  create bool type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is bool (na)
  Returns: bool matrix of specified size and fill, or blank 2x2 for registry use
newbox(optional, optional, optional)
  create box type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is box (na)
  Returns: box matrix of specified size and fill, or blank 2x2 for registry use
newcolor(optional, optional, optional)
  create color type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is color (na)
  Returns: color matrix of specified size and fill, or blank 2x2 for registry use
newfloat(optional, optional, optional)
  create float type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is float (na)
  Returns: float matrix of specified size and fill, or blank 2x2 for registry use
newint(optional, optional, optional)
  create int type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is int (na)
  Returns: int matrix of specified size and fill, or blank 2x2 for registry use
newlabel(optional, optional, optional)
  create label type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is label (na)
  Returns: label matrix of specified size and fill, or blank 2x2 for registry use
newline(optional, optional, optional)
  create line type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is line (na)
  Returns: line matrix of specified size and fill, or blank 2x2 for registry use
newlinefill(optional, optional, optional)
  create linefill type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is linefill(na)
  Returns: linefill matrix of specified size and fill, or blank 2x2 for registry use
newstring(optional, optional, optional)
  create string type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is string (na)
  Returns: string matrix of specified size and fill, or blank 2x2 for registry use
newtable(optional, optional, optional)
  create table type new matrix presized 2x2 for reg
  Parameters:
    optional: row size
    optional: column size
    optional: fill value(default is table (na)
  Returns: table matrix of specified size and fill, or blank 2x2 for registry use
newfrom(INIT_FILL)
  newfrom Matrix full of item input
  Parameters:
    INIT_FILL: item to fill (2x2) the matri and set type. a type(na) works
addrow(m, v)
  addrow Add new row to matrix
  Parameters:
    m: matrix of type being added to
    v: value of type being added to ( best leave NA on string for registry purposes)
addcolumn(matrix, value)
  addcolumn
  Parameters:
    matrix: of type being added to
    value: of type being added to ( best leave NA on string for registry purposes)
get(_VALS, _KEYREG, _GROUP, _KEY)
  get Grabs value and returns single item
  Parameters:
    _VALS: Matrix Values slice
    _KEYREG: Registry values matrix (strings)
    _GROUP: name of group/category or int group key
    _KEY: name of item to fetch from value registry or int key id
  Returns: item 
get(_VALS, _GROUP, _KEY)
  get Grabs value and returns single item
  Parameters:
    _VALS: Matrix Values slice
    _GROUP: name of group/category
    _KEY: name of item to fetch from value registry
getgid(_KEYREG, _GROUP)
  getgid
  Parameters:
    _KEYREG: Reg to pull group id from
    _GROUP: group index int, or string name to get the other missing type
getkid(_KEYREG, _GROUP, _KEY)
  getkid
  Parameters:
    _KEYREG: Reg to pull Key id from
    _GROUP: group index int, or string name
    _KEY: index of string key id to get it's ID int
getkey(_KEYREG, _GROUP, _KEY)
  getkey
  Parameters:
    _KEYREG: Reg to pull Key id from
    _GROUP: group index int, or string name for getting key string
    _KEY: index of string key id to get it's match of other type
set(_VALS, _KEYREG, _GROUP, _KEY, _value)
  set items to reg and matrix container
  Parameters:
    _VALS: Values matrix container
    _KEYREG: Key registry
    _GROUP: (string) Group/Category name
    _KEY: (string) Key for item
    _value: item
  Returns: void
del(_VALS, _KEYREG, _GROUP, _KEY)
  del grroup id
  Parameters:
    _VALS: Matrix Values slice
    _KEYREG: Registry values matrix (strings)
    _GROUP: name of group/category
    _KEY: name of item to Delete from values and key
detached(_GROUP, _KEY, _VALUE)
  detached make detached registry/val matrix
  Parameters:
    _GROUP: Name of first group
    _KEY: Name of first item
    _VALUE: Item of any type, sets the output type too.
 
[CLX][#03] Object-Stack (Labels/Lines/Boxes)This script shows an example of how to manage objects (lines/labels/boxes) and prevent the need of garbage collecting and missing objects.
You only have to push your object into the right array. 
*_FIXED (left-lock) or *_FORWARD (right-lock)
 We hope you enjoy it!  🎉
CRYPTOLINX - jango_blockchained 😊👍
 Disclaimer:
Trading success is all about following your trading strategy and the indicators should fit within your trading strategy, and not to be traded upon solely.
The script is for informational and educational purposes only. Use of the script does not constitute professional and/or financial advice. You alone have the sole responsibility of evaluating the script output and risks associated with the use of the script. In exchange for using the script, you agree not to hold cryptolinx TradingView user liable for any possible claim for damages arising from any decision you make based on use of the script.





