TradingView
jason5480
4 Mar 2022 pukul 17.06

math_utils 

Enjin Coin / TetherUSBinance

Deskripsi

Library "math_utils"
Collection of math functions that are not part of the standard math library

num_of_non_decimal_digits(number) num_of_non_decimal_digits - The number of the most significant digits on the left of the dot
  Parameters:
    number: - The floating point number
  Returns: number of non digits

num_of_decimal_digits(number) num_of_decimal_digits - The number of the most significant digits on the right of the dot
  Parameters:
    number: - The floating point number
  Returns: number of decimal digits

floor(number, precision) floor - floor with precision to the given most significant decimal point
  Parameters:
    number: - The floating point number
    precision: - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: number floored to the decimal digits defined by the precision

ceil(number, precision) floor - ceil with precision to the given most significant decimal point
  Parameters:
    number: - The floating point number
    precision: - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: number ceiled to the decimal digits defined by the precision

clamp(number, lower, higher, precision) clamp - clamp with precision to the given most significant decimal point
  Parameters:
    number: - The floating point number
    lower: - The lowerst number limit to return
    higher: - The highest number limit to return
    precision: - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: number clamped to the decimal digits defined by the precision

Catatan Rilis

v2
Remove simple from time serries

Catatan Rilis

v3

Added:
clamp_up(number, lower, higher, precision)
  clamp - clamp with precision to the given most significant decimal point. Ceil is favored for the precision rounding.
  Parameters:
    number: - The floating point number
    lower: - The lowerst number limit to return
    higher: - The highest number limit to return
    precision: - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: number clamped to the decimal digits defined by the precision

clamp_down(number, lower, higher, precision)
  clamp - clamp with precision to the given most significant decimal point. Floor is favored for the precision rounding.
  Parameters:
    number: - The floating point number
    lower: - The lowerst number limit to return
    higher: - The highest number limit to return
    precision: - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: number clamped to the decimal digits defined by the precision

Catatan Rilis

v4
Add overloads that support series precision with none simple parameter

Catatan Rilis

v5
Add example for quantity calculation

Catatan Rilis

v6
Use Method syntax for a more intuitive interface!

Catatan Rilis

v7
Add "simple" overloads for the number itself.

Catatan Rilis

v8
(minor) use this as an indication for the "self type" instance

Catatan Rilis

v9

Added:
method floor_to_mintick(this)
  floor_to_mintick - floor with precision to the mintick most significant decimal point
  Namespace types: series float, simple float, input float, const float
  Parameters:
    this (float): - The floating point number
  Returns: - number floored to the decimal digits defined by the mintick precision

method ceil_to_mintick(this)
  ceil_to_mintick - ceil with precision to the mintick most significant decimal point
  Namespace types: series float, simple float, input float, const float
  Parameters:
    this (float): - The floating point number
  Returns: - number ceiled to the decimal digits defined by the mintick precision

Updated:
method num_of_non_decimal_digits(this)
  num_of_non_decimal_digits - The number of the most significant digits on the left of the dot
  Namespace types: series float, simple float, input float, const float
  Parameters:
    this (float): - The floating point number
  Returns: - number of non digits

method num_of_decimal_digits(this)
  num_of_decimal_digits - The number of the most significant digits on the right of the dot
  Namespace types: series float, simple float, input float, const float
  Parameters:
    this (float): - The floating point number
  Returns: - number of decimal digits

method floor(this, precision)
  floor - floor with precision to the given most significant decimal point
  Namespace types: simple float, input float, const float
  Parameters:
    this (simple float): - The floating point number
    precision (int): - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: - number floored to the decimal digits defined by the precision

method ceil(this, precision)
  ceil - ceil with precision to the given most significant decimal point
  Namespace types: simple float, input float, const float
  Parameters:
    this (simple float): - The floating point number
    precision (int): - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: - number ceiled to the decimal digits defined by the precision

method clamp_up(this, lower, higher, precision)
  clamp - clamp with precision to the given most significant decimal point. Ceil is favored for the precision rounding.
  Namespace types: simple float, input float, const float
  Parameters:
    this (simple float): - The floating point number
    lower (float): - The lowerst number limit to return
    higher (float): - The highest number limit to return
    precision (int): - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: - number clamped to the decimal digits defined by the precision

method clamp_down(this, lower, higher, precision)
  clamp_down - clamp with precision to the given most significant decimal point. Floor is favored for the precision rounding.
  Namespace types: simple float, input float, const float
  Parameters:
    this (simple float): - The floating point number
    lower (float): - The lowerst number limit to return
    higher (float): - The highest number limit to return
    precision (int): - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: - number clamped to the decimal digits defined by the precision

method clamp(this, lower, higher, precision)
  clamp - clamp with precision to the given most significant decimal point. No specific direction is favored for the precision rounding.
  Namespace types: simple float, input float, const float
  Parameters:
    this (simple float): - The floating point number
    lower (float): - The lowerst number limit to return
    higher (float): - The highest number limit to return
    precision (int): - The number of decimal places a.k.a the most significant decimal digit - e.g precision 2 will produce 0.01 minimum change
  Returns: - number clamped to the decimal digits defined by the precision
Komentar
metadimensional
Nice use of the new PINE script feature, @jason5480.

I haven't used methods a ton but at a high level it is similar to a custom function and it can be called separately like a function, but it can also be appended to a variable to execute the function by appending its name to a variable that matches the first declared variable type of the method:

for example, for the floor method defined in this library

var float price_10d_average
stop_loss = price_10d_average.floor
jason5480
Yes @metadimensional this the use case of the methods. They are like class methods in other object oriented languages. The only difference is that here they are defined outside of the scope of the custom type. In the example above you have to also pass the (remaining) arguments eg. stop_loss = price_10d_average.floor(precision = 2). Now I am curious to see what will happen when the standard math library that also has a floor function will also update to the method syntax.
JohnBaron
thanks for this!
jason5480
@JohnBaron, I wish this were part of the official math library :D
Lebih lanjut