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.
Helperfunction
PineHelperLibrary   "PineHelper" 
This library provides various functions to reduce your time.
 recent_opentrade_entry_bar_index() 
  get a recent opentrade entry bar_index
  Returns: (int) bar_index
 recent_closedtrade_entry_bar_index() 
  get a recent closedtrade entry bar_index
  Returns: (int) bar_index
 recent_closedtrade_exit_bar_index() 
  get a recent closedtrade exit bar_index
  Returns: (int) bar_index
 all_opnetrades_roi() 
  get all aopentrades roi
  Returns: (float) roi
 bars_since_recent_opentrade_entry() 
  get bars since recent opentrade entry
  Returns: (int) number of bars
 bars_since_recent_closedtrade_entry() 
  get bars since recent closedtrade entry
  Returns: (int) number of bars
 bars_since_recent_closedtrade_exit() 
  get bars since recent closedtrade exit
  Returns: (int) number of bars
 recent_opentrade_entry_id() 
  get recent opentrade entry ID
  Returns: (string) entry ID
 recent_closedtrade_entry_id() 
  get recent closedtrade entry ID
  Returns: (string) entry ID
 recent_closedtrade_exit_id() 
  get recent closedtrade exit ID
  Returns: (string) exit ID
 recent_opentrade_entry_price() 
  get recent opentrade entry price
  Returns: (float) price
 recent_closedtrade_entry_price() 
  get recent closedtrade entry price
  Returns: (float) price
 recent_closedtrade_exit_price() 
  get recent closedtrade exit price
  Returns: (float) price
 recent_opentrade_entry_time() 
  get recent opentrade entry time
  Returns: (int) time
 recent_closedtrade_entry_time() 
  get recent closedtrade entry time
  Returns: (int) time
 recent_closedtrade_exit_time() 
  get recent closedtrade exit time
  Returns: (int) time
 time_since_recent_opentrade_entry() 
  get time since recent opentrade entry
  Returns: (int) time
 time_since_recent_closedtrade_entry() 
  get time since recent closedtrade entry
  Returns: (int) time
 time_since_recent_closedtrade_exit() 
  get time since recent closedtrade exit
  Returns: (int) time
 recent_opentrade_size() 
  get recent opentrade size
  Returns: (float) size
 recent_closedtrade_size() 
  get recent closedtrade size
  Returns: (float) size
 all_opentrades_size() 
  get all opentrades size
  Returns: (float) size
 recent_opentrade_profit() 
  get recent opentrade profit
  Returns: (float) profit
 all_opentrades_profit() 
  get all opentrades profit
  Returns: (float) profit
 recent_closedtrade_profit() 
  get recent closedtrade profit
  Returns: (float) profit
 recent_opentrade_max_runup() 
  get recent opentrade max runup
  Returns: (float) runup
 recent_closedtrade_max_runup() 
  get recent closedtrade max runup
  Returns: (float) runup
 recent_opentrade_max_drawdown() 
  get recent opentrade maxdrawdown
  Returns: (float) mdd
 recent_closedtrade_max_drawdown() 
  get recent closedtrade maxdrawdown
  Returns: (float) mdd
 max_open_trades_drawdown() 
  get max open trades drawdown
  Returns: (float) mdd
 recent_opentrade_commission() 
  get recent opentrade commission
  Returns: (float) commission
 recent_closedtrade_commission() 
  get recent closedtrade commission
  Returns: (float) commission
 qty_by_percent_of_equity(percent) 
  get qty by percent of equtiy
  Parameters:
     percent : (series float) percent that you want to set 
  Returns: (float) quantity
 qty_by_percent_of_position_size(percent) 
  get size by percent of position size
  Parameters:
     percent : (series float) percent that you want to set 
  Returns: (float) size
 is_day_change() 
  get bool change of day
  Returns: (bool) day is change or not
 is_in_trade() 
  get bool using number of bars
  Returns: (bool) allowedToTrade
 discord_message(name, message) 
  get json format discord message
  Parameters:
     name : (string) name of bot 
     message : (string) message that you want to send
  Returns: (string) json format string
 telegram_message(chat_id, message) 
  get json format telegram message
  Parameters:
     chat_id : (string) chatId of bot
     message : (string) message that you want to send
  Returns: (string) json format string

