PINE LIBRARY

equity_curve

427
Library "equity_curve"

f_remove_exchange_name(name)
  Remove exchange prefix from ticker string (e.g., "BINANCE:BTCUSD" → "BTCUSD")
  Parameters:
    name (simple string): Ticker string potentially containing exchange prefix
  Returns: Ticker without exchange prefix

f_roc()
  Calculate bar-over-bar return as decimal (close-to-close, for buy-and-hold)
  Returns: Return as decimal (e.g., 0.02 for +2%)

f_roc_entry()
  Calculate open-to-close return (realistic strategy entry assumption at bar open)
  Returns: Intrabar return as decimal

f_equity(ticker1, ticker2, ticker3, ticker4, ticker5, ticker6, best_asset, r1, r2, r3, r4, r5, r6, backtest, prev_equity, prev_peak, prev_dd)
  Calculate strategy equity for a rotation system (stateless — caller must maintain var state).
Uses best_asset[2] so signal is visible 1 bar before equity acts on it.
  Parameters:
    ticker1 (simple string): Asset 1 ticker string
    ticker2 (simple string): Asset 2 ticker string
    ticker3 (simple string): Asset 3 ticker string
    ticker4 (simple string): Asset 4 ticker string
    ticker5 (simple string): Asset 5 ticker string
    ticker6 (simple string): Asset 6 ticker string
    best_asset (string): The currently selected best-performing asset ticker
    r1 (float): Per-bar return for asset 1 (open-to-close)
    r2 (float): Per-bar return for asset 2
    r3 (float): Per-bar return for asset 3
    r4 (float): Per-bar return for asset 4
    r5 (float): Per-bar return for asset 5
    r6 (float): Per-bar return for asset 6
    backtest (bool): Whether backtesting is active this bar
    prev_equity (float): Previous bar's equity value (caller initializes var as na)
    prev_peak (float): Previous bar's peak equity value (caller initializes var as na)
    prev_dd (float): Previous bar's max drawdown value (caller initializes var as 0.0)
  Returns: [equity, peak_equity, max_drawdown]

f_buy_and_hold(r, backtest, prev_equity, prev_peak, prev_dd)
  Calculate buy-and-hold equity for a single asset (stateless — caller must maintain var state)
  Parameters:
    r (float): Per-bar return (close-to-close)
    backtest (bool): Whether backtesting is active this bar
    prev_equity (float): Previous bar's equity value (caller initializes var as na)
    prev_peak (float): Previous bar's peak equity value (caller initializes var as na)
    prev_dd (float): Previous bar's max drawdown value (caller initializes var as 0.0)
  Returns: [equity, peak_equity, max_drawdown]

f_since(active, prev_count)
  Calculate lookback period as bar count since condition became true (stateless — caller must maintain var state)
  Parameters:
    active (bool): Whether the counting condition is active this bar
    prev_count (int): Previous bar's raw count (caller initializes var as 0)
  Returns: [output, count] — output is the adjusted lookback for metrics; count is the raw counter to feed back next bar

f_best_asset_col(ticker1, ticker2, ticker3, ticker4, ticker5, ticker6, best_asset, backtest, colors)
  Return color for equity curve based on currently held asset.
Uses best_asset[1] so signal is visible 1 bar before equity execution.
  Parameters:
    ticker1 (simple string): Asset 1 ticker string
    ticker2 (simple string): Asset 2 ticker string
    ticker3 (simple string): Asset 3 ticker string
    ticker4 (simple string): Asset 4 ticker string
    ticker5 (simple string): Asset 5 ticker string
    ticker6 (simple string): Asset 6 ticker string
    best_asset (string): The confirmed best-performing asset ticker
    backtest (bool): Whether backtesting is active
    colors (array<color>): Array of 8 colors: [asset1, asset2, asset3, asset4, asset5, asset6, usd, text]
  Returns: Color corresponding to the currently held asset

f_PerformanceMetrics(base, Lookback, backtest, max_drawdown)
  Calculate performance metrics from an equity curve
  Parameters:
    base (float): The equity curve series
    Lookback (int): Number of bars to analyze (capped at 4998)
    backtest (bool): Whether backtesting is active
    max_drawdown (float): Maximum drawdown value (pre-calculated, as decimal e.g. 0.25 = 25%)
  Returns: Array of 10 floats: [mean_all%, mean_pos%, mean_neg%, stdev_all%, stdev_pos%, stdev_neg%, sharpe, sortino, omega, max_dd%]

f_PerfMetricTable(p, ticker1, ticker2, ticker3, ticker4, ticker5, ticker6, strategy, a1, a2, a3, a4, a5, a6, colors)
  Populate a performance metrics comparison table. Caller must create the table with `var` and pass it in.
Should only be called on barstate.islast.
  Parameters:
    p (table): Pre-created table (caller uses: var table p = table.new(position.top_left, 8, 15, ...))
    ticker1 (simple string): Asset 1 ticker string
    ticker2 (simple string): Asset 2 ticker string
    ticker3 (simple string): Asset 3 ticker string
    ticker4 (simple string): Asset 4 ticker string
    ticker5 (simple string): Asset 5 ticker string
    ticker6 (simple string): Asset 6 ticker string
    strategy (array<float>): Strategy metrics array (from f_PerformanceMetrics)
    a1 (array<float>): Buy-and-hold metrics for asset 1
    a2 (array<float>): Buy-and-hold metrics for asset 2
    a3 (array<float>): Buy-and-hold metrics for asset 3
    a4 (array<float>): Buy-and-hold metrics for asset 4
    a5 (array<float>): Buy-and-hold metrics for asset 5
    a6 (array<float>): Buy-and-hold metrics for asset 6
    colors (array<color>): Array of 8 colors
  Returns: The table object

Pernyataan Penyangkalan

Informasi dan publikasi ini tidak dimaksudkan, dan bukan merupakan, saran atau rekomendasi keuangan, investasi, trading, atau jenis lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Ketentuan Penggunaan.