Overgeared Library Economic Calendar-----------------------------------------------------------
Base on script -> jdehorty/EconomicCalendar
Very Big Thanks to jdehorty/EconomicCalendar
-----------------------------------------------------------
Penunjuk dan strategi
Spot Symbols for CryptoLibrary   "CryptoSpotSymbols" 
This Library has one purpose only. It generate Symbols for the Crypto Spot Market, like all the currencies pairs of most Crypto Exchanges available to TradingView.
Have a look at  .find() , which is an  all in one  function.
 Binance(basecurrency) 
  Generate 27 Symbols for the Spot Market of Binance.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 BinanceUS(basecurrency) 
  Generate seven Symbols for the Spot Market of BinanceUS.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Bitfinex(basecurrency) 
  Generate 12 Symbols for the Spot Market of Bitfinex.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 bitFlyer(basecurrency) 
  Generate three Symbols for the Spot Market of bitFlyer.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Bitget(basecurrency) 
  Generate seven Symbols for the Spot Market of Bitget.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Bithumb(basecurrency) 
  Generate two Symbols for the Spot Market of Bithumb.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 bitkub(basecurrency) 
  Generate one Symbol for the Spot Market of bitkub.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: THB
 BitMEX(basecurrency) 
  Generate two Symbols for the Spot Market of BitMEX.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 bitpanda_pro(basecurrency) 
  Generate six Symbols for the Spot Market of bitpanda pro.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 bitrue(basecurrency) 
  Generate nine Symbols for the Spot Market of bitrue.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Bitstamp(basecurrency) 
  Generate eight Symbols for the Spot Market of Bitstamp.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 BITTREX(basecurrency) 
  Generate six Symbols for the Spot Market of BITTREX.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 BTSE(basecurrency) 
  Generate 15 Symbols for the Spot Market of BTSE.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 BYBIT(basecurrency) 
  Generate five Symbols for the Spot Market of BYBIT.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 CapitalCom(basecurrency) 
  Generate five Symbols for the Spot Market of capital.com.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 coinbase(basecurrency) 
  Generate seven Symbols for the Spot Market of coinbase.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 CoinEx(basecurrency) 
  Generate three Symbols for the Spot Market of CoinEx.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 CurrencyCom(basecurrency) 
  Generate 30 Symbols for the Spot Market of currency.com.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Delta(basecurrency) 
  Generate one Symbol for the Spot Market of Delta.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: USDT
 Deribit(basecurrency) 
  Generate two Symbols for the Spot Market of Deribit.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 easyMarkets(basecurrency) 
  Generate one Symbol for the Spot Market of easyMarkets.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: USD
 Eightcap(basecurrency) 
  Generate one Symbol for the Spot Market of Eightcap.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: USD
 ExMo(basecurrency) 
  Generate ten Symbols for the Spot Market of ExMo.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 FOREXcom(basecurrency) 
  Generate four Symbols for the Spot Market of FOREX.com.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 FXCM(basecurrency) 
  Generate three Symbols for the Spot Market of FXCM.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 GateIO(basecurrency) 
  Generate five Symbols for the Spot Market of Gate.io.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Gemini(basecurrency) 
  Generate ten Symbols for the Spot Market of Gemini.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Kraken(basecurrency) 
  Generate 14 Symbols for the Spot Market of Kraken.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 KuCoin(basecurrency) 
  Generate 13 Symbols for the Spot Market of KuCoin.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 MEXC(basecurrency) 
  Generate six Symbols for the Spot Market of MEXC.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 OANDA(basecurrency) 
  Generate one Symbol for the Spot Market of OANDA.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: USD
 OKX(basecurrency) 
  Generate six Symbols for the Spot Market of OKX.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Pepperstone(basecurrency) 
  Generate one Symbol for the Spot Market of Pepperstone.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns: USD
 phemex(basecurrency) 
  Generate four Symbols for the Spot Market of phemex.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 POLONIEX(basecurrency) 
  Generate nine Symbols for the Spot Market of POLONIEX.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Pyth(basecurrency) 
  Generate three Symbols for the Spot Market of Pyth.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 Skilling(basecurrency) 
  Generate four Symbols for the Spot Market of Skilling.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 TimeX(basecurrency) 
  Generate six Symbols for the Spot Market of TimeX.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 TradeStation(basecurrency) 
  Generate four Symbols for the Spot Market of TradeStation.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 UpBit(basecurrency) 
  Generate four Symbols for the Spot Market of UpBit.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 whitebit(basecurrency) 
  Generate 13 Symbols for the Spot Market of whitebit.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 WOOX(basecurrency) 
  Generate two Symbols for the Spot Market of WOO.
  Parameters:
     basecurrency (simple string) : Its the Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`.
  Returns:  
 find(exchange, basecurrency) 
  Generate up to 30 Symbols for the Spot Market, depending on the market picked.
  Parameters:
     exchange (simple string) : The name of an Exchange. Case insensitivity. Optional. Default value is `syminfo.prefix`. If something else is put in here it will return `na` values.
     basecurrency (simple string) : The Basecurrency to generate the Symbols with. Optional. Default value is `syminfo.basecurrency`
  Returns: 30x string as tuple
lib_statemachineLibrary   "lib_statemachine" 
simple state machine that allows tracking a state an manipulating it with conditions
 method step(this, before, after, condition) 
  will step the state of the state machine from one to the next in case of condition
  Namespace types: StateMachine
  Parameters:
     this (StateMachine) : (StateMachine) the state machine to use
     before (int) : (int) from state
     after (int) : (int) to state
     condition (bool) : (bool) if condition is true
  Returns: true (bool) if the state of the statemachine changed
 method step(this, after, condition) 
  will change the state of the state machine to the next in case of condition (not depending on previous state)
  Namespace types: StateMachine
  Parameters:
     this (StateMachine) : (StateMachine) the state machine to use
     after (int) : (int) to state
     condition (bool) : (bool) if condition is true
  Returns: true (bool) if the state of the statemachine changed
 method changed(this, within_bars) 
  will return true if the state of the state machine was changed in this iteration
  Namespace types: StateMachine
  Parameters:
     this (StateMachine) : (StateMachine) the state machine to use
     within_bars (int) 
  Returns: true (bool) if the state of the statemachine changed
 method reset(this, condition, min_occurrences) 
  will reset the state machine if a certain 'condition' appears 'min_occurrences' times
  Namespace types: StateMachine
  Parameters:
     this (StateMachine) : (StateMachine) the state machine to use
     condition (bool) : (bool) reset condition 
     min_occurrences (int) : (int) min times 'condition' must appear for the reset to happen
  Returns: true (bool) if the state of the statemachine changed
 StateMachine 
  Fields:
     state (series__integer) 
     neutral (series__integer) 
     enabled (series__bool) 
     reset_counter (series__integer)
lib_colorLibrary   "lib_color" 
 offset_mono(original, offset, transparency) 
  get offset color
  Parameters:
     original (simple color) : original color
     offset (float) : offset for new color
     transparency (float) : transparency for new color
  Returns: offset color
lib_colorsLibrary   "lib_colors" 
 offset_mono(original, offset, transparency) 
  get offset color
  Parameters:
     original (simple color) : original color
     offset (float) : offset for new color
     transparency (float) : transparency for new color
  Returns: offset color
CNTLibraryLibrary   "CNTLibrary" 
Custom Functions To Help Code In Pinescript V5
Coded By Christian Nataliano
First Coded In 10/06/2023
Last Edited In 22/06/2023
Huge Shout Out To © ZenAndTheArtOfTrading and his ZenLibrary V5, Some Of The Custom Functions Were Heavily Inspired By Matt's Work & His Pine Script Mastery Course
Another Shout Out To The TradingView's Team Library ta V5 
//====================================================================================================================================================
//  Custom Indicator Functions 
//====================================================================================================================================================
 GetKAMA(KAMA_lenght, Fast_KAMA, Slow_KAMA) 
  Calculates An Adaptive Moving Average Based On Perry J Kaufman's Calculations
  Parameters:
     KAMA_lenght (int) : Is The KAMA Lenght
     Fast_KAMA (int) : Is The KAMA's Fastes Moving Average
     Slow_KAMA (int) : Is The KAMA's Slowest Moving Average
  Returns: Float Of The KAMA's Current Calculations
 GetMovingAverage(Source, Lenght, Type) 
  Get Custom Moving Averages Values
  Parameters:
     Source (float) : Of The Moving Average, Defval = close
     Lenght (simple int) : Of The Moving Average, Defval = 50
     Type (string) : Of The Moving Average, Defval = Exponential Moving Average
  Returns: The Moving Average Calculation Based On Its Given Source, Lenght & Calculation Type (Please Call Function On Global Scope)
 GetDecimals() 
  Calculates how many decimals are on the quote price of the current market © ZenAndTheArtOfTrading
  Returns: The current decimal places on the market quote price
 Truncate(number, decimalPlaces) 
  Truncates (cuts) excess decimal places © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
     decimalPlaces (simple float) 
  Returns: The given number truncated to the given decimalPlaces
 ToWhole(number) 
  Converts pips into whole numbers © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
  Returns: The converted number
 ToPips(number) 
  Converts whole numbers back into pips © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
  Returns: The converted number
 GetPctChange(value1, value2, lookback) 
  Gets the percentage change between 2 float values over a given lookback period © ZenAndTheArtOfTrading
  Parameters:
     value1 (float) 
     value2 (float) 
     lookback (int) 
 BarsAboveMA(lookback, ma) 
  Counts how many candles are above the MA © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are above the MA
 BarsBelowMA(lookback, ma) 
  Counts how many candles are below the MA © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are below the EMA
 BarsCrossedMA(lookback, ma) 
  Counts how many times the EMA was crossed recently © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many times price recently crossed the EMA
 GetPullbackBarCount(lookback, direction) 
  Counts how many green & red bars have printed recently (ie. pullback count) © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     direction (int) 
  Returns: The bar count of how many candles have retraced over the given lookback & direction
 GetSwingHigh(Lookback, SwingType) 
  Check If Price Has Made A Recent Swing High
  Parameters:
     Lookback (int) : Is For The Swing High Lookback Period, Defval = 7
     SwingType (int) : Is For The Swing High Type Of Identification, Defval = 1
  Returns: A Bool - True If Price Has Made A Recent Swing High
 GetSwingLow(Lookback, SwingType) 
  Check If Price Has Made A Recent Swing Low
  Parameters:
     Lookback (int) : Is For The Swing Low Lookback Period, Defval = 7
     SwingType (int) : Is For The Swing Low Type Of Identification, Defval = 1
  Returns: A Bool - True If Price Has Made A Recent Swing Low
//====================================================================================================================================================
//  Custom Risk Management Functions 
//====================================================================================================================================================
 CalculateStopLossLevel(OrderType, Entry, StopLoss) 
  Calculate StopLoss Level
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, Defval = na
     StopLoss (float) : Is The Custom StopLoss Distance, Defval = 2x ATR Below Close
  Returns: Float - The StopLoss Level In Actual Price As A
 CalculateStopLossDistance(OrderType, Entry, StopLoss) 
  Calculate StopLoss Distance In Pips
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
     StopLoss (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
  Returns: Float - The StopLoss Value In Pips
 CalculateTakeProfitLevel(OrderType, Entry, StopLossDistance, RiskReward) 
  Calculate TakeProfit Level
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, Defval = na
     StopLossDistance (float) 
     RiskReward (float) 
  Returns: Float  - The TakeProfit Level In Actual Price
 CalculateTakeProfitDistance(OrderType, Entry, TakeProfit) 
  Get TakeProfit Distance In Pips
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
     TakeProfit (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
  Returns: Float - The TakeProfit Value In Pips
 CalculateConversionCurrency(AccountCurrency, SymbolCurrency, BaseCurrency) 
  Get The Conversion Currecny Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
  Parameters:
     AccountCurrency (simple string) : Is For The Account Currency Used 
     SymbolCurrency (simple string) : Is For The Current Symbol Currency (Front Symbol)
     BaseCurrency (simple string) : Is For The Current Symbol Base Currency (Back Symbol)
  Returns: Tuple Of A Bollean (Convert The Currency ?) And A String (Converted Currency)
 CalculateConversionRate(ConvertCurrency, ConversionRate) 
  Get The Conversion Rate Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
  Parameters:
     ConvertCurrency (bool) : Is To Check If The Current Symbol Needs To Be Converted Or Not
     ConversionRate (float) : Is The Quoted Price Of The Conversion Currency (Input The request.security Function Here)
  Returns: Float Price Of Conversion Rate (If In The Same Currency Than Return Value Will Be 1.0)
 LotSize(LotSizeSimple, Balance, Risk, SLDistance, ConversionRate) 
  Get Current Lot Size
  Parameters:
     LotSizeSimple (bool) : Is To Toggle Lot Sizing Calculation (Simple Is Good Enough For Stocks & Crypto, Whilst Complex Is For Forex)
     Balance (float) : Is For The Current Account Balance To Calculate The Lot Sizing Based Off
     Risk (float) : Is For The Current Risk Per Trade To Calculate The Lot Sizing Based Off
     SLDistance (float) : Is The Current Position StopLoss Distance From Its Entry Price
     ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
  Returns: Float - Position Size In Units
 ToLots(Units) 
  Converts Units To Lots
  Parameters:
     Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
  Returns: Float - Position Size In Lots
 ToUnits(Lots) 
  Converts Lots To Units
  Parameters:
     Lots (float) : Is For How Many Lots Need To Be Converted Into Units (Minimun 0.01 Units)
  Returns: Int - Position Size In Units
 ToLotsInUnits(Units) 
  Converts Units To Lots Than Back To Units
  Parameters:
     Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
  Returns: Float - Position Size In Lots That Were Rounded To Units
 ATRTrail(OrderType, SourceType, ATRPeriod, ATRMultiplyer, SwingLookback) 
  Calculate ATR Trailing Stop
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1 
     SourceType (int) : Is To Determine Where To Calculate The ATR Trailing From, Defval = close
     ATRPeriod (simple int) : Is To Change Its ATR Period, Defval = 20
     ATRMultiplyer (float) : Is To Change Its ATR Trailing Distance, Defval = 1
     SwingLookback (int) : Is To Change Its Swing HiLo Lookback (Only From Source Type 5), Defval = 7
  Returns: Float - Number Of The Current ATR Trailing
 DangerZone(WinRate, AvgRRR, Filter) 
  Calculate Danger Zone Of A Given Strategy
  Parameters:
     WinRate (float) : Is The Strategy WinRate
     AvgRRR (float) : Is The Strategy Avg RRR
     Filter (float) : Is The Minimum Profit It Needs To Be Out Of BE Zone, Defval = 3
  Returns: Int - Value, 1 If Out Of Danger Zone, 0 If BE, -1 If In Danger Zone
 IsQuestionableTrades(TradeTP, TradeSL) 
  Checks For Questionable Trades (Which Are Trades That Its TP & SL Level Got Hit At The Same Candle)
  Parameters:
     TradeTP (float) : Is The Trade In Question Take Profit Level
     TradeSL (float) : Is The Trade In Question Stop Loss Level
  Returns: Bool - True If The Last Trade Was A "Questionable Trade"
//====================================================================================================================================================
//  Custom Strategy Functions 
//====================================================================================================================================================
 OpenLong(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue) 
  Open A Long Order Based On The Given Params
  Parameters:
     EntryID (string) : Is The Trade Entry ID, Defval = "Long"
     LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
     LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
     StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
     Comment (string) : Is The Order Comment, Defval = Long Entry Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
  Returns: Void
 OpenShort(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue) 
  Open A Short Order Based On The Given Params
  Parameters:
     EntryID (string) : Is The Trade Entry ID, Defval = "Short"
     LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
     LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
     StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
     Comment (string) : Is The Order Comment, Defval = Short Entry Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
  Returns: Void
 TP_SLExit(FromID, TPLevel, SLLevel, PercentageClose, Comment, CommentValue) 
  Exits Based On Predetermined TP & SL Levels
  Parameters:
     FromID (string) : Is The Trade ID That The TP & SL Levels Be Palced 
     TPLevel (float) : Is The Take Profit Level
     SLLevel (float) : Is The StopLoss Level
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
  Returns: Void
 CloseLong(ExitID, PercentageClose, Comment, CommentValue, Instant) 
  Exits A Long Order Based On A Specified Condition
  Parameters:
     ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Long"
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
     Instant (bool) : Is For Exit Execution Type, Defval = false
  Returns: Void
 CloseShort(ExitID, PercentageClose, Comment, CommentValue, Instant) 
  Exits A Short Order Based On A Specified Condition
  Parameters:
     ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Short"
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
     Instant (bool) : Is For Exit Execution Type, Defval = false
  Returns: Void
 BrokerCheck(Broker) 
  Checks Traded Broker With Current Loaded Chart Broker
  Parameters:
     Broker (string) : Is The Current Broker That Is Traded 
  Returns: Bool - True If Current Traded Broker Is Same As Loaded Chart Broker
 OpenPC(LicenseID, OrderType, UseLimit, LimitPrice, SymbolPrefix, Symbol, SymbolSuffix, Risk, SL, TP, OrderComment, Spread) 
  Compiles Given Parameters Into An Alert String Format To Open Trades Using Pine Connector
  Parameters:
     LicenseID (string) : Is The Users PineConnector LicenseID
     OrderType (int) : Is The Desired OrderType To Open
     UseLimit (bool) : Is If We Want To Enter The Position At Exactly The Previous Closing Price
     LimitPrice (float) : Is The Limit Price Of The Trade (Only For Pending Orders)
     SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
     Symbol (string) : Is The Traded Symbol
     SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
     Risk (float) : Is The Trade Risk Per Trade / Fixed Lot Sizing
     SL (float) : Is The Trade SL In Price / In Pips
     TP (float) : Is The Trade TP In Price / In Pips
     OrderComment (string) : Is The Executed Trade Comment
     Spread (float) : is The Maximum Spread For Execution
  Returns: String - Pine Connector Order Syntax Alert Message
 ClosePC(LicenseID, OrderType, SymbolPrefix, Symbol, SymbolSuffix) 
  Compiles Given Parameters Into An Alert String Format To Close Trades Using Pine Connector
  Parameters:
     LicenseID (string) : Is The Users PineConnector LicenseID
     OrderType (int) : Is The Desired OrderType To Close
     SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
     Symbol (string) : Is The Traded Symbol
     SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
  Returns: String - Pine Connector Order Syntax Alert Message
//====================================================================================================================================================
//  Custom Backtesting Calculation Functions 
//====================================================================================================================================================
 CalculatePNL(EntryPrice, ExitPrice, LotSize, ConversionRate) 
  Calculates Trade PNL Based On Entry, Eixt & Lot Size
  Parameters:
     EntryPrice (float) : Is The Trade Entry
     ExitPrice (float) : Is The Trade Exit
     LotSize (float) : Is The Trade Sizing
     ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
  Returns: Float - The Current Trade PNL
 UpdateBalance(PrevBalance, PNL) 
  Updates The Previous Ginve Balance To The Next PNL
  Parameters:
     PrevBalance (float) : Is The Previous Balance To Be Updated
     PNL (float) : Is The Current Trade PNL To Be Added
  Returns: Float - The Current Updated PNL
 CalculateSlpComm(PNL, MaxRate) 
  Calculates Random Slippage & Commisions Fees Based On The Parameters
  Parameters:
     PNL (float) : Is The Current Trade PNL 
     MaxRate (float) : Is The Upper Limit (In Percentage) Of The Randomized Fee
  Returns: Float - A Percentage Fee Of The Current Trade PNL
 UpdateDD(MaxBalance, Balance) 
  Calculates & Updates The DD Based On Its Given Parameters
  Parameters:
     MaxBalance (float) : Is The Maximum Balance Ever Recorded
     Balance (float) : Is The Current Account Balance
  Returns: Float - The Current Strategy DD
 CalculateWR(TotalTrades, LongID, ShortID) 
  Calculate The Total, Long & Short Trades Win Rate
  Parameters:
     TotalTrades (int) : Are The Current Total Trades That The Strategy Has Taken
     LongID (string) : Is The Order ID Of The Long Trades Of The Strategy
     ShortID (string) : Is The Order ID Of The Short Trades Of The Strategy
  Returns: Tuple Of Long WR%, Short WR%, Total WR%, Total Winning Trades, Total Losing Trades, Total Long Trades & Total Short Trades
 CalculateAvgRRR(WinTrades, LossTrades) 
  Calculates The Overall Strategy Avg Risk Reward Ratio
  Parameters:
     WinTrades (int) : Are The Strategy Winning Trades
     LossTrades (int) : Are The Strategy Losing Trades
  Returns: Float - The Average RRR Values
 CAGR(StartTime, StartPrice, EndTime, EndPrice) 
  Calculates The CAGR Over The Given Time Period © TradingView
  Parameters:
     StartTime (int) : Is The Starting Time Of The Calculation
     StartPrice (float) : Is The Starting Price Of The Calculation
     EndTime (int) : Is The Ending Time Of The Calculation
     EndPrice (float) : Is The Ending Price Of The Calculation
  Returns: Float - The CAGR Values
//====================================================================================================================================================
//  Custom Plot Functions 
//====================================================================================================================================================
 EditLabels(LabelID, X1, Y1, Text, Color, TextColor, EditCondition, DeleteCondition) 
  Edit / Delete Labels
  Parameters:
     LabelID (label) : Is The ID Of The Selected Label
     X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
     Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
     Text (string) : Is The Text Than Wants To Be Written In The Label
     Color (color) : Is The Color Value Change Of The Label Text
     TextColor (color) 
     EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
     DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
  Returns: Void
 EditLine(LineID, X1, Y1, X2, Y2, Color, EditCondition, DeleteCondition) 
  Edit / Delete Lines
  Parameters:
     LineID (line) : Is The ID Of The Selected Line
     X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
     Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
     X2 (int) : Is The X2 Coordinate IN BARINDEX Xloc
     Y2 (float) : Is The Y2 Coordinate IN PRICE Yloc
     Color (color) : Is The Color Value Change Of The Line
     EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
     DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
  Returns: Void
//====================================================================================================================================================
//  Custom Display Functions (Using Tables) 
//====================================================================================================================================================
 FillTable(TableID, Column, Row, Title, Value, BgColor, TextColor, ToolTip) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     Column (int) : Is The Current Column Of The Table That Wants To Be Edited
     Row (int) : Is The Current Row Of The Table That Wants To Be Edited 
     Title (string) : Is The String Title Of The Current Cell Table
     Value (string) : Is The String Value Of The Current Cell Table
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     ToolTip (string) : Is The ToolTip Of The Current Cell In The Table
  Returns: Void
 DisplayBTResults(TableID, BgColor, TextColor, StartingBalance, Balance, DollarReturn, TotalPips, MaxDD) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     StartingBalance (float) : Is The Account Starting Balance
     Balance (float) 
     DollarReturn (float) : Is The Account Dollar Reture
     TotalPips (float) : Is The Total Pips Gained / loss
     MaxDD (float) : Is The Maximum Drawdown Over The Backtesting Period
  Returns: Void
 DisplayBTResultsV2(TableID, BgColor, TextColor, TotalWR, QTCount, LongWR, ShortWR, InitialCapital, CumProfit, CumFee, AvgRRR, MaxDD, CAGR, MeanDD) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     TotalWR (float) : Is The Strategy Total WR In %
     QTCount (int) : Is The Strategy Questionable Trades Count
     LongWR (float) : Is The Strategy Total WR In %
     ShortWR (float) : Is The Strategy Total WR In %
     InitialCapital (float) : Is The Strategy Initial Starting Capital
     CumProfit (float) : Is The Strategy Ending Cumulative Profit
     CumFee (float) : Is The Strategy Ending Cumulative Fee (Based On Randomized Fee Assumptions)
     AvgRRR (float) : Is The Strategy Average Risk Reward Ratio
     MaxDD (float) : Is The Strategy Maximum DrawDown In Its Backtesting Period
     CAGR (float) : Is The Strategy Compounded Average GRowth In %
     MeanDD (float) : Is The Strategy Mean / Average Drawdown In The Backtesting Period
  Returns: Void
//====================================================================================================================================================
//  Custom Pattern Detection Functions 
//====================================================================================================================================================
 BullFib(priceLow, priceHigh, fibRatio) 
  Calculates A Bullish Fibonacci Value (From Swing Low To High) © ZenAndTheArtOfTrading
  Parameters:
     priceLow (float) 
     priceHigh (float) 
     fibRatio (float) 
  Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
 BearFib(priceLow, priceHigh, fibRatio) 
  Calculates A Bearish Fibonacci Value (From Swing High To Low) © ZenAndTheArtOfTrading
  Parameters:
     priceLow (float) 
     priceHigh (float) 
     fibRatio (float) 
  Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
 GetBodySize() 
  Gets The Current Candle Body Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Body Size IN POINTS
 GetTopWickSize() 
  Gets The Current Candle Top Wick Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Top Wick Size IN POINTS
 GetBottomWickSize() 
  Gets The Current Candle Bottom Wick Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Bottom Wick Size IN POINTS
 GetBodyPercent() 
  Gets The Current Candle Body Size As A Percentage Of Its Entire Size Including Its Wicks © ZenAndTheArtOfTrading
  Returns: The Current Candle Body Size IN PERCENTAGE
 GetTopWickPercent() 
  Gets The Current Top Wick Size As A Percentage Of Its Entire Body Size
  Returns: Float - The Current Candle Top Wick Size IN PERCENTAGE
 GetBottomWickPercent() 
  Gets The Current Bottom Wick Size As A Percentage Of Its Entire Bodu Size
  Returns: Float - The Current Candle Bottom Size IN PERCENTAGE
 BullishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Engulfing Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Engulfing Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Engulfing Candle
 BearishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bearish Engulfing Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Engulfing Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Engulfing Candle
 Hammer(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod) 
  Checks If The Current Bar Is A Hammer Candle
  Parameters:
     Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
     ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
     ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
     ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
  Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
 Star(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod) 
  Checks If The Current Bar Is A Hammer Candle
  Parameters:
     Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
     ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
     ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
     ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
  Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
 Doji(MaxWickSize, MaxBodySize, DojiType, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Doji Candle
  Parameters:
     MaxWickSize (float) : To Specify The Maximum Lenght Of Its Upper & Lower Wick, Defval = 2
     MaxBodySize (float) : To Specify The Maximum Lenght Of Its Candle Body IN PERCENT, Defval = 0.05
     DojiType (int) 
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Doji Candle
 BullishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Harami Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Harami Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Harami Candle
 BearishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Harami Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Harami Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Harami Candle
//====================================================================================================================================================
//  Custom Time Functions 
//====================================================================================================================================================
 BarInSession(sess, useFilter) 
  Determines if the current price bar falls inside the specified session © ZenAndTheArtOfTrading
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls within the given time session
 BarOutSession(sess, useFilter) 
  Determines if the current price bar falls outside the specified session © ZenAndTheArtOfTrading
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls outside the given time session
 DateFilter(startTime, endTime) 
  Determines if this bar's time falls within date filter range © ZenAndTheArtOfTrading
  Parameters:
     startTime (int) 
     endTime (int) 
  Returns: A boolean - true if the current bar falls within the given dates
 DayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday) 
  Checks if the current bar's day is in the list of given days to analyze © ZenAndTheArtOfTrading
  Parameters:
     monday (bool) 
     tuesday (bool) 
     wednesday (bool) 
     thursday (bool) 
     friday (bool) 
     saturday (bool) 
     sunday (bool) 
  Returns: A boolean - true if the current bar's day is one of the given days
 AUSSess() 
  Checks If The Current Australian Forex Session In Running
  Returns: Bool - True If Currently The Australian Session Is Running
 ASIASess() 
  Checks If The Current Asian Forex Session In Running
  Returns: Bool - True If Currently The Asian Session Is Running
 EURSess() 
  Checks If The Current European Forex Session In Running
  Returns: Bool - True If Currently The European Session Is Running
 USSess() 
  Checks If The Current US Forex Session In Running
  Returns: Bool - True If Currently The US Session Is Running
 UNIXToDate(Time, ConversionType, TimeZone) 
  Converts UNIX Time To Datetime
  Parameters:
     Time (int) : Is The UNIX Time Input
     ConversionType (int) : Is The Datetime Output Format, Defval = DD-MM-YYYY
     TimeZone (string) : Is To Convert The Outputed Datetime Into The Specified Time Zone, Defval = Exchange Time Zone
  Returns: String - String Of Datetime
lib_trackingLibrary   "lib_tracking" 
tracking highest and lowest with anchor point to track over dynamic periods, e.g. to track a Session HH/LL live and get the bar/time of the LTF wick that matches the HTF HH/LL
// DESIGN DECISION
// why anchored replacements for ta.highest / ta.highestbars / ta.lowest / ta.lowestbars:
// 1. they require a fixed length/lookback which makes it easier to calculate, but
// 2. this prevents us from tracking the HH/LL of a changing timeframe, e.g. live tracking the HH/LL of a running session or unfinished higher timeframe
// 3. tracking with anchor/start/reset flag allows to persist values until the next start/reset, so no other external storage is required
 track_highest(value, reset, track_this_bar) 
  Parameters:
     value (float) 
     reset (bool) : boolean flag to restart tracking from this point (a.k.a anchor)
     track_this_bar (bool) : allows enabling and disabling of tracking, e.g. before a session starts or after it ends, values can be kept until next reset.
 track_lowest(value, reset, track_this_bar) 
  Parameters:
     value (float) 
     reset (bool) : boolean flag to restart tracking from this point (a.k.a anchor)
     track_this_bar (bool) : allows enabling and disabling of tracking, e.g. before a session starts or after it ends, values can be kept until next reset.
 track_hl_htf(htf, value_high, value_low) 
  Parameters:
     htf (string) : the higher timeframe in pinescript string notation
     value_high (float) 
     value_low (float) 
  Returns: 
lib_arrayLibrary   "lib_array" 
several array functions for chained calls, batch conversion, incrementing and comparing arrays.
 method sort(id, descending) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to sort (and return again)
     descending (bool) : The sort order: order.ascending (default:false, meaning omit this param and just call myArray.sort()) or order.descending => set descending=true
@return The array that was passed as parameter id
 method sort(id, descending) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to sort (and return again)
     descending (bool) : The sort order: order.ascending (default:false, meaning omit this param and just call myArray.sort()) or order.descending => set descending=true
@return The array that was passed as parameter id
 method sort(id, descending) 
  Namespace types: string 
  Parameters:
     id (string ) : The array to sort (and return again)
     descending (bool) : The sort order: order.ascending (default:false, meaning omit this param and just call myArray.sort()) or order.descending => set descending=true
@return The array that was passed as parameter id
 method increment(id, by_value) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to increment (and return again)
     by_value (int) : The value by which to increment (default: 1)
@return The array that was passed as parameter id
 method increment(id, by_value) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to increment (and return again)
     by_value (float) : The value by which to increment (default: 1.0)
@return The array that was passed as parameter id
 method decrement(id, by_value) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to increment (and return again)
     by_value (int) : The value by which to increment (default: 1)
@return The array that was passed as parameter id
 method decrement(id, by_value) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to increment (and return again)
     by_value (float) : The value by which to increment (default: 1.0)
@return The array that was passed as parameter id
 method toint(id) 
  Namespace types: string 
  Parameters:
     id (string ) : The array to convert
 method toint(id) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to convert
 method tofloat(id) 
  Namespace types: string 
  Parameters:
     id (string ) : The array to convert
 method tofloat(id) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to convert
 method tostring(id) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to convert
 method tostring(id) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to convert
 method tobool(id) 
  Namespace types: float 
  Parameters:
     id (float ) : The array to convert
 method tobool(id) 
  Namespace types: int 
  Parameters:
     id (int ) : The array to convert
 method tobool(id) 
  Namespace types: string 
  Parameters:
     id (string ) : The array to convert
 method sum(id) 
  Namespace types: bool 
  Parameters:
     id (bool ) : The array to convert
 method enqueue(id, item, max, condition, lifo) 
  Namespace types: int 
  Parameters:
     id (int ) : The array that is used as queue
     item (int) : The item to enqueue (at pos 0, unless lifo = true)
     max (int) : The max size of the queue
     condition (bool) : An optional flag that allows disabling the adding, which in turn will prevent for in loops from ever running and save performance where not needed
     lifo (bool) : An optional flag that allows to change the behavior from First In Last Out (default and consistent with pine scripts history operator with most recent elements at index 0) to a more common and resource efficient approach in programming languages: Last In First Out 
  Returns: The queue passed as param id
 method enqueue(id, item, max, condition, lifo) 
  Namespace types: float 
  Parameters:
     id (float ) : The array that is used as queue
     item (float) : The item to enqueue (at pos 0, unless lifo = true)
     max (int) : The max size of the queue
     condition (bool) : An optional flag that allows disabling the adding, which in turn will prevent for in loops from ever running and save performance where not needed
     lifo (bool) : An optional flag that allows to change the behavior from First In Last Out (default and consistent with pine scripts history operator with most recent elements at index 0) to a more common and resource efficient approach in programming languages: Last In First Out 
  Returns: The queue passed as param id
 method enqueue(id, item, max, condition, lifo) 
  Namespace types: string 
  Parameters:
     id (string ) : The array that is used as queue
     item (string) : The item to enqueue (at pos 0, unless lifo = true)
     max (int) : The max size of the queue
     condition (bool) : An optional flag that allows disabling the adding, which in turn will prevent for in loops from ever running and save performance where not needed
     lifo (bool) : An optional flag that allows to change the behavior from First In Last Out (default and consistent with pine scripts history operator with most recent elements at index 0) to a more common and resource efficient approach in programming languages: Last In First Out 
  Returns: The queue passed as param id
 method enqueue(id, item, max, condition, lifo) 
  Namespace types: line 
  Parameters:
     id (line ) : The array that is used as queue
     item (line) : The item to enqueue (at pos 0, unless lifo = true)
     max (int) : The max size of the queue
     condition (bool) : An optional flag that allows disabling the adding, which in turn will prevent for in loops from ever running and save performance where not needed
     lifo (bool) : An optional flag that allows to change the behavior from First In Last Out (default and consistent with pine scripts history operator with most recent elements at index 0) to a more common and resource efficient approach in programming languages: Last In First Out 
  Returns: The queue passed as param id
 method enqueue(id, item, max, condition, lifo) 
  Namespace types: box 
  Parameters:
     id (box ) : The array that is used as queue
     item (box) : The item to enqueue (at pos 0, unless lifo = true)
     max (int) : The max size of the queue
     condition (bool) : An optional flag that allows disabling the adding, which in turn will prevent for in loops from ever running and save performance where not needed
     lifo (bool) : An optional flag that allows to change the behavior from First In Last Out (default and consistent with pine scripts history operator with most recent elements at index 0) to a more common and resource efficient approach in programming languages: Last In First Out 
  Returns: The queue passed as param id
lib_unitLibrary   "lib_unit" 
functions for assertions and unit testing
 method init(this) 
  Namespace types: Test
  Parameters:
     this (Test) 
 method is_true(this, expression, message) 
  assert that expression is true, if it's false a runtime error will be thrown
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (bool) : The value to be true
     message (string) : The message to print in the runtime error
 method is_false(this, expression, message) 
  assert that expression is false, if it's true a runtime error will be thrown
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (bool) : The value to be false
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (string) : The value to test
     expected (string) : The expected value
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (int) : The value to test
     expected (int) : The expected value
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (float) : The value to test
     expected (float) : The expected value
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown. This version is testing length, order and values
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (string ) : The array to test 
     expected (string ) : The expected array
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown. This version is testing length, order and values
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (int ) : The array to test 
     expected (int ) : The expected array
     message (string) : The message to print in the runtime error
 method equals(this, expression, expected, message) 
  assert if expression and expected are equal, if they don't match a runtime error will be thrown. This version is testing length, order and values
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (float ) : The array to test 
     expected (float ) : The expected array
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (string) : The value to test 
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (int) : The value to test 
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (float) : The value to test 
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (string ) : The value to test 
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (int ) : The value to test 
     message (string) : The message to print in the runtime error
 method not_na(this, expression, message) 
  assert if expression is not na, if it is a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression (float ) : The value to test 
     message (string) : The message to print in the runtime error
 method gt(this, expression1, expression2, message) 
  assert that expression1 > expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (int) : The value that should be greater
     expression2 (int) : The value that should be lesser
     message (string) : The message to print in the runtime error
 method gt(this, expression1, expression2, message) 
  assert that expression1 > expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (float) : The value that should be greater
     expression2 (int) : The value that should be lesser
     message (string) : The message to print in the runtime error
 method gte(this, expression1, expression2, message) 
  assert that expression1 >= expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (int) : The value that should be greater or equal
     expression2 (int) : The value that should be lesser or equal
     message (string) : The message to print in the runtime error
 method gte(this, expression1, expression2, message) 
  assert that expression1 >= expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (float) : The value that should be greater or equal 
     expression2 (int) : The value that should be lesser or equal
     message (string) : The message to print in the runtime error
 method lt(this, expression1, expression2, message) 
  assert that expression1 < expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (int) : The value that should be lesser
     expression2 (int) : The value that should be greater
     message (string) : The message to print in the runtime error
 method lt(this, expression1, expression2, message) 
  assert that expression1 < expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (float) : The value that should be lesser
     expression2 (int) : The value that should be greater
     message (string) : The message to print in the runtime error
 method lte(this, expression1, expression2, message) 
  assert that expression1 <= expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (int) : The value that should be lesser or equal
     expression2 (int) : The value that should be greater or equal
     message (string) : The message to print in the runtime error
 method lte(this, expression1, expression2, message) 
  assert that expression1 <= expression2, if it is not, a runtime error will be thrown.
  Namespace types: Test
  Parameters:
     this (Test) 
     expression1 (float) : The value that should be lesser or equal 
     expression2 (int) : The value that should be greater or equal
     message (string) : The message to print in the runtime error
 Test 
  Fields:
     strict (series__bool) 
     verbose (series__bool) 
     logger (|robbatt/lib_log/2;Logger|#OBJ)
lib_logLibrary   "lib_log" 
library for logging and debugging pine scripts
 method init(this) 
  Namespace types: Logger
  Parameters:
     this (Logger) 
 method debug(this, message, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger to add the entry to
     message (string) : The Message to add
     condition (bool) : optional flag to enable disable logging of this entry dynamically (default: true)
 method info(this, message, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger to add the entry to
     message (string) : The Message to add
     condition (bool) : optional flag to enable disable logging of this entry dynamically (default: true)
 method success(this, message, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger to add the entry to
     message (string) : The Message to add
     condition (bool) : optional flag to enable disable logging of this entry dynamically (default: true)
 method warning(this, message, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger to add the entry to
     message (string) : The Message to add
     condition (bool) : optional flag to enable disable logging of this entry dynamically (default: true)
 method error(this, message, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger to add the entry to
     message (string) : The Message to add
     condition (bool) : optional flag to enable disable logging of this entry dynamically (default: true)
 method debug_bar(this, message, bar, y, y_offset, last_only, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger object to check global min level condition
     message (string) : The string to print
     bar (int) : The bar to print the label at (default: bar_index)
     y (float) : The price value to print at (default: high)
     y_offset (float) : A price offset from y if you want to print multiple labels at the same spot
     last_only (bool) 
     condition (bool) 
 method info_bar(this, message, bar, y, y_offset, last_only, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger object to check global min level condition
     message (string) : The string to print
     bar (int) : The bar to print the label at (default: bar_index)
     y (float) : The price value to print at (default: high)
     y_offset (float) : A price offset from y if you want to print multiple labels at the same spot
     last_only (bool) 
     condition (bool) 
 method success_bar(this, message, bar, y, y_offset, last_only, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger object to check global min level condition
     message (string) : The string to print
     bar (int) : The bar to print the label at (default: bar_index)
     y (float) : The price value to print at (default: high)
     y_offset (float) : A price offset from y if you want to print multiple labels at the same spot
     last_only (bool) 
     condition (bool) 
 method warning_bar(this, message, bar, y, y_offset, last_only, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger object to check global min level condition
     message (string) : The string to print
     bar (int) : The bar to print the label at (default: bar_index)
     y (float) : The price value to print at (default: high)
     y_offset (float) : A price offset from y if you want to print multiple labels at the same spot
     last_only (bool) 
     condition (bool) 
 method error_bar(this, message, bar, y, y_offset, last_only, condition) 
  Namespace types: Logger
  Parameters:
     this (Logger) : Logger object to check global min level condition
     message (string) : The string to print
     bar (int) : The bar to print the label at (default: bar_index)
     y (float) : The price value to print at (default: high)
     y_offset (float) : A price offset from y if you want to print multiple labels at the same spot
     last_only (bool) 
     condition (bool) 
 LogEntry 
  Fields:
     timestamp (series__integer) 
     bar (series__integer) 
     level (series__integer) 
     message (series__string) 
 Logger 
  Fields:
     min_level (series__integer) 
     color_logs (series__bool) 
     max_lines (series__integer) 
     line_idx (series__integer) 
     table_pos (series__string) 
     display (series__table) 
     log (array__|LogEntry|#OBJ)
DerivativeAlertPlaceHoldersLibrary   "DerivativeAlertPlaceHolders" 
TODO: Creation of Placeholders for Alerts, for using in FNO segment.
 BasicPH(CustomMessage) 
  Parameters:
     CustomMessage (string) : TODO: Requires Custom Input of Message
  Returns: TODO: String with PH
 CustomPlaceHoldersFNO(CustomInputMessage, InputPrice) 
  Parameters:
     CustomInputMessage (string) : TODO: Requires Custom Input of Message
     InputPrice (float) 
  Returns: TODO: Alert String with PH used in major FNO alert Segments
VolatilityIndicatorsLibrary   "VolatilityIndicators" 
This is a library of  Volatility Indicators .
It aims to facilitate the grouping of this category of indicators, and also offer the customized supply of
the parameters and sources, not being restricted to just the closing price.
@Thanks and credits:
1. Dynamic Zones: Leo Zamansky, Ph.D., and David Stendahl
2. Deviation: Karl Pearson (code by TradingView)
3. Variance: Ronald Fisher (code by TradingView)
4. Z-score: Veronique Valcu (code by HPotter)
5. Standard deviation: Ronald Fisher (code by TradingView)
6. ATR (Average True Range): J. Welles Wilder (code by TradingView)
7. ATRP (Average True Range Percent): millerrh
8. Historical Volatility: HPotter
9. Min-Max Scale Normalization: gorx1
10. Mean Normalization: gorx1
11. Standardization: gorx1
12. Scaling to unit length: gorx1
13. LS Volatility Index: Alexandre Wolwacz (Stormer), Fabrício Lorenz, Fábio Figueiredo (Vlad) (code by me)
14. Bollinger Bands: John Bollinger (code by TradingView)
15. Bollinger Bands %: John Bollinger (code by TradingView)
16. Bollinger Bands Width: John Bollinger (code by TradingView)
 dev(source, length, anotherSource) 
  Deviation. Measure the difference between a source in relation to another source
  Parameters:
     source (float) 
     length (simple int) : (int) Sequential period to calculate the deviation
     anotherSource (float) : (float) Source to compare
  Returns: (float) Bollinger Bands Width
 variance(src, mean, length, biased, degreesOfFreedom) 
  Variance. A statistical measurement of the spread between numbers in a data set. More specifically,
variance measures how far each number in the set is from the mean (average), and thus from every other number in the set.
Variance is often depicted by this symbol: σ2. It is used by both analysts and traders to determine volatility and market security.
  Parameters:
     src (float) : (float) Source to calculate variance
     mean (float) : (float) Mean (Moving average)
     length (simple int) : (int) The sequential period to calcule the variance (number of values in data set)
     biased (simple bool) : (bool) Defines the type of standard deviation. If true, uses biased sample variance (n),
     degreesOfFreedom (simple int) : (int)  Degrees of freedom. The number of values in the final calculation of a statistic that are free to vary.
Default value is n-1, where n here is length. Only applies when biased parameter is defined as true.
  Returns: (float) Standard deviation
 stDev(src, length, mean, biased, degreesOfFreedom) 
  Measure the Standard deviation from a source in relation to it's moving average.
In this implementation, you pass the average as a parameter, allowing a more personalized calculation.
  Parameters:
     src (float) : (float) Source to calculate standard deviation
     length (simple int) : (int) The sequential period to calcule the standard deviation
     mean (float) : (float) Moving average.
     biased (simple bool) : (bool) Defines the type of standard deviation. If true, uses biased sample variance (n),
else uses unbiased sample variance (n-1 or another value, as long as it is in the range between 1 and n-1), where n=length.
     degreesOfFreedom (simple int) : (int)  Degrees of freedom. The number of values in the final calculation of a statistic that are free to vary.
Default value is n-1, where n here is length.
  Returns: (float) Standard deviation
 zscore(src, mean, length, biased, degreesOfFreedom) 
  Z-Score. A z-score is a statistical measurement that indicates how many standard deviations a data point is from
the mean of a data set. It is also known as a standard score. The formula for calculating a z-score is (x - μ) / σ,
where x is the individual data point, μ is the mean of the data set, and σ is the standard deviation of the data set.
Z-scores are useful in identifying outliers or extreme values in a data set. A positive z-score indicates that the
data point is above the mean, while a negative z-score indicates that the data point is below the mean. A z-score of
0 indicates that the data point is equal to the mean.
Z-scores are often used in hypothesis testing and determining confidence intervals. They can also be used to compare
data sets with different units or scales, as the z-score standardizes the data. Overall, z-scores provide a way to
measure the relative position of a data point in a data
  Parameters:
     src (float) : (float) Source to calculate z-score
     mean (float) : (float) Moving average.
     length (simple int) : (int) The sequential period to calcule the standard deviation
     biased (simple bool) : (bool) Defines the type of standard deviation. If true, uses biased sample variance (n),
else uses unbiased sample variance (n-1 or another value, as long as it is in the range between 1 and n-1), where n=length.
     degreesOfFreedom (simple int) : (int)  Degrees of freedom. The number of values in the final calculation of a statistic that are free to vary.
Default value is n-1, where n here is length.
  Returns: (float) Z-score
 atr(source, length) 
  ATR: Average True Range. Customized version with source parameter.
  Parameters:
     source (float) : (float) Source
     length (simple int) : (int) Length (number of bars back)
  Returns: (float) ATR
 atrp(length, sourceP) 
  ATRP (Average True Range Percent)
  Parameters:
     length (simple int) : (int) Length (number of bars back) for ATR
     sourceP (float) : (float) Source for calculating percentage relativity
  Returns: (float) ATRP
 atrp(source, length, sourceP) 
  ATRP (Average True Range Percent). Customized version with source parameter.
  Parameters:
     source (float) : (float) Source for ATR
     length (simple int) : (int) Length (number of bars back) for ATR
     sourceP (float) : (float) Source for calculating percentage relativity
  Returns: (float) ATRP
 historicalVolatility(lengthATR, lengthHist) 
  Historical Volatility
  Parameters:
     lengthATR (simple int) : (int) Length (number of bars back) for ATR
     lengthHist (simple int) : (int) Length (number of bars back) for Historical Volatility
  Returns: (float) Historical Volatility
 historicalVolatility(source, lengthATR, lengthHist) 
  Historical Volatility
  Parameters:
     source (float) : (float) Source for ATR
     lengthATR (simple int) : (int) Length (number of bars back) for ATR
     lengthHist (simple int) : (int) Length (number of bars back) for Historical Volatility
  Returns: (float) Historical Volatility
 minMaxNormalization(src, numbars) 
  Min-Max Scale Normalization. Maximum and minimum values are taken from the sequential range of
numbars bars back, where numbars is a number defined by the user.
  Parameters:
     src (float) : (float) Source to normalize
     numbars (simple int) : (int) Numbers of sequential bars back to seek for lowest and hightest values.
  Returns: (float) Normalized value
 minMaxNormalization(src, numbars, minimumLimit, maximumLimit) 
  Min-Max Scale Normalization. Maximum and minimum values are taken from the sequential range of
numbars bars back, where numbars is a number defined by the user.
In this implementation, the user explicitly provides the desired minimum (min) and maximum (max) values for the scale,
rather than using the minimum and maximum values from the data.
  Parameters:
     src (float) : (float) Source to normalize
     numbars (simple int) : (int) Numbers of sequential bars back to seek for lowest and hightest values.
     minimumLimit (simple float) : (float) Minimum value to scale
     maximumLimit (simple float) : (float) Maximum value to scale
  Returns: (float) Normalized value
 meanNormalization(src, numbars, mean) 
  Mean Normalization
  Parameters:
     src (float) : (float) Source to normalize
     numbars (simple int) : (int) Numbers of sequential bars back to seek for lowest and hightest values.
     mean (float) : (float) Mean of source
  Returns: (float) Normalized value
 standardization(src, mean, stDev) 
  Standardization (Z-score Normalization). How "outside the mean" values relate to the standard deviation (ratio between first and second)
  Parameters:
     src (float) : (float) Source to normalize
     mean (float) : (float) Mean of source
     stDev (float) : (float) Standard Deviation
  Returns: (float) Normalized value
 scalingToUnitLength(src, numbars) 
  Scaling to unit length
  Parameters:
     src (float) : (float) Source to normalize
     numbars (simple int) : (int) Numbers of sequential bars back to seek for lowest and hightest values.
  Returns: (float) Normalized value
 lsVolatilityIndex(movingAverage, sourceHvol, lengthATR, lengthHist, lenNormal, lowerLimit, upperLimit) 
  LS Volatility Index. Measures the volatility of price in relation to an average.
  Parameters:
     movingAverage (float) : (float) A moving average
     sourceHvol (float) : (float) Source for calculating the historical volatility
     lengthATR (simple int) : (float) Length for calculating the ATR (Average True Range)
     lengthHist (simple int) : (float) Length for calculating the historical volatility
     lenNormal (simple int) : (float) Length for normalization
     lowerLimit (simple int) 
     upperLimit (simple int) 
  Returns: (float) LS Volatility Index
 lsVolatilityIndex(sourcePrice, movingAverage, sourceHvol, lengthATR, lengthHist, lenNormal, lowerLimit, upperLimit) 
  LS Volatility Index. Measures the volatility of price in relation to an average.
  Parameters:
     sourcePrice (float) : (float) Source for measure the distance
     movingAverage (float) : (float) A moving average
     sourceHvol (float) : (float) Source for calculating the historical volatility
     lengthATR (simple int) : (float) Length for calculating the ATR (Average True Range)
     lengthHist (simple int) : (float) Length for calculating the historical volatility
     lenNormal (simple int) 
     lowerLimit (simple int) 
     upperLimit (simple int) 
  Returns: (float) LS Volatility Index
 bollingerBands(src, length, mult, basis) 
  Bollinger Bands. A Bollinger Band is a technical analysis tool defined by a set of lines plotted
two standard deviations (positively and negatively) away from a simple moving average (SMA) of the security's price,
but can be adjusted to user preferences. In this version you can pass a customized basis (moving average), not only SMA.
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) The time period to be used in calculating the standard deviation
     mult (simple float) : (float) Multiplier used in standard deviation. Basically, the upper/lower bands are standard deviation multiplied by this.
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float) A tuple of Bollinger Bands, where index 1=basis; 2=basis+dev; 3=basis-dev; and dev=multiplier*stdev
 bollingerBands(src, length, aMult, basis) 
  Bollinger Bands. A Bollinger Band is a technical analysis tool defined by a set of lines plotted
two standard deviations (positively and negatively) away from a simple moving average (SMA) of the security's price,
but can be adjusted to user preferences. In this version you can pass a customized basis (moving average), not only SMA.
Also, various multipliers can be passed, thus getting more bands (instead of just 2).
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) The time period to be used in calculating the standard deviation
     aMult (float ) : (float ) An array of multiplies used in standard deviation. Basically, the upper/lower bands are standard deviation multiplied by this.
This array of multipliers permit the use of various bands, not only 2.
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float ) An array of Bollinger Bands, where:
index 1=basis; 2=basis+dev1; 3=basis-dev1; 4=basis+dev2, 5=basis-dev2, 6=basis+dev2, 7=basis-dev2, Nup=basis+devN, Nlow=basis-devN
and dev1, dev2, devN are ```multiplier N * stdev```
 bollingerBandsB(src, length, mult, basis) 
  Bollinger Bands %B - or Percent Bandwidth (%B).
Quantify or display where price (or another source) is in relation to the bands.
%B can be useful in identifying trends and trading signals.
Calculation:
%B = (Current Price - Lower Band) / (Upper Band - Lower Band)
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) The time period to be used in calculating the standard deviation
     mult (simple float) : (float) Multiplier used in standard deviation
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float) Bollinger Bands %B
 bollingerBandsB(src, length, aMult, basis) 
  Bollinger Bands %B - or Percent Bandwidth (%B).
Quantify or display where price (or another source) is in relation to the bands.
%B can be useful in identifying trends and trading signals.
Calculation
%B = (Current Price - Lower Band) / (Upper Band - Lower Band)
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) The time period to be used in calculating the standard deviation
     aMult (float ) : (float ) Array of multiplier used in standard deviation. Basically, the upper/lower bands are standard deviation multiplied by this.
This array of multipliers permit the use of various bands, not only 2.
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float ) An array of Bollinger Bands %B. The number of results in this array is equal the numbers of multipliers passed via parameter.
 bollingerBandsW(src, length, mult, basis) 
  Bollinger Bands Width. Serve as a way to quantitatively measure the width between the Upper and Lower Bands
Calculation:
Bollinger Bands Width = (Upper Band - Lower Band) / Middle Band
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) Sequential period to calculate the standard deviation
     mult (simple float) : (float) Multiplier used in standard deviation
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float) Bollinger Bands Width
 bollingerBandsW(src, length, aMult, basis) 
  Bollinger Bands Width. Serve as a way to quantitatively measure the width between the Upper and Lower Bands
Calculation
Bollinger Bands Width = (Upper Band - Lower Band) / Middle Band
  Parameters:
     src (float) : (float) Source to calculate standard deviation used in Bollinger Bands
     length (simple int) : (int) Sequential period to calculate the standard deviation
     aMult (float ) : (float ) Array of multiplier used in standard deviation. Basically, the upper/lower bands are standard deviation multiplied by this.
This array of multipliers permit the use of various bands, not only 2.
     basis (float) : (float) Basis of Bollinger Bands (a moving average)
  Returns: (float ) An array of Bollinger Bands Width. The number of results in this array is equal the numbers of multipliers passed via parameter.
 dinamicZone(source, sampleLength, pcntAbove, pcntBelow) 
  Get Dynamic Zones
  Parameters:
     source (float) : (float) Source
     sampleLength (simple int) : (int) Sample Length
     pcntAbove (simple float) : (float) Calculates the top of the dynamic zone, considering that the maximum values are above x% of the sample
     pcntBelow (simple float) : (float) Calculates the bottom of the dynamic zone, considering that the minimum values are below x% of the sample
  Returns:   A tuple with 3 series of values: (1) Upper Line of Dynamic Zone;
(2) Lower Line of Dynamic Zone; (3) Center of Dynamic Zone (x = 50%)
 Examples: 
Risk ManagementLibrary   "RiskManagement" 
This library keeps your money in check, and is used for testing and later on webhook-applications too. It has four volatility functions and two of them can be used to calculate a Stop-Loss, like Average True Range. It also can calculate Position Size, and the Risk Reward Ratio. But those calculations don't take leverage into account.
 position_size(portfolio, risk, entry, stop_loss, use_leverage, qty_as_integer) 
  This function calculates the definite amount of contracts/shares/units you should use to buy or sell.  This value can used by `strategy.entry(qty)` for example.
  Parameters:
     portfolio (float) : This is the total amount of the currency you own, and is also used by strategy.initial_capital, for example. The amount is needed to calculate the maximum risk you are willing to take per trade.
     risk (float) : This is the percentage of your Portfolio you willing to loose on a single trade. Possible values are between 0.1 and 100%. Same usecase with strategy(default_qty_type=strategy.percent_of_equity,default_qty_value=100), except its calculation the risk only.
     entry (float) : This is the limit-/market-price for the investment. In other words: The price per contract/share/unit you willing to buy or sell.
     stop_loss (float) : This is the limit-/market-price when to exit the trade, to minimize your losses.
     use_leverage (bool) : This value is optional. When not used or when set to false then this function will let you invest your portfolio at max. 
     qty_as_integer (bool) : This value is optional. When set to true this function will return a value used with integers. The largest integer less than or equal to the given number. Because some Broker/Exchanges let you trade hole contracts/shares/units only.
  Returns: float
 position_size_currency(portfolio, risk, entry, stop_loss) 
  This function calculates the definite amount of currency you should use when going long or short.
  Parameters:
     portfolio (float) : This is the total amount of the currency you own, and is also used by strategy.initial_capital, for example. The amount is needed to calculate the maximum risk you are willing to take per trade.
     risk (float) : This is the percentage of your Portfolio you willing to loose on a single trade. For example: 1 is 100% and 0,01 is 1%. Default amount is 0.02 (2%).
     entry (float) : This is the limit-/market-price for the current investment. In other words: The price per contract/share/units you willing to buy or sell.
     stop_loss (float) : This is the limit-/market-price when to exit the trade, to minimize your losses.
  Returns: float
 rrr(entry, stop_loss, take_profit) 
  This function calculates the Risk Reward Ratio. Common values are between 1.5 and 2.0 and you should not go lower except for very few special cases.
  Parameters:
     entry (float) : This is the limit-/market-price for the investment. In other words: The price per contract/share/unit you willing to buy or sell.
     stop_loss (float) : This is the limit-/market-price when to exit the trade, to minimize your losses.
     take_profit (float) : This is the limit-/market-price when to take profits.
  Returns: float
 change_in_price(length) 
  This function calculates the difference between price now and close price of the candle 'n' bars before that. If prices are very volatile but closed where they began, then this method would show zero volatility. Over many calculations, this method returns a reasonable measure of volatility, but will always be lower than those using the highs and lows.
  Parameters:
     length (int) : The length is needed to determine how many candles/bars back should take into account.
  Returns: float
 maximum_price_fluctuation(length) 
  This function measures volatility over most recent candles, which could be used as an estimate of risk. It may also be effective as the basis for a stop-loss or take-profit, like the ATR but it ignores the frequency of directional changes within the time interval. In other words: The difference between the highest high and lowest low over 'n' bars.
  Parameters:
     length (int) : The length is needed to determine how many candles/bars back should take into account.
  Returns: float
 absolute_price_changes(length) 
  This function measures volatility over most recent close prices. This is excellent for comparing volatility. It includes both frequency and magnitude. In other words: Sum of differences between second to last close price and last close price as absolute value for 'n' bars.
  Parameters:
     length (int) : The length is needed to determine how many candles/bars back should take into account.
  Returns: float
 annualized_volatility(length) 
  This function measures volatility over most recent close prices. Its the standard deviation of close over the past 'n' periods, times the square root of the number of periods in a year.
  Parameters:
     length (int) : The length is needed to determine how many candles/bars back should take into account.
  Returns: float
DebugLibrary   "Debug" 
Some debugging functions.
 label_on_each_bar(txt, y_position, label_size, label_color, txt_color) 
  Prints a label on every bar to show text. By default, only the last 50 labels will be shown on the chart. You can increase this amount up to a maximum of 500 by using the max_labels_count parameter in your script’s indicator() or strategy() declaration statement.
  Parameters:
     txt (string) : New label text.
     y_position (float) : New price of the label position.
     label_size (string) : Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge. Optional. Default value is `size.small`.
     label_color (color) : New label border and arrow color. Optional. Default value is `color.blue`.
     txt_color (color) : New text color. Optional. Default value is `color.white`.
  Returns: void
 label_on_last_bar(txt, y_position, label_size, label_color, txt_color, txt_align) 
  Prints one label at last bar to show text.
  Parameters:
     txt (string) : New label text.
     y_position (float) : New price of the label position.
     label_size (string) : Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge. Optional. Default value is `size.large`.
     label_color (color) : New label border and arrow color. Optional. Default value is `color.blue`.
     txt_color (color) : New text color. Optional. Default value is `color.white`.
     txt_align (string) : Label text alignment. Optional. Possible values: text.align_left, text.align_center, text.align_right. Default value is `text.align_center`.
  Returns: void
 table_symbol_informations(table_position, table_color, text_color) 
  Prints a table to show all the Symbol information, including its function names.
  Parameters:
     table_position (string) : Position of the table. Optional. Possible values are: position.top_left, position.top_center, position.top_right, position.middle_left, position.middle_center, position.middle_right, position.bottom_left, position.bottom_center, position.bottom_right. Default value is `position.middle_right`.
     table_color (color) : The background color of the table. Optional. The default is `color.yellow`.
     text_color (color) : The color of the text. Optional. The default is `color.black`.
  Returns: void
 table_array_float(array_float, table_columns, table_rows, table_position, table_color, txt_color, txt_size) 
  Prints a table to show float values of an array.
  Parameters:
     array_float (float ) : The array that will be showed.
     table_columns (int) 
     table_rows (int) : The number of rows to show the values.
     table_position (string) : Position of the table. Optional. Possible values are: position.top_left, position.top_center, position.top_right, position.middle_left, position.middle_center, position.middle_right, position.bottom_left, position.bottom_center, position.bottom_right. Default value is `position.bottom_center`.
     table_color (color) : The background color of the table. Optional. By default there is no color.
     txt_color (color) 
     txt_size (string) : Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge. Optional. Default value is `size.normal`.
  Returns: void
 table_array_int(array_float, table_columns, table_rows, table_position, table_color, txt_color, txt_size) 
  Prints a table to show int values of an array.
  Parameters:
     array_float (int ) : The array that will be showed.
     table_columns (int) 
     table_rows (int) : The number of rows to show the values.
     table_position (string) : Position of the table. Optional. Possible values are: position.top_left, position.top_center, position.top_right, position.middle_left, position.middle_center, position.middle_right, position.bottom_left, position.bottom_center, position.bottom_right. Default value is `position.bottom_center`.
     table_color (color) : The background color of the table. Optional. By default there is no color.
     txt_color (color) 
     txt_size (string) : Possible values: size.auto, size.tiny, size.small, size.normal, size.large, size.huge. Optional. Default value is `size.normal`.
  Returns: void
TooltipLibrary   "Tooltip" 
This library helps creating and managing nice looking data (key/value) tooltips that you can use for 
labels. The tooltips data key/value will align automatically. It is optional to convert the data to a values only string too.
 method addSpacesToKey(this) 
  Calculates the amount of spaces needed after the key to make it the key least 4 characters wide.
  Namespace types: Data
  Parameters:
     this (Data) : (Data)		The Data.
 method addTabs(this, longestKeyLength) 
  Calculates the amount of tabs to be used.
  Namespace types: Data
  Parameters:
     this (Data) : (Data)		The Data.
     longestKeyLength (int) 
 method longestKeyLength(this) 
  Returns the length of the longest key string in the array.
  Namespace types: Data 
  Parameters:
     this (Data ) : (Tooltip)	The object to work with.
@return 			(int)		The length of the key.
 method toString(tooltips, withKey) 
  Helper function for the tooltip.
  Namespace types: Data 
  Parameters:
     tooltips (Data ) 
     withKey (bool) : (bool)				Wether to create a string with keys in it.
@return			(string)			The string
 new() 
  Creates a new array to store tooltip data in
@return	(Data) 	The data array.
 Data 
  Key/Value pair for tooltips
  Fields:
     key (series string) 
     value (series string)
MyVolatilityBandsLibrary   "MyVolatilityBands" 
Just a lil' library of volatility bands that I use in some scripts
 bollingerbands(src, lkbk, mult, basis) 
  Bollinger Bands
  Parameters:
     src (float) : float
     lkbk (int) : int
     mult (float) : float
     basis (float) 
  Returns: Bollinger Bands
 donchianchannels(src, lkbk, band_width) 
  Donchian Channels
  Parameters:
     src (float) : float
     lkbk (int) : int
     band_width (float) : float
  Returns: Donchian Channels with an outer band of varying thickness adjusted by the band_width input
 doublehalfdonchianchannels(src, lkbk, divisor) 
  Double Half Donchian Channels
  Parameters:
     src (float) : float
     lkbk (int) : int
     divisor (float) : float
  Returns: two adjustable bases calculated using Donchian Channels calculation that act as a measure of volatility
PivotLibrary   "Pivot" 
This library helps you store and manage pivots.
 bias(isHigh, isHigher, prevWasHigher) 
  Helper function to calculate bias.
  Parameters:
     isHigh (bool) : (bool)		Wether the pivot is a pivot high or not.
     isHigher (bool) : (bool)		Wether the pivot is a higher pivot or not.
@return  		(bool) 		The bias (true = bullish, false = bearish, na = neutral).
     prevWasHigher (bool) 
 biasToString(bias) 
  Parameters:
     bias (bool) 
 biasToColor(bias, theme) 
  Parameters:
     bias (bool) 
     theme (Theme) 
 nameString(isHigh, isHigher) 
  Parameters:
     isHigh (bool) 
     isHigher (bool) 
 abbrString(isHigh, isHigher) 
  Parameters:
     isHigh (bool) 
     isHigher (bool) 
 tooltipString(y, isHigh, isHigher, bias, theme) 
  Parameters:
     y (float) 
     isHigh (bool) 
     isHigher (bool) 
     bias (bool) 
     theme (Theme) 
 createLabel(x, y, isHigh, isHigher, prevWasHigher, settings) 
  Parameters:
     x (int) 
     y (float) 
     isHigh (bool) 
     isHigher (bool) 
     prevWasHigher (bool) 
     settings (Settings) 
 new(x, y, isHigh, isHigher, settings) 
  Parameters:
     x (int) 
     y (float) 
     isHigh (bool) 
     isHigher (bool) 
     settings (Settings) 
 newArray(size, initialValue) 
  Parameters:
     size (int) 
     initialValue (Pivot) 
 method getFirst(this) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
 method getLast(this, isHigh) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     isHigh (bool) 
 method getLastHigh(this) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
 method getLastLow(this) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
 method getPrev(this, numBack, isHigh) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     numBack (int) 
     isHigh (bool) 
 method getPrevHigh(this, numBack) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     numBack (int) 
 method getPrevLow(this, numBack) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     numBack (int) 
 method getText(this) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
 method setX(this, value) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     value (int) 
 method setY(this, value) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     value (float) 
 method setXY(this, x, y) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     x (int) 
     y (float) 
 method setBias(this, value) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     value (int) 
 method setColor(this, value) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     value (color) 
 method setText(this, value) 
  Namespace types: Pivot
  Parameters:
     this (Pivot) 
     value (string) 
 method add(this, pivot) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     pivot (Pivot) 
 method updateLast(this, y, settings) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     y (float) 
     settings (Settings) 
 method update(this, y, isHigh, settings) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     y (float) 
     isHigh (bool) 
     settings (Settings) 
 Pivot 
  Stores Pivot data.
  Fields:
     x (series int) 
     y (series float) 
     isHigh (series bool) 
     isHigher (series bool) 
     bias (series bool) 
     lb (series label) 
 Theme 
  Attributes for customizable look and feel.
  Fields:
     size (series string) 
     colorDefault (series color) 
     colorNeutral (series color) 
     colorBullish (series color) 
     colorBearish (series color) 
     colored (series bool) 
     showTooltips (series bool) 
     showTooltipName (series bool) 
     showTooltipValue (series bool) 
     showTooltipBias (series bool) 
 Settings 
  All settings for the pivot.
  Fields:
     theme (Theme)
LYGLibraryLibrary   "LYGLibrary" 
A collection of custom tools & utility functions commonly used with my scripts
 getDecimals() 
  Calculates how many decimals are on the quote price of the current market
  Returns: The current decimal places on the market quote price
 truncate(number, decimalPlaces) 
  Truncates (cuts) excess decimal places
  Parameters:
     number (float) 
     decimalPlaces (simple float) 
  Returns: The given number truncated to the given decimalPlaces
 toWhole(number) 
  Converts pips into whole numbers
  Parameters:
     number (float) 
  Returns: The converted number
 toPips(number) 
  Converts whole numbers back into pips
  Parameters:
     number (float) 
  Returns: The converted number
 getPctChange(value1, value2, lookback) 
  Gets the percentage change between 2 float values over a given lookback period
  Parameters:
     value1 (float) 
     value2 (float) 
     lookback (int) 
 av_getPositionSize(balance, risk, stopPoints, conversionRate) 
  Calculates OANDA forex position size for AutoView based on the given parameters
  Parameters:
     balance (float) 
     risk (float) 
     stopPoints (float) 
     conversionRate (float) 
  Returns: The calculated position size (in units - only compatible with OANDA)
 bullFib(priceLow, priceHigh, fibRatio) 
  Calculates a bullish fibonacci value
  Parameters:
     priceLow (float) : The lowest price point
     priceHigh (float) : The highest price point
     fibRatio (float) : The fibonacci % ratio to calculate
  Returns: The fibonacci value of the given ratio between the two price points
 bearFib(priceLow, priceHigh, fibRatio) 
  Calculates a bearish fibonacci value
  Parameters:
     priceLow (float) : The lowest price point
     priceHigh (float) : The highest price point
     fibRatio (float) : The fibonacci % ratio to calculate
  Returns: The fibonacci value of the given ratio between the two price points
 getMA(length, maType) 
  Gets a Moving Average based on type (MUST BE CALLED ON EVERY CALCULATION)
  Parameters:
     length (simple int) 
     maType (string) 
  Returns: A moving average with the given parameters
 getEAP(atr) 
  Performs EAP stop loss size calculation (eg. ATR >= 20.0 and ATR < 30, returns 20)
  Parameters:
     atr (float) 
  Returns: The EAP SL converted ATR size
 getEAP2(atr) 
  Performs secondary EAP stop loss size calculation (eg. ATR < 40, add 5 pips, ATR between 40-50, add 10 pips etc)
  Parameters:
     atr (float) 
  Returns: The EAP SL converted ATR size
 barsAboveMA(lookback, ma) 
  Counts how many candles are above the MA
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are above the MA
 barsBelowMA(lookback, ma) 
  Counts how many candles are below the MA
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are below the EMA
 barsCrossedMA(lookback, ma) 
  Counts how many times the EMA was crossed recently
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many times price recently crossed the EMA
 getPullbackBarCount(lookback, direction) 
  Counts how many green & red bars have printed recently (ie. pullback count)
  Parameters:
     lookback (int) 
     direction (int) 
  Returns: The bar count of how many candles have retraced over the given lookback & direction
 getBodySize() 
  Gets the current candle's body size (in POINTS, divide by 10 to get pips)
  Returns: The current candle's body size in POINTS
 getTopWickSize() 
  Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
  Returns: The current candle's top wick size in POINTS
 getBottomWickSize() 
  Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
  Returns: The current candle's bottom wick size in POINTS
 getBodyPercent() 
  Gets the current candle's body size as a percentage of its entire size including its wicks
  Returns: The current candle's body size percentage
 isHammer(fib, colorMatch) 
  Checks if the current bar is a hammer candle based on the given parameters
  Parameters:
     fib (float) 
     colorMatch (bool) 
  Returns: A boolean - true if the current bar matches the requirements of a hammer candle
 isStar(fib, colorMatch) 
  Checks if the current bar is a shooting star candle based on the given parameters
  Parameters:
     fib (float) 
     colorMatch (bool) 
  Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
 isDoji(wickSize, bodySize) 
  Checks if the current bar is a doji candle based on the given parameters
  Parameters:
     wickSize (float) 
     bodySize (float) 
  Returns: A boolean - true if the current bar matches the requirements of a doji candle
 isBullishEC(allowance, rejectionWickSize, engulfWick) 
  Checks if the current bar is a bullish engulfing candle
  Parameters:
     allowance (float) 
     rejectionWickSize (float) 
     engulfWick (bool) 
  Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
 isBearishEC(allowance, rejectionWickSize, engulfWick) 
  Checks if the current bar is a bearish engulfing candle
  Parameters:
     allowance (float) 
     rejectionWickSize (float) 
     engulfWick (bool) 
  Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
 isInsideBar() 
  Detects inside bars
  Returns: Returns true if the current bar is an inside bar
 isOutsideBar() 
  Detects outside bars
  Returns: Returns true if the current bar is an outside bar
 barInSession(sess, useFilter) 
  Determines if the current price bar falls inside the specified session
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls within the given time session
 barOutSession(sess, useFilter) 
  Determines if the current price bar falls outside the specified session
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls outside the given time session
 dateFilter(startTime, endTime) 
  Determines if this bar's time falls within date filter range
  Parameters:
     startTime (int) 
     endTime (int) 
  Returns: A boolean - true if the current bar falls within the given dates
 dayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday) 
  Checks if the current bar's day is in the list of given days to analyze
  Parameters:
     monday (bool) 
     tuesday (bool) 
     wednesday (bool) 
     thursday (bool) 
     friday (bool) 
     saturday (bool) 
     sunday (bool) 
  Returns: A boolean - true if the current bar's day is one of the given days
 atrFilter(atrValue, maxSize) 
  Parameters:
     atrValue (float) 
     maxSize (float) 
 fillCell(tableID, column, row, title, value, bgcolor, txtcolor) 
  This updates the given table's cell with the given values
  Parameters:
     tableID (table) 
     column (int) 
     row (int) 
     title (string) 
     value (string) 
     bgcolor (color) 
     txtcolor (color) 
  Returns: A boolean - true if the current bar falls within the given dates
Mizar_LibraryThe  "Mizar_Library"  is a powerful tool designed for Pine Script™ programmer’s, providing a collection of general functions that facilitate the usage of Mizar’s DCA (Dollar-Cost-Averaging) bot system. 
To begin using the Mizar Library, you first need to import it into your indicator script. Insert the following line below your indicator initiation line: import Mizar_Trading/Mizar_Library/1 as mizar (mizar is the chosen alias).
In the import statement,  Mizar_Trading.Mizar_Library_v1  refers to the specific version of the Mizar Library you wish to use. Feel free to modify  mizar  to your preferred alias name.
Once the library is imported, you can leverage its functions by prefixing them with  mizar. . This will prompt auto-completion suggestions displaying all the available user-defined functions provided by the Mizar Library.
Now, let's delve into some of the key functions available in the Mizar Library:
 DCA_bot_msg(_cmd) 
The DCA_bot_msg function accepts an user-defined type (UDT) _cmd as a parameter and returns a string with the complete JSON command for a Mizar DCA bot.
  Parameters:
     _cmd (bot_params) : ::: User-defined type (UDT) that holds all the necessary information for the bot command.
  Returns: A string with the complete JSON command for a Mizar DCA bot.
 rounding_to_ticks(value, ticks, rounding_type) 
The rounding_to_ticks function rounds a calculated price to the nearest actual price based on the specified tick size.
  Parameters:
     value (float) : ::: The calculated price as float type, to be rounded to the nearest real price.
     ticks (float) : ::: The smallest possible price obtained through a request in your script.
     rounding_type (int) : ::: The rounding type for the price: 0 = closest real price, 1 = closest real price above, 2 = closest real price below.
  Returns: A float value representing the rounded price to the next tick.
 bot_params 
Bot_params is an user-defined type (UDT) that represents the parameters required for a Mizar DCA bot.
  Fields:
     bot_id (series string) : The ID number of your Mizar DCA bot.
     api_key (series string) : Your private API key from your Mizar account (keep it confidential!).
     action (series string) : The command to perform: "open" (standard) or "close"  optional .
     tp_perc (series string) : The take profit percentage in decimal form (1% = "0.01")  optional .
     base_asset (series string) : The cryptocurrency you want to buy (e.g., "BTC").
     quote_asset (series string) : The coin or fiat currency used for payment (e.g., "USDT" is standard if not specified)  optional .
     direction (series string) : The direction of the position: "long" or "short" (only applicable for two-way hedge bots)  optional .
To obtain the JSON command string for the alert_function call, you can use the DCA_bot_msg function provided by the library. Simply pass the cmd_msg UDT as an argument and assign the returned string value to a variable. 
Here's an example to illustrate the process:
// Import of the Mizar Library to use the included functions
import/Mizar_Trading/Mizar_Library/1 as mizar
// Example to set a variable called “cmd_msg” and all of its parameters
cmd_msg = mizar.bot_params. new() 
cmd_msg.action      := "open"
cmd_msg.api_key     := "top secret"
cmd_msg.bot_id      := "9999"
cmd_msg.base_asset  := "BTC"
cmd_msg.quote_asset := "USDT"
cmd_msg.direction   := "long"
cmd_msg.tp_perc     := "0.015"
// Calling the Mizar conversion function named “DCA_bot_msg()” with the cmd_msg as argument to receive the JSON command and save it in a string variable called “alert_msg”
alert_msg = mizar.DCA_bot_msg(cmd_msg)
Feel free to utilize (series) string variables instead of constant strings. By incorporating the Mizar Library into your Pine Script, you gain access to a powerful set of functions and can leverage them according to your specific requirements.
For additional help or support, you can join the Mizar Discord channel. There, you'll find a dedicated Pine Script channel where you can ask any questions related to Pine Script. 
MyMovingAveragesLibraryLibrary   "MyMovingAveragesLibrary" 
 alma(src, lkbk, alma_offset, alma_sigma) 
  ALMA - Arnaud Legoux Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
     alma_offset (simple float) 
     alma_sigma (simple float) : float
  Returns: moving average
 frama(src, lkbk, FC, SC) 
  FRAMA - Fractal Adaptive Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
     FC (int) : int
     SC (int) : int
  Returns: moving average
 kama(src, lkbk, kamafastend, kamaslowend) 
  KAMA - Kaufman Adaptive Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
     kamafastend (int) : int
     kamaslowend (int) : int
  Returns: moving average
 ema(src, lkbk) 
  EMA - Exponential Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 dema(src, lkbk) 
  DEMA - Double Exponential Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 tema(src, lkbk) 
  TEMA - Triple Exponential Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 hma(src, lkbk) 
  HMA - Hull Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 jma(src, lkbk, jurik_power, jurik_phase) 
  JMA - Jurik Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
     jurik_power (int) 
     jurik_phase (float) 
  Returns: moving average
 laguerre(src, alpha) 
  Laguerre Filter
  Parameters:
     src (float) : float
     alpha (float) : float
  Returns: moving average
 lsma(src, lkbk, lsma_offset) 
  LSMA - Least Squares Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
     lsma_offset (simple int) : int
  Returns: moving average
 mcginley(src, lkbk) 
  McGinley Dynamic
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 mf(src, lkbk, mf_feedback, mf_beta, mf_z) 
  Modular Filter
  Parameters:
     src (float) : float
     lkbk (int) : int
     mf_feedback (bool) : float
     mf_beta (float) : boolean
     mf_z (float) : float
  Returns: moving average
 rdma(src) 
  RDMA - RexDog Moving Average (RDA, as he calls it)
  Parameters:
     src (float) : flot
  Returns: moving average
 sma(src, lkbk) 
  SMA - Simple Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
  Returns: moving average
 smma(src, lkbk) 
  SMMA - Smoothed Moving Average (known as RMA in TradingView)
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 t3(src, lkbk) 
  T3 Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 tma(src, lkbk) 
  TMA - Triangular Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 vama(src, lkbk, vol_lkbk) 
  VAMA - Volatility-Adjusted Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
     vol_lkbk (int) : int
 vwma(src, lkbk) 
  VWMA - Volume-Weighted Moving Average
  Parameters:
     src (float) : float
     lkbk (simple int) : int
  Returns: moving average
 mf_zlagma(src, lkbk) 
  Zero-Lag Moving Average
  Parameters:
     src (float) : float
     lkbk (int) : int
  Returns: moving average
Absolute ZigZag LibLibrary   "Absolute_ZigZag_Lib" 
This ZigZag Library is a Bit different. Instead of using percentages or looking more than 1 bar left or right, this Zigzag library calculates pivots by just looking at the current bar highs and lows and the ones of one bar earlier. 
This is the most accurate way of calculating pivots and it also eliminates lag. 
The library also features a solution for bars that have both a higher high and a higher low like seen below.
  
You can also use your own colors for the labels and the lines.
  
You can also quickly select a one-colored theme without changing all colors at once
  
 method isHigherHigh(this) 
  Checks if current pivot is a higher high
  Namespace types: Pivot
  Parameters:
     this (Pivot) : (Pivot)         The object to work with.
@return          (bool)          True if the pivot is a higher high, false if not.
 method isLowerHigh(this) 
  Checks if current pivot is a lower high
  Namespace types: Pivot
  Parameters:
     this (Pivot) : (Pivot)         The object to work with.
@return          (bool)          True if the pivot is a lower high, false if not.
 method isHigherLow(this) 
  Checks if current pivot is a higher low
  Namespace types: Pivot
  Parameters:
     this (Pivot) : (Pivot)         The object to work with.
@return          (bool)          True if the pivot is a higher low, false if not.
 method isLowerLow(this) 
  Checks if current pivot is a lower low
  Namespace types: Pivot
  Parameters:
     this (Pivot) : (Pivot)         The object to work with.
@return          (bool)          True if the pivot is a lower low, false if not.
 method getLastPivotHigh(this) 
  Gets the last Pivot High
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) : (array)  The object to work with.
@return          (Pivot)         The latest Pivot High
 method getLastPivotLow(this) 
  Gets the last Pivot Low
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) : (array)  The object to work with.
@return          (Pivot)         The latest Pivot Low
 method prev(this, index) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     index (int) 
 method last(this, throwError) 
  Namespace types: Pivot 
  Parameters:
     this (Pivot ) 
     throwError (bool) 
 new(highFirst, theme) 
  Parameters:
     highFirst (bool) 
     theme (Theme) 
 getLowerTimeframePeriod() 
 Theme 
  Used to create a (color) theme to draw Zigzag
  Fields:
     colorDefault (series color) 
     colorNeutral (series color) 
     colorBullish (series color) 
     colorBearish (series color) 
     coloredLines (series bool) 
 Point 
  Used to determine a coordination on the chart
  Fields:
     x (series int) 
     y (series float) 
 Pivot 
  Used to determine pivots on the chart
  Fields:
     point (Point) 
     isHigh (series bool) 
     isHigher (series bool) 
     ln (series line) 
     lb (series label)
GeneratorBetaLib:Generator
This library generate levels that could be used inside SNG scripts and strategies. Also uses beta version of SNG Types library






















