PINE LIBRARY

UtilityFunctions

Updated
Library "UtilityFunctions"
Utility functions written by me

printLabelOnLastBar_string(string)
  Prints string in a label on the last bar
  Parameters:
    string: value to print
  Returns: void

printLabelOnLastBar_float(float)
  Prints float in a label on the last bar
  Parameters:
    float: value to print
  Returns: void

printSeriesInReverseOnLabels(series)
  Prints a float series in labels in reverse (the first value is on the last candle, the second value is on the second to last candle, etc.)
  Parameters:
    series: float values to print
  Returns: void

isPeriodDailyBased(string)
  Returns true/false if the period is Daily based (1D, 3D, ...)
  Parameters:
    string: timeframe period
  Returns: true/false

get_multiplier(string)
  Gets the mutliplier of the timeframe passed compared to the current timeframe. If current TF is 5m and the passed timeframe period is 30m, the result will be 6
  Parameters:
    string: timeframe param
  Returns: simple float of the multiplier
Release Notes
v2

Added:
printLabelOnEveryBar(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void
Release Notes
v3

Added:
printLabelOnSpecificBar_string(string)
  Prints a string on a specific bar
  Parameters:
    string: text to be printed and series int bar index
  Returns: void
Release Notes
v4

Added:
print_1_value_on_60_level_string()

print_1_value_on_60_level_float()

print_2_values_on_60_level_string()

print_2_values_on_60_level_float()

print_3_values_on_60_level_string()

print_3_values_on_60_level_float()

print_4_values_on_60_level_string()

print_4_values_on_60_level_float()
Release Notes
v5 - added exported functions for the first time; will probably store more here, in order for them to be on only one place and to be able to apply them on many places more easily
Release Notes
v6

Added:
func_strong_bullish_alignment_by_bar_index()
  returns if at a specific index, the array value on it is above ema1, above ema2, above ema3
  Returns: if at a specific index, the array value on it is above ema1, above ema2, above ema3

func_strong_bearish_alignment_by_bar_index()
  returns if at a specific index, the array value on it is below ema1, below ema2, below ema3
  Returns: if at a specific index, the array value on it is below ema1, below ema2, below ema3

func_turn_series_to_array()

func_get_bull_and_bear_cross_indexes(arr)
  returns if source has strong bull/bear alignment compared to its emas and the bull/bear cross index if there is such - so if the emas are 20,45 and 200, if price is above 20 and 45 and these two emas are bullishly crossed, but
they are below 200, the index will be -1
  Parameters:
    arr: - the array of values (could be close values of candles, could be asset vs market (index) values), which basically contains the source; source is e.g. price close, or index; the emas are of the source

func_generate_price_data()
Release Notes
v7

Added:
func_generate_relative_strength_data()

func_cross_of_source_and_200_ema()
  creates an array with the source values you pass as a parametr; starts counting from the most recent element (the element now) and continues backwards and checks if the source had
bullishly or bearishly crossed the ema200 parameter that was passed; also writes in the table myTable some values
  Returns: bool- if the last index of crossing the source with the ema200 was a bull cross or not
Release Notes
v8

Added:
printLabelOnEveryBar_at_80_level(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void

printLabelOnEveryBar_at_40_level(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void

printLabelOnEveryBar_at_0_level(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void

Removed:
printLabelOnEveryBar(the)
  Prints a float series - the value of the series for the particular candle
Release Notes
v9

Added:
printLabelOnEveryBar_at_80_level_string(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void

printLabelOnEveryBar_at_40_level_string(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void

printLabelOnEveryBar_at_0_level_string(the)
  Prints a float series - the value of the series for the particular candle
  Parameters:
    the: float series to print
  Returns: void
Release Notes
v10

Added:
print_on_specific_x_at_specific_y_level_float()

print_on_specific_x_at_specific_y_level_string()
Release Notes
v11

Added:
print_on_specific_bar_index_on_candle_high_string()

print_on_specific_bar_index_on_candle_high_float()
Release Notes
v12

Added:
print_on_current_bar_index_on_candle_high_string()

print_on_current_bar_index_on_candle_high_float()

print_on_current_bar_index_on_candle_low_string()

print_on_current_bar_index_on_candle_low_float()

Removed:
print_on_specific_bar_index_on_candle_high_string()

print_on_specific_bar_index_on_candle_high_float()
Release Notes
v13

Added:
f_oscillator_resets(p_close, p_oscillator, p_should_draw_oscillator_pivot_vertical_arrows, p_should_draw_oscillator_pivots_connecting_lines, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)
  Parameters:
    p_close
    p_oscillator
    p_should_draw_oscillator_pivot_vertical_arrows
    p_should_draw_oscillator_pivots_connecting_lines
    p_should_activate_log_mom_reading_bull
    p_should_activate_hidden_div_bull
    p_should_activate_regular_div_bull
    p_should_activate_regular_bull_div_only_above_x_ema
    p_above_x_ema_length
    p_oscillator_reset_level_bull
    p_should_activate_log_mom_reading_bear
    p_should_activate_hidden_div_bear
    p_should_activate_regular_div_bear
    p_should_activate_regular_bear_div_only_below_x_ema
    p_below_x_ema_length
    p_oscillator_reset_level_bear

print_2_values_with_their_keys_on_current_bar_index_on_candle_high_string(key1, val1, key2, val2)
  Parameters:
    key1
    val1
    key2
    val2

print_2_values_with_their_keys_on_current_bar_index_on_candle_low_string(key1, val1, key2, val2)
  Parameters:
    key1
    val1
    key2
    val2
Release Notes
v14

Added:
f_oscillator_resets_without_drawings(p_close, p_oscillator, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)
  Parameters:
    p_close
    p_oscillator
    p_should_activate_log_mom_reading_bull
    p_should_activate_hidden_div_bull
    p_should_activate_regular_div_bull
    p_should_activate_regular_bull_div_only_above_x_ema
    p_above_x_ema_length
    p_oscillator_reset_level_bull
    p_should_activate_log_mom_reading_bear
    p_should_activate_hidden_div_bear
    p_should_activate_regular_div_bear
    p_should_activate_regular_bear_div_only_below_x_ema
    p_below_x_ema_length
    p_oscillator_reset_level_bear
Release Notes
v15

Added:
f_oscillator_resets_with_drawings(p_close, p_oscillator, p_should_draw_oscillator_pivot_vertical_arrows, p_should_draw_oscillator_pivots_connecting_lines, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)
  Parameters:
    p_close
    p_oscillator
    p_should_draw_oscillator_pivot_vertical_arrows
    p_should_draw_oscillator_pivots_connecting_lines
    p_should_activate_log_mom_reading_bull
    p_should_activate_hidden_div_bull
    p_should_activate_regular_div_bull
    p_should_activate_regular_bull_div_only_above_x_ema
    p_above_x_ema_length
    p_oscillator_reset_level_bull
    p_should_activate_log_mom_reading_bear
    p_should_activate_hidden_div_bear
    p_should_activate_regular_div_bear
    p_should_activate_regular_bear_div_only_below_x_ema
    p_below_x_ema_length
    p_oscillator_reset_level_bear

Removed:
f_oscillator_resets(p_close, p_oscillator, p_should_draw_oscillator_pivot_vertical_arrows, p_should_draw_oscillator_pivots_connecting_lines, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)
Release Notes
v16
Release Notes
v17

Added:
f_is_bull_candle(p_open, p_close, i)
  Parameters:
    p_open
    p_close
    i

f_is_bear_candle(p_open, p_close, i)
  Parameters:
    p_open
    p_close
    i
Release Notes
v18
Release Notes
v19

Added:
empty()

Removed:
func_green_red_combo_new(p_price_ema1, p_price_ema2, p_fsr_ema1, p_fsr_ema2, p_fsr)

f_oscillator_resets_without_drawings(p_close, p_oscillator, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)

f_oscillator_resets_with_drawings(p_close, p_oscillator, p_should_draw_oscillator_pivot_vertical_arrows, p_should_draw_oscillator_pivots_connecting_lines, p_should_activate_log_mom_reading_bull, p_should_activate_hidden_div_bull, p_should_activate_regular_div_bull, p_should_activate_regular_bull_div_only_above_x_ema, p_above_x_ema_length, p_oscillator_reset_level_bull, p_should_activate_log_mom_reading_bear, p_should_activate_hidden_div_bear, p_should_activate_regular_div_bear, p_should_activate_regular_bear_div_only_below_x_ema, p_below_x_ema_length, p_oscillator_reset_level_bear)

func_strong_bullish_alignment_by_bar_index(arr, ema1, ema2, ema3, i)
  returns if at a specific index, the array value on it is above ema1, above ema2, above ema3

func_strong_bearish_alignment_by_bar_index(arr, ema1, ema2, ema3, i)
  returns if at a specific index, the array value on it is below ema1, below ema2, below ema3

func_turn_series_to_array(source)

func_get_bull_and_bear_cross_indexes(arr, source, ema1, ema2, ema3)
  returns if source has strong bull/bear alignment compared to its emas and the bull/bear cross index if there is such - so if the emas are 20,45 and 200, if price is above 20 and 45 and these two emas are bullishly crossed, but
they are below 200, the index will be -1

func_generate_relative_strength_data(securityOfSymbolToCompare, securityOfComparedToSymbol)

func_cross_of_source_and_200_ema(source, ema200)
  creates an array with the source values you pass as a parametr; starts counting from the most recent element (the element now) and continues backwards and checks if the source had
bullishly or bearishly crossed the ema200 parameter that was passed; also writes in the table myTable some values

func_generate_price_data(source)

print_2_values_with_their_keys_on_current_bar_index_on_candle_high_string(key1, val1, key2, val2)

print_2_values_with_their_keys_on_current_bar_index_on_candle_low_string(key1, val1, key2, val2)

print_on_current_bar_index_on_candle_high_string(txt)

print_on_current_bar_index_on_candle_high_float(txt)

print_on_current_bar_index_on_candle_low_string(txt)

print_on_current_bar_index_on_candle_low_float(txt)

print_on_specific_x_at_specific_y_level_float(x, y, txt)

print_on_specific_x_at_specific_y_level_string(x, y, txt)

printLabelOnLastBar_string(txt)
  Prints string in a label on the last bar

printLabelOnLastBar_float(txt)
  Prints float in a label on the last bar

printLabelOnEveryBar_at_80_level(float_series)
  Prints a float series - the value of the series for the particular candle

printLabelOnEveryBar_at_40_level(float_series)
  Prints a float series - the value of the series for the particular candle

printLabelOnEveryBar_at_0_level(float_series)
  Prints a float series - the value of the series for the particular candle

printLabelOnEveryBar_at_80_level_string(string_series)
  Prints a float series - the value of the series for the particular candle

printLabelOnEveryBar_at_40_level_string(string_series)
  Prints a float series - the value of the series for the particular candle

printLabelOnEveryBar_at_0_level_string(string_series)
  Prints a float series - the value of the series for the particular candle

printSeriesInReverseOnLabels(func_series)
  Prints a float series in labels in reverse (the first value is on the last candle, the second value is on the second to last candle, etc.)

printLabelOnSpecificBar_string(txt, func_bar_index)
  Prints a string on a specific bar

isPeriodDailyBased(tf_period)
  Returns true/false if the period is Daily based (1D, 3D, ...)

get_multiplier(func_timeframe)
  Gets the mutliplier of the timeframe passed compared to the current timeframe. If current TF is 5m and the passed timeframe period is 30m, the result will be 6

print_1_value_on_60_level_string(txt)

print_1_value_on_60_level_float(txt)

print_2_values_on_60_level_string(txt1, txt2)

print_2_values_on_60_level_float(txt1, txt2)

print_3_values_on_60_level_string(txt1, txt2, txt3)

print_3_values_on_60_level_float(txt1, txt2, txt3)

print_4_values_on_60_level_string(txt1, txt2, txt3, txt4)

print_4_values_on_60_level_float(txt1, txt2, txt3, txt4)

f_is_bull_candle(p_open, p_close, i)

f_is_bear_candle(p_open, p_close, i)

f_condition_was_met_was_less_than_x_hours_ago(p_condition, p_hours_ago)

f_condition_was_met_was_less_than_x_hours_ago_and_is_currently_true(p_condition, p_hours_ago)

f_condition_was_met_was_more_than_x_hours_ago(p_condition, p_hours_ago)

f_condition_was_met_was_more_than_x_hours_ago_and_is_currently_true(p_condition, p_hours_ago)
debuggingdisplayMATHpinescriptutility

Pine library

In true TradingView spirit, the author has published this Pine code as an open-source library so that other Pine programmers from our community can reuse it. Cheers to the author! You may use this library privately or in other open-source publications, but reuse of this code in a publication is governed by House rules.

Disclaimer