BossExoticMAs
   A next-generation moving average and smoothing library by TheStopLossBoss, featuring premium adaptive, exotic, and DSP-inspired filters — optimized for Pine Script® v6 and designed for Traders who demand precision and beauty.
> BossExoticMAs is a complete moving average and signal-processing toolkit built for Pine Script v6.
It combines the essential trend filters (SMA, EMA, WMA, etc.) with advanced, high-performance exotic types used by quants, algo designers, and adaptive systems.
Each function is precision-tuned for stability, speed, and visual clarity — perfect for building custom baselines, volatility filters, dynamic ribbons, or hybrid signal engines.
Includes built-in color gradient theming powered by the exclusive BossGradient — 
//Key Features
✅ Full Moving Average Set
SMA, EMA, ZEMA, WMA, HMA, WWMA, SMMA
DEMA, TEMA, T3 (Tillson)
ALMA, KAMA, LSMA
VMA, VAMA, FRAMA
✅ Signal Filters
One-Euro Filter (Crispin/Casiez implementation)
ATR-bounded Range Filter
✅ Color Engine
lerpColor() safe blending using color.from_gradient
Thematic gradient palettes: STOPLOSS, VAPORWAVE, ROYAL FLAME, MATRIX FLOW
Exclusive: BOSS GRADIENT 
✅ Helper Functions
Clamping, normalization, slope detection, tick delta
Slope-based dynamic color control via slopeThemeColor()
🧠 Usage Example
//@version=6
indicator("Boss Exotic MA Demo", overlay=true)
import TheStopLossBoss/BossExoticMAs/1 as boss
len  = input.int(50, "Length")
atype = input.string("T3", "MA Type",  options= )
t3factor = input.float(0.7, "T3 β", step=0.05)
smoothColor = boss.slopeThemeColor(close, "BOSS GRADIENT", 0.001)ma = boss.maSelect(close, len, atype, t3factor, 0.85, 14)
plot(ma, "Boss Exotic MA", color=smoothColor, linewidth=2)
---
🔑  Notes
Built exclusively for Pine Script® v6
Library designed for import use — all exports are prefixed cleanly (boss.functionName())
Some functions maintain internal state (var-based). Warnings are safe to ignore — adaptive design choice.
Each MA output is non-repainting and mathematically stable.
---
📜 Author
TheStopLossBoss
Designer of precision trading systems and custom adaptive algorithms.
Follow for exclusive releases, educational material, and full-stack trend solutions.
movingaverage, trend, adaptive, filter, volatility, smoothing, quant, technicalanalysis, bossgradient, t3, alma, frama, vma
المؤشرات والاستراتيجيات
mysourcetypesncsLibrary   "mysourcetypes" 
Libreria personale per sorgenti estese (Close, Open, High, Low, Median, Typical, Weighted, Average, Average Median Body, Trend Biased, Trend Biased Extreme, Volume Body, Momentum Biased, Volatility Adjusted, Body Dominance, Shadow Biased, Gap Aware, Rejection Biased, Range Position, Adaptive Trend, Pressure Balanced, Impulse Wave)
 rclose() 
  Regular Close
  Returns: Close price
 ropen() 
  Regular Open
  Returns: Open price
 rhigh() 
  Regular High
  Returns: High price
 rlow() 
  Regular Low
  Returns: Low price
 rmedian() 
  Regular Median (HL2)
  Returns: (High + Low) / 2
 rtypical() 
  Regular Typical (HLC3)
  Returns: (High + Low + Close) / 3
 rweighted() 
  Regular Weighted (HLCC4)
  Returns: (High + Low + Close + Close) / 4
 raverage() 
  Regular Average (OHLC4)
  Returns: (Open + High + Low + Close) / 4
 ravemedbody() 
  Average Median Body
  Returns: (Open + Close) / 2
 rtrendb() 
  Trend Biased Regular
  Returns: Trend-weighted price
 rtrendbext() 
  Trend Biased Extreme
  Returns: Extreme trend-weighted price
 rvolbody() 
  Volume Weighted Body
  Returns: Body midpoint weighted by volume intensity
 rmomentum() 
  Momentum Biased
  Returns: Price biased towards momentum direction
 rvolatility() 
  Volatility Adjusted
  Returns: Price adjusted by candle's volatility
 rbodydominance() 
  Body Dominance
  Returns: Emphasizes body over wicks
 rshadowbias() 
  Shadow Biased
  Returns: Price biased by shadow length
 rgapaware() 
  Gap Aware
  Returns: Considers gap between candles
 rrejection() 
  Rejection Biased
  Returns: Emphasizes price rejection levels
 rrangeposition() 
  Range Position
  Returns: Where close sits within the candle range (0-100%)
 radaptivetrend() 
  Adaptive Trend
  Returns: Adapts based on recent trend strength
 rpressure() 
  Pressure Balanced
  Returns: Balances buying/selling pressure within candle
 rimpulse() 
  Impulse Wave
  Returns: Detects impulsive moves vs corrections
TimezoneDiffLibLibrary   "TimezoneDiffLib" 
 get_tz_diff(tz1, tz2) 
  Parameters:
     tz1 (string) 
     tz2 (string)
Mirpapa_Lib_DivergenceLibrary   "Mirpapa_Lib_Divergence" 
다이버전스 감지 및 시각화 라이브러리 (범용 설계)
 newPivot(bar, priceVal, indVal) 
  피벗 포인트 생성
  Parameters:
     bar (int) : 바 인덱스
     priceVal (float) : 가격
     indVal (float) : 지표값
  Returns: PivotPoint
 newDivSettings(pivotLen, maxStore, maxShow) 
  다이버전스 설정 생성
  Parameters:
     pivotLen (int) : 피벗 좌우 캔들
     maxStore (int) : 저장 개수
     maxShow (int) : 표시 라인 개수
  Returns: DivergenceSettings
 emptyDivResult() 
  빈 다이버전스 결과
  Returns: 감지 안 된 DivergenceResult
 checkPivotHigh(length, source) 
  고점 피벗 감지
  Parameters:
     length (int) : 좌우 비교 캔들 수
     source (float) : 비교할 데이터 (지표값)
  Returns: 피벗 값 또는 na
 checkPivotLow(length, source) 
  저점 피벗 감지
  Parameters:
     length (int) : 좌우 비교 캔들 수
     source (float) : 비교할 데이터 (지표값)
  Returns: 피벗 값 또는 na
 addPivotToArray(pivotArray, pivot, maxSize) 
  피벗을 배열에 추가 (FIFO 방식)
  Parameters:
     pivotArray (array) : 피벗 배열
     pivot (PivotPoint) : 추가할 피벗
     maxSize (int) : 최대 크기
 checkBullishDivergence(pivotArray) 
  상승 다이버전스 체크 (Bullish)
  Parameters:
     pivotArray (array) : 저점 피벗 배열
  Returns: DivergenceResult
 checkBearishDivergence(pivotArray) 
  하락 다이버전스 체크 (Bearish)
  Parameters:
     pivotArray (array) : 고점 피벗 배열
  Returns: DivergenceResult
 createDivLine(result, lineColor, isOverlay) 
  다이버전스 라인 생성
  Parameters:
     result (DivergenceResult) : DivergenceResult
     lineColor (color) : 라인 색상
     isOverlay (bool) : true면 가격 기준, false면 지표 기준
  Returns:  
 cleanupLines(lineArray, labelArray, maxLines) 
  오래된 라인/라벨 정리
  Parameters:
     lineArray (array) : 라인 배열
     labelArray (array) : 라벨 배열
     maxLines (int) : 최대 유지 개수
 addLineAndCleanup(lineArray, labelArray, newLine, newLabel, maxLines) 
  라인/라벨 추가 및 자동 정리
  Parameters:
     lineArray (array) : 라인 배열
     labelArray (array) : 라벨 배열
     newLine (line) : 새 라인
     newLabel (label) : 새 라벨
     maxLines (int) : 최대 개수
 PivotPoint 
  피벗 데이터 저장
  Fields:
     barIndex (series int) : 바 인덱스
     price (series float) : 종가
     indicatorValue (series float) : 지표값
 DivergenceSettings 
  다이버전스 설정
  Fields:
     pivotLength (series int) : 피벗 좌우 캔들 수
     maxPivotsStore (series int) : 저장할 최대 피벗 개수
     maxLinesShow (series int) : 표시할 최대 라인 개수
 DivergenceResult 
  다이버전스 감지 결과
  Fields:
     detected (series bool) : 다이버전스 감지 여부
     isBullish (series bool) : true면 상승, false면 하락
     bar1 (series int) : 첫 번째 피벗 바 인덱스
     value1_price (series float) : 첫 번째 가격
     value1_ind (series float) : 첫 번째 지표값
     bar2 (series int) : 두 번째 피벗 바 인덱스
     value2_price (series float) : 두 번째 가격
     value2_ind (series float) : 두 번째 지표값
Mirpapa_Lib_MACDLibrary   "Mirpapa_Lib_MACD" 
MACD 계산 및 크로스 체크를 위한 라이브러리
 calc_smma(src, len) 
  SMMA (Smoothed Moving Average) 계산
  Parameters:
     src (float) : 소스 데이터
     len (simple int) : 길이
  Returns: SMMA 값
 calc_zlema(src, length) 
  ZLEMA (Zero Lag EMA) 계산
  Parameters:
     src (float) : 소스 데이터
     length (simple int) : 길이
  Returns: ZLEMA 값
 checkMacdCross(lengthMA, lengthSignal, src, enabled) 
  MACD 크로스오버 체크
  Parameters:
     lengthMA (simple int) : MACD 길이
     lengthSignal (int) : 시그널 길이
     src (float) : 소스 (기본값: hlc3)
     enabled (bool) : 계산 활성화 여부 (기본값: true)
  Returns: 
Cumulative Volume Library (plyst)Library   "CumulativeVolumeLib" 
 GetVolumeMetrics(lookback, calcType, useUSD, includeBybit, includeOKX, includeCoinbase, includeBitget, includeKucoin, includeKraken, includeMexc, includeGateio, includeHTX) 
  Parameters:
     lookback (simple int) 
     calcType (simple string) 
     useUSD (simple bool) 
     includeBybit (bool) 
     includeOKX (bool) 
     includeCoinbase (bool) 
     includeBitget (bool) 
     includeKucoin (bool) 
     includeKraken (bool) 
     includeMexc (bool) 
     includeGateio (bool) 
     includeHTX (bool)
Mirpapa_Lib_RenkoLibrary   "Mirpapa_Lib_Renko" 
Mirpapa Renko Library - HL2 기반 ATR 렌코 차트 생성 라이브러리
 get_renko(atr_period, atr_multiplier) 
  ATR 기반 렌코 차트 생성
  Parameters:
     atr_period (simple int) : ATR 계산 기간
     atr_multiplier (float) : ATR 승수 (박스 크기 조절)
  Returns:   렌코 캔들 OHLC 값
Obj_XABCD_HarmonicLibrary   "Obj_XABCD_Harmonic" 
Harmonic XABCD Pattern object and associated methods. Easily validate, draw, and get information about harmonic patterns. See example code at the end of the script for details.
 init_params(pct_error, pct_asym, types, w_e, w_p, w_d) 
  Create a harmonic parameters object (used by xabcd_harmonic object for pattern validation and scoring).
  Parameters:
     pct_error (float) : Allowed % error of leg retracement ratio versus the defined harmonic ratio
     pct_asym (float) : Allowed leg length/period asymmetry % (a leg is considered invalid if it is this % longer or shorter than the average length of the other legs)
     types (array) : Array of pattern types to validate (1=Gartley, 2=Bat, 3=Butterfly, 4=Crab, 5=Shark, 6=Cypher)
     w_e (float) : Weight of ratio % error (used in score calculation, dft = 1)
     w_p (float) : Weight of PRZ confluence (used in score calculation, dft = 1)
     w_d (float) : Weight of Point D / PRZ confluence (used in score calculation, dft = 1)
  Returns: harmonic_params object instance. It is recommended to store and reuse this object for multiple xabcd_harmonic objects rather than creating new params objects unnecessarily.
 init(x, a, b, c, d, params, tp, p) 
  Initialize an xabcd_harmonic object instance from a given set of points
If the pattern is valid, an xabcd_harmonic object instance is returned. If you want to specify your
own validation and scoring parameters, you can do so by passing a harmonic_params object (params).
Or, if you prefer to do your own validation, you can explicitly pass the harmonic pattern type (tp)
and validation will be skipped. You can also pass in an existing xabcd_harmonic instance if you wish
to re-initialize it (e.g. for re-validation and/or re-scoring).
  Parameters:
     x (point type from dlmysolutions/Pattern/1) : Point X
     a (point type from dlmysolutions/Pattern/1) : Point A
     b (point type from dlmysolutions/Pattern/1) : Point B
     c (point type from dlmysolutions/Pattern/1) : Point C
     d (point type from dlmysolutions/Pattern/1) : Point D
     params (harmonic_params) : harmonic_params used to validate and score the pattern. Validation will be skipped if a type (tp) is explicitly passed in.
     tp (int) : Pattern type
     p (xabcd_harmonic) : xabcd_harmonic object instance to initialize (optional, for re-validation/re-scoring)
  Returns: xabcd_harmonic object instance if a valid harmonic, else na
 init(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, params, tp, p) 
  Initialize an xabcd_harmonic object instance from a given set of x and y coordinate values.
If the pattern is valid, an xabcd_harmonic object instance is returned. If you want to specify your
own validation and scoring parameters, you can do so by passing a harmonic_params object (params).
Or, if you prefer to do your own validation, you can explicitly pass the harmonic pattern type (tp)
and validation will be skipped. You can also pass in an existing xabcd_harmonic instance if you wish
to re-initialize it (e.g. for re-validation and/or re-scoring).
  Parameters:
     xX (int) : Point X bar index (required)
     xY (float) : Point X price/level (required)
     aX (int) : Point A bar index (required)
     aY (float) : Point A price/level (required)
     bX (int) : Point B bar index (required)
     bY (float) : Point B price/level (required)
     cX (int) : Point C bar index (required)
     cY (float) : Point C price/level (required)
     dX (int) : Point D bar index
     dY (float) : Point D price/level
     params (harmonic_params) : harmonic_params used to validate and score the pattern. Validation will be skipped if a type (tp) is explicitly passed in.
     tp (int) : Pattern type
     p (xabcd_harmonic) : xabcd_harmonic object instance to initialize (optional, for re-validation/re-scoring)
  Returns: xabcd_harmonic object instance if a valid harmonic, else na
 init(pattern, params, tp, p) 
  Initialize an xabcd_harmonic object instance from a given pattern
If the pattern is valid, an xabcd_harmonic object instance is returned. If you want to specify your
own validation and scoring parameters, you can do so by passing a harmonic_params object (params).
Or, if you prefer to do your own validation, you can explicitly pass the harmonic pattern type (tp)
and validation will be skipped. You can also pass in an existing xabcd_harmonic instance if you wish
to re-initialize it (e.g. for re-validation and/or re-scoring).
  Parameters:
     pattern (pattern type from dlmysolutions/Pattern/1) : Pattern
     params (harmonic_params) : harmonic_params used to validate and score the pattern. Validation will be skipped if a type (tp) is explicitly passed in.
     tp (int) : Pattern type
     p (xabcd_harmonic) : xabcd_harmonic object instance to initialize (optional, for re-validation/re-scoring)
  Returns: xabcd_harmonic object instance if a valid harmonic, else na
 method get_name(p) 
  Get the pattern name
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
  Returns: Pattern name (string)
 method get_symbol(p) 
  Get the pattern symbol
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
  Returns: Pattern symbol (1 byte string)
 method get_pid(p) 
  Get the Pattern ID. Patterns of the same type with the same coordinates will have the same Pattern ID.
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
  Returns: Pattern ID (string)
 method set_target(p, target, target_lvl, calc_target) 
  Set value for a target. Use the calc_target parameter to automatically calculate the target for a specific harmonic ratio.
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
     target (int) : Target (1 or 2)
     target_lvl (float) : Target price/level (required if calc_target is not specified)
     calc_target (string) : Target to auto calculate (required if target is not specified)
Options:  
  Returns: Target price/level (float)
 method erase_pattern(p) 
  Erase the pattern
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
  Returns: p
 method draw_pattern(p, clr) 
  Draw the pattern
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
     clr (color) 
  Returns: Pattern lines
 
 method erase_label(p) 
  Erase the pattern label
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
  Returns: p
 method draw_label(p, clr, txt_clr, txt, tooltip) 
  Draw the pattern label. Default text is the pattern name.
  Namespace types: xabcd_harmonic
  Parameters:
     p (xabcd_harmonic) : Instance of xabcd_harmonic object
     clr (color) : Label color
     txt_clr (color) : Text color
     txt (string) : Label text
     tooltip (string) : Tooltip text
  Returns: Label
 harmonic_params 
  Validation and scoring parameters for a Harmonic Pattern object (xabcd_harmonic)
  Fields:
     pct_error (series float) : 		Allowed % error of leg retracement ratio versus the defined harmonic ratio
     pct_asym (series float) 
     types (array) 
     w_e (series float) 
     w_p (series float) 
     w_d (series float) 
 xabcd_harmonic 
  Harmonic Pattern object
  Fields:
     bull (series bool) : 			Bullish pattern flag
     tp (series int) 
     x (point type from dlmysolutions/Pattern/1) 
     a (point type from dlmysolutions/Pattern/1) 
     b (point type from dlmysolutions/Pattern/1) 
     c (point type from dlmysolutions/Pattern/1) 
     d (point type from dlmysolutions/Pattern/1) 
     r_xb (series float) 
     re_xb (series float) 
     r_ac (series float) 
     re_ac (series float) 
     r_bd (series float) 
     re_bd (series float) 
     r_xd (series float) 
     re_xd (series float) 
     score (series float) 
     score_eAvg (series float) 
     score_prz (series float) 
     score_eD (series float) 
     prz_bN (series float) 
     prz_bF (series float) 
     prz_xN (series float) 
     prz_xF (series float) 
     t1Hit (series bool) : 		Target 1 flag
     t1 (series float) 
     t2Hit (series bool) 
     t2 (series float) 
     sHit (series bool) : 			Stop flag
     stop (series float) : 			Stop level
     entry (series float) : 		Entry level
     eHit (series bool) 
     e (point type from dlmysolutions/Pattern/1) 
     invalid_d (series bool) 
     pLines (array) 
     pLabel (series label) 
     pid (series string) 
     params (harmonic_params)
PatternLibrary   "Pattern" 
Pattern object definitions and functions. Easily draw and keep track of patterns, legs, and points.
Supported pattern types:
Type			Leg validation		# legs
"xabcd"			Direction			3 or 4 (point D not required)
"zigzag"		Direction			>= 2
"free"			None				>= 2
Summary of exported types and associated methods/functions:
type point					A point on the chart (x,y)
draw_label()			Draw a point label
erase_label()			Erase a point label
type leg					A pattern leg (i.e. point A to point B)
leg_init()				Initialize/instantiate a leg
draw()					Draw a leg
erase()					Erase a leg
leg_getLineTerms()		Get the slope and y-intercept of a leg
leg_getPrice()			Get price (Y) at a given bar index (X) within a leg
type pattern				A pattern (set of at least 2 connected legs)
pattern_init()			Initialize/instantiate a pattern
draw()					Draw a pattern
erase()					Erase a pattern
*See bottom of the script for example usage*
 erase_label(this) 
  Delete the point label
  Parameters:
     this (point) : Point
  Returns: Void
 draw_label(this, position, clr, transp, txt_clr, txt, tooltip, size) 
  Draw the point label
  Parameters:
     this (point) : Point
     position (string) 
     clr (color) 
     transp (float) 
     txt_clr (color) 
     txt (string) 
     tooltip (string) 
     size (string) 
  Returns: line
 leg_init(a, b, prev, next, line) 
  Initialize a pattern leg
  Parameters:
     a (point) : Point A (required)
     b (point) : Point B (required)
     prev (leg) : Previous leg
     next (leg) : Next leg
     line (line) : Line
  Returns: New instance of leg object
 erase(this) 
  Delete the pattern leg
  Parameters:
     this (leg) : Leg
  Returns: Void
 erase(this) 
  Delete the pattern lines
  Parameters:
     this (pattern) : Pattern
  Returns: Void
 draw(this, clr, style, transp, width) 
  Draw the pattern leg
  Parameters:
     this (leg) : Leg
     clr (color) : Color
     style (string) : Style ("solid", "dotted", "dashed", "arrowleft", "arrowright")
     transp (float) : Transparency
     width (int) : Width
  Returns: line
 draw(this, clr, style, transp, width) 
  Draw the pattern
  Parameters:
     this (pattern) : Pattern
     clr (color) : Color
     style (string) : Style ("solid", "dotted", "dashed", "arrowleft", "arrowright")
     transp (float) : Transparency
     width (int) : Width
  Returns: line 
 leg_getLineTerms(this) 
  Get the slope and y-intercept of a leg
  Parameters:
     this (leg) : Leg
  Returns:  
 leg_getPrice(this, index) 
  Get the price (Y) at a given bar index (X) within the leg
  Parameters:
     this (leg) : Leg
     index (int) : Bar index
  Returns: Price (float)
 pattern_init(legs, tp, name, subType, pid) 
  Initialize a pattern object from a given set of legs
  Parameters:
     legs (array) : Array of pattern legs (required)
     tp (string) : Pattern type ("zigzag", "xabcd", or "free". dft = "free")
     name (string) : Pattern name
     subType (string) : Pattern subtype
     pid (string) : Pattern Identifier string
  Returns: New instance of pattern object, if one was successfully created
 pattern_init(points, tp, name, subType, pid) 
  Initialize a pattern object from a given set of points
  Parameters:
     points (array) 
     tp (string) : Pattern type ("zigzag", "xabcd", or "free". dft = "free")
     name (string) : Pattern name
     subType (string) : Pattern subtype
     pid (string) : Pattern Identifier string
  Returns: New instance of pattern object, if one was successfully created
 point 
  A point on the chart (x,y)
  Fields:
     x (series int) : 				Bar index (x coordinate)
     y (series float) 
     label (series label) 
 leg 
  A pattern leg (point A to point B)
  Fields:
     a (point) : 				Point A
     b (point) 
     deltaX (series int) 
     deltaY (series float) 
     prev (leg) 
     next (leg) 
     retrace (series float) 
     line (series line) 
 pattern 
  A pattern (set of at least 2 connected legs)
  Fields:
     legs (array) 
     type (series string) 
     subType (series string) 
     name (series string) 
     pid (series string)
DrawLibrary   "Draw" 
Draw patterns, lines, labels, shapes etc.
 pat_colors(bull, buLn, beLn, ltxt) 
  Parameters:
     bull (bool) 
     buLn (color) 
     beLn (color) 
     ltxt (color) 
 size(size) 
  Parameters:
     size (string) 
 label_style(style) 
  Parameters:
     style (string) 
 line_style(style) 
  Parameters:
     style (string) 
 font_size(size) 
  Parameters:
     size (string) 
 xabcd(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, iE, bull, bu, be) 
  Draw XABCD pattern
  Parameters:
     xX (int) 
     xY (float) 
     aX (int) 
     aY (float) 
     bX (int) 
     bY (float) 
     cX (int) 
     cY (float) 
     dX (int) 
     dY (float) 
     iE (float) 
     bull (bool) 
     bu (color) 
     be (color) 
 xabcd_inProgress(bull, type, tLimit, entry, stop, t1, t2, bcNt, bcFt, xaNt, xaFt, xX, xY, aY, bX, bY, cY, dX, dY, cBu, cBe, lTxt) 
  draw PRZ, entry, stop, targets, and projected reversal paths for XABCD pattern
  Parameters:
     bull (bool) 
     type (int) 
     tLimit (int) 
     entry (float) 
     stop (float) 
     t1 (float) 
     t2 (float) 
     bcNt (float) 
     bcFt (float) 
     xaNt (float) 
     xaFt (float) 
     xX (int) 
     xY (float) 
     aY (float) 
     bX (int) 
     bY (float) 
     cY (float) 
     dX (int) 
     dY (float) 
     cBu (color) 
     cBe (color) 
     lTxt (color) 
 xabcd_incInProgress(bull, type, tLimit, entry, xX, xY, aY, bX, bY, cX, cY, dY, cBu, cBe, lTxt) 
  Parameters:
     bull (bool) 
     type (int) 
     tLimit (int) 
     entry (float) 
     xX (int) 
     xY (float) 
     aY (float) 
     bX (int) 
     bY (float) 
     cX (int) 
     cY (float) 
     dY (float) 
     cBu (color) 
     cBe (color) 
     lTxt (color) 
 xabcd_inProgress2(bull, tLimit, entry, stop, t1, t2, xadl, bcdl, xcdl, xX, xY, bX, bY, dX, dY, cBu, cBe, lTxt) 
  draw PRZ, entry, stop, targets, and projected reversal paths for XABCD pattern
  Parameters:
     bull (bool) 
     tLimit (int) 
     entry (float) 
     stop (float) 
     t1 (float) 
     t2 (float) 
     xadl (float) 
     bcdl (float) 
     xcdl (float) 
     xX (int) 
     xY (float) 
     bX (int) 
     bY (float) 
     dX (int) 
     dY (float) 
     cBu (color) 
     cBe (color) 
     lTxt (color) 
 eHitLbl(x, e, dX, dY, bull, lOnly) 
  Draw entry hit label
  Parameters:
     x (int) 
     e (float) 
     dX (int) 
     dY (float) 
     bull (bool) 
     lOnly (bool) 
 tHitLbl(x, tgt, eX, eY, bull) 
  Draw target hit label
  Parameters:
     x (int) 
     tgt (float) 
     eX (int) 
     eY (float) 
     bull (bool) 
 sHitLbl(x, s, eX, eY, bull) 
  Draw stop hit label
  Parameters:
     x (int) 
     s (float) 
     eX (int) 
     eY (float) 
     bull (bool) 
 level(y, x, type, length, extend, padding, b_style, colr, txt_color, txt, txt_loc, txt_size) 
  Draw a level (box)
  Parameters:
     y (float) 
     x (int) 
     type (int) 
     length (int) 
     extend (string) 
     padding (float) 
     b_style (string) 
     colr (color) 
     txt_color (color) 
     txt (string) 
     txt_loc (string) 
     txt_size (string) 
 incTtTxt(tp, name, xbr, xbre, acr, acre, bcN, bcF, xaN, xaF, score, e) 
  Parameters:
     tp (int) 
     name (string) 
     xbr (float) 
     xbre (float) 
     acr (float) 
     acre (float) 
     bcN (float) 
     bcF (float) 
     xaN (float) 
     xaF (float) 
     score (float) 
     e (float)
TALibrary   "TA" 
General technical analysis functions
 div_bull(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW) 
  Test for bullish divergence
  Parameters:
     pS (float) : Price series (float)
     iS (float) : Indicator series (float)
     cp_length_after (simple int) : Bars after current (divergent) pivot low to be considered a valid pivot (optional int)
     cp_length_before (simple int) : Bars before current (divergent) pivot low to be considered a valid pivot (optional int)
     pivot_length (simple int) : Bars before and after prior pivot low to be considered valid pivot (optional int)
     lookback (simple int) : Bars back to search for prior pivot low (optional int)
     lookback_pivs (simple int) : Pivots back to search for prior pivot low (optional int)
     no_broken (simple bool) : Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
     pW (simple float) : Weight of change in price, used in degree of divergence calculation (optional float)
     iW (simple float) : Weight of change in indicator, used in degree of divergence calculation (optional float)
     hidW (simple float) : Weight of hidden divergence, used in degree of divergence calculation (optional float)
     regW (simple float) : Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns:  
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
 div_bear(pS, iS, cp_length_after, cp_length_before, pivot_length, lookback, lookback_pivs, no_broken, pW, iW, hidW, regW) 
  Test for bearish divergence
  Parameters:
     pS (float) : Price series (float)
     iS (float) : Indicator series (float)
     cp_length_after (simple int) : Bars after current (divergent) pivot high to be considered a valid pivot (optional int)
     cp_length_before (simple int) : Bars before current (divergent) pivot highto be considered a valid pivot (optional int)
     pivot_length (simple int) : Bars before and after prior pivot high to be considered valid pivot (optional int)
     lookback (simple int) : Bars back to search for prior pivot high (optional int)
     lookback_pivs (simple int) : Pivots back to search for prior pivot high (optional int)
     no_broken (simple bool) : Flag to only consider divergence valid if the pivot-to-pivot trendline is unbroken (optional bool)
     pW (simple float) : Weight of change in price, used in degree of divergence calculation (optional float)
     iW (simple float) : Weight of change in indicator, used in degree of divergence calculation (optional float)
     hidW (simple float) : Weight of hidden divergence, used in degree of divergence calculation (optional float)
     regW (simple float) : Weight of regular divergence, used in degree of divergence calculation (optional float)
  Returns:  
flag = true if divergence exists (bool)
degree = degree (strength) of divergence (float)
type = 1 = regular, 2 = hidden (int)
lx1 = x coordinate 1 (int)
ly1 = y coordinate 1 (float)
lx2 = x coordinate 2 (int)
ly2 = y coordinate 2 (float)
 test_cd(cd, bc, xa, xc, ad, pErr, p_types) 
  Validate CD leg of XABCD
  Parameters:
     cd (float) 
     bc (float) 
     xa (float) 
     xc (float) 
     ad (float) 
     pErr (float) 
     p_types (array) 
 pat_xabcd_testSym(xax, abx, bcx, cdx, pAsym) 
  Validate ΔX symmetry of XABCD pattern
  Parameters:
     xax (int) 
     abx (int) 
     bcx (int) 
     cdx (int) 
     pAsym (float) 
 harmonic_xabcd_validate(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, pErr, pAsym, gart, bat, bfly, crab, shark, cyph) 
  Validate harmonic XABCD pattern
  Parameters:
     xX (int) : X coordinate of point X (int)
     xY (float) : Y coordinate of point X (float)
     aX (int) : X coordinate of point A (int)
     aY (float) : Y coordinate of point A (float)
     bX (int) : X coordinate of point B (int)
     bY (float) : Y coordinate of point B (float)
     cX (int) : X coordinate of point C (int)
     cY (float) : Y coordinate of point C (float)
     dX (int) : X coordinate of point D (int)
     dY (float) : Y coordinate of point D (float)
     pErr (float) : Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
     pAsym (float) : Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
     gart (bool) : Flag to validate Gartley pattern (bool)
     bat (bool) : Flag to validate Bat pattern (bool)
     bfly (bool) : Flag to validate Butterfly pattern (bool)
     crab (bool) : Flag to validate Crab pattern (bool)
     shark (bool) : Flag to validate Shark pattern (bool)
     cyph (bool) : Flag to validate Cypher pattern (bool)
  Returns:  
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
t5 = true if valid shark
t6 = true if valid cypher
 harmonic_xabcd_validateIncomplete(xX, xY, aX, aY, bX, bY, cX, cY, pErr, pAsym, gart, bat, bfly, crab, shark, cyph) 
  Validate the first 3 legs of a harmonic XABCD pattern
  Parameters:
     xX (int) : X coordinate of point X (int)
     xY (float) : Y coordinate of point X (float)
     aX (int) : X coordinate of point A (int)
     aY (float) : Y coordinate of point A (float)
     bX (int) : X coordinate of point B (int)
     bY (float) : Y coordinate of point B (float)
     cX (int) : X coordinate of point C (int)
     cY (float) : Y coordinate of point C (float)
     pErr (float) : Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
     pAsym (float) : Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
     gart (bool) : Flag to validate Gartley pattern (bool)
     bat (bool) : Flag to validate Bat pattern (bool)
     bfly (bool) : Flag to validate Butterfly pattern (bool)
     crab (bool) : Flag to validate Crab pattern (bool)
     shark (bool) : Flag to validate Shark pattern (bool)
     cyph (bool) : Flag to validate Cypher pattern (bool)
  Returns:  
flag = true if valid harmonic
t1 = true if valid gartley
t2 = true if valid bat
t3 = true if valid butterfly
t4 = true if valid crab
t5 = true if valid shark
t6 = true if valid cypher
 harmonic_xabcd_prz(type, xY, aY, bY, cY) 
  Get the potential reversal zone (PRZ) levels of a harmonic XABCD pattern
  Parameters:
     type (int) : Harmonic pattern type (int - 1 = Gartley, 2 = Bat, 3 = Butterfly, 4 = Crab, 5 = Shark, 6 = Cypher)
     xY (float) : Y coordinate of point X (float)
     aY (float) : Y coordinate of point A (float)
     bY (float) : Y coordinate of point B (float)
     cY (float) : Y coordinate of point C (float)
  Returns:  
bc_u = nearest BC retracement/extension level (nearest to point C)
bc_l = farthest BC retracement/extension level (nearest to point C)
xa_u = nearest XA retracement/extension level (or the only XA level, if applicable)
xa_l = farthest XA retracement/extension level (or na if not applicable)
 harmonic_xabcd_przClosest(l1, l2, l3, l4) 
  Get the confluent PRZ levels (i.e. the two closest PRZ levels)
Order of arguments does not matter
  Parameters:
     l1 (float) : level 1 (float)
     l2 (float) : level 2 (float)
     l3 (float) : level 3 (float)
     l4 (float) : level 4 (optional, float)
  Returns:  
lL = lower confluent PRZ level
lH = higher confluent PRZ level
 harmonic_xabcd_przRange(l1, l2, l3, l4) 
  Get upper and lower PRZ levels
  Parameters:
     l1 (float) 
     l2 (float) 
     l3 (float) 
     l4 (float) 
 harmonic_xabcd_eD(cpl1, cpl2, xY, aY, dY) 
  Measure closeness of D to either of the two closest PRZ levels, relative to height of the XA leg
  Parameters:
     cpl1 (float) 
     cpl2 (float) 
     xY (float) 
     aY (float) 
     dY (float) 
 harmonic_xabcd_przScore(xY, aY, l1, l2, l3, l4) 
  Measure the closeness of the two closest PRZ levels, relative to the height of the XA leg
  Parameters:
     xY (float) 
     aY (float) 
     l1 (float) 
     l2 (float) 
     l3 (float) 
     l4 (float) 
 harmonic_xabcd_rAndE(type, l, l1, l2) 
  Get the ratio of two pattern legs, and the percent error from the theoretical harmonic ratio
Order of arguments does not matter
  Parameters:
     type (int) : Harmonic pattern type (int - 1 = Gartley, 2 = Bat, 3 = Butterfly, 4 = Crab)
     l (string) : Leg ID ("xab", "abc", "bcd", or "xad") (string)
     l1 (float) : Line 1 height (float)
     l2 (float) : Line 2 height (float)
  Returns:  
 harmonic_xabcd_eAvg(xbre, acre, bdre, xdre, xcdre) 
  Get the avg retracement ratio % error
  Parameters:
     xbre (float) 
     acre (float) 
     bdre (float) 
     xdre (float) 
     xcdre (float) 
 pat_xabcd_asym(xX, aX, bX, cX, dX) 
  Get the avg asymmetry %
  Parameters:
     xX (int) 
     aX (int) 
     bX (int) 
     cX (int) 
     dX (int) 
 harmonic_xabcd_entry(t, tp, xY, aY, bY, cY, dY, e_afterC, e_lvlc, e_afterD, e_lvldPct) 
  Get potential entry levels for a harmonic XABCD pattern
  Parameters:
     t (bool) 
     tp (int) 
     xY (float) 
     aY (float) 
     bY (float) 
     cY (float) 
     dY (float) 
     e_afterC (bool) 
     e_lvlc (string) 
     e_afterD (bool) 
     e_lvldPct (float) 
 xabcd_entryHit(t, afterC, afterD, dX, e_afterC, e_afterD, dValBars) 
  Determine if entry level was reached. Assumes pattern is active/not timed out.
  Parameters:
     t (bool) 
     afterC (float) 
     afterD (float) 
     dX (int) 
     e_afterC (bool) 
     e_afterD (bool) 
     dValBars (int) 
 pat_xabcd_validate(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY, xab, abc, bcd, xad, xcd, pErr, pAsym) 
  Validate custom XABCD pattern
  Parameters:
     xX (int) : X coordinate of point X (int)
     xY (float) : Y coordinate of point X (float)
     aX (int) : X coordinate of point A (int)
     aY (float) : Y coordinate of point A (float)
     bX (int) : X coordinate of point B (int)
     bY (float) : Y coordinate of point B (float)
     cX (int) : X coordinate of point C (int)
     cY (float) : Y coordinate of point C (float)
     dX (int) : X coordinate of point D (int)
     dY (float) : Y coordinate of point D (float)
     xab (float) 
     abc (float) 
     bcd (float) 
     xad (float) 
     xcd (float) 
     pErr (float) : Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
     pAsym (float) : Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
  Returns: TRUE if pattern is valid
 pat_xabcd_validateIncomplete(xX, xY, aX, aY, bX, bY, cX, cY, xab, abc, pErr, pAsym) 
  Validate the first 3 legs of a custom XABCD pattern
  Parameters:
     xX (int) : X coordinate of point X (int)
     xY (float) : Y coordinate of point X (float)
     aX (int) : X coordinate of point A (int)
     aY (float) : Y coordinate of point A (float)
     bX (int) : X coordinate of point B (int)
     bY (float) : Y coordinate of point B (float)
     cX (int) : X coordinate of point C (int)
     cY (float) : Y coordinate of point C (float)
     xab (float) 
     abc (float) 
     pErr (float) : Acceptable percent error of leg ratios (does not apply to legs defined within a range) (float)
     pAsym (float) : Acceptable percent asymmetry of leg ΔX (each leg tested against average ΔX of prior legs) (float)
  Returns: TRUE if first 3 legs are valid
 pat_xabcd_prz(xY, aY, bY, cY, xad, bcd, xcd) 
  Get the potential reversal zone (PRZ) levels of a custom XABCD pattern
  Parameters:
     xY (float) : Y coordinate of point X (float)
     aY (float) : Y coordinate of point A (float)
     bY (float) : Y coordinate of point B (float)
     cY (float) : Y coordinate of point C (float)
     xad (float) 
     bcd (float) 
     xcd (float) 
  Returns:  
 pat_xabcd_avgDev(xX, xY, aX, aY, bX, bY, cX, cY, dX, dY) 
  Get the average deviation of an XABCD pattern
  Parameters:
     xX (int) 
     xY (float) 
     aX (int) 
     aY (float) 
     bX (int) 
     bY (float) 
     cX (int) 
     cY (float) 
     dX (int) 
     dY (float) 
 harmonic_xabcd_score(tp, xX, xY, aX, aY, bX, bY, cX, cY, dX, dY) 
  Get score values for a pattern
  Parameters:
     tp (int) 
     xX (int) 
     xY (float) 
     aX (int) 
     aY (float) 
     bX (int) 
     bY (float) 
     cX (int) 
     cY (float) 
     dX (int) 
     dY (float) 
 harmonic_xabcd_scoreTot(asym, eavg, przscore, eD, tp, w_a, w_e, w_p, w_d) 
  Get total weighted score value for a pattern
  Parameters:
     asym (float) 
     eavg (float) 
     przscore (float) 
     eD (float) 
     tp (int) 
     w_a (float) 
     w_e (float) 
     w_p (float) 
     w_d (float) 
 harmonic_xabcd_targets(xY, aY, bY, cY, dY, tgt1, tgt2, tgt3) 
  Get target level
  Parameters:
     xY (float) 
     aY (float) 
     bY (float) 
     cY (float) 
     dY (float) 
     tgt1 (string) 
     tgt2 (string) 
     tgt3 (string) 
 harmonic_xabcd_stop(stop, stopPct, bull, xY, dY, upper, lower, t1, eY) 
  Get stop level
  Parameters:
     stop (string) 
     stopPct (float) 
     bull (bool) 
     xY (float) 
     dY (float) 
     upper (float) 
     lower (float) 
     t1 (float) 
     eY (float) 
 harmonic_xabcd_fibDispTxt(tp) 
  Get fib ratio display text
  Parameters:
     tp (int) 
 harmonic_xabcd_symbol(tp) 
  Get pattern symbol
  Parameters:
     tp (int) 
 pat_xabcd(x_is_low, pivot_length, source, conf_length, incomplete) 
  Determine if an XABCD pattern has just completed (i.e. point D is on the previous bar)
  Parameters:
     x_is_low (bool) : Flag to determine if point X is a low pivot, i.e. bullish pattern (bool, dft = true)
     pivot_length (int) : Number of bars before and after a valid pivot (int, dft = 5)
     source (float) : Source series (float, dft = na, will use high and low series)
     conf_length (int) : Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
     incomplete (bool) : Flag to return an incomplete XABC pattern (bool, dft = false)
  Returns:  
flag = true if valid XABCD pattern completed on previous bar
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
 pat_xabcdIncomplete(x_is_low, pivot_length, source, conf_length) 
  Determine if an XABCD pattern is in progress (point C was just confirmed)
  Parameters:
     x_is_low (bool) : Flag to determine if point X is a low pivot, i.e. bullish M pattern (bool, dft = true)
     pivot_length (int) : Number of bars before and after a valid pivot (int, dft = 5)
     source (float) : Source series (float, dft = na, will use high and low series)
     conf_length (int) : Number of trailing bars after pivot point D to confirm a valid pattern (int, dft = 1)
  Returns:  
flag = true if valid XABC pattern completed on bar_index 
xx = X coordinate of point X (int)
xy = Y coordinate of point X (float)
ax = X coordinate of point A (int)
ay = Y coordinate of point A (float)
bx = X coordinate of point B (int)
by = Y coordinate of point B (float)
cx = X coordinate of point C (int)
cy = Y coordinate of point C (float)
dx = X coordinate of point D (int)
dy = Y coordinate of point D (float)
 success(eX, stop, t1, t2) 
  Determine if trade is successful
  Parameters:
     eX (int) : Entry bar index (int)
     stop (float) : Stop level (float)
     t1 (float) : Target 1 level (float)
     t2 (float) : Target 2 level (float)
  Returns:  
 tradeClosed(eX, eY, stop, t1h, t2h, t1, t2) 
  Determine if Target or Stop was hit on the current bar
  Parameters:
     eX (int) 
     eY (float) 
     stop (float) 
     t1h (bool) 
     t2h (bool) 
     t1 (float) 
     t2 (float)
TrigLibrary   "Trig" 
Trigonometric functions
 rt_get_angleAlpha(a, b, c, deg) 
  Get angle α of a right triangle, given the lengths of its sides
  Parameters:
     a (float) : length of leg a (float)
     b (float) : length of leg b (float)
     c (float) : length of hypotenuse (float)
     deg (simple bool) : flag to return angle in degrees (bool - default = false)
  Returns: angle α in radians (or degrees if deg == true)
 rt_get_angleAlphaFromLine(x1, y1, x2, y2, l, deg) 
  Get angle α of a right triangle formed by the given line
  Parameters:
     x1 (int) : x coordinate 1 (int - optional, required if argument l is not specified)
     y1 (float) : y coordinate 1 (float - optional, required if argument l is not specified)
     x2 (int) : x coordinate 2 (int - optional, required if argument l is not specified)
     y2 (float) : y coordinate 2 (float - optional, required if argument l is not specified)
     l (line) : line object (line - optional, required if x1, y1, x2, and y2 agruments are not specified)
     deg (simple bool) : flag to return angle in degrees (bool - default = false)
  Returns: angle α in radians (or degrees if deg == true)
 rt_get_angleBeta(a, b, c, deg) 
  Get angle β of a right triangle, given the lengths of its sides
  Parameters:
     a (float) : length of leg a (float)
     b (float) : length of leg b (float)
     c (float) : length of hypotenuse (float)
     deg (simple bool) : flag to return angle in degrees (bool - default = false)
  Returns: angle β in radians (or degrees if deg == true)
 rt_get_angleBetaFromLine(x1, y1, x2, y2, l, deg) 
  Get angle β of a right triangle formed by the given line
  Parameters:
     x1 (int) : x coordinate 1 (int - optional, required if argument l is not specified)
     y1 (float) : y coordinate 1 (float - optional, required if argument l is not specified)
     x2 (int) : x coordinate 2 (int - optional, required if argument l is not specified)
     y2 (float) : y coordinate 2 (float - optional, required if argument l is not specified)
     l (line) : line object (line - optional, required if x1, y1, x2, and y2 agruments are not specified)
     deg (simple bool) : flag to return angle in degrees (bool - default = false)
  Returns: angle β in radians (or degrees if deg == true)
AlgebraLibrary   "Algebra" 
 line_fromXy(x1, y1, x2, y2) 
  Get line slope and y-intercept from coordinates
  Parameters:
     x1 (int) : x coordinate 1 (int - bar index)
     y1 (float) : y coordinate 1 (float - price/value)
     x2 (int) : x coordinate 2 (int - bar index)
     y2 (float) : y coordinate 2 (float - price/value)
  Returns:   of line
 line_getPrice(x, slope, yInt) 
  Get price at X coordinate, given line slope and y-intercept
  Parameters:
     x (int) : x coordinate to solve for y (int - bar index)
     slope (float) : slope of line (float)
     yInt (float) : y-intercept of line (float)
  Returns: y (price/value)
 line_getPrice_fromXy(x, x1, y1, x2, y2) 
  Get price at X coordinate, given two points on a line
  Parameters:
     x (int) : x coordinate to solve for y (int - bar index)
     x1 (int) : x coordinate 1 (int - bar index)
     y1 (float) : y coordinate 1 (float - price/value)
     x2 (int) : x coordinate 2 (int - bar index)
     y2 (float) : y coordinate 2 (float - price/value)
  Returns: y (price/value)
 line_getRtSides(x1, y1, x2, y2, l) 
  Get length of sides of a right triangle formed by a given line
  Parameters:
     x1 (int) : x coordinate 1 (int - optional, required if argument l is not specified)
     y1 (float) : y coordinate 1 (float - optional, required if argument l is not specified)
     x2 (int) : x coordinate 2 (int - optional, required if argument l is not specified)
     y2 (float) : y coordinate 2 (float - optional, required if argument l is not specified)
     l (line) : line object (line - optional, required if x1, y1, x2, y2 agruments are not specified)
  Returns:  
 line_length(x1, y1, x2, y2, l) 
  Get length of line, given a line object or two sets of coordinates
  Parameters:
     x1 (int) : x coordinate 1 (int - optional, required if argument l is not specified)
     y1 (float) : y coordinate 1 (float - optional, required if argument l is not specified)
     x2 (int) : x coordinate 2 (int - optional, required if argument l is not specified)
     y2 (float) : y coordinate 2 (float - optional, required if argument l is not specified)
     l (line) : line object (line - optional, required if x1, y1, x2, y2 agruments are not specified)
  Returns: length of line (float)
FibonacciLibrary   "Fibonacci" 
General Fibonacci functions. Get fib numbers, ratios, etc.
 fib_derived(f, precision) 
  Get the precise Fibonacci ratio, to the specified number of decimal places
  Parameters:
     f (float) : Fibonacci ratio (string, in form #.###)
     precision (simple int) : Number of decimal places (optional int, dft = 16, max = 32)
  Returns: Precise Fibonacci ratio (float)
* Deprecated (use fib_precise() instead), but keeping it here for science / experimenting with derivations
 fib_precise(f, precision) 
  Get the precise Fibonacci ratio, to the specified number of decimal places
  Parameters:
     f (float) : Fibonacci ratio (string, in form #.###)
     precision (simple int) : Number of decimal places (optional int, dft = 16, max = 16)
  Returns: Precise Fibonacci ratio (float)
 fib_from_string(r) 
  Get fib ratio value from string
  Parameters:
     r (string) : Fib ratio string (e.g. ".618")
  Returns: Fibonacci ratio value (float)
 fib_n(n) 
  Calculate the Nth number in the Fibonacci sequence
  Parameters:
     n (int) : Index/number in sequence (int)
  Returns: Fibonacci number (int)
UtilitiesLibrary   "Utilities" 
General utilities
 print_series(s, skip_na, position, show_index, from_index, to_index) 
  Print series values
  Parameters:
     s (string) : Series (string)
     skip_na (simple bool) : Flag to skip na values (optional bool, dft = false)
     position (simple string) : Position to print the Table (optional string, dft = position.bottom_center)
     show_index (simple bool) : Flag to show series indices (optional bool, dft = true)
     from_index (int) : First index to print (optional int, dft = 0)
     to_index (int) : Last index to print (optional int, dft = last_bar_index)
  Returns: Table object, if series was printed
 print(v, position, at_index) 
  Print value
  Parameters:
     v (string) : Value (string)
     position (simple string) : Position to print the Table (optional string, dft = position.bottom_center)
     at_index (int) : Index at which to print (optional int, dft = bar_index)
  Returns: Table object, if value was printed
 print(v, position, at_index) 
  Print value
  Parameters:
     v (int) : Value (int)
     position (simple string) : Position to print the Table (optional string, dft = position.bottom_center)
     at_index (int) : Index at which to print (optional int, dft = bar_index)
  Returns: Table object, if value was printed
 print(v, position, at_index) 
  Print value
  Parameters:
     v (float) : Value (float)
     position (simple string) : Position to print the Table (optional string, dft = position.bottom_center)
     at_index (int) : Index at which to print (optional int, dft = bar_index)
  Returns: Table object, if value was printed
 print(v, position, at_index) 
  Print value
  Parameters:
     v (bool) : Value (bool)
     position (simple string) : Position to print the Table (optional string, dft = position.bottom_center)
     at_index (int) : Index at which to print (optional int, dft = bar_index)
  Returns: Table object, if value was printed
 boolToIntArr(a) 
  return array of offsets (int) of true values
  Parameters:
     a (array) 
 intToBoolArr(a, n) 
  Parameters:
     a (array) 
     n (int)
LogNormalLibrary   "LogNormal" 
A collection of functions used to model skewed distributions as log-normal.
Prices are commonly modeled using log-normal distributions (ie. Black-Scholes) because they exhibit multiplicative changes with long tails; skewed exponential growth and high variance. This approach is particularly useful for understanding price behavior and estimating risk, assuming  continuously compounding returns  are normally distributed.
Because log space analysis is  not  as direct as using  math.log(price) , this library extends the  Error Functions  library to make working with log-normally distributed data as simple as possible.
- - -
 QUICK START 
 
  Import library into your project
  Initialize model with a mean and standard deviation
  Pass model params between methods to compute various properties
 
var LogNorm model = LN.init(arr.avg(), arr.stdev()) // Assumes the library is imported as LN
var mode = model.mode()
 Outputs  from the model can be adjusted to better fit the data.
 
var Quantile data = arr.quantiles()
var more_accurate_mode = mode.fit(model, data) // Fits value from model to data
 Inputs  to the model can also be adjusted to better fit the data.
 
datum = 123.45
model_equivalent_datum = datum.fit(data, model) // Fits value from data to the model
area_from_zero_to_datum = model.cdf(model_equivalent_datum)
 - - -
 TYPES 
There are two requisite UDTs:  LogNorm  and  Quantile . They are used to pass parameters between functions and are set automatically (see  Type Management ).
 LogNorm 
  Object for  log space parameters  and  linear space quantiles .
  Fields:
     mu (float) :  Log  space mu ( µ ).
     sigma (float) :  Log  space sigma ( σ ).
     variance (float) :  Log  space variance ( σ² ).
     quantiles (Quantile) :  Linear  space quantiles.
 Quantile 
  Object for  linear  quantiles, most similar to a  seven-number summary .
  Fields:
     Q0 (float) : Smallest Value
     LW (float) : Lower Whisker  Endpoint
     LC (float) : Lower Whisker Crosshatch
     Q1 (float) : First Quartile
     Q2 (float) : Second Quartile
     Q3 (float) : Third Quartile
     UC (float) : Upper Whisker Crosshatch
     UW (float) : Upper Whisker  Endpoint
     Q4 (float) : Largest Value
     IQR (float) : Interquartile Range
     MH (float) : Midhinge
     TM (float) : Trimean
     MR (float) : Mid-Range
- - -
 TYPE MANAGEMENT 
These functions reliably initialize and update the UDTs. Because parameterization is interdependent,  avoid setting the LogNorm and Quantile fields directly .
 init(mean, stdev, variance) 
  Initializes a LogNorm object.
  Parameters:
     mean (float) : Linearly measured mean.
     stdev (float) : Linearly measured standard deviation.
     variance (float) : Linearly measured variance.
  Returns: LogNorm Object
 set(ln, mean, stdev, variance) 
  Transforms linear measurements into  log space  parameters for a LogNorm object.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
     mean (float) : Linearly measured mean.
     stdev (float) : Linearly measured standard deviation.
     variance (float) : Linearly measured variance.
  Returns: LogNorm Object
 quantiles(arr) 
  Gets empirical quantiles from an array of floats.
  Parameters:
     arr (array) : Float array object.
  Returns: Quantile Object
- - -
 DESCRIPTIVE STATISTICS 
Using only the initialized LogNorm parameters, these functions compute a model's central tendency and standardized moments.
 mean(ln) 
  Computes the  linear mean  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 median(ln) 
  Computes the  linear median  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 mode(ln) 
  Computes the  linear mode  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 variance(ln) 
  Computes the  linear variance  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 skewness(ln) 
  Computes the  linear skewness  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 kurtosis(ln, excess) 
  Computes the  linear kurtosis  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
     excess (bool) : Excess Kurtosis (true) or regular Kurtosis (false).
  Returns: Between 0 and ∞
 hyper_skewness(ln) 
  Computes the  linear hyper skewness  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
  Returns: Between 0 and ∞
 hyper_kurtosis(ln, excess) 
  Computes the  linear hyper kurtosis  from log space parameters.
  Parameters:
     ln (LogNorm) : Object containing log space parameters.
     excess (bool) : Excess Hyper Kurtosis (true) or regular Hyper Kurtosis (false).
  Returns: Between 0 and ∞
- - -
  DISTRIBUTION FUNCTIONS 
These wrap Gaussian functions to make working with model space more direct. Because they are contained within a log-normal library, they describe estimations relative to a log-normal curve, even though they fundamentally measure a Gaussian curve.
 pdf(ln, x, empirical_quantiles) 
  A  Probability Density Function  estimates the probability  density . For clarity,  density is not a probability .
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate for which a density will be estimated.
     empirical_quantiles (Quantile) : Quantiles as observed in the data (optional).
  Returns: Between 0 and ∞
 cdf(ln, x, precise) 
  A  Cumulative Distribution Function  estimates the area under a Log-Normal curve between Zero and a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 ccdf(ln, x, precise) 
  A  Complementary Cumulative Distribution Function  estimates the area under a Log-Normal curve between a linear X coordinate and Infinity.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 cdfinv(ln, a, precise) 
  An  Inverse Cumulative Distribution Function  reverses the Log-Normal  cdf()  by estimating the linear X coordinate from an area.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     a (float) : Normalized area  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 ccdfinv(ln, a, precise) 
  An  Inverse Complementary Cumulative Distribution Function  reverses the Log-Normal  ccdf()  by estimating the linear X coordinate from an area.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     a (float) : Normalized area  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 cdfab(ln, x1, x2, precise) 
  A  Cumulative Distribution Function  from  A  to  B  estimates the area under a Log-Normal curve between two linear X coordinates (A and B).
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x1 (float) : First linear X coordinate  .
     x2 (float) : Second linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 ott(ln, x, precise) 
  A  One-Tailed Test  transforms a linear X coordinate into an absolute Z Score before estimating the area under a Log-Normal curve between Z and Infinity.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 0.5
 ttt(ln, x, precise) 
   A  Two-Tailed Test  transforms a linear X coordinate into symmetrical ± Z Scores before estimating the area under a Log-Normal curve from Zero to -Z, and +Z to Infinity.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 ottinv(ln, a, precise) 
  An  Inverse One-Tailed Test  reverses the Log-Normal  ott()  by estimating a linear X coordinate for the right tail from an area.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     a (float) : Half a normalized area  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 tttinv(ln, a, precise) 
  An  Inverse Two-Tailed Test  reverses the Log-Normal  ttt()  by estimating two linear X coordinates from an area.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     a (float) : Normalized area  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Linear space tuple :  
- - -
 UNCERTAINTY 
Model-based measures of uncertainty, information, and risk.
 sterr(sample_size, fisher_info) 
  The standard error of a sample statistic.
  Parameters:
     sample_size (float) : Number of observations.
     fisher_info (float) : Fisher information.
  Returns: Between 0 and ∞
 surprisal(p, base) 
  Quantifies the information content of a  single  event.
  Parameters:
     p (float) : Probability of the event  .
     base (float) : Logarithmic base (optional).
  Returns: Between 0 and ∞
 entropy(ln, base) 
  Computes the  differential  entropy (average surprisal).
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     base (float) : Logarithmic base (optional).
  Returns: Between 0 and ∞
 perplexity(ln, base) 
  Computes the average number of distinguishable outcomes from the entropy.  
  Parameters:
     ln (LogNorm) 
     base (float) : Logarithmic base used for Entropy (optional).
  Returns: Between 0 and ∞
 value_at_risk(ln, p, precise) 
  Estimates a risk threshold under normal market conditions for a given confidence level.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     p (float) : Probability threshold, aka. the confidence level  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 value_at_risk_inv(ln, value_at_risk, precise) 
  Reverses the  value_at_risk()  by estimating the confidence level from the risk threshold.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     value_at_risk (float) : Value at Risk.
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 conditional_value_at_risk(ln, p, precise) 
  Estimates the average loss  beyond  a confidence level, aka. expected shortfall.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     p (float) : Probability threshold, aka. the confidence level  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 conditional_value_at_risk_inv(ln, conditional_value_at_risk, precise) 
  Reverses the  conditional_value_at_risk()  by estimating the confidence level of an average loss.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     conditional_value_at_risk (float) : Conditional Value at Risk.
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and 1
 partial_expectation(ln, x, precise) 
  Estimates the partial expectation of a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and µ
 partial_expectation_inv(ln, partial_expectation, precise) 
  Reverses the  partial_expectation()  by estimating a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     partial_expectation (float) : Partial Expectation  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 conditional_expectation(ln, x, precise) 
  Estimates the conditional expectation of a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between X and ∞
 conditional_expectation_inv(ln, conditional_expectation, precise) 
  Reverses the  conditional_expectation  by estimating a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     conditional_expectation (float) : Conditional Expectation  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: Between 0 and ∞
 fisher(ln, log) 
  Computes the Fisher Information Matrix for the distribution,  not  a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     log (bool) : Sets if the matrix should be in log (true) or linear (false) space.
  Returns: FIM for the distribution
 fisher(ln, x, log) 
  Computes the Fisher Information Matrix for a linear X coordinate,  not  the distribution itself.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     log (bool) : Sets if the matrix should be in log (true) or linear (false) space.
  Returns: FIM for the linear X coordinate
 confidence_interval(ln, x, sample_size, confidence, precise) 
  Estimates a confidence interval for a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate  .
     sample_size (float) : Number of observations.
     confidence (float) : Confidence level  .
     precise (bool) : Double precision (true) or single precision (false).
  Returns: CI for the linear X coordinate
- - -
 CURVE FITTING 
An overloaded function that helps transform values between spaces. The primary function uses quantiles, and the overloads wrap the primary function to make working with LogNorm more direct.
 fit(x, a, b) 
  Transforms X coordinate between spaces A and B.
  Parameters:
     x (float) : Linear X coordinate from space A  .
     a (LogNorm | Quantile | array) : LogNorm, Quantile, or float array.
     b (LogNorm | Quantile | array) : LogNorm, Quantile, or float array.
  Returns: Adjusted X coordinate
- - -
 EXPORTED HELPERS 
Small utilities to simplify extensibility.
 z_score(ln, x) 
  Converts a linear X coordinate into a Z Score.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     x (float) : Linear X coordinate.
  Returns: Between -∞ and +∞
 x_coord(ln, z) 
  Converts a Z Score into a linear X coordinate.
  Parameters:
     ln (LogNorm) : Object of log space parameters.
     z (float) : Standard normal Z Score.
  Returns: Between 0 and ∞
 iget(arr, index) 
  Gets an  interpolated  value of a  pseudo -element (fictional element between real array elements). Useful for quantile mapping.
  Parameters:
     arr (array) : Float array object.
     index (float) : Index of the pseudo element.
  Returns: Interpolated value of the arrays pseudo element.
Min_Position_Size_ALLLibrary   "Min_Position_Size_ALL" 
 getMinPositionSize(symbol_, type_, broker_) 
  Parameters:
     symbol_ (string) 
     type_ (string) 
     broker_ (string)
ICOptimizerLibrary   "ICOptimizer" 
Library for IC-based parameter optimization
 findOptimalParam(testParams, icValues, currentParam, smoothing) 
  Find optimal parameter from array of IC values
  Parameters:
     testParams (array) : Array of parameter values being tested
     icValues (array) : Array of IC values for each parameter (same size as testParams)
     currentParam (float) : Current parameter value (for smoothing)
     smoothing (simple float) : Smoothing factor (0-1, e.g., 0.2 means 20% new, 80% old)
  Returns:   New parameter value, its IC, and array index
 adaptiveParamWithStarvation(opt, testParams, icValues, smoothing, starvationThreshold, starvationJumpSize) 
  Adaptive parameter selection with starvation handling
  Parameters:
     opt (ICOptimizer) : ICOptimizer object
     testParams (array) : Array of parameter values
     icValues (array) : Array of IC values for each parameter
     smoothing (simple float) : Normal smoothing factor
     starvationThreshold (simple int) : Number of updates before triggering starvation mode
     starvationJumpSize (simple float) : Jump size when in starvation (as fraction of range)
  Returns:   Updated parameter and IC
 detectAndAdjustDomination(longCount, shortCount, currentLongLevel, currentShortLevel, dominationRatio, jumpSize, minLevel, maxLevel) 
  Detect signal imbalance and adjust parameters
  Parameters:
     longCount (int) : Number of long signals in period
     shortCount (int) : Number of short signals in period
     currentLongLevel (float) : Current long threshold
     currentShortLevel (float) : Current short threshold
     dominationRatio (simple int) : Ratio threshold (e.g., 4 = 4:1 imbalance)
     jumpSize (simple float) : Size of adjustment
     minLevel (simple float) : Minimum allowed level
     maxLevel (simple float) : Maximum allowed level
  Returns:  
 calcIC(signals, returns, lookback) 
  Parameters:
     signals (float) 
     returns (float) 
     lookback (simple int) 
 classifyIC(currentIC, icWindow, goodPercentile, badPercentile) 
  Parameters:
     currentIC (float) 
     icWindow (simple int) 
     goodPercentile (simple int) 
     badPercentile (simple int) 
 evaluateSignal(signal, forwardReturn) 
  Parameters:
     signal (float) 
     forwardReturn (float) 
 updateOptimizerState(opt, signal, forwardReturn, currentIC, metaICPeriod) 
  Parameters:
     opt (ICOptimizer) 
     signal (float) 
     forwardReturn (float) 
     currentIC (float) 
     metaICPeriod (simple int) 
 calcSuccessRate(successful, total) 
  Parameters:
     successful (int) 
     total (int) 
 createICStatsTable(opt, paramName, normalSuccess, normalTotal) 
  Parameters:
     opt (ICOptimizer) 
     paramName (string) 
     normalSuccess (int) 
     normalTotal (int) 
 initOptimizer(initialParam) 
  Parameters:
     initialParam (float) 
 ICOptimizer 
  Fields:
     currentParam (series float) 
     currentIC (series float) 
     metaIC (series float) 
     totalSignals (series int) 
     successfulSignals (series int) 
     goodICSignals (series int) 
     goodICSuccess (series int) 
     nonBadICSignals (series int) 
     nonBadICSuccess (series int) 
     goodICThreshold (series float) 
     badICThreshold (series float) 
     updateCounter (series int)
IC optimiser libLibrary   "IC optimiser lib" 
Library for IC-based parameter optimization
 findOptimalParam(testParams, icValues, currentParam, smoothing) 
  Find optimal parameter from array of IC values
  Parameters:
     testParams (array) : Array of parameter values being tested
     icValues (array) : Array of IC values for each parameter (same size as testParams)
     currentParam (float) : Current parameter value (for smoothing)
     smoothing (simple float) : Smoothing factor (0-1, e.g., 0.2 means 20% new, 80% old)
  Returns:   New parameter value, its IC, and array index
 adaptiveParamWithStarvation(opt, testParams, icValues, smoothing, starvationThreshold, starvationJumpSize) 
  Adaptive parameter selection with starvation handling
  Parameters:
     opt (ICOptimizer) : ICOptimizer object
     testParams (array) : Array of parameter values
     icValues (array) : Array of IC values for each parameter
     smoothing (simple float) : Normal smoothing factor
     starvationThreshold (simple int) : Number of updates before triggering starvation mode
     starvationJumpSize (simple float) : Jump size when in starvation (as fraction of range)
  Returns:   Updated parameter and IC
 detectAndAdjustDomination(longCount, shortCount, currentLongLevel, currentShortLevel, dominationRatio, jumpSize, minLevel, maxLevel) 
  Detect signal imbalance and adjust parameters
  Parameters:
     longCount (int) : Number of long signals in period
     shortCount (int) : Number of short signals in period
     currentLongLevel (float) : Current long threshold
     currentShortLevel (float) : Current short threshold
     dominationRatio (simple int) : Ratio threshold (e.g., 4 = 4:1 imbalance)
     jumpSize (simple float) : Size of adjustment
     minLevel (simple float) : Minimum allowed level
     maxLevel (simple float) : Maximum allowed level
  Returns:  
 calcIC(signals, returns, lookback) 
  Parameters:
     signals (float) 
     returns (float) 
     lookback (simple int) 
 classifyIC(currentIC, icWindow, goodPercentile, badPercentile) 
  Parameters:
     currentIC (float) 
     icWindow (simple int) 
     goodPercentile (simple int) 
     badPercentile (simple int) 
 evaluateSignal(signal, forwardReturn) 
  Parameters:
     signal (float) 
     forwardReturn (float) 
 updateOptimizerState(opt, signal, forwardReturn, currentIC, metaICPeriod) 
  Parameters:
     opt (ICOptimizer) 
     signal (float) 
     forwardReturn (float) 
     currentIC (float) 
     metaICPeriod (simple int) 
 calcSuccessRate(successful, total) 
  Parameters:
     successful (int) 
     total (int) 
 createICStatsTable(opt, paramName, normalSuccess, normalTotal) 
  Parameters:
     opt (ICOptimizer) 
     paramName (string) 
     normalSuccess (int) 
     normalTotal (int) 
 initOptimizer(initialParam) 
  Parameters:
     initialParam (float) 
 ICOptimizer 
  Fields:
     currentParam (series float) 
     currentIC (series float) 
     metaIC (series float) 
     totalSignals (series int) 
     successfulSignals (series int) 
     goodICSignals (series int) 
     goodICSuccess (series int) 
     nonBadICSignals (series int) 
     nonBadICSuccess (series int) 
     goodICThreshold (series float) 
     badICThreshold (series float) 
     updateCounter (series int)
LIB_SDz_AucLibrary   "LIB_SDz_Auc" 
TODO: add library description here
 getLineStyle(style) 
  Parameters:
     style (string)
testLibLibrary   "testLib" 
TODO: add library description here
 mySMA(x) 
  TODO: add function description here
  Parameters:
     x (int) : TODO: add parameter x description here
  Returns: TODO: add what function returns
livremySMATestLibLibrary   "livremySMATestLib" 
TODO: add library description here
 mySMA(x) 
  TODO: add function description here
  Parameters:
     x (int) : TODO: add parameter x description here
  Returns: TODO: add what function returns
Material Color Palette Library█ OVERVIEW
Unlock a world of color in your Pine Script® projects with the  Material Color Palette Library . This library provides a comprehensive and structured color system based on Google's Material Design palette, making it incredibly easy to create visually appealing and professional-looking indicators and strategies.
Forget about guessing hex codes. With this library, you have access to 19 distinct color families, each offering a wide range of shades. Every color can be fine-tuned with saturation, darkness, and opacity levels, giving you precise control over your script's appearance.
To make development even easier, the library includes a visual cheatsheet. Simply add the script to your chart to display a full table of all available colors and their corresponding parameters.
█ KEY FEATURES
 
   Vast Spectrum:  19 distinct color families, from vibrant reds and blues to subtle greys and browns.
   Fine-Tuned Control:  Each color function accepts parameters for `saturationLevel` (1-13 or 1-9) and `darkLevel` (1-3) to select the perfect shade.
   Opacity Parameter:  Easily add transparency to any color for fills, backgrounds, or lines.
   Quick Access Tones:  A simple `tone()` function to grab base colors by name.
   Visual Cheatsheet:  An on-chart table displays the entire color palette, serving as a handy reference guide during development.
 
█ HOW TO USE
As a library, this script is meant to be imported into your own indicators or strategies.
 1. Import the Library 
Add the following line to the top of your script. Remember to replace `YourUsername` with your TradingView username.
 
import mastertop/ColorPalette/1 as colors
 
 2. Call a Color Function 
You can now use any of the exported functions to set colors for your plots, backgrounds, tables, and more.
The primary functions take three arguments: `functionName(saturationLevel, darkLevel, opacity)`
 
  `saturationLevel`: An integer that controls the intensity of the color. Ranges from 1 (lightest) to 13 (most vibrant) for most colors, and 1-9 for `brown`, `grey`, and `blueGrey`.
  `darkLevel`: An integer from 1 to 3 (1: light, 2: medium, 3: dark).
  `opacity`: An integer from 0 (opaque) to 100 (invisible).
 
 Example Usage: 
Let's plot a moving average with a specific shade of teal.
 
// Import the library
import mastertop/ColorPalette/1 as colors
indicator("My Script with Custom Colors", overlay = true)
// Calculate a moving average
ma = ta.sma(close, 20)
// Plot the MA using a color from the library
// We'll use teal with saturation level 7, dark level 2, and 0% opacity
plot(ma, "MA", color = colors.teal(7, 2, 0), linewidth = 2)
 
 3. Using the `tone()` Function 
For quick access to a base color, you can use the `tone()` function.
 
// Set a red background with 85% transparency
bgcolor(colors.tone('red', 85))
 
█ VISUAL REFERENCE
To see all available colors at a glance, you can add this library script directly to your chart. It will display a comprehensive table showing every color variant. This makes it easy to pick the exact shade you need without guesswork.
This library is designed for fellow Pine Script® developers to streamline their workflow and enhance the visual quality of their scripts. Enjoy!






















