Library "TradingPortfolio"
Simple functions for portfolio management. A portfolio is essentially
a float array with 3 positions [token, fiat, retained fiat] that gets passed around
into these functions that ensure it gets properly updated as trading ensues.

An example usage:

import hugodanielcom/TradingPortfolio/XXXX as portfolio
var float[] my_portfolio = portfolio.init(0.0, strategy.initial_capital) // Initialize the portfolio with the strategy capital
if close < 10.0
portfolio.buy(my_portfolio, 10.0, close) // Buy when the close is below 10.0
plot(portfolio.total(my_portfolio), title = "Total portfolio value")


get_balance(portfolio) Gets the number of tokens and fiat available in the supplied portfolio.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
  Returns: The tokens and fiat in a tuple [tokens, fiat]

set_balance(portfolio, new_crypto, new_fiat) Sets the portfolio number of tokens and fiat amounts. This function overrides the current values in the portfolio and sets the provided ones as the new portfolio.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    new_crypto: The new amount of tokens in the portfolio.
    new_fiat: The new amount of fiat in the portfolio
  Returns: The tokens and fiat in a tuple [tokens, fiat]

init(crypto, fiat) This function returns a clean portfolio. Start by calling this function and pass its return value as an argument to the other functions in this library.
  Parameters:
    crypto: The initial amount of tokens in the portfolio (defaults to 0.0).
    fiat: The initial amount of fiat in the portfolio (defaults to 0.0).
  Returns: The portfolio (a float[])

crypto(portfolio) Gets the number of tokens in the portfolio
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
  Returns: The amount of tokens in the portfolio

fiat(portfolio) Gets the fiat in the portfolio
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
  Returns: The amount of fiat in the portfolio

retained(portfolio) Gets the amount of reatined fiat in the portfolio. Retained fiat is not considered as part of the balance when buying/selling, but it is considered as part of the total of the portfolio.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
  Returns: The amount of retained fiat in the portfolio

retain(portfolio, fiat_to_retain) Sets the amount of fiat to retain. It removes the amount from the current fiat in the portfolio and marks it as retained.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    fiat_to_retain: The amount of fiat to remove and mark as retained.
  Returns: void

total(portfolio, token_value) Calculates the total fiat value of the portfolio. It multiplies the amount of tokens by the supplied value and adds to the result the current fiat and retained amount.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    token_value: The fiat value of a unit (1) of token
  Returns: A float that corresponds to the total fiat value of the portfolio (retained amount included)

ratio(portfolio, token_value) Calculates the ratio of tokens / fiat. The retained amount of fiat is not considered, only the active fiat being considered for trading.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    token_value: The fiat value of a unit (1) of token
  Returns: A float between 1.0 and 0.0 that corresponds to the portfolio ratio of token / fiat (i.e. 0.6 corresponds to a portfolio whose value is made by 60% tokens and 40% fiat)

can_buy(portfolio, amount, token_value) Asserts that there is enough balance to buy the requested amount of tokens.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    amount: The amount of tokens to assert that can be bought
    token_value: The fiat value of a unit (1) of token
  Returns: A boolean value, true if there is capacity to buy the amount of tokens provided.

can_sell(portfolio, amount) Asserts that there is enough token balance to sell the requested amount of tokens.
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    amount: The amount of tokens to assert that can be sold
  Returns: A boolean value, true if there is capacity to sold the amount of tokens provided.

buy(portfolio, amount, token_value) Adjusts the portfolio state to perform the equivalent of a buy operation (as in, buy the requested amount of tokens at the provided value and set the portfolio accordingly).
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    amount: The amount of tokens to buy
    token_value: The fiat value of a unit (1) of token
  Returns: A boolean value, true the requested amount of tokens was "bought" and the portfolio updated. False if nothing was changed.

sell(portfolio, amount, token_value) Adjusts the portfolio state to perform the equivalent of a sell operation (as in, sell the requested amount of tokens at the provided value and set the portfolio accordingly).
  Parameters:
    portfolio: A portfolio float[] array as created by the `init()` function.
    amount: The amount of tokens to sell
    token_value: The fiat value of a unit (1) of token
  Returns: A boolean value, true the requested amount of tokens was "sold" and the portfolio updated. False if nothing was changed.
portfolioPortfolio managementstrategies

مكتبة باين

كمثال للقيم التي تتبناها TradingView، نشر المؤلف شيفرة باين كمكتبة مفتوحة المصدر بحيث يمكن لمبرمجي باين الآخرين من مجتمعنا استخدامه بحرية. تحياتنا للمؤلف! يمكنك استخدام هذه المكتبة بشكل خاص أو في منشورات أخرى مفتوحة المصدر، ولكن إعادة استخدام هذا الرمز في المنشور تحكمه قوانين الموقع.

إخلاء المسؤولية