OutofOptionsHelperLibraryLibrary   "OutofOptionsHelperLibrary" 
Helper library for my indicators/strategies
 isUp(i) 
  is Up candle
  Parameters:
     i (int) 
  Returns: bool
 isDown(i) 
  is Down candle
  Parameters:
     i (int) 
  Returns: bool
 TF(t) 
  format time into date/time string
  Parameters:
     t (int) 
  Returns: string
 S(s) 
  format data to string
  Parameters:
     s (float) 
  Returns: string
 S(s) 
  format data to string
  Parameters:
     s (int) 
  Returns: string
 S(s) 
  format data to string
  Parameters:
     s (bool) 
  Returns: string
 barClose(price, up, strict) 
  Determine if candle closed above/below price
  Parameters:
     price (float) 
     up (bool) 
     strict (bool) : bool if close over is required or if close at the price is good enough
  Returns: bool
 processSweep(L, price, up, leftB) 
  Determine how many liquidity sweeps were made
  Parameters:
     L (array) 
     price (float) 
     up (bool) 
     leftB (int) 
  Returns: int
 liquidity 
  Fields:
     price (series float) 
     time (series int) 
     oprice (series float) 
     otime (series int) 
     sweeps (series int) 
     bars_swept (series int)
Debugging
PineConnectorLibrary   "PineConnector" 
This library is a comprehensive alert webhook text generator for PineConnector. It contains every possible alert syntax variation from the documentation, along with some debugging functions.
To use it, just import the library (eg. "import ZenAndTheArtOfTrading/PineConnector/1 as pc") and use pc.buy(licenseID) to send an alert off to PineConnector - assuming all your webhooks etc are set up correctly.
View the PineConnector documentation for more information on how to send the commands you're looking to send (all of this library's function names match the documentation).
 all() 
  Usage: pc.buy(pc_id, freq=pc.all())
  Returns: "all"
 once_per_bar() 
  Usage: pc.buy(pc_id, freq=pc.once_per_bar())
  Returns: "once_per_bar"
 once_per_bar_close() 
  Usage: pc.buy(pc_id, freq=pc.once_per_bar_close())
  Returns: "once_per_bar_close"
 na0(value) 
  Checks if given value is either 'na' or 0. Useful for streamlining scripts with float user setting inputs which default values to 0 since na is unavailable as a user input default.
  Parameters:
     value (float) : The value to check
  Returns: True if the given value is 0 or na
 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, decimals) 
  Truncates the given number. Required params: mumber.
  Parameters:
     number (float) : Number to truncate
     decimals (int) : Decimal places to cut down to
  Returns: The input number, but as a string truncated to X decimals
 getPipSize(multiplier) 
  Calculates the pip size of the current market.
  Parameters:
     multiplier (int) : The mintick point multiplier (1 by default, 10 for FX/Crypto/CFD but can be used to override when certain markets require)
  Returns: The pip size for the current market
 toWhole(number) 
  Converts pips into whole numbers. Required params: number.
  Parameters:
     number (float) : The pip number to convert into a whole number
  Returns: The converted number
 toPips(number) 
  Converts whole numbers back into pips. Required params: number.
  Parameters:
     number (float) : The whole number to convert into pips
  Returns: The converted number
 debug(txt, tooltip, displayLabel) 
  Prints to console and generates a debug label with the given text. Required params: txt.
  Parameters:
     txt (string) : Text to display
     tooltip (string) : Tooltip to display (optional)
     displayLabel (bool) : Turns on/off chart label (default: off)
  Returns: Nothing
 order(licenseID, command, symbol, parameters, accfilter, comment, secret, freq, debug) 
  Generates an alert string. Required params: licenseID, command.
  Parameters:
     licenseID (string) : Your PC license ID
     command (string) : Command to send
     symbol (string) : The symbol to trigger this order on
     parameters (string) : Other optional parameters to include
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: An alert string with valid PC syntax based on supplied parameters
 market_order(licenseID, buy, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a market entry alert with relevant syntax commands. Required params: licenseID, buy, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     buy (bool) : true=buy/long, false=sell/short
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A market order alert string with valid PC syntax based on supplied parameters
 buy(licenseID, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a market buy alert with relevant syntax commands. Required params: licenseID, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A market order alert string with valid PC syntax based on supplied parameters
 sell(licenseID, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a market sell alert with relevant syntax commands. Required params: licenseID, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A market order alert string with valid PC syntax based on supplied parameters
 closeall(licenseID, comment, secret, freq, debug) 
  Closes all open trades at market regardless of symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closealleaoff(licenseID, comment, secret, freq, debug) 
  Closes all open trades at market regardless of symbol, and turns the EA off. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closelong(licenseID, symbol, comment, secret, freq, debug) 
  Closes all long trades at market for the given symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closeshort(licenseID, symbol, comment, secret, freq, debug) 
  Closes all open short trades at market for the given symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closelongshort(licenseID, symbol, comment, secret, freq, debug) 
  Closes all open trades at market for the given symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closelongbuy(licenseID, risk, symbol, comment, secret, freq, debug) 
  Close all long positions and open a new long at market for the given symbol with given risk/contracts. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : Risk or contracts (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closeshortsell(licenseID, risk, symbol, comment, secret, freq, debug) 
  Close all short positions and open a new short at market for the given symbol with given risk/contracts. Required params: licenseID, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : Risk or contracts (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 newsltplong(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any open long trades on the given symbol with the given values. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 newsltpshort(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any open short trades on the given symbol with the given values. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closelongpct(licenseID, symbol, comment, secret, freq, debug) 
  Close a percentage of open long positions (according to EA settings). Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closeshortpct(licenseID, symbol, comment, secret, freq, debug) 
  Close a percentage of open short positions (according to EA settings). Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closelongvol(licenseID, risk, symbol, comment, secret, freq, debug) 
  Close all open long contracts on the current symbol until the given risk value is remaining. Required params: licenseID, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : The quantity to leave remaining
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 closeshortvol(licenseID, risk, symbol, comment, secret, freq, debug) 
  Close all open short contracts on the current symbol until the given risk value is remaining. Required params: licenseID, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     risk (float) : The quantity to leave remaining
     symbol (string) : Symbol to act on (defaults to current symbol)
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 limit_order(licenseID, buy, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a limit order alert with relevant syntax commands. Required params: licenseID, buy, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     buy (bool) : true=buy/long, false=sell/short
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A limit order alert string with valid PC syntax based on supplied parameters
 buylimit(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a buylimit order alert with relevant syntax commands. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A limit order alert string with valid PC syntax based on supplied parameters
 selllimit(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a selllimit order alert with relevant syntax commands. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A limit order alert string with valid PC syntax based on supplied parameters
 stop_order(licenseID, buy, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a stop order alert with relevant syntax commands. Required params: licenseID, buy, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     buy (bool) : true=buy/long, false=sell/short
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 buystop(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a buystop order alert with relevant syntax commands. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 sellstop(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Generates a sellstop order alert with relevant syntax commands. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancel_neworder(licenseID, order, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Cancel + place new order template function.
  Parameters:
     licenseID (string) : Your PC license ID
     order (string) : Cancel order type
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancellongbuystop(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all long orders with the specified symbol and places a new buystop order. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancellongbuylimit(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all long orders with the specified symbol and places a new buylimit order. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancelshortsellstop(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all short orders with the specified symbol and places a sellstop order. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancelshortselllimit(licenseID, price, risk, sl, tp, betrigger, beoffset, spread, trailtrig, traildist, trailstep, atrtimeframe, atrperiod, atrmultiplier, atrshift, atrtrigger, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all short orders with the specified symbol and places a selllimit order. Required params: licenseID, price, risk.
  Parameters:
     licenseID (string) : Your PC license ID
     price (float) : Price or pips to set limit order (according to EA settings)
     risk (float) : Risk quantity (according to EA settings)
     sl (float) : Stop loss distance in pips or price
     tp (float) : Take profit distance in pips or price
     betrigger (float) : Breakeven will be activated after the position gains this number of pips
     beoffset (float) : Offset from entry price. This is the amount of pips you'd like to protect
     spread (float) : Enter the position only if the spread is equal or less than the specified value in pips
     trailtrig (float) : Trailing stop-loss will be activated after a trade gains this number of pips
     traildist (float) : Distance of the trailing stop-loss from current price
     trailstep (float) : Moves trailing stop-loss once price moves to favourable by a specified number of pips
     atrtimeframe (int) : ATR Trailing Stop timeframe, only updates once per bar close. Options: 1, 5, 15, 30, 60, 240, 1440
     atrperiod (int) : ATR averaging period
     atrmultiplier (float) : Multiple of ATR to utilise in the new SL computation, default = 1
     atrshift (int) : Relative shift of price information, 0 uses latest candle, 1 uses second last, etc. Default = 0
     atrtrigger (int) : Activate the trigger of ATR Trailing after market moves favourably by a number of pips. Default = 0 (instant)
     symbol (string) : The symbol to trigger this order on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment (maximum 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A stop order alert string with valid PC syntax based on supplied parameters
 cancellong(licenseID, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all pending long orders with the specified symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A cancel long alert command
 cancelshort(licenseID, symbol, accfilter, comment, secret, freq, debug) 
  Cancels all pending short orders with the specified symbol. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: A cancel short alert command
 newsltpbuystop(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any pending buy stop orders on the given symbol. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 newsltpbuylimit(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any pending buy limit orders on the given symbol. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 newsltpsellstop(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any pending sell stop orders on the given symbol. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 newsltpselllimit(licenseID, sl, tp, symbol, accfilter, comment, secret, freq, debug) 
  Updates the stop loss and/or take profit of any pending sell limit orders on the given symbol. Required params: licenseID, sl and/or tp.
  Parameters:
     licenseID (string) : Your PC license ID
     sl (float) : Stop loss pips or price (according to EA settings)
     tp (float) : Take profit pips or price (according to EA settings)
     symbol (string) : Symbol to act on (defaults to current symbol)
     accfilter (float) : Optional minimum account balance filter
     comment (string) : Optional comment to include (max 20 characters)
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 eaoff(licenseID, secret, freq, debug) 
  Turns the EA off. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
 eaon(licenseID, secret, freq, debug) 
  Turns the EA on. Required params: licenseID.
  Parameters:
     licenseID (string) : Your PC license ID
     secret (string) : Optional secret key (must be enabled in dashboard)
     freq (string) : Alert frequency. Default = "all", options = "once_per_bar", "once_per_bar_close" and "none"
     debug (bool) : Turns on/off debug label
  Returns: The required alert syntax as a string
UtilityLibrary   "Utility" 
A utility library for various trading tools such as signal generation, custom indicators, and multi-condition crossovers.
 multiCrossover(source1, source2, threshold1, threshold2) 
  multiCrossover
@description Detects multi-condition crossovers between two sources with threshold filters.
  Parameters:
     source1 (float) : The first data series to compare.
     source2 (float) : The second data series to compare.
     threshold1 (float) : A value that source1 must exceed to trigger the crossover.
     threshold2 (float) : A value that source2 must exceed to trigger the crossunder.
  Returns: A tuple: (crossUp, crossDown) where crossUp is a boolean for upward crossover, and crossDown is for downward crossover.
 macdCustom(source, fastLength, slowLength, signalLength, macdThresh) 
  macdCustom
@description Calculates custom MACD signals based on thresholds.
  Parameters:
     source (float) : The price data or input series.
     fastLength (simple int) : The length of the fast EMA.
     slowLength (simple int) : The length of the slow EMA.
     signalLength (simple int) : The signal line length.
     macdThresh (float) : A threshold for the MACD line to confirm buy/sell signals.
  Returns: A tuple: (macdBuySignal, macdSellSignal) where macdBuySignal is true when MACD crosses above, and macdSellSignal is true when MACD crosses below the signal line.
 combinedMacdRsi(source, fastLength, slowLength, signalLength, rsiLength, macdThresh, rsiThresh) 
  combinedMacdRsi
@description Generates combined signals from MACD and RSI indicators.
  Parameters:
     source (float) : The price data or input series.
     fastLength (simple int) : The length of the fast EMA for MACD.
     slowLength (simple int) : The length of the slow EMA for MACD.
     signalLength (simple int) : The signal line length for MACD.
     rsiLength (simple int) : The length of the RSI calculation.
     macdThresh (float) : The threshold for MACD signals.
     rsiThresh (float) : The threshold for RSI signals.
  Returns: A tuple: (buySignal, sellSignal) where buySignal is generated when MACD is positive and RSI is below the threshold, and sellSignal when MACD is negative and RSI is above the threshold.
 movingAverageCrossover(source, shortLength, longLength) 
  movingAverageCrossover
@description Detects crossovers between short-term and long-term moving averages.
  Parameters:
     source (float) : The price data or input series.
     shortLength (int) : The length of the short-term moving average.
     longLength (int) : The length of the long-term moving average.
  Returns: A tuple: (crossUp, crossDown) where crossUp is true when the short-term MA crosses above the long-term MA, and crossDown when the reverse occurs.
HTFCandlesLibLibrary   "HTFCandlesLib" 
Library to get detailed higher timeframe candle information
 method tostring(this, delimeter) 
  Returns OHLC values, BarIndex of higher and lower timeframe candles in string format
  Namespace types: Candle
  Parameters:
     this (Candle) : Current Candle object
     delimeter (string) : delimeter to join the string components of the candle
  Returns: String representation of the Candle
 method draw(this, bullishColor, bearishColor, printDescription) 
  Draws the current candle using boxes and lines for body and wicks
  Namespace types: Candle
  Parameters:
     this (Candle) : Current Candle object
     bullishColor (color) : color for bullish representation
     bearishColor (color) : color for bearish representation
     printDescription (bool) : if set to true prints the description
  Returns: Current candle object
 getCurrentCandle(ltfCandles) 
  Gets the current candle along with reassigned ltf components. To be used with request.security to capture higher timeframe candle data
  Parameters:
     ltfCandles (array) : Lower timeframe Candles array
  Returns: Candle object with embedded lower timeframe key candles in them
 Candle 
  Candle represents the data related to a candle
  Fields:
     o (series float) : Open price of the candle
     h (series float) : High price of the candle
     l (series float) : Low price of the candle
     c (series float) : Close price of the candle
     lo (Candle) : Lower timeframe candle that records the open price of the current candle.
     lh (Candle) : Lower timeframe candle that records the high price of the current candle.
     ll (Candle) : Lower timeframe candle that records the low price of the current candle.
     lc (Candle) : Lower timeframe candle that records the close price of the current candle.
     barindex (series int) : Bar Index of the candle
     bartime (series int) : Bar time of the candle
     last (Candle) : Link to last candle of the series if any
JordanSwindenLibraryLibrary   "JordanSwindenLibrary" 
TODO: add library description here
 getDecimals() 
  Calculates how many decimals are on the quote price of the current market
  Returns: The current decimal places on the market quote price
 getPipSize(multiplier) 
  Calculates the pip size of the current market
  Parameters:
     multiplier (int) : The mintick point multiplier (1 by default, 10 for FX/Crypto/CFD but can be used to override when certain markets require)
  Returns: The pip size for the current market
 truncate(number, decimalPlaces) 
  Truncates (cuts) excess decimal places
  Parameters:
     number (float) : The number to truncate
     decimalPlaces (simple float) : (default=2) The number of decimal places to truncate to
  Returns: The given number truncated to the given decimalPlaces
 toWhole(number) 
  Converts pips into whole numbers
  Parameters:
     number (float) : The pip number to convert into a whole number
  Returns: The converted number
 toPips(number) 
  Converts whole numbers back into pips
  Parameters:
     number (float) : The whole number to convert into pips
  Returns: The converted number
 getPctChange(value1, value2, lookback) 
  Gets the percentage change between 2 float values over a given lookback period
  Parameters:
     value1 (float) : The first value to reference
     value2 (float) : The second value to reference
     lookback (int) : The lookback period to analyze
  Returns: The percent change over the two values and lookback period
 random(minRange, maxRange) 
  Wichmann–Hill Pseudo-Random Number Generator
  Parameters:
     minRange (float) : The smallest possible number (default: 0)
     maxRange (float) : The largest possible number (default: 1)
  Returns: A random number between minRange and maxRange
 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 TICK TO BE ACCURATE, don't place in scopes)
  Parameters:
     length (simple int) : The MA period
     maType (string) : The type of MA
  Returns: A moving average with the given parameters
 barsAboveMA(lookback, ma) 
  Counts how many candles are above the MA
  Parameters:
     lookback (int) : The lookback period to look back over
     ma (float) : The moving average to check
  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) : The lookback period to look back over
     ma (float) : The moving average to reference
  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 (based on closing prices)
  Parameters:
     lookback (int) : The lookback period to look back over
     ma (float) : The moving average to reference
  Returns: The bar count of how many times price recently crossed the EMA (based on closing prices)
 getPullbackBarCount(lookback, direction) 
  Counts how many green & red bars have printed recently (ie. pullback count)
  Parameters:
     lookback (int) : The lookback period to look back over
     direction (int) : The color of the bar to count (1 = Green, -1 = Red)
  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) : (default=0.382) The fib to base candle body on
     colorMatch (bool) : (default=false) Does the candle need to be green? (true/false)
  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) : (default=0.382) The fib to base candle body on
     colorMatch (bool) : (default=false) Does the candle need to be red? (true/false)
  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) : (default=2) The maximum top wick size compared to the bottom (and vice versa)
     bodySize (float) : (default=0.05) The maximum body size as a percentage compared to the entire candle size
  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) : (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
     rejectionWickSize (float) : (default=disabled) The maximum rejection wick size compared to the body as a percentage
     engulfWick (bool) : (default=false) Does the engulfing candle require the wick to be engulfed as well?
  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) : (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
     rejectionWickSize (float) : (default=disabled) The maximum rejection wick size compared to the body as a percentage
     engulfWick (bool) : (default=false) Does the engulfing candle require the wick to be engulfed as well?
  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) : The session to check
     useFilter (bool) : (default=true) Whether or not to actually use this filter
  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) : The session to check
     useFilter (bool) : (default=true) Whether or not to actually use this filter
  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) : The UNIX date timestamp to begin searching from
     endTime (int) : the UNIX date timestamp to stop searching from
  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) : Should the script analyze this day? (true/false)
     tuesday (bool) : Should the script analyze this day? (true/false)
     wednesday (bool) : Should the script analyze this day? (true/false)
     thursday (bool) : Should the script analyze this day? (true/false)
     friday (bool) : Should the script analyze this day? (true/false)
     saturday (bool) : Should the script analyze this day? (true/false)
     sunday (bool) : Should the script analyze this day? (true/false)
  Returns: A boolean - true if the current bar's day is one of the given days
 atrFilter(atrValue, maxSize) 
  Parameters:
     atrValue (float) 
     maxSize (float) 
 tradeCount() 
  Calculate total trade count
  Returns: Total closed trade count
 isLong() 
  Check if we're currently in a long trade
  Returns: True if our position size is positive
 isShort() 
  Check if we're currently in a short trade
  Returns: True if our position size is negative
 isFlat() 
  Check if we're currentlyflat
  Returns: True if our position size is zero
 wonTrade() 
  Check if this bar falls after a winning trade
  Returns: True if we just won a trade
 lostTrade() 
  Check if this bar falls after a losing trade
  Returns: True if we just lost a trade
 maxDrawdownRealized() 
  Gets the max drawdown based on closed trades (ie. realized P&L). The strategy tester displays max drawdown as open P&L (unrealized).
  Returns: The max drawdown based on closed trades (ie. realized P&L). The strategy tester displays max drawdown as open P&L (unrealized).
 totalPipReturn() 
  Gets the total amount of pips won/lost (as a whole number)
  Returns: Total amount of pips won/lost (as a whole number)
 longWinCount() 
  Count how many winning long trades we've had
  Returns: Long win count
 shortWinCount() 
  Count how many winning short trades we've had
  Returns: Short win count
 longLossCount() 
  Count how many losing long trades we've had
  Returns: Long loss count
 shortLossCount() 
  Count how many losing short trades we've had
  Returns: Short loss count
 breakEvenCount(allowanceTicks) 
  Count how many break-even trades we've had
  Parameters:
     allowanceTicks (float) : Optional - how many ticks to allow between entry & exit price (default 0)
  Returns: Break-even count
 longCount() 
  Count how many long trades we've taken
  Returns: Long trade count
 shortCount() 
  Count how many short trades we've taken
  Returns: Short trade count
 longWinPercent() 
  Calculate win rate of long trades
  Returns: Long win rate (0-100)
 shortWinPercent() 
  Calculate win rate of short trades
  Returns: Short win rate (0-100)
 breakEvenPercent(allowanceTicks) 
  Calculate break even rate of all trades
  Parameters:
     allowanceTicks (float) : Optional - how many ticks to allow between entry & exit price (default 0)
  Returns: Break-even win rate (0-100)
 averageRR() 
  Calculate average risk:reward
  Returns: Average winning trade divided by average losing trade
 unitsToLots(units) 
  (Forex) Convert the given unit count to lots (multiples of 100,000)
  Parameters:
     units (float) : The units to convert into lots
  Returns: Units converted to nearest lot size (as float)
 getFxPositionSize(balance, risk, stopLossPips, fxRate, lots) 
  (Forex) Calculate fixed-fractional position size based on given parameters
  Parameters:
     balance (float) : The account balance
     risk (float) : The % risk (whole number)
     stopLossPips (float) : Pip distance to base risk on
     fxRate (float) : The conversion currency rate (more info below in library documentation)
     lots (bool) : Whether or not to return the position size in lots rather than units (true by default)
  Returns: Units/lots to enter into "qty=" parameter of strategy entry function
EXAMPLE USAGE:
string conversionCurrencyPair = (strategy.account_currency == syminfo.currency ? syminfo.tickerid : strategy.account_currency + syminfo.currency)
float fx_rate = request.security(conversionCurrencyPair, timeframe.period, close ) 
if (longCondition)
strategy.entry("Long", strategy.long, qty=zen.getFxPositionSize(strategy.equity, 1, stopLossPipsWholeNumber, fx_rate, true))
 skipTradeMonteCarlo(chance, debug) 
  Checks to see if trade should be skipped to emulate rudimentary Monte Carlo simulation
  Parameters:
     chance (float) : The chance to skip a trade (0-1 or 0-100, function will normalize to 0-1)
     debug (bool) : Whether or not to display a label informing of the trade skip
  Returns: True if the trade is skipped, false if it's not skipped (idea being to include this function in entry condition validation checks)
 fillCell(tableID, column, row, title, value, bgcolor, txtcolor, tooltip) 
  This updates the given table's cell with the given values
  Parameters:
     tableID (table) : The table ID to update
     column (int) : The column to update
     row (int) : The row to update
     title (string) : The title of this cell
     value (string) : The value of this cell
     bgcolor (color) : The background color of this cell
     txtcolor (color) : The text color of this cell
     tooltip (string) 
  Returns: Nothing.
offline_detection Library
 Description: 
Boolean and alert functions that check if the latest user-selected symbol 'sym' has started printing. Alerts trigger by bar close. 
 Usage: 
Mainly for 24/7 crypto exchanges. If an exchange you have alerts on goes offline, the alerts will not trigger. The offline alert is an alert to alert you of that. It's best to create the alerts while on "CRYPTOCAP:TOTAL" because it has the least downtime. The exchange you want alerts on is controlled by the 'sym' parameter. The alerts need to be enabled yourself.
 Limitations: 
The alerts may be triggered by no volume in a bar, so it's best to set it on timeframes higher than 1 minute. Alerts are not enabled in libraries so the functions must be imported or copied into another script. alert.freq cannot be changed by input because it becomes a series string in a function. dynamic_requests must be true to export functions using `request.*()` calls.
Example:
 
import NeoButane/offline_detection/1
thing = "COINBASE:BTCUSD"
offline_detection.offlineAlertNoSpam(thing)
offline_detection.onlineAlert(thing)
warningsign()
 
Library   "offline_detection" 
Creates alerts for the user-selected symbol by checking if its latest bar is current by comparing it against another chart.
 isItDown(sym) 
  Checks if 'sym' is offline by requesting time of 'sym'.
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: True if time of 'sym' is not available.
 isItDownNoSpam(sym) 
  Checks if 'sym' is offline by requesting time of 'sym' once.
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: True if time of 'sym' is not available and it was available in the previous bar close.
 isItUp(sym) 
  Checks if 'sym' is online after being offline by using isItDown().
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: True if time of 'sym' is available in the current bar but wasn't prior.
 offlineAlert(sym) 
  Checks if isItDown() is true.
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: An alert when the symbol is not online and the time in UTC. This will continue triggering every bar close until the symbol is online.
 offlineAlertNoSpam(sym) 
  Checks if isItDown() is true.
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: An alert when the symbol is not online and the time in UTC.
 onlineAlert(sym) 
  Checks if isItUp() is true.
  Parameters:
     sym (simple string) : (const string) The user-selected symbol in the form of "PREFIX:TICKER".
  Returns: An alert when the symbol is now online and the time in UTC.
 warningsign() 
  Checks if the current chart is "CRYPTOCAP:TOTAL".
  Returns: A reminder on the chart.
ObjectsLibrary   "Objects" 
A collection of frequently used objects functions in my scripts.
 method getType(this) 
  Identifies an object's type.
  Namespace types: series int, simple int, input int, const int
  Parameters:
     this (int) : Object to inspect.
  Returns: A string representation of the type.
 method getType(this) 
  Namespace types: series float, simple float, input float, const float
  Parameters:
     this (float) 
 method getType(this) 
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     this (bool) 
 method getType(this) 
  Namespace types: series color, simple color, input color, const color
  Parameters:
     this (color) 
 method getType(this) 
  Namespace types: series string, simple string, input string, const string
  Parameters:
     this (string) 
 method getType(this) 
  Namespace types: series line
  Parameters:
     this (line) 
 method getType(this) 
  Namespace types: series linefill
  Parameters:
     this (linefill) 
 method getType(this) 
  Namespace types: series box
  Parameters:
     this (box) 
 method getType(this) 
  Namespace types: series polyline, series polyline, series polyline, series polyline
  Parameters:
     this (polyline) 
 method getType(this) 
  Namespace types: series label
  Parameters:
     this (label) 
 method getType(this) 
  Namespace types: series table
  Parameters:
     this (table) 
 method getType(this) 
  Namespace types: chart.point
  Parameters:
     this (chart.point)
lib_datesLibrary   "lib_dates" 
TODO: add library description here
 inDateRange(from, thru) 
  inDateRange: Checks if the time `t` is in range between `from` to `thru`
  Parameters:
     from (int) 
     thru (int) 
  Returns: bool: true if time is in range false otherwise
ChartUtilsLibrary   "ChartUtils" 
Library for chart utilities, including managing tables
 initTable(rows, cols, bgcolor) 
  Initializes a table with specific dimensions and color
  Parameters:
     rows (int) : (int) Number of rows in the table
     cols (int) : (int) Number of columns in the table
     bgcolor (color) : (color) Background color of the table
  Returns: (table) The initialized table
 updateTable(tbl, is_price_below_avg, current_investment_USD, strategy_position_size, strategy_position_avg_price, strategy_openprofit, strategy_opentrades, isBullishRate, isBearishRate, mlRSIOverSold, mlRSIOverBought) 
  Updates the trading table
  Parameters:
     tbl (table) : (table) The table to update
     is_price_below_avg (bool) : (bool) If the current price is below the average price
     current_investment_USD (float) : (float) The current investment in USD
     strategy_position_size (float) : (float) The size of the current position
     strategy_position_avg_price (float) : (float) The average price of the current position
     strategy_openprofit (float) : (float) The current open profit
     strategy_opentrades (int) : (int) The number of open trades
     isBullishRate (bool) : (bool) If the current rate is bullish
     isBearishRate (bool) : (bool) If the current rate is bearish
     mlRSIOverSold (bool) : (bool) If the ML RSI is oversold
     mlRSIOverBought (bool) : (bool) If the ML RSI is overbought
 updateTableNoPosition(tbl) 
  Updates the table when there is no position
  Parameters:
     tbl (table) : (table) The table to update
Volatility_ZigZag_LibraryThis is a Pine Script library for the public indicator "Volatility ZigZag" by brettkind. For further description, please refer to the information available on the original indicator page.
Library   "Volatility_ZigZag_Library" 
 getValues_andStyling_VolatilityZigZag_byBrettkind(hl_src, SOURCE, length, min_dev_input, stdev_fctr, ZigZag, zz_color, zz_width, zz_devline, zz_points, zz_alert_sign, ZZ_Label, ZZ_Label_clr, rev_text, zz_bars_text, pcabs_text, avg_pcabs_text, pcrel_text, avg_pcrel_text, vol_text, avg_vol_text, input_currency) 
  Parameters:
     hl_src (bool) 
     SOURCE (float) 
     length (int) 
     min_dev_input (float) 
     stdev_fctr (float) 
     ZigZag (bool) 
     zz_color (color) 
     zz_width (int) 
     zz_devline (bool) 
     zz_points (bool) 
     zz_alert_sign (bool) 
     ZZ_Label (bool) 
     ZZ_Label_clr (color) 
     rev_text (bool) 
     zz_bars_text (bool) 
     pcabs_text (bool) 
     avg_pcabs_text (bool) 
     pcrel_text (bool) 
     avg_pcrel_text (bool) 
     vol_text (bool) 
     avg_vol_text (bool) 
     input_currency (string) 
 getStatisticTable_VolatilityZigZag_byBrettkind(x1, Y1_array, draw_tbl) 
  Parameters:
     x1 (int) 
     Y1_array (array) 
     draw_tbl (bool)
LoggerLibLibrary   "LoggerLib" 
Function Description:
This library aims to extend the logging functionality by overloading various logging methods.
The objective is to enable appending ".log" at the end of different types to make logging outputs easier.
Key features of this function include:
Multi Debug Levels: The readout will encompass error, warning, and info messages.
Controlled Output: Logging can be set for every bar or only the last X bars.
Automatic Logging: Essential variables such as bar_index, time, price, and # of times log has been called can be extracted.
Methods Included:
Logs variables.
Logs floats.
Logs integers.
Logs strings.
Logs booleans.
Logs arrays.
Logs matrices.
Logs maps.
This comprehensive logging function enhances logging capabilities,
providing versatility and ease of use in capturing and debugging data across different contexts.
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Logs any variable type, excluding custom UDTs, and displays to the logs or as a label on bars.
```
// Example
variable = close
variable.log()
variable.log(2, 0,true,true)
// Example Arrays
ArrayVariable = array.from()
ArrayVariable.log()
// Examples Maps
MapVariable = map.new()
MapVariable.log( )
// Example Funky stuff
close.log(debugLevel = 1, showLast = 1, verbose = true, showLabels = true)
```
  Namespace types: series float, simple float, input float, const float
  Parameters:
     this (float) : Variable to be formatted into a logger message
     debugLevel (int) : Log Level `1 = log.info | 2 = log.warning  3 = log.error`
     showLast (int) : Shows last x Logs, 0 shows all.
     verbose (bool) : Include additional Debug logger Data.
     showLabels (bool) : Create Labels of the logs on that main chart.
  Returns: void
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: series int, simple int, input int, const int
  Parameters:
     this (int) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: series string, simple string, input string, const string
  Parameters:
     this (string) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     this (bool) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: series color, simple color, input color, const color
  Parameters:
     this (color) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: array
  Parameters:
     this (array) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: array
  Parameters:
     this (array) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: array
  Parameters:
     this (array) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: array
  Parameters:
     this (array) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: map
  Parameters:
     this (map) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: matrix
  Parameters:
     this (matrix) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: matrix
  Parameters:
     this (matrix) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: matrix
  Parameters:
     this (matrix) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool) 
 method log(this, debugLevel, showLast, verbose, showLabels) 
  Namespace types: matrix
  Parameters:
     this (matrix) 
     debugLevel (int) 
     showLast (int) 
     verbose (bool) 
     showLabels (bool)
LogLibrary   "Log" 
- Log methods that return input value for code readbility and cleaness.
 method str(input) 
  str
  Namespace types: series float, simple float, input float, const float
  Parameters:
     input (float) 
 method str(input) 
  str
  Namespace types: series int, simple int, input int, const int
  Parameters:
     input (int) 
 method str(input) 
  str
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     input (bool) 
 method str(input) 
  str
  Namespace types: series string, simple string, input string, const string
  Parameters:
     input (string) 
 method str(input) 
  str
  Namespace types: series linefill
  Parameters:
     input (linefill) 
 method str(input) 
  str
  Namespace types: series line
  Parameters:
     input (line) 
 method str(input) 
  str
  Namespace types: series box
  Parameters:
     input (box) 
 method str(input) 
  str
  Namespace types: series label
  Parameters:
     input (label) 
 method str(input) 
  str
  Namespace types: chart.point
  Parameters:
     input (chart.point) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: array
  Parameters:
     input (array) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  str
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method str(input) 
  Namespace types: matrix
  Parameters:
     input (matrix) 
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: chart.point
  Parameters:
     input (chart.point) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series float, simple float, input float, const float
  Parameters:
     input (float) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series int, simple int, input int, const int
  Parameters:
     input (int) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     input (bool) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series string, simple string, input string, const string
  Parameters:
     input (string) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series linefill
  Parameters:
     input (linefill) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series line
  Parameters:
     input (line) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input value with the 'info' log level.
  Namespace types: series box
  Parameters:
     input (box) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: series label
  Parameters:
     input (label) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input array with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: array
  Parameters:
     input (array) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Logs the input matrix with the 'info' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method info(input, msg) 
  Namespace types: matrix
  Parameters:
     input (matrix) 
     msg (string) 
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: chart.point
  Parameters:
     input (chart.point) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series float, simple float, input float, const float
  Parameters:
     input (float) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series int, simple int, input int, const int
  Parameters:
     input (int) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     input (bool) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series string, simple string, input string, const string
  Parameters:
     input (string) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series linefill
  Parameters:
     input (linefill) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series line
  Parameters:
     input (line) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input value with the 'warning' log level.
  Namespace types: series box
  Parameters:
     input (box) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: series label
  Parameters:
     input (label) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input array with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: array
  Parameters:
     input (array) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Logs the input matrix with the 'warning' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method warn(input, msg) 
  Namespace types: matrix
  Parameters:
     input (matrix) 
     msg (string) 
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: chart.point
  Parameters:
     input (chart.point) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series float, simple float, input float, const float
  Parameters:
     input (float) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series int, simple int, input int, const int
  Parameters:
     input (int) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     input (bool) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series string, simple string, input string, const string
  Parameters:
     input (string) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series linefill
  Parameters:
     input (linefill) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series line
  Parameters:
     input (line) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input value with the 'error' log level.
  Namespace types: series box
  Parameters:
     input (box) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input value.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: series label
  Parameters:
     input (label) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input array with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input array.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: array
  Parameters:
     input (array) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Logs the input matrix with the 'error' log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
  Returns: The input matrix.
 method error(input, msg) 
  Namespace types: matrix
  Parameters:
     input (matrix) 
     msg (string) 
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: chart.point
  Parameters:
     input (chart.point) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series float, simple float, input float, const float
  Parameters:
     input (float) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series int, simple int, input int, const int
  Parameters:
     input (int) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series bool, simple bool, input bool, const bool
  Parameters:
     input (bool) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series string, simple string, input string, const string
  Parameters:
     input (string) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series linefill
  Parameters:
     input (linefill) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series line
  Parameters:
     input (line) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input value with the specified log level.
  Namespace types: series box
  Parameters:
     input (box) : The input value to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input value.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: series label
  Parameters:
     input (label) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input array with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input array to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input array.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: array
  Parameters:
     input (array) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Logs the input matrix with the specified log level.
  Namespace types: matrix
  Parameters:
     input (matrix) : The input matrix to log.
     msg (string) : The message to log. Default is an empty string.
     level (int) : The log level (1 - info, 2 - warning, 3 - error). Default is 1.
  Returns: The input matrix.
 method log(input, msg, level) 
  Namespace types: matrix
  Parameters:
     input (matrix) 
     msg (string) 
     level (int)
support_array_methodsLibrary   "support_array_methods" 
Contains methods for support work with arrays:
1. unic
description: delete duplicate element from array
param _array: array for delete duplicate. Support types: int,float,string,bool
return: duplicate-free array
NetLiquidityLibraryMacFLibrary   "NetLiquidityLibraryMacF" 
The Net Liquidity Library provides daily values for net liquidity. Net liquidity is measured as Fed Balance Sheet - Treasury General Account - Reverse Repo. Time series for each individual component included too.
 get_net_liquidity(component) 
  Gets the Net Liquidity time series for the last 250 trading days. Dates that are not present are represented as na.
  Parameters:
     component (simple string) : The component of the Net Liquidity function to return. Possible values: 'fed', 'tga', and 'rrp'. (`Net Liquidity` is returned if no argument is supplied).
  Returns: The Net Liquidity time series or a component of the Net Liquidity function.
StrategyDashboardLibrary ”StrategyDashboard”
Hey, everybody!
I haven’t done anything here for a long time, I need to get better ^^.
In my strategies, so far private, but not about that, I constantly use dashboards, which clearly show how my strategy is working out.
Of course, you can also find a number of these parameters in the standard strategy window, but I prefer to display everything on the screen, rather than digging through a bunch of boxes and dropdowns.
At the moment I am using 2 dashboards, which I would like to share with you.
1. monthly(isShow)
this is a dashboard with the breakdown of profit by month in per cent. That is, it displays how much percentage you made or lost in a particular month, as well as for the year as a whole.
Parameters:
  isShow (bool) - determine allowance to display or not.
2. total(isShow)
The second dashboard displays more of the standard strategy information, but in a table format. Information from the series “number of consecutive losers, number of consecutive wins, amount of earnings per day, etc.”.
Parameters:
  isShow (bool) - determine allowance to display or not.
Since I prefer the dark theme of the interface, now they are adapted to it, but in the near future for general convenience I will add the ability to adapt to light.
The same goes for the colour scheme, now it is adapted to the one I use in my strategies (because the library with more is made by cutting these dashboards from my strategies), but will also make customisable part.
If you have any wishes, feel free to write in the comments, maybe I can implement and add them in the next versions.
Debugging Made EasyMake debugging easier during development in Pinescript by displaying debug variables on the chart. No need for explanations, you devs know how to use it :)
Library   "debug" 
 label(_output, _delete, _position) 
  - Debug label
  Parameters:
     _output (string) :  Label output string
     _delete (bool) :  Delete all labels and only show the last one
     _position (string) 
 label(_output, _delete, _position) 
  Parameters:
     _output (float) 
     _delete (bool) 
     _position (string) 
 label(_output, _delete, _position) 
  Parameters:
     _output (int) 
     _delete (bool) 
     _position (string) 
 label(_output, _delete, _position) 
  Parameters:
     _output (bool) 
     _delete (bool) 
     _position (string) 
 label_last(_output, _delete, _position) 
  - Debug label on last bar
  Parameters:
     _output (string) :  Label output string
     _delete (bool) :  Delete all labels and only show the last one
     _position (string) 
 label_last(_output, _delete, _position) 
  Parameters:
     _output (float) 
     _delete (bool) 
     _position (string) 
 label_last(_output, _delete, _position) 
  Parameters:
     _output (int) 
     _delete (bool) 
     _position (string) 
 label_last(_output, _delete, _position) 
  Parameters:
     _output (bool) 
     _delete (bool) 
     _position (string) 
 label_array(_items, _max, _reversed) 
  - Debug label on last bar.
  Parameters:
     _items (float ) :  array of items.
     _max (int) :  Maximum items to display
     _reversed (bool) :  Show reversed array
 label_array(_items, _max, _reversed) 
  Parameters:
     _items (string ) 
     _max (int) 
     _reversed (bool) 
 label_array(_items, _max, _reversed) 
  Parameters:
     _items (int ) 
     _max (int) 
     _reversed (bool) 
 array(_items, _max, _reversed) 
  - Debug label on last bar.
  Parameters:
     _items (float ) :  array of items.
     _max (int) :  Maximum items to display
     _reversed (bool) :  Show reversed array
 error(_message, _display) 
  - Debug error message.
  Parameters:
     _message (string) :  Label output string
     _display (bool) :  Toggle to show hide the message.
 error(_message, _display) 
  Parameters:
     _message (float) 
     _display (bool) 
 error(_message, _display) 
  Parameters:
     _message (int) 
     _display (bool) 
 warning(_message, _display) 
  - Debug warning message.
  Parameters:
     _message (string) :  Label output string
     _display (bool) :  Toggle to show hide the message.
 warning(_message, _display) 
  Parameters:
     _message (float) 
     _display (bool) 
 warning(_message, _display) 
  Parameters:
     _message (int) 
     _display (bool) 
 info(_message, _display) 
  - Debug info message.
  Parameters:
     _message (string) :  Label output string
     _display (bool) :  Toggle to show hide the message.
 info(_message, _display) 
  Parameters:
     _message (float) 
     _display (bool) 
 info(_message, _display) 
  Parameters:
     _message (int) 
     _display (bool)
Backtest Strategy Optimizer AdapterBacktest Strategy Optimizer Adapter 
With this library, you will be able to run one or multiple backtests with different variables (combinations). For example, you can run 100 backtests of Supertrend at once with an increment factor of 0.1. This way, you can easily fetch the most profitable settings and apply them to your strategy.
To get a better understanding of the code, you can check the code below.
 Single backtest results 
 
  = backtest.results(date_start, date_end, long_entry, long_exit, take_profit_percentage, stop_loss_percentage, atr_length, initial_capital, order_size, commission)
 
 Add backtest results to a table 
 
backtest.table(initial_capital, profit_and_loss, open_balance, winrate, entries, exits, wins, losses, backtest_table_position, backtest_table_margin, backtest_table_transparency, backtest_table_cell_color, backtest_table_title_cell_color, backtest_table_text_color)
 
 Backtest result without chart labels 
 
  = backtest.run(date_start, date_end, long_entry, long_exit, take_profit_percentage, stop_loss_percentage, atr_length, initial_capital, order_size, commission)
 
 Backtest result profit 
 
profit = backtest.profit(date_start, date_end, long_entry, long_exit, take_profit_percentage, stop_loss_percentage, atr_length, initial_capital, order_size, commission)
 
 Backtest result winrate 
 
winrate = backtest.winrate(date_start, date_end, long_entry, long_exit, take_profit_percentage, stop_loss_percentage, atr_length, initial_capital, order_size, commission)
 
 Start Date 
You can set the start date either by using a timestamp or a number that refers to the number of bars back.
 Stop Loss / Take Profit Issue 
Unfortunately, I did not manage to achieve 100% accuracy for the take profit and stop loss. The original TradingView backtest can stop at the correct position within a bar using the strategy.exit stop and limit variables. However, it seems unachievable with a crossunder/crossover function in PineScript unless it is calculated on every tick (which would make the backtesting results invalid). So far, I have not found a workaround, and I would be grateful if someone could solve this issue, if it is even possible. If you have any solutions or fixes, please let me know!
 Multiple Backtest Results / Optimizer 
You can run multiple backtests in a single strategy or indicator, but there are certain requirements for placing the correct code in the right way. To view examples of running multiple backtests, you can refer to the links provided in the updates I posted below. In the samples I have also explained how you can auto-generate code for your backtest strategy.
TableLibrary   "Table" 
This library provides an easy way to convert arrays and matrixes of data into tables. There are a few different implementations of each function so you can get more or less control over the appearance of the tables. The basic rule of thumb is that all matrix rows must have the same number of columns, and if you are providing multiple arrays/matrixes to specify additional colors (background/text), they must have the same number of rows/columns as the data array. Finally, you do have the option of spanning cells across rows or columns with some special syntax in the data cell. Look at the examples to see how the arrays and matrixes need to be built before they can be used by the functions.
 floatArrayToCellArray(floatArray) 
  Helper function that converts a float array to a Cell array so it can be rendered with the fromArray function
  Parameters:
     floatArray (float ) : (array) the float array to convert to a Cell array.
  Returns: array The Cell array to return.
 stringArrayToCellArray(stringArray) 
  Helper function that converts a string array to a Cell array so it can be rendered with the fromArray function
  Parameters:
     stringArray (string ) : (array) the array to convert to a Cell array.
  Returns: array The Cell array to return.
 floatMatrixToCellMatrix(floatMatrix) 
  Helper function that converts a float matrix to a Cell matrix so it can be rendered with the fromMatrix function
  Parameters:
     floatMatrix (matrix) : (matrix) the float matrix to convert to a string matrix.
  Returns: matrix The Cell matrix to render.
 stringMatrixToCellMatrix(stringMatrix) 
  Helper function that converts a string matrix to a Cell matrix so it can be rendered with the fromMatrix function
  Parameters:
     stringMatrix (matrix) : (matrix) the string matrix to convert to a Cell matrix.
  Returns: matrix The Cell matrix to return.
 fromMatrix(CellMatrix, position, verticalOffset, transposeTable, textSize, borderWidth, tableNumRows, blankCellText) 
  Takes a CellMatrix and renders it as a table.
  Parameters:
     CellMatrix (matrix) : (matrix) The Cells to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     tableNumRows (int) : (int) Optional. The number of rows in the table. Not required, defaults to the number of rows in the provided matrix. If your matrix will have a variable number of rows, you must provide the max number of rows or the function will error when it attempts to set a cell value on a row that the table hadn't accounted for when it was defined.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 fromMatrix(dataMatrix, position, verticalOffset, transposeTable, textSize, borderWidth, tableNumRows, blankCellText) 
  Renders a float matrix as a table.
  Parameters:
     dataMatrix (matrix) : (matrix_float) The data to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     tableNumRows (int) : (int) Optional. The number of rows in the table. Not required, defaults to the number of rows in the provided matrix. If your matrix will have a variable number of rows, you must provide the max number of rows or the function will error when it attempts to set a cell value on a row that the table hadn't accounted for when it was defined.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 fromMatrix(dataMatrix, position, verticalOffset, transposeTable, textSize, borderWidth, tableNumRows, blankCellText) 
  Renders a string matrix as a table.
  Parameters:
     dataMatrix (matrix) : (matrix_string) The data to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     tableNumRows (int) : (int) Optional. The number of rows in the table. Not required, defaults to the number of rows in the provided matrix. If your matrix will have a variable number of rows, you must provide the max number of rows or the function will error when it attempts to set a cell value on a row that the table hadn't accounted for when it was defined.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 fromArray(dataArray, position, verticalOffset, transposeTable, textSize, borderWidth, blankCellText) 
  Renders a Cell array as a table.
  Parameters:
     dataArray (Cell ) : (array) The data to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 fromArray(dataArray, position, verticalOffset, transposeTable, textSize, borderWidth, blankCellText) 
  Renders a string array as a table.
  Parameters:
     dataArray (string ) : (array_string) The data to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 fromArray(dataArray, position, verticalOffset, transposeTable, textSize, borderWidth, blankCellText) 
  Renders a float array as a table.
  Parameters:
     dataArray (float ) : (array_float) The data to be rendered in a table
     position (string) : (string) Optional. The position of the table. Defaults to position.top_right
     verticalOffset (int) : (int) Optional. The vertical offset of the table from the top or bottom of the chart. Defaults to 0.
     transposeTable (bool) : (bool) Optional. Will transpose all of the data in the matrices before rendering. Defaults to false.
     textSize (string) : (string) Optional. The size of text to render in the table. Defaults to size.small.
     borderWidth (int) : (int) Optional. The width of the border between table cells. Defaults to 2.
     blankCellText (string) : (string) Optional. Text to use cells when adding blank rows for vertical offsetting.
 debug(message, position) 
  Renders a debug message in a table at the desired location on screen.
  Parameters:
     message (string) : (string) The message to render.
     position (string) : (string) Optional. The position of the debug message. Defaults to position.middle_right.
 Cell 
  Type for each cell's content and appearance
  Fields:
     content (series string) 
     bgColor (series color) 
     textColor (series color) 
     align (series string) 
     colspan (series int) 
     rowspan (series int)
UtilsLibrary   "Utils" 
A collection of convenience and helper functions for indicator and library authors on TradingView
 formatNumber(num) 
  My version of format number that doesn't have so many decimal places...
  Parameters:
     num (float) : (float) the number to be formatted
  Returns: (string) The formatted number
 getDateString(timestamp) 
  Convenience function returns timestamp in yyyy/MM/dd format.
  Parameters:
     timestamp (int) : (int) The timestamp to stringify
  Returns: (int) The date string
 getDateTimeString(timestamp) 
  Convenience function returns timestamp in yyyy/MM/dd hh:mm format.
  Parameters:
     timestamp (int) : (int) The timestamp to stringify
  Returns: (int) The date string
 getInsideBarCount() 
  Gets the number of inside bars for the current chart. Can also be passed to request.security to get the same for different timeframes.
  Returns: (int) The # of inside bars on the chart right now.
 getLabelStyleFromString(styleString, acceptGivenIfNoMatch) 
  Tradingview doesn't give you a nice way to put the label styles into a dropdown for configuration settings. So, I specify them in the following format:  . This function takes care of converting those custom strings back to the ones expected by tradingview scripts.
  Parameters:
     styleString (string) 
     acceptGivenIfNoMatch (bool) : (bool) If no match for styleString is found and this is true, the function will return styleString, otherwise it will return tradingview's preferred default
  Returns: (string) The string expected by tradingview functions
 getTime(hourNumber, minuteNumber) 
  Given an hour number and minute number, adds them together and returns the sum. To be used by getLevelBetweenTimes when fetching specific price levels during a time window on the day.
  Parameters:
     hourNumber (int) : (int) The hour number
     minuteNumber (int) : (int) The minute number
  Returns: (int) The sum of all the minutes
 getHighAndLowBetweenTimes(start, end) 
  Given a start and end time, returns the high or low price during that time window.
  Parameters:
     start (int) : The timestamp to start with (# of seconds)
     end (int) : The timestamp to end with (# of seconds)
  Returns: (float) The high or low value
 getPremarketHighsAndLows() 
  Returns an expression that can be used by request.security to fetch the premarket high & low levels in a tuple.
  Returns: (tuple)  
 getAfterHoursHighsAndLows() 
  Returns an expression that can be used by request.security to fetch the after hours high & low levels in a tuple.
  Returns: (tuple)  
 getOvernightHighsAndLows() 
  Returns an expression that can be used by request.security to fetch the overnight high & low levels in a tuple.
  Returns: (tuple)  
 getNonRthHighsAndLows() 
  Returns an expression that can be used by request.security to fetch the high & low levels for premarket, after hours and overnight in a tuple.
  Returns: (tuple)  
 getLineStyleFromString(styleString, acceptGivenIfNoMatch) 
  Tradingview doesn't give you a nice way to put the line styles into a dropdown for configuration settings. So, I specify them in the following format:  . This function takes care of converting those custom strings back to the ones expected by tradingview scripts.
  Parameters:
     styleString (string) : (string) Plain english (or TV Standard) version of the style string
     acceptGivenIfNoMatch (bool) : (bool) If no match for styleString is found and this is true, the function will return styleString, otherwise it will return tradingview's preferred default
  Returns: (string) The string expected by tradingview functions
 getPercentFromPrice(price) 
  Get the % the current price is away from the given price.
  Parameters:
     price (float) 
  Returns: (float) The % the current price is away from the given price.
 getPositionFromString(position) 
  Tradingview doesn't give you a nice way to put the positions into a dropdown for configuration settings. So, I specify them in the following format:  . This function takes care of converting those custom strings back to the ones expected by tradingview scripts.
  Parameters:
     position (string) : (string) Plain english position string
  Returns: (string) The string expected by tradingview functions
 getTimeframeOfChart() 
  Get the timeframe of the current chart for display
  Returns: (string) The string of the current chart timeframe
 getTimeNowPlusOffset(candleOffset) 
  Helper function for drawings that use xloc.bar_time to help you know the time offset if you want to place the end of the drawing out into the future. This determines the time-size of one candle and then returns a time n candleOffsets into the future.
  Parameters:
     candleOffset (int) : (int) The number of items to find singular/plural for.
  Returns: (int) The future time
 getVolumeBetweenTimes(start, end) 
  Given a start and end time, returns the sum of all volume across bars during that time window.
  Parameters:
     start (int) : The timestamp to start with (# of seconds)
     end (int) : The timestamp to end with (# of seconds)
  Returns: (float) The volume
 isToday() 
  Returns true if the current bar occurs on today's date.
  Returns: (bool) True if current bar is today
 padLabelString(labelText, labelStyle) 
  Pads a label string so that it appears properly in or not in a label. When label.style_none is used, this will make sure it is left-aligned instead of center-aligned. When any other type is used, it adds a single space to the right so there is padding against the right end of the label.
  Parameters:
     labelText (string) : (string) The string to be padded
     labelStyle (string) : (string) The style of the label being padded for.
  Returns: (string) The padded string
 plural(num, singular, plural) 
  Helps format a string for plural/singular. By default, if you only provide num, it will just return "s" for plural and nothing for singular (eg. plural(numberOfCats)). But you can optionally specify the full singular/plural words for more complicated nomenclature (eg. plural(numberOfBenches, 'bench', 'benches'))
  Parameters:
     num (int) : (int) The number of items to find singular/plural for.
     singular (string) : (string) The string to return if num is singular. Defaults to an empty string.
     plural (string) : (string) The string to return if num is plural. Defaults to 's' so you can just add 's' to the end of a word.
  Returns: (string) The singular or plural provided strings depending on the num provided.
 timeframeInSeconds(timeframe) 
  Get the # of seconds in a given timeframe. Tradingview's timeframe.in_seconds() expects a simple string, and we often need to use series string, so this is an alternative to get you the value you need.
  Parameters:
     timeframe (string) 
  Returns: (int) The number of secondsof that timeframe
 timeframeToString(tf) 
  Convert a timeframe string to a consistent standard.
  Parameters:
     tf (string) : (string) The timeframe string to convert
  Returns: (string) The standard format for the string, or the unchanged value if it is unknown.
PineUnitPineUnit by Guardian667 
A comprehensive testing framework for Pine Script on TradingView. Built with well-known testing paradigms like Assertions, Units and Suites. It offers the ability to log test results in TradingView's built-in Pine Protocol view, as well as displaying them in a compact table directly on your chart, ensuring your scripts are both robust and reliable.
Unit testing Pine Script indicators, libraries, and strategies becomes seamless, ensuring the precision and dependability of your TradingView scripts. Beyond standard function testing based on predefined input values, PineUnit supports series value testing. This means a test can run on every bar, taking into account its specific values. Moreover, you can specify the exact conditions under which a test should execute, allowing for series-based testing only on bars fitting a designated scenario.
 Detailed Guide & Source Code 
 Quick Start 
To get started swiftly with PineUnit, follow this minimalistic example.
 
import Guardian667/PineUnit/1 as PineUnit
var testSession = PineUnit.createTestSession()
var trueTest = testSession.createSimpleTest("True is always True")
trueTest.assertTrue(true)
testSession.report()
 
After running your script, you'll notice a table on your chart displaying the test results. For a detailed log output, you can also utilize the Pine Protocol view in TradingView.
 
--------------------------------------------------------------
T E S T S
--------------------------------------------------------------
Running Default Unit
Tests run: 1, Failures: 0, Not executed: 0, Skipped: 0
 
To further illustrate, let's introduce a test that's destined to fail:
 
var bullTest = testSession.createSeriesTest("It's allways Bull Market")
bullTest.assertTrue(close > open, "Uhoh... it's not always bullish")
 
After executing, the test results will reflect this intentional discrepancy:
 
--------------------------------------------------------------
T E S T S
--------------------------------------------------------------
Running Default Unit
Tests run: 2, Failures: 1, Not executed: 0, Skipped: 0 <<< FAILURE! - in
It's allways Bull Market
Uhoh... it's not always bullish ==> expected: , but was 
 
This shows how PineUnit efficiently captures and reports discrepancies in test expectations.
It's important to recognise the difference between `createSimpleTest()` and `createSeriesTest()`. In contrast to a simple test, a series-based test is executed on each bar, making assertions on series values.
 License 
This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
@ Guardian667
 A Personal Note 
As a software developer experienced in OO-based languages, diving into Pine Script is a unique journey. While many aspects of it are smooth and efficient, there are also notable gaps, particularly in the realm of testing. We've all been there: using `plotchar()` for debugging, trying to pinpoint those elusive issues in our scripts. I've come to appreciate the value of writing tests, which often obviates the need for such debugging. My hope is that this Testing Framework serves you well and saves you a significant amount of time, more that I invested into developing this "baby."
printerLibrary   "printer" 
Printer Library, designed to streamline the process of printing data directly onto charts while offering advanced features for enhanced functionality.
For full documentation, please visit  faiyaz7283.github.io
TradeTrackerv2Library   "TradeTrackerv2" 
This library can be used to track (hypothetical) trades on the chart. Enter the Open, SL, and TP prices (or TP in R to have it calculated) and then call Trade.TrackTrade(barIndex). Keep track of your trades in an array and then simply call TradeTracker.UpdateAllTrades(close) to update all trades based on the current close price.
How to use:
1. Import the library, as always. I'm assuming the alias of  "Tracker"  below.
2. The Type Trade is exported, so generate a Trade object like  newTrade = Tracker.Trade.new() .
3. Set the values for Open, SL, and TP. TP can be set either by price or by R, which will calculate the R based on the Open->SL range: 
 newTrade.priceOpen = 1.0
newTrade.priceSl = 0.5
newTrade.priceTp = 2.0 
-- or in place of the third line above --
 newTrade.rTp = 2 
4. On each interval you want to update (whether that's per tick/close or on each bar), call  trades.UpdateAllTrades(close) . This snippet assumes you have an array named  trades   (var trades = array.new()) .
In future updates, more customization options will be created. This is the initial prototype.
 method MakeTradeLines(t, barIdx) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     barIdx (int) 
 method UpdateLabel(t) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
 method MakeLabel(t, barIdx) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     barIdx (int) 
 method CloseTrade(t) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
 method OpenTrade(t) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
 method OpenCloseTrade(t, _close) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     _close (float) 
 method CalculateProfits(t, _close) 
  Calculates profits/losses for the Trade, given _close price
  Namespace types: Trade
  Parameters:
     t (Trade) 
     _close (float) 
 method UpdateTrade(t, _close) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     _close (float) 
 method SetInitialValues(t, barIdx) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     barIdx (int) 
 method UpdateAllTrades(trades, _close) 
  Namespace types: Trade 
  Parameters:
     trades (Trade ) 
     _close (float) 
 method TrackTrade(t, barIdx) 
  Namespace types: Trade
  Parameters:
     t (Trade) 
     barIdx (int) 
 Trade 
  Fields:
     id (series__integer) 
     isOpen (series__bool) 
     isClosed (series__bool) 
     isBuy (series__bool) 
     priceOpen (series__float) 
     priceTp (series__float) 
     priceSl (series__float) 
     rTP (series__float) 
     profit (series__float) 
     r (series__float) 
     resultR (series__float) 
     lineOpen (series__line) 
     lineTp (series__line) 
     lineSl (series__line) 
     labelStats (series__label)
TradeLibrary   "Trade" 
A Trade Tracking Library
Monitor conditions with less code by using Arrays. When your conditions are met in chronologically, a signal is returned and the scanning starts again.
Create trades automatically with Stop Loss, Take Profit and Entry. The trades will automatically track based on the market movement and update when the targets are hit.
 
 Sample Usage 
Enter a buy trade when RSI crosses below 70 then crosses above 80 before it crosses 40.
 Note: If RSI crosses 40 before 80, No trade will be entered. 
 
rsi = ta.rsi(close, 21)
buyConditions = array.new_bool()
buyConditions.push(ta.crossunder(rsi, 70))
buyConditions.push(ta.crossover(rsi, 80))
buy = Trade.signal(buyConditions, ta.crossunder(rsi, 40))
trade = Trade.new(close-(100*syminfo.mintick), close +(200*syminfo.mintick), condition=buy)
plot(trade.takeprofit, "TP", style=plot.style_circles, linewidth=4, color=color.lime)
alertcondition(trade.tp_hit, "TP Hit")
 
 
 method signal(conditions, reset) 
  Signal Conditions
  Namespace types: bool 
  Parameters:
     conditions (bool ) 
     reset (bool) 
  Returns: Boolean: True when all the conditions have occured
 method update(this, stoploss, takeprofit, entry) 
  Update Trade Parameters
  Namespace types: Trade
  Parameters:
     this (Trade) 
     stoploss (float) 
     takeprofit (float) 
     entry (float) 
  Returns: nothing
 method clear(this) 
  Clear Trade Parameters
  Namespace types: Trade
  Parameters:
     this (Trade) 
  Returns: nothing
 method track(this, _high, _low) 
  Track Trade Parameters
  Namespace types: Trade
  Parameters:
     this (Trade) 
     _high (float) 
     _low (float) 
  Returns: nothing
 new(stoploss, takeprofit, entry, _high, _low, condition, update) 
  New Trade with tracking
  Parameters:
     stoploss (float) 
     takeprofit (float) 
     entry (float) 
     _high (float) 
     _low (float) 
     condition (bool) 
     update (bool) 
  Returns: a Trade with targets and updates if stoploss or takeprofit is hit
 new() 
  New Empty Trade
  Returns: an empty trade
 Trade 
  Fields:
     stoploss (series__float) 
     takeprofit (series__float) 
     entry (series__float) 
     sl_hit (series__bool) 
     tp_hit (series__bool) 
     open (series__integer)






















