PINE LIBRARY
equity_curve

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
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
Pine kitaplığı
Gerçek TradingView ruhuyla, yazar bu Pine kodunu açık kaynaklı bir kütüphane olarak yayınladı, böylece topluluğumuzdaki diğer Pine programcıları onu yeniden kullanabilir. Yazarı tebrik ederiz! Bu kütüphaneyi özel olarak veya diğer açık kaynaklı yayınlarda kullanabilirsiniz, ancak bu kodun yayınlarda yeniden kullanılması Topluluk Kuralları tarafından yönetilir.
Feragatname
Bilgiler ve yayınlar, TradingView tarafından sağlanan veya onaylanan finansal, yatırım, alım satım veya diğer türden tavsiye veya öneriler anlamına gelmez ve teşkil etmez. Kullanım Koşulları bölümünde daha fazlasını okuyun.
Pine kitaplığı
Gerçek TradingView ruhuyla, yazar bu Pine kodunu açık kaynaklı bir kütüphane olarak yayınladı, böylece topluluğumuzdaki diğer Pine programcıları onu yeniden kullanabilir. Yazarı tebrik ederiz! Bu kütüphaneyi özel olarak veya diğer açık kaynaklı yayınlarda kullanabilirsiniz, ancak bu kodun yayınlarda yeniden kullanılması Topluluk Kuralları tarafından yönetilir.
Feragatname
Bilgiler ve yayınlar, TradingView tarafından sağlanan veya onaylanan finansal, yatırım, alım satım veya diğer türden tavsiye veya öneriler anlamına gelmez ve teşkil etmez. Kullanım Koşulları bölümünde daha fazlasını okuyun.