SD Median MVRV-Z🧠 Overview
SD Median MVRV-Z is a trend-following indicator that uses on-chain valuation signals as a supportive filter. It blends the momentum of the MVRV Z-score with a dynamic median-based price structure to provide cleaner, more reliable directional signals. This tool is designed to identify when price and trend align with favorable broader context — not to pinpoint overbought or oversold extremes.
🧩 Key Features
Trend-Following Core: Signals are built around directional strength, not reversion.
MVRV Z-Score Momentum: Utilizes the statistical momentum of Market Cap vs Realized Cap as a macro trend driver.
Rolling Median Filter: Applies a price-based condition to ensure trend signals are not triggered during short-term counter-moves or noise.
Threshold Customization: Input controls allow traders to define the strength required to trigger long or short signals.
Dynamic Visualization: Candle coloring and filled zones provide instant feedback on current market regime.
🔍 How It Works
Trend Signal: The MVRV ratio is normalized via Z-scoring to produce a momentum-like signal based on how far current valuation deviates from its rolling average.
Price Filter: A rolling median and standard deviation of price define an upper and lower band. These serve to filter out MVRV-Z signals that occur when price is moving against the perceived direction.
Signal Logic:
Long signal = MVRV-Z above threshold and price is not in the lower volatility band.
Short signal = MVRV-Z below threshold, regardless of price band (more aggressive condition).
Directional Engine (CD): Encodes the market regime state (1 for long, -1 for short, 0 for neutral), and drives all visual outputs.
🔁 Use Cases & Applications
Momentum Confirmation: Identify when on-chain momentum and price structure both confirm a trend direction.
Reduced Whipsawing: Filter out weak or conflicting trend signals that would otherwise lead to false entries.
Best Suited for BTC: This indicator is specifically tailored for Bitcoin, using BTC’s Market Cap and Realized Cap data from on-chain sources.
✅ Conclusion
SD Median MVRV-Z is a trend-centric tool that ensures directional conviction by requiring agreement between price structure and underlying market momentum. It is not meant to detect tops or bottoms, but instead to help traders participate in sustainable moves with greater confidence.
⚠️ Disclaimer
The content provided by this indicator is for educational and informational purposes only. Nothing herein constitutes financial or investment advice. Trading and investing involve risk, including the potential loss of capital. Always backtest and apply risk management suited to your strategy.
חפש סקריפטים עבור "BTC"
MestreDoFOMO Renko Underground v4.0Description:
The "MestreDoFOMO Renko Underground v4.0" is a custom indicator for TradingView that creates a dynamic Renko chart to help identify trends and reversal points in the market. Unlike traditional candlestick charts, Renko focuses solely on significant price movements, ignoring time and market noise. This script includes advanced features like support and resistance channels, moving averages, and alerts to assist with your trading decisions.
How It Works:
Dynamic Renko Bricks:
The brick size (price units to form each "box" on the chart) is calculated automatically using the ATR (Average True Range) with an adjustable multiplier. This means the size adapts to the asset's volatility (e.g., BTC/USDT). When the price moves up or down by the brick size, a new brick is created (green for up, red for down).
Reversal Signals:
Green triangles (🔼) appear below bars when the trend shifts to bullish, and red triangles (🔽) appear above when it shifts to bearish. These signals only appear on direction changes, reducing false signals.
Renko Channel:
The script draws two lines (green for resistance and red for support) based on the highs and lows of the last 10 bricks (or the value you set). This helps identify key price zones.
Moving Average on Bricks:
An orange line shows the moving average (EMA or SMA, your choice) of the last 20 bricks, helping confirm the overall trend.
Alerts:
You can set up alerts in TradingView to be notified when the trend shifts to bullish or bearish, perfect for active trading.
Visualization:
A gray dashed line shows the level of the last brick, providing a clear reference for the next expected move.
How to Use:
Add the indicator to your chart (e.g., BTC/USDT 1D).
Adjust parameters like the ATR multiplier, channel length, and moving average type in the settings menu.
Watch the bricks and signals to identify trends, and use the channels and moving average to plan entries and exits.
Enable alerts to receive real-time notifications.
Tip:
Test on different timeframes (1H, 4H, 1D) and adjust the ATR multiplier to match the volatility of the asset you're trading. Combine with other indicators (like RSI) for better results!
Real-Time Open Levels with Labels + Info TableReal-Time Multi-Timeframe Open Levels with Labels & Info Panel
Overview
This indicator displays real-time opening price levels across multiple timeframes (Monthly, Weekly, Daily, 4H) directly on your chart. It features:
• Dynamic horizontal lines extending through each timeframe period
• Customizable labels with text/colors
• Special 4H line treatment for the last hour (5-min charts only)
• Integrated information panel showing symbol, timeframe, and price changes
! (www.tradingview.com)
*Example showing multiple timeframe levels with labels and info panel*
---
Features & Configuration
1. Monthly Settings
! (www.tradingview.com)
Show Monthly: Toggle visibility of monthly opening price
Color: Semi-transparent blue (#2196F3 at 70% opacity)
Width: 2px line thickness
Style: Solid/Dotted/Dashed
Label: Display "M-Open" text with white text on blue background
2. Weekly Settings
! (www.tradingview.com)
Show Weekly: Toggle weekly opening price visibility
Color: Semi-transparent red (#FF5252 at 70% opacity)
Width: 1px thickness
Style: Dotted by default
Label: "W-Open" text in white on red background
3. Daily Settings
! (www.tradingview.com)
Show Daily: Toggle daily opening price
Color: Amber (#FFA000 at 70% opacity)
Width: 2px thickness
Style: Solid
Label: "D-Open" in white on orange background
---
4. 4-Hour Settings (5-Minute Charts Only)
Special Features for 5-Min Timeframe:
1. Standard 4H Line
• First 3 hours: Green (#4CAF50) dashed line
• Last hour: Bright red solid line (configurable)
• Vertical divider between 3rd/4th hours
2. Configuration Options
• Main 4H Line:
◦ Color/Width/Style for initial 3 hours
◦ Toggle label ("H4-Open") visibility and styling
• Final Hour Enhancement:
*Last Hour Line*
◦ Unique red color and line style
◦ Separate width (1px) and style (Solid)
*Divider Line*
◦ Vertical red dotted line marking last hour
◦ Adjustable position/width/transparency
! (www.tradingview.com)
*4H levels showing 3-hour segment and final hour treatment*
---
5. Info Panel Settings
Positioning:
• Anchor to any chart corner (Top/Bottom + Left/Right combinations)
• Three text sizes: Title (Huge), Change % (Large), Signature (Small)
Display Elements:
• Symbol: Show exchange prefix (e.g., "NASDAQ:")
• Timeframe: Current chart period (e.g., "5m")
• Change %: 24-hour price movement ▲/▼ percentage
• Custom Signature: Add text/username in footer
Styling:
• Semi-transparent white text (#ffffff77)
• Currency pair formatting (e.g., BTC/USD vs BTC-USD)
! (www.tradingview.com)
*Sample info panel with all elements enabled*
---
Usage Tips
1. Multi-Timeframe Context: Use levels to identify key daily/weekly support/resistance
2. 4H Trading: On 5-min charts, watch for price reactions near final hour transition
3. Customization:
• Match line colors to your chart theme
• Use different labels for clarity (e.g., "Weekly Open")
• Disable unused elements to reduce clutter
4. Divider Lines: Helps identify institutional trading periods (hour closes)
---
*Created using Pine Script v6. For optimal performance, use on charts <1H timeframe. ()*
Simplified STH-MVRV + Z-ScoreSimplified Short Term Holder MVRV (STH-MVRV) + Z-Score Indicator
Description:
This indicator visualizes the Short Term Holder Market Value to Realized Value ratio (STH-MVRV) and its normalized Z-Score, providing insight into Bitcoin’s market cycle phases and potential overbought or oversold conditions.
How it works:
The STH-MVRV ratio compares the market value of coins held by short-term holders to their realized value, helping to identify periods of profit-taking or accumulation by these holders.
The indicator calculates three versions:
STH-MVRV (MVRV): Ratio of current MVRV to its 155-day SMA.
STH-MVRV (Price): Ratio of BTC price to its 155-day SMA.
STH-MVRV (AVG): Average of the above two ratios.
You can select which ratio to display via the input dropdown.
Threshold Lines:
Adjustable upper and lower threshold lines mark significant levels where market sentiment might shift.
The indicator also plots a baseline at 1.0 as a reference.
Z-Score Explanation:
The Z-Score is a normalized value scaled between -3 and +3, calculated relative to the chosen threshold levels.
When the ratio hits the upper threshold, the Z-Score approaches +2, indicating potential overbought conditions.
Conversely, reaching the lower threshold corresponds to a Z-Score near -2, signaling potential oversold conditions.
This Z-Score is shown in a clear table in the top right corner of the chart for easy monitoring.
Data Sources:
MVRV data is fetched from the BTC_MVRV dataset.
Price data is sourced from the BTC/USD index.
Usage:
Use this indicator to assess short-term holder market behavior and to help identify buying or selling opportunities based on extremes indicated by the Z-Score.
Combining this tool with other analysis can improve timing decisions in Bitcoin trading.
Dynamic Portfolio TrackerDynamic Portfolio Tracker
The Dynamic Portfolio Tracker is a visual tool for actively managing and monitoring a multi-asset portfolio directly on TradingView. It allows users to input up to 15 custom assets (with a default setup for 5), define how much of each asset they hold, and assign a target allocation percentage to each. The script then calculates live market prices, total portfolio value, current vs. target weightings, and provides clear, color-coded instructions on whether to buy, sell, or hold each asset. It displays all this data in an on-chart table, showing both the dollar amount and the quantity to adjust for each asset, helping users keep their portfolio aligned with their strategy in real time.
How to Use the Inputs (What Each Field Means)
1. Portfolio Assets (Tickers)
Fields: Asset 1 Ticker, Asset 2 Ticker, …, Asset 15 Ticker
What it does: Lets you select which assets (crypto, stocks, etc.) you want to track. These are live symbols pulled from TradingView.
2. Asset Quantities
Fields: Asset 1 Amount, Asset 2 Amount, …, Asset 15 Amount
What it means: How much of each asset you currently hold. For example:
• 0.03 BTC
• 2.1 ETH
Why it’s needed: The script multiplies this by the live price to calculate the current dollar value of each asset in your portfolio.
3. Target %
Fields: Asset 1 Implied %, Asset 2 Implied %, …, Asset 15 Implied %
What it means: Your desired allocation for each asset. For example:
• 40% BTC
• 20% ETH
• 10% SOL, etc.
Important: These must total 100% or less across all assets. The script checks this and shows an error if the total exceeds 100%.
The Dynamic Portfolio Tracker displays two powerful on-chart tables:
1. Main Table — Per Asset Breakdown
This table shows detailed, real-time information for each asset in your portfolio. Each row represents a different asset, and each column has a specific meaning:
Column What It Means
Asset = The symbol of the asset (e.g., BTCUSD, ETHUSD), auto-stripped from the exchange name.
Price = The current market price of the asset, pulled live from TradingView.
Quantity = How much of that asset you currently hold, entered manually in the inputs.
Target % = The percentage of your total portfolio you want this asset to represent.
Actual % = What percentage of your portfolio it currently makes up (based on price × quantity).
Target Value = How much (in $) this asset should be worth in your portfolio.
Actual Value = How much (in $) this asset is currently worth.
Instruction = Whether to Buy, Sell, or Hold to match your target allocation.
Value Change = The dollar amount you’d need to buy/sell to rebalance this asset.
Units to Trade = The number of asset units to buy/sell to reach the target value.
2. Portfolio Summary Table — Portfolio Totals
This smaller table appears in the top-right corner and summarizes your entire portfolio at a glance:
Target % = Total of all your assigned target allocations (should equal 100%).
Actual % = Actual portfolio composition (always 100% unless your capital is zero).
Target Value = Total value your portfolio should be based on your target percentages.
Actual Value = Current live total value of your portfolio.
If there’s a discrepancy between Target Value and Actual Value, the difference is shown in each row of the main table, so you can adjust individual assets accordingly.
Privacy First: Hide Sensitive Financial Data
A unique feature of this tool is the ability to hide sensitive financial data, such as:
• Target Value
• Actual Value
• Total Portfolio Value
You can turn these off using toggle settings, and they’ll be replaced with a crossed-out eye icon (👁️🗨️) — just like on modern crypto exchanges. This feature makes the script safe for streaming, screenshots, or sharing publicly while protecting your privacy.
But more importantly:
Feelings are the enemy of good investing.
Seeing the value of your portfolio fluctuate can trigger fear or greed. By hiding your dollar values, you’re not just securing your data — you’re reducing the temptation to react emotionally.
It’s just numbers. Systems over Feelings.
Table Automatically Adapts to Your Asset Count
The Dynamic Portfolio Tracker is designed to scale with your portfolio. Simply choose how many assets you want to track (up to 15), and the table will automatically resize to fit exactly that number — no wasted space or empty rows.
• Select 1 to 15 assets using the “Number of Assets” input
• The table expands or contracts dynamically to show only those rows
• All calculations, summaries, and layout elements adjust accordingly in real time
This keeps the interface clean, focused, and perfectly tailored to your setup — whether you’re tracking 3 coins or managing a full portfolio of 12+ tokens.
Customize Your Table to Match Your Style
The Dynamic Portfolio Tracker offers a full suite of visual customization options, allowing you to tailor the table to your charting style or stream layout. You can:
• Choose text colors for labels, values, and headers
• Set background colors for the full table and header row — or turn them off completely for a clean, transparent look
• Control border and frame settings, including color, thickness, or disabling them entirely
• Pick custom colors for Buy and Sell signals in the rebalance column
• Adjust table font size from tiny to large to match your resolution or preferences
Special Thanks
This tool wouldn’t exist without the knowledge and inspiration gained through The Real World. A sincere thank you to the Investing Master, the Guides, and Professor Adam — your frameworks and lessons brought clarity, discipline, and structure to this build.
And of course, glory to L4 — where real men are made.
M2 Global Liquidity Index [Custom Offsets]M2 Global Liquidity Index
Plots the global M2 money supply alongside price, with two user-configurable forward shifts to help you anticipate macro-driven moves in BTC (or any asset).
Key Features
Current M2 Index (no offset)
Offset A — shift M2 forward by N days (default 78)
Offset B — shift M2 forward by M days (default 109)
Extended Currencies toggle adds 9 additional central banks (CHF, CAD, INR, RUB, BRL, KRW, MXN, ZAR)
All lines share the left-hand axis and scale to trillions
Inputs
Offset A (days): integer ≥ 0 (default 78)
Offset B (days): integer ≥ 0 (default 109)
Include extended currencies?: on/off
How to Use
Add the indicator to any chart (overlay mode).
In Settings → Inputs, enter your desired lead times for Offset A and Offset B.
Toggle extended currencies if you need a broader “global liquidity” view.
Watch how price action (e.g. BTC) tracks the shifted M2 lines to spot potential turning points.
Why It Matters
Changes in money supply often lead risk assets by several weeks to months. This tool makes it easy to visualize and test those correlations directly on your favorite timeframe.
Altseason Index | AlchimistOfCrypto
🌈 Altseason Index | AlchimistOfCrypto – Revealing Bitcoin-Altcoin Dominance Cycles 🌈
"The Altseason Index, engineered through advanced mathematical methodology, visualizes the probabilistic distribution of capital flows between Bitcoin and altcoins within a multi-cycle paradigm. This indicator employs statistical normalization principles where ratio coefficients create mathematical boundaries that define dominance transitions between cryptographic asset classes. Our implementation features algorithmically enhanced rainbow visualization derived from extensive market cycle analysis, creating a dynamic representation of value flow with adaptive color gradients that highlight critical phase transitions in the cyclical evolution of the crypto market."
📊 Professional Trading Application
The Altseason Index transcends traditional sentiment models with a sophisticated multi-band illumination system that reveals the underlying structure of crypto sector rotation. Scientifically calibrated across different ratios (TOTAL2/BTC, OTHERS/BTC) and featuring seamless daily visualization, it enables investors to perceive capital transitions between Bitcoin and altcoins with unprecedented clarity.
- Visual Theming 🎨
Scientifically designed rainbow gradient optimized for market cycle recognition:
- Green-Blue: Altcoin accumulation zones with highest capital flow potential
- Neutral White: Market equilibrium zone representing balanced capital distribution
- Yellow-Red: Bitcoin dominance regions indicating defensive capital positioning
- Gradient Transitions: Mathematical inflection points for strategic reallocation
- Market Phase Detection 🔍
- Precise zone boundaries demarcating critical sentiment shifts in the crypto ecosystem
- Daily timeframe calculation ensuring consistent signal reliability
- Multiple ratio analysis revealing the probabilistic nature of market capital flows
🚀 How to Use
1. Identify Market Phase ⏰: Locate the current index relative to colored zones
2. Understand Capital Flow 🎚️: Monitor transitions between Bitcoin and altcoin dominance
3. Assess Mathematical Value 🌈: Determine optimal allocation based on zone location
4. Adjust Investment Strategy 🔎: Modulate position sizing based on dominance assessment
5. Prepare for Rotation ✅: Anticipate capital shifts when approaching extreme zones
6. Invest with Precision 🛡️: Accumulate altcoins in lower zones, reduce in upper zones
7. Manage Risk Dynamically 🔐: Scale portfolio allocations based on index positioning
Compare Strength with SLOPE Description
This indicator compares the relative strength between the current asset and a benchmark (e.g., BTC vs. ETH or AAPL vs. SPY) using a linear regression slope of their ratio over time.
The ratio is calculated as: close / benchmark
A linear regression slope is computed over a user-defined window
The slope represents trend strength: if it’s rising, the current asset is outperforming the benchmark
Plots
Gray Line: The raw ratio between the asset and benchmark
Orange Line: The slope of the ratio (shows momentum)
Background Color :
Green: The asset is significantly stronger than the benchmark
Red: The asset is significantly weaker than the benchmark
No color: No clear trend
Settings
Slope Window Length: Number of candles used in the regression (default = 10)
Slope Threshold: Sensitivity of trend detection. Smaller values detect weaker trends.
Example Use Cases
Style Rotation Strategy: Use the slope to determine whether "Growth" or "Value" style is leading.
Pair Trading / Relative Performance: Track which asset is leading in a pair (e.g., BTC vs ETH).
Factor Timing: Serve as a timing model to allocate between different sectors or factors.
Happy trading!
Volume_volatility_24)📊 TechData24h (24h Technical Metrics)
This TradingView indicator displays and alerts on key daily metrics for the current trading instrument, including:
Volume (24h, Yesterday, Day Before Yesterday)
Price Change (%) over 24h
Volatility (%) over 24h
Volume Change (%) vs Yesterday and Day Before
Correlation with BTC (custom symbol & timeframe)
🔔 Custom Alerts:
You can define your own percentage thresholds for both positive and negative changes. Alerts will trigger when:
Price change exceeds or drops below a set threshold
Volatility crosses a threshold
Volume increases or decreases significantly
Correlation with BTC moves beyond limits
📋 Table Dashboard:
All selected metrics are shown in a 2-column dashboard at the bottom left of the chart, with color-coded values based on increase/decrease.
Master Litecoin Network Address Value Model BandThe Master Litecoin Network Address Value Model Band indicator compares Litecoin (LTC) and Bitcoin (BTC) network address activity to estimate LTC's value relative to BTC's price. It plots a band using new and total address ratios, adjusted by supply differences. Note: It excludes Litecoin's MWEB addresses, likely undervaluing the Litecoin network over time as MWEB adoption grows.
Altseason Index (Top 10)### Altseason Index (Top 10)
#### Overview
The "Altseason Index (Top 10)" indicator identifies whether the market is in an altseason (altcoins outperforming Bitcoin) or a Bitcoin season. It analyzes the performance of 9 top altcoins (ETH, BNB, ADA, XRP, SOL, DOT, AVAX, SHIB, LINK) against Bitcoin over 90 days, inspired by the Blockchain Center Altcoin Season Index.
#### How It Works
- Calculates the 90-day price change for BTC and 9 altcoins.
- Counts how many altcoins outperform BTC.
- Index = (number of outperforming altcoins / 9) * 100.
- >75%: Altseason (green zone).
- <25%: Bitcoin season (red zone).
- 25–75%: Neutral.
#### Visualization
- Blue line: Index value (0–100).
- Green line at 75: Altseason threshold.
- Red line at 25: Bitcoin season threshold.
- Green/red background fill for altseason/BTC season zones.
#### Usage
Add to your chart and interpret:
- Above 75: Consider altcoin investments.
- Below 25: Focus on Bitcoin.
Ensure tickers match your exchange (e.g., "BTCUSD" or "BINANCE:BTCUSDT").
#### Notes
- Limited to 9 altcoins due to TradingView's request.security() limit.
- Best on daily charts but adaptable to other timeframes.
AI Trend Momentum SniperThe AI Trend Momentum Sniper is a powerful technical analysis tool designed for day trading. This strategy combines multiple momentum and trend indicators to identify high-probability entry and exit points. The indicator utilizes a combination of Supertrend, MACD, RSI, ATR (Average True Range), and On-Balance Volume (OBV) to generate real-time signals for buy and sell opportunities.
Key Features:
Supertrend for detecting market direction (bullish or bearish).
MACD for momentum confirmation, highlighting changes in market momentum.
RSI to filter out overbought/oversold conditions and ensure high-quality trades.
ATR as a volatility filter to adjust for changing market conditions.
OBV (On-Balance Volume) to confirm volume strength and trend validity.
Dynamic Stop-Loss & Take-Profit based on ATR to manage risk and lock profits.
This indicator is tailored for intraday traders looking for quick market moves, especially in volatile and high liquidity assets like Bitcoin (BTC) and Ethereum (ETH). It helps traders capture short-term trends with efficient risk management tools.
How to Apply:
Set Your Chart: Apply the AI Trend Momentum Sniper to a 5-minute (M5) or 15-minute (M15) chart for optimal performance.
Buy Signal: When the indicator generates a green arrow below the bar, it indicates a buy signal based on positive trend and momentum alignment.
Sell Signal: A red arrow above the bar signals a sell condition when the trend and momentum shift bearish.
Stop-Loss and Take-Profit: The indicator automatically calculates dynamic stop-loss and take-profit levels based on the ATR value for each trade, ensuring proper risk management.
Alerts: Set up custom alerts for buy or sell signals, and get notified instantly when opportunities arise.
Best Markets for Use:
BTC/USDT, ETH/USDT – High liquidity and volatility.
Major altcoins with sufficient volume.
Avoid using it on low-liquidity assets where price action may become erratic.
Timeframes:
This indicator is best suited for lower timeframes (5-minute to 15-minute charts) to capture quick price movements in trending markets.
Aggregated Spot vs Perp Volume (% Change)Aggregated Spot vs Perp Volume (% Change)
Description
The "Aggregated Spot vs Perp Volume (% Change)" indicator helps crypto traders compare the momentum of spot and perpetual futures (perp) trading volumes across 12 major exchanges. It calculates the percentage change in volume from one bar to the next, highlighting divergences and showing which market—spot or perp—is leading a move. By focusing on relative changes, it eliminates the issue of absolute volume differences, making trends clear.
The indicator aggregates data from Binance, Bybit, OKX, Coinbase, Bitget, MEXC, Phemex, BingX, WhiteBIT, BitMEX, Kraken, and HTX. Users can toggle exchanges and choose to measure volume in coin units (e.g., BTC) or USD.
How It Works
Volume Aggregation:
Fetches spot and perp volume data for the selected crypto (e.g., BTC) from up to 12 exchanges.
Spot volume is included only if perp volume is available for the same pair, ensuring consistency.
Volume can be measured in coin units or USD (volume × spot price).
Percentage Change:
Calculates the percentage change in spot and perp volumes from the previous bar:
Percentage Change = ((Current Volume − Previous Volume) / Previous Volume) ×100
This focuses on relative momentum, making spot and perp volumes directly comparable.
Visualization:
Spot volume % change is plotted as a blue line, and perp volume % change as a red line, both with a linewidth of 1.
Who Should Use It
Crypto Traders: To understand spot vs. perp market dynamics across exchanges.
Momentum Traders: To spot which market is driving price moves via volume divergences.
Scalpers/Day Traders: For identifying short-term shifts in market activity.
Analysts: To study liquidity and sentiment in crypto markets.
How to Use It
Blue line: Spot volume % change.
Red line: Perp volume % change.
Look for divergences (e.g., a sharp rise in the red line but not the blue line suggests perp markets are leading).
Combine with Price:
Use alongside price charts to confirm trends or spot potential reversals.
Context
Spot markets reflect actual asset trading, while perp markets, with leverage, attract speculative activity and often show higher volumes. This indicator uses percentage change to compare their momentum, helping traders identify market leadership and divergences. For example, a 50% increase in both spot and perp volumes plots at the same level, making it easy to see relative shifts across exchanges.
Session Profile AnalyzerWhat’s This Thing Do?
Hey there, trader! Meet the Session Profile Analyzer (SPA) your new go-to pal for breaking down market action within your favorite trading sessions. It’s an overlay indicator that mixes Rotation Factor (RF), Average Subperiod Range (ASPR), Volume Value Area Range (VOLVAR), and TPO Value Area Range (TPOVAR) into one tidy little toolkit. Think of it as your market vibe checker momentum, volatility, and key levels, all served up with a grin.
The Cool Stuff It Does:
Rotation Factor (RF) : Keeps tabs on whether the market’s feeling bullish, bearish, or just chilling. It’s like a mood ring for price action shows “UP ↑,” “DOWN ↓,” or “NONE ↔.”
ASPR : Averages out the range of your chosen blocks. Big swings? Tiny wiggles? This tells you the session’s energy level.
VOLVAR : Dives into volume to find where the action’s at, with a smart twist it adjusts price levels based on the session’s size and tiny timeframe moves (capped at 128 so your chart doesn’t cry).
TPOVAR : Grabs lower timeframe data to spot where price hung out the most, TPO-style. Value zones, anyone?
Dynamic Precision : No ugly decimal overload SPA matches your asset’s style (2 decimals for BTC, 5 for TRX, you get it).
How to Play With It:
Session Start/End : Pick your trading window (say, 0930-2200) and a timezone (America/New_York, or wherever you’re at).
Block Size : Set the chunk size for RF and ASPR like 30M if you’re into half-hour vibes.
Value Area Timeframe : Go micro with something like 1S for VOLVAR and TPOVAR precision.
Label : Size it (small to huge), color it (white, neon pink, whatever), and slap it where you want (start, mid, end).
How It All Works (No PhD Required):
RF : Imagine breaking your session into blocks (via Block Size). For each block, SPA checks if the high beats the last high (+1) or not (0), and if the low dips below the last low (-1) or not (0). Add those up, and boom positive RF means upward vibes, negative means downward, near zero is “meh.” Use it to catch trends or spot when the market’s napping.
ASPR : Takes those same blocks, measures high-to-low range each time, and averages them. It’s your volatility pulse big ASPR = wild ride, small ASPR = snooze fest. Great for sizing up session action.
VOLVAR : Here’s the fun part. It takes the session’s full range (high minus low), divides it by the average range of your tiny Value Area Timeframe bars (e.g., 1S), and picks a sensible number of price levels capped at 128 so it doesn’t overthink. Then it bins volume into those levels, finds the busiest price (POC), and grows a 70% value area around it. Perfect for spotting where the big players parked their cash.
TPOVAR : Grabs midpoints from those tiny timeframe bars, sorts them, and snips off the top and bottom 15% to find the 70% “value zone” where price chilled the most. Think of it as the market’s comfort zone great for support/resistance hunting.
Why You’ll Like It:
Whether you’re scalping crypto, swinging forex, or dissecting stocks, SPA’s got your back. Use RF to catch momentum shifts like jumping on an “UP ↑” trend or fading a “DOWN ↓” exhaustion. ASPR’s your secret weapon for sizing up trades: a big ASPR (say, 100 on BTC) means you can aim for juicy targets (like 1-2x ASPR) or set invalidations tight when it’s tiny (e.g., 0.001 on TRX) to dodge chop. VOLVAR and TPOVAR are your level-finders nail those key zones where price loves to bounce or break, perfect for entries, stops, or profit grabs. It’s like having a trading co-pilot who’s chill but knows their stuff.
Heads-Up:
Load enough history for those micro timeframes to shine (1S needs some bars to work with).
Keeps things light won’t bog down your chart even with decent-sized sessions.
Let’s Roll:
Slap SPA on your chart, tweak it to your style, and watch it spill the beans on your session. Happy trading, fam may your pips be plenty and your losses few!
ADX + DMI (HMA Version)📝 Description (What This Indicator Does)
🚀 ADX + DMI (HMA Version) is a trend strength oscillator that enhances the traditional ADX by using the Hull Moving Average (HMA) instead of EMA.
✅ This results in a much faster and more responsive trend detection while filtering out choppy price action.
🎯 What This Indicator Does:
1️⃣ Measures Trend Strength – ADX shows when a trend is strong or weak.
2️⃣ Identifies Trend Direction – DI+ (Green) shows bullish momentum, DI- (Red) shows bearish momentum.
3️⃣ Uses Hull Moving Average (HMA) for Faster Signals – Removes lag and reacts faster to trend changes.
4️⃣ Reduces False Signals – Traditional ADX lags behind, but this version reacts quickly to reversals.
5️⃣ Good for Scalping & Day Trading – Especially for BTC 5-min and lower timeframes.
⚙ Indicator Inputs (Customization)
Input Name Example Value Purpose
ADX Length 14 Defines the smoothing for the ADX value.
DI Length 14 Defines how DI+ and DI- are calculated.
HMA Length 24 Hull Moving Average smoothing for ADX & DI+.
Trend Threshold 25 The level above which ADX confirms a strong trend.
📌 You can adjust these settings to optimize for different assets and timeframes.
🎯 Trading Rules & How to Use It
✅ How to Identify a Strong Trend:
When ADX (Blue Line) is above 25→ A strong trend is in play.
When ADX is below 25 → The market is choppy or ranging.
✅ How to Use DI+ and DI- for Trend Direction:
If DI+ (Green) is above DI- (Red), the market is in an uptrend.
If DI- (Red) is above DI+ (Green), the market is in a downtrend.
✅ How to Confirm Entries & Exits:
1️⃣ Enter Long when DI+ crosses above DI- while ADX is rising above 25.
2️⃣ Enter Short when DI- crosses above DI+ while ADX is rising above 25.
3️⃣ Avoid trading when ADX is below 25 – the market is in a choppy range.
This should not be used as a stand alone oscillator. Trading takes skill and is risky. Use at your own risk.
This is not advise on how to trade, these are just examples of how I use the oscillator. Trade at your own risk.
You can put this on your chart versus the tradingview adx and you can adjust the settings to see the difference. This was optimized for btc on the 5 min chart. You can adjust for your trading strategy.
Panic Drop Bitcoin 5 EMA Buy & Sell SignalPanic Drop BTC 5 EMA
What It Does:
This indicator tracks Bitcoin’s price against a 5-period Exponential Moving Average (EMA) to deliver simple buy and sell signals. A green arrow below the candle signals a buy when Bitcoin closes above the 5-EMA, while a red arrow above signals a sell when it closes below. Perfect for spotting Bitcoin’s momentum shifts—whether you’re a newbie, crypto trader, or short on time.
Key Features:
Plots a customizable 5-EMA (default: blue line).
Buy () and Sell () signals on crossovers/crossunders.
Optional background highlight: green (above EMA), red (below).
Alerts for buy/sell triggers.
Fully adjustable: timeframe, colors, signal toggles.
How to Use It:
Add to your BTC/USD chart (works on any timeframe—daily default recommended).
Watch for green arrows (buy) below candles and red arrows (sell) above.
Customize via settings:
Adjust EMA period (default: 5).
Set timeframe (e.g., "D" for daily, "1H" for hourly).
Change colors or toggle signals/background off.
Set alerts: Right-click a signal > "Add Alert" > Select "Buy Signal" or "Sell Signal."
Trade smart: Use signals to catch Bitcoin dips (e.g., buy below $100K) or exits.
Why It’s Great:
Beginners: Clear arrows simplify decisions.
Crypto Traders: 5-EMA catches Bitcoin’s fast moves.
Busy Investors: Signals save time—no deep analysis needed.
Created by Timothy Assi (Panic Drop), eToro’s elite investor. Test it, tweak it, and trade with confidence!
Broad Market for Crypto**Broad Market for Crypto** indicator provides a comparative analysis of the price deviation of multiple major cryptocurrencies relative to their average closing price over a customizable lookback period. This tool helps traders identify market trends and spot relative strength or weakness among different assets.
### **How It Works:**
- The indicator calculates the percentage deviation of each cryptocurrency’s current price from its simple moving average (SMA) over the defined **lookback period (in hours).**
- The **default lookback period is 24 hours**, but it can be adjusted according to the trader's preference.
- It tracks major crypto assets, including **BTC, ETH, BNB, SOL, XRP, ADA, AVAX, LINK, DOGE, and TRX**, alongside the currently selected instrument.
- Each cryptocurrency’s deviation is plotted on a separate panel, allowing for quick visual comparison.
- Positive deviation indicates that the price is trading above its average, signaling potential bullish momentum.
- Negative deviation suggests the price is below its average, possibly indicating bearish conditions.
This indicator is particularly useful for crypto traders who want to gauge the broader market’s strength and detect divergence patterns across multiple assets.
---------------------------------------------------------------------------------
**Broad Market for Crypto - Описание индикатора**
Индикатор **Broad Market for Crypto** предоставляет сравнительный анализ отклонения цены различных крупных криптовалют относительно их среднего значения за настраиваемый период. Этот инструмент помогает трейдерам выявлять рыночные тренды и определять относительную силу или слабость активов.
### **Как это работает:**
- Индикатор рассчитывает **процентное отклонение** текущей цены каждой криптовалюты от её **простого скользящего среднего (SMA)** за заданный **период анализа (в часах)**.
- **Период анализа по умолчанию — 24 часа**, но его можно изменять в зависимости от предпочтений трейдера.
- В индикаторе отслеживаются основные криптоактивы: **BTC, ETH, BNB, SOL, XRP, ADA, AVAX, LINK, DOGE и TRX**, а также текущий выбранный инструмент.
- Отклонение каждой криптовалюты отображается на отдельной панели, что позволяет быстро проводить визуальное сравнение.
- **Положительное отклонение** означает, что цена торгуется выше своего среднего значения, что может сигнализировать о **бычьем тренде**.
- **Отрицательное отклонение** указывает, что цена ниже своего среднего значения, что может свидетельствовать о **медвежьей тенденции**.
Этот индикатор особенно полезен для криптотрейдеров, желающих оценить силу всего рынка и выявлять расхождения между различными активами.
Bitcoin Total VolumeThis Pine Script indicator, titled "Bitcoin Top 16 Volume," is designed to provide traders with an aggregate view of Bitcoin (BTC) spot trading volume across leading cryptocurrency exchanges. Unlike traditional volume indicators that focus on a single exchange, this tool compiles data from a selection of the top exchanges as ranked by CoinMarketCap, offering a broader perspective on overall market activity.
The indicator works by fetching real-time volume data for specific BTC trading pairs on various exchanges. It currently incorporates data from prominent platforms such as Binance (BTCUSDT), Coinbase (BTCUSD), OKX (BTCUSDT), Bybit (BTCUSDT), Kraken (BTCUSD), Bitfinex (BTCUSD), Bitstamp (BTCUSD), Gemini (BTCUSD), Upbit (BTCKRW), Bithumb (BTCKRW), KuCoin (BTCUSDT), Gate.io (BTCUSDT), MEXC (BTCUSDT), Crypto.com (BTCUSD), Poloniex (BTCUSDT), and BitMart (BTCUSDT). It's important to note that while the indicator aims to represent the "Top 16" exchanges, the actual number included may vary due to data availability within TradingView and the dynamic nature of exchange rankings.
The script then calculates the total volume by summing up the volume data retrieved from each of these exchanges. This aggregated volume is visually represented as a histogram directly on your TradingView chart, displayed in white by default. By observing the height of the histogram bars, traders can quickly assess the total trading volume for Bitcoin spot markets over different time periods, corresponding to the chart's timeframe.
This indicator is valuable for traders seeking to understand the overall market depth and liquidity of Bitcoin. Increased total volume can often signal heightened market interest and potential trend strength or reversals. Conversely, low volume might suggest consolidation or reduced market participation. Traders can use this indicator to confirm trends, identify potential breakouts, and gauge the general level of activity in the Bitcoin spot market across major exchanges. Keep in mind that the list of exchanges included may need periodic updates to accurately reflect the top exchanges as rankings on CoinMarketCap evolve.
Aggregated Volume (Multi-Exchange)Indicator: Aggregated Volume (Multi-Exchange)
Overview:
The Aggregated Volume (Multi-Exchange) indicator is designed to aggregate trading volume data from multiple exchanges for a specific cryptocurrency pair. The goal is to provide a consolidated view of the total trading volume across different platforms, helping traders and analysts gauge the overall market activity for a given asset.
Features:
Multi-Exchange Support: The indicator allows you to aggregate trading volume data from various exchanges. Users can enable or disable volume data from specific exchanges (e.g., Binance, Bybit, Kucoin, etc.).
Spot and Futures Volumes: The indicator can sum the volume for spot trading and futures trading separately if desired. However, in the current version, it only sums the volume for specific pairs across multiple exchanges, without distinguishing between spot and futures volumes (though this feature can be added if necessary).
Customizable Exchange Selection: Users can select which exchanges' volume data to include in the aggregation.
Real-Time Updates: The volume data is updated in real-time as new bars are formed on the chart, providing an up-to-date picture of the trading volume.
Purpose:
The primary purpose of this indicator is to consolidate trading volume information from multiple exchanges for the same trading pair (e.g., BTC/USD). Traders can use this aggregated volume to gain a better understanding of market activity across various platforms, as well as assess the level of liquidity and interest in a particular asset.
By viewing the total aggregated volume, traders can:
Track market trends: Higher aggregated volume can signal increased market interest, making it easier to spot trends or potential breakouts.
Analyze liquidity: This indicator can help traders assess liquidity in the market, especially when using multiple exchanges.
Identify potential market manipulation: If there is a sudden spike in volume on multiple exchanges, it could signal market manipulation or an event-driven surge.
How it Works:
Volume Aggregation: The indicator collects and sums the volume data for a given symbol (e.g., BTC/USD) from different exchanges like Binance, Bybit, Kucoin, and others.
Multiple Exchanges: The volume data is aggregated from each selected exchange and plotted as a single volume value on the chart.
Real-Time Volume Plotting: The total aggregated volume is then plotted as a histogram on the chart, with the color of the bars changing depending on whether the price is rising or falling (typically green for rising prices and red for falling prices).
Inputs/Settings:
Exchange Selection: A list of checkboxes where users can choose which exchanges' volume data to include (e.g., Binance, Bybit, Kucoin, etc.).
Color Settings: Users can set the color for the histogram bars based on price direction (e.g., green for rising and red for falling).
Volume Calculation: The indicator calculates the volume for a specific cryptocurrency pair across selected exchanges in real-time.
Internals Elite NYSE [Beta]Overview:
This indicator is designed to provide traders with a quick overview of key market internals and metrics in a single, easy-to-read table displayed directly on the chart. It incorporates a variety of metrics that help gauge market sentiment, momentum, and overall market conditions.
The table dynamically updates in real-time and uses color-coding to highlight significant changes or thresholds, allowing traders to quickly interpret the data and make informed trading decisions.
Features:
Market Internals:
TICK: Measures the difference between the number of stocks ticking up versus those ticking down on the NYSE. Green or red background indicates if it crosses a user-defined threshold.
Advance/Decline (ADD): Shows the net number of advancing versus declining stocks on the NYSE. Color-coded to show positive, negative, or neutral conditions.
Volatility Metrics:
VIX Change (%): Displays the percentage change in the Volatility Index (VIX), a key gauge of market fear or complacency. Color-coded for direction.
VIX Price: Displays the current VIX price with thresholds to indicate low, medium, or high volatility.
Other Market Metrics:
DXY Change (%): Percentage change in the US Dollar Index (DXY), indicating dollar strength or weakness.
VWAP Deviation (%): Percentage of stocks above VWAP (Volume Weighted Average Price), helping traders assess intraday buying and selling pressure.
Asset-Specific Metrics:
BTCUSD Change (%): Percentage change in Bitcoin (BTC) price, useful for monitoring cryptocurrency sentiment.
SPY Change (%): Percentage change in the S&P 500 ETF (SPY), a proxy for the overall stock market.
Current Ticker Change (%): Percentage change in the currently selected ticker on the chart.
US10Y Change (%): Percentage change in the yield of the 10-Year US Treasury Note (TVC:US10Y), an important macroeconomic indicator.
Customizable Appearance:
Adjustable text size to suit your chart layout.
User-defined thresholds for key metrics (e.g., TICK, ADD, VWAP, VIX).
Dynamic Table Placement:
You can position the table anywhere on the chart: top-right, top-left, bottom-right, bottom-left, middle-right, or middle-left.
How to Use:
Add the Indicator to Your Chart:
Apply the indicator to your chart from the Pine Script editor in TradingView.
Customize the Inputs:
Adjust the thresholds for TICK, ADD, VWAP, and VIX according to your trading style.
Enable or disable the metrics you want to see in the table by toggling the display options for each metric (e.g., Show TICK, Show BTC, Show SPY).
Set the table placement to your preferred position on the chart.
Interpret the Table:
Look for color-coded cells to quickly identify significant changes or breaches of thresholds.
Positive values are typically shown in green, negative values in red, and neutral/insignificant changes in gray.
Use metrics like TICK and ADD to gauge market breadth and momentum.
Refer to VWAP deviation to assess intraday buying or selling pressure.
Monitor the VIX and US10Y changes to stay aware of macroeconomic and volatility shifts.
Incorporate Into Your Strategy:
Use the indicator alongside technical analysis to confirm setups or identify areas of caution.
Keep an eye on correlated metrics (e.g., VIX and SPY) for broader market context.
Use BTCUSD or DXY as additional indicators of risk-on/risk-off sentiment.
Ideal Users:
Day Traders: Quickly gauge intraday market conditions and momentum.
Swing Traders: Identify broader sentiment shifts using metrics like ADD, DXY, and US10Y.
Macro Investors: Stay updated on key macroeconomic indicators like the 10-Year Treasury yield (US10Y) and the US Dollar Index (DXY).
This indicator serves as a comprehensive tool for understanding market conditions at a glance, enabling traders to act decisively based on the latest data.
Correlation Pro
Smart Correlation Pro is an indicator for assessing the correlation between two assets in the market. It analyzes correlation over a selected period and provides traders with flexible tools for making informed decisions.
Key Features:
1. Correlation coefficient (-1 to 1):
• 1: Perfect positive correlation (movement in the same direction).
• 0: No correlation (assets are independent).
• -1: Perfect negative correlation (movement in opposite directions).
2. Dynamic analysis:
• Changes the color of the line depending on the strength of the correlation:
• Green — high positive correlation.
• Red — high negative correlation.
• Gray — weak or no correlation.
3. Trading signals:
• Automatic alerts when important correlation levels are reached (> 0.8 or < -0.8).
• Visual cues for identifying potential entry points or risk diversification.
4. Customizable settings:
• Compare any two assets (e.g., BTC and ETH).
• Ability to choose the correlation calculation period.
Who it’s for:
• Traders analyzing coin movements in the cryptocurrency market.
• Investors looking for the strongest or weakest assets for their portfolio.
• Those working with hedging or diversification strategies.
How to Use:
1. Set the second asset in the indicator settings.
2. Analyze the correlation change on the chart:
• High positive correlation → similar price movement, opportunity for hedging.
• High negative correlation → opposite movement, suitable for diversification.
• Low correlation → independence of assets, opportunity to choose the stronger asset.
Benefits:
• Easy to use.
• Instant analysis of asset correlations.
• Increases decision-making accuracy in the market.
(Опис:
Smart Correlation Pro — це індикатор для оцінки взаємозв’язку між двома активами на ринку. Він аналізує кореляцію за обраним періодом та надає трейдерам гнучкі інструменти для ухвалення обґрунтованих рішень.
Основні можливості:
1. Коефіцієнт кореляції (-1 до 1):
• 1: Ідеальна позитивна кореляція (рух в одному напрямку).
• 0: Відсутність кореляції (активи незалежні).
• -1: Ідеальна негативна кореляція (рух у протилежних напрямках).
2. Динамічний аналіз:
• Змінює колір лінії залежно від сили кореляції:
• Зелений — висока позитивна кореляція.
• Червоний — висока негативна кореляція.
• Сірий — слабка або відсутня кореляція.
3. Сигнали для трейдингу:
• Автоматичні оповіщення при досягненні важливих рівнів кореляції (> 0.8 або < -0.8).
• Візуальні підказки для визначення можливих точок входу або диверсифікації ризиків.
4. Гнучкість налаштувань:
• Порівнюйте будь-які два активи (наприклад, BTC та ETH).
• Можливість обирати період розрахунку кореляції.
Кому підходить:
• Трейдерам, які аналізують рух монет на криптовалютному ринку.
• Інвесторам, що шукають найсильніші або найслабші активи для портфеля.
• Тих, хто працює з хеджуванням або диверсифікацією.
Як використовувати:
1. Встановіть другий актив у параметрах індикатора.
2. Аналізуйте зміну кореляції на графіку:
• Висока позитивна кореляція → схожий рух цін, можливість хеджування.
• Висока негативна кореляція → протилежний рух, підходить для диверсифікації.
• Низька кореляція → незалежність активів, можливість вибору сильнішого активу.
Переваги:
• Простота у використанні.
• Миттєвий аналіз взаємозв’язків між активами.
• Підвищує точність рішень на ринку.)
BGL - Bitcoin Global Liquidity Indicator [Da_Prof]This indicator takes global liquidity and shifts it forward by a set number of days. It can be used for any asset, but it is by default set for Bitcoin (BTC). The shift forward allows potential future prediction of BTC trends, especially uptrends. While not perfect, the current shift of 72 days seems to be best for the current cycle.
Sixteen currencies are used to calculate global liquidity.
Universal Ratio Trend Matrix [InvestorUnknown]The Universal Ratio Trend Matrix is designed for trend analysis on asset/asset ratios, supporting up to 40 different assets. Its primary purpose is to help identify which assets are outperforming others within a selection, providing a broad overview of market trends through a matrix of ratios. The indicator automatically expands the matrix based on the number of assets chosen, simplifying the process of comparing multiple assets in terms of performance.
Key features include the ability to choose from a narrow selection of indicators to perform the ratio trend analysis, allowing users to apply well-defined metrics to their comparison.
Drawback: Due to the computational intensity involved in calculating ratios across many assets, the indicator has a limitation related to loading speed. TradingView has time limits for calculations, and for users on the basic (free) plan, this could result in frequent errors due to exceeded time limits. To use the indicator effectively, users with any paid plans should run it on timeframes higher than 8h (the lowest timeframe on which it managed to load with 40 assets), as lower timeframes may not reliably load.
Indicators:
RSI_raw: Simple function to calculate the Relative Strength Index (RSI) of a source (asset price).
RSI_sma: Calculates RSI followed by a Simple Moving Average (SMA).
RSI_ema: Calculates RSI followed by an Exponential Moving Average (EMA).
CCI: Calculates the Commodity Channel Index (CCI).
Fisher: Implements the Fisher Transform to normalize prices.
Utility Functions:
f_remove_exchange_name: Strips the exchange name from asset tickers (e.g., "INDEX:BTCUSD" to "BTCUSD").
f_remove_exchange_name(simple string name) =>
string parts = str.split(name, ":")
string result = array.size(parts) > 1 ? array.get(parts, 1) : name
result
f_get_price: Retrieves the closing price of a given asset ticker using request.security().
f_constant_src: Checks if the source data is constant by comparing multiple consecutive values.
Inputs:
General settings allow users to select the number of tickers for analysis (used_assets) and choose the trend indicator (RSI, CCI, Fisher, etc.).
Table settings customize how trend scores are displayed in terms of text size, header visibility, highlighting options, and top-performing asset identification.
The script includes inputs for up to 40 assets, allowing the user to select various cryptocurrencies (e.g., BTCUSD, ETHUSD, SOLUSD) or other assets for trend analysis.
Price Arrays:
Price values for each asset are stored in variables (price_a1 to price_a40) initialized as na. These prices are updated only for the number of assets specified by the user (used_assets).
Trend scores for each asset are stored in separate arrays
// declare price variables as "na"
var float price_a1 = na, var float price_a2 = na, var float price_a3 = na, var float price_a4 = na, var float price_a5 = na
var float price_a6 = na, var float price_a7 = na, var float price_a8 = na, var float price_a9 = na, var float price_a10 = na
var float price_a11 = na, var float price_a12 = na, var float price_a13 = na, var float price_a14 = na, var float price_a15 = na
var float price_a16 = na, var float price_a17 = na, var float price_a18 = na, var float price_a19 = na, var float price_a20 = na
var float price_a21 = na, var float price_a22 = na, var float price_a23 = na, var float price_a24 = na, var float price_a25 = na
var float price_a26 = na, var float price_a27 = na, var float price_a28 = na, var float price_a29 = na, var float price_a30 = na
var float price_a31 = na, var float price_a32 = na, var float price_a33 = na, var float price_a34 = na, var float price_a35 = na
var float price_a36 = na, var float price_a37 = na, var float price_a38 = na, var float price_a39 = na, var float price_a40 = na
// create "empty" arrays to store trend scores
var a1_array = array.new_int(40, 0), var a2_array = array.new_int(40, 0), var a3_array = array.new_int(40, 0), var a4_array = array.new_int(40, 0)
var a5_array = array.new_int(40, 0), var a6_array = array.new_int(40, 0), var a7_array = array.new_int(40, 0), var a8_array = array.new_int(40, 0)
var a9_array = array.new_int(40, 0), var a10_array = array.new_int(40, 0), var a11_array = array.new_int(40, 0), var a12_array = array.new_int(40, 0)
var a13_array = array.new_int(40, 0), var a14_array = array.new_int(40, 0), var a15_array = array.new_int(40, 0), var a16_array = array.new_int(40, 0)
var a17_array = array.new_int(40, 0), var a18_array = array.new_int(40, 0), var a19_array = array.new_int(40, 0), var a20_array = array.new_int(40, 0)
var a21_array = array.new_int(40, 0), var a22_array = array.new_int(40, 0), var a23_array = array.new_int(40, 0), var a24_array = array.new_int(40, 0)
var a25_array = array.new_int(40, 0), var a26_array = array.new_int(40, 0), var a27_array = array.new_int(40, 0), var a28_array = array.new_int(40, 0)
var a29_array = array.new_int(40, 0), var a30_array = array.new_int(40, 0), var a31_array = array.new_int(40, 0), var a32_array = array.new_int(40, 0)
var a33_array = array.new_int(40, 0), var a34_array = array.new_int(40, 0), var a35_array = array.new_int(40, 0), var a36_array = array.new_int(40, 0)
var a37_array = array.new_int(40, 0), var a38_array = array.new_int(40, 0), var a39_array = array.new_int(40, 0), var a40_array = array.new_int(40, 0)
f_get_price(simple string ticker) =>
request.security(ticker, "", close)
// Prices for each USED asset
f_get_asset_price(asset_number, ticker) =>
if (used_assets >= asset_number)
f_get_price(ticker)
else
na
// overwrite empty variables with the prices if "used_assets" is greater or equal to the asset number
if barstate.isconfirmed // use barstate.isconfirmed to avoid "na prices" and calculation errors that result in empty cells in the table
price_a1 := f_get_asset_price(1, asset1), price_a2 := f_get_asset_price(2, asset2), price_a3 := f_get_asset_price(3, asset3), price_a4 := f_get_asset_price(4, asset4)
price_a5 := f_get_asset_price(5, asset5), price_a6 := f_get_asset_price(6, asset6), price_a7 := f_get_asset_price(7, asset7), price_a8 := f_get_asset_price(8, asset8)
price_a9 := f_get_asset_price(9, asset9), price_a10 := f_get_asset_price(10, asset10), price_a11 := f_get_asset_price(11, asset11), price_a12 := f_get_asset_price(12, asset12)
price_a13 := f_get_asset_price(13, asset13), price_a14 := f_get_asset_price(14, asset14), price_a15 := f_get_asset_price(15, asset15), price_a16 := f_get_asset_price(16, asset16)
price_a17 := f_get_asset_price(17, asset17), price_a18 := f_get_asset_price(18, asset18), price_a19 := f_get_asset_price(19, asset19), price_a20 := f_get_asset_price(20, asset20)
price_a21 := f_get_asset_price(21, asset21), price_a22 := f_get_asset_price(22, asset22), price_a23 := f_get_asset_price(23, asset23), price_a24 := f_get_asset_price(24, asset24)
price_a25 := f_get_asset_price(25, asset25), price_a26 := f_get_asset_price(26, asset26), price_a27 := f_get_asset_price(27, asset27), price_a28 := f_get_asset_price(28, asset28)
price_a29 := f_get_asset_price(29, asset29), price_a30 := f_get_asset_price(30, asset30), price_a31 := f_get_asset_price(31, asset31), price_a32 := f_get_asset_price(32, asset32)
price_a33 := f_get_asset_price(33, asset33), price_a34 := f_get_asset_price(34, asset34), price_a35 := f_get_asset_price(35, asset35), price_a36 := f_get_asset_price(36, asset36)
price_a37 := f_get_asset_price(37, asset37), price_a38 := f_get_asset_price(38, asset38), price_a39 := f_get_asset_price(39, asset39), price_a40 := f_get_asset_price(40, asset40)
Universal Indicator Calculation (f_calc_score):
This function allows switching between different trend indicators (RSI, CCI, Fisher) for flexibility.
It uses a switch-case structure to calculate the indicator score, where a positive trend is denoted by 1 and a negative trend by 0. Each indicator has its own logic to determine whether the asset is trending up or down.
// use switch to allow "universality" in indicator selection
f_calc_score(source, trend_indicator, int_1, int_2) =>
int score = na
if (not f_constant_src(source)) and source > 0.0 // Skip if you are using the same assets for ratio (for example BTC/BTC)
x = switch trend_indicator
"RSI (Raw)" => RSI_raw(source, int_1)
"RSI (SMA)" => RSI_sma(source, int_1, int_2)
"RSI (EMA)" => RSI_ema(source, int_1, int_2)
"CCI" => CCI(source, int_1)
"Fisher" => Fisher(source, int_1)
y = switch trend_indicator
"RSI (Raw)" => x > 50 ? 1 : 0
"RSI (SMA)" => x > 50 ? 1 : 0
"RSI (EMA)" => x > 50 ? 1 : 0
"CCI" => x > 0 ? 1 : 0
"Fisher" => x > x ? 1 : 0
score := y
else
score := 0
score
Array Setting Function (f_array_set):
This function populates an array with scores calculated for each asset based on a base price (p_base) divided by the prices of the individual assets.
It processes multiple assets (up to 40), calling the f_calc_score function for each.
// function to set values into the arrays
f_array_set(a_array, p_base) =>
array.set(a_array, 0, f_calc_score(p_base / price_a1, trend_indicator, int_1, int_2))
array.set(a_array, 1, f_calc_score(p_base / price_a2, trend_indicator, int_1, int_2))
array.set(a_array, 2, f_calc_score(p_base / price_a3, trend_indicator, int_1, int_2))
array.set(a_array, 3, f_calc_score(p_base / price_a4, trend_indicator, int_1, int_2))
array.set(a_array, 4, f_calc_score(p_base / price_a5, trend_indicator, int_1, int_2))
array.set(a_array, 5, f_calc_score(p_base / price_a6, trend_indicator, int_1, int_2))
array.set(a_array, 6, f_calc_score(p_base / price_a7, trend_indicator, int_1, int_2))
array.set(a_array, 7, f_calc_score(p_base / price_a8, trend_indicator, int_1, int_2))
array.set(a_array, 8, f_calc_score(p_base / price_a9, trend_indicator, int_1, int_2))
array.set(a_array, 9, f_calc_score(p_base / price_a10, trend_indicator, int_1, int_2))
array.set(a_array, 10, f_calc_score(p_base / price_a11, trend_indicator, int_1, int_2))
array.set(a_array, 11, f_calc_score(p_base / price_a12, trend_indicator, int_1, int_2))
array.set(a_array, 12, f_calc_score(p_base / price_a13, trend_indicator, int_1, int_2))
array.set(a_array, 13, f_calc_score(p_base / price_a14, trend_indicator, int_1, int_2))
array.set(a_array, 14, f_calc_score(p_base / price_a15, trend_indicator, int_1, int_2))
array.set(a_array, 15, f_calc_score(p_base / price_a16, trend_indicator, int_1, int_2))
array.set(a_array, 16, f_calc_score(p_base / price_a17, trend_indicator, int_1, int_2))
array.set(a_array, 17, f_calc_score(p_base / price_a18, trend_indicator, int_1, int_2))
array.set(a_array, 18, f_calc_score(p_base / price_a19, trend_indicator, int_1, int_2))
array.set(a_array, 19, f_calc_score(p_base / price_a20, trend_indicator, int_1, int_2))
array.set(a_array, 20, f_calc_score(p_base / price_a21, trend_indicator, int_1, int_2))
array.set(a_array, 21, f_calc_score(p_base / price_a22, trend_indicator, int_1, int_2))
array.set(a_array, 22, f_calc_score(p_base / price_a23, trend_indicator, int_1, int_2))
array.set(a_array, 23, f_calc_score(p_base / price_a24, trend_indicator, int_1, int_2))
array.set(a_array, 24, f_calc_score(p_base / price_a25, trend_indicator, int_1, int_2))
array.set(a_array, 25, f_calc_score(p_base / price_a26, trend_indicator, int_1, int_2))
array.set(a_array, 26, f_calc_score(p_base / price_a27, trend_indicator, int_1, int_2))
array.set(a_array, 27, f_calc_score(p_base / price_a28, trend_indicator, int_1, int_2))
array.set(a_array, 28, f_calc_score(p_base / price_a29, trend_indicator, int_1, int_2))
array.set(a_array, 29, f_calc_score(p_base / price_a30, trend_indicator, int_1, int_2))
array.set(a_array, 30, f_calc_score(p_base / price_a31, trend_indicator, int_1, int_2))
array.set(a_array, 31, f_calc_score(p_base / price_a32, trend_indicator, int_1, int_2))
array.set(a_array, 32, f_calc_score(p_base / price_a33, trend_indicator, int_1, int_2))
array.set(a_array, 33, f_calc_score(p_base / price_a34, trend_indicator, int_1, int_2))
array.set(a_array, 34, f_calc_score(p_base / price_a35, trend_indicator, int_1, int_2))
array.set(a_array, 35, f_calc_score(p_base / price_a36, trend_indicator, int_1, int_2))
array.set(a_array, 36, f_calc_score(p_base / price_a37, trend_indicator, int_1, int_2))
array.set(a_array, 37, f_calc_score(p_base / price_a38, trend_indicator, int_1, int_2))
array.set(a_array, 38, f_calc_score(p_base / price_a39, trend_indicator, int_1, int_2))
array.set(a_array, 39, f_calc_score(p_base / price_a40, trend_indicator, int_1, int_2))
a_array
Conditional Array Setting (f_arrayset):
This function checks if the number of used assets is greater than or equal to a specified number before populating the arrays.
// only set values into arrays for USED assets
f_arrayset(asset_number, a_array, p_base) =>
if (used_assets >= asset_number)
f_array_set(a_array, p_base)
else
na
Main Logic
The main logic initializes arrays to store scores for each asset. Each array corresponds to one asset's performance score.
Setting Trend Values: The code calls f_arrayset for each asset, populating the respective arrays with calculated scores based on the asset prices.
Combining Arrays: A combined_array is created to hold all the scores from individual asset arrays. This array facilitates further analysis, allowing for an overview of the performance scores of all assets at once.
// create a combined array (work-around since pinescript doesn't support having array of arrays)
var combined_array = array.new_int(40 * 40, 0)
if barstate.islast
for i = 0 to 39
array.set(combined_array, i, array.get(a1_array, i))
array.set(combined_array, i + (40 * 1), array.get(a2_array, i))
array.set(combined_array, i + (40 * 2), array.get(a3_array, i))
array.set(combined_array, i + (40 * 3), array.get(a4_array, i))
array.set(combined_array, i + (40 * 4), array.get(a5_array, i))
array.set(combined_array, i + (40 * 5), array.get(a6_array, i))
array.set(combined_array, i + (40 * 6), array.get(a7_array, i))
array.set(combined_array, i + (40 * 7), array.get(a8_array, i))
array.set(combined_array, i + (40 * 8), array.get(a9_array, i))
array.set(combined_array, i + (40 * 9), array.get(a10_array, i))
array.set(combined_array, i + (40 * 10), array.get(a11_array, i))
array.set(combined_array, i + (40 * 11), array.get(a12_array, i))
array.set(combined_array, i + (40 * 12), array.get(a13_array, i))
array.set(combined_array, i + (40 * 13), array.get(a14_array, i))
array.set(combined_array, i + (40 * 14), array.get(a15_array, i))
array.set(combined_array, i + (40 * 15), array.get(a16_array, i))
array.set(combined_array, i + (40 * 16), array.get(a17_array, i))
array.set(combined_array, i + (40 * 17), array.get(a18_array, i))
array.set(combined_array, i + (40 * 18), array.get(a19_array, i))
array.set(combined_array, i + (40 * 19), array.get(a20_array, i))
array.set(combined_array, i + (40 * 20), array.get(a21_array, i))
array.set(combined_array, i + (40 * 21), array.get(a22_array, i))
array.set(combined_array, i + (40 * 22), array.get(a23_array, i))
array.set(combined_array, i + (40 * 23), array.get(a24_array, i))
array.set(combined_array, i + (40 * 24), array.get(a25_array, i))
array.set(combined_array, i + (40 * 25), array.get(a26_array, i))
array.set(combined_array, i + (40 * 26), array.get(a27_array, i))
array.set(combined_array, i + (40 * 27), array.get(a28_array, i))
array.set(combined_array, i + (40 * 28), array.get(a29_array, i))
array.set(combined_array, i + (40 * 29), array.get(a30_array, i))
array.set(combined_array, i + (40 * 30), array.get(a31_array, i))
array.set(combined_array, i + (40 * 31), array.get(a32_array, i))
array.set(combined_array, i + (40 * 32), array.get(a33_array, i))
array.set(combined_array, i + (40 * 33), array.get(a34_array, i))
array.set(combined_array, i + (40 * 34), array.get(a35_array, i))
array.set(combined_array, i + (40 * 35), array.get(a36_array, i))
array.set(combined_array, i + (40 * 36), array.get(a37_array, i))
array.set(combined_array, i + (40 * 37), array.get(a38_array, i))
array.set(combined_array, i + (40 * 38), array.get(a39_array, i))
array.set(combined_array, i + (40 * 39), array.get(a40_array, i))
Calculating Sums: A separate array_sums is created to store the total score for each asset by summing the values of their respective score arrays. This allows for easy comparison of overall performance.
Ranking Assets: The final part of the code ranks the assets based on their total scores stored in array_sums. It assigns a rank to each asset, where the asset with the highest score receives the highest rank.
// create array for asset RANK based on array.sum
var ranks = array.new_int(used_assets, 0)
// for loop that calculates the rank of each asset
if barstate.islast
for i = 0 to (used_assets - 1)
int rank = 1
for x = 0 to (used_assets - 1)
if i != x
if array.get(array_sums, i) < array.get(array_sums, x)
rank := rank + 1
array.set(ranks, i, rank)
Dynamic Table Creation
Initialization: The table is initialized with a base structure that includes headers for asset names, scores, and ranks. The headers are set to remain constant, ensuring clarity for users as they interpret the displayed data.
Data Population: As scores are calculated for each asset, the corresponding values are dynamically inserted into the table. This is achieved through a loop that iterates over the scores and ranks stored in the combined_array and array_sums, respectively.
Automatic Extending Mechanism
Variable Asset Count: The code checks the number of assets defined by the user. Instead of hardcoding the number of rows in the table, it uses a variable to determine the extent of the data that needs to be displayed. This allows the table to expand or contract based on the number of assets being analyzed.
Dynamic Row Generation: Within the loop that populates the table, the code appends new rows for each asset based on the current asset count. The structure of each row includes the asset name, its score, and its rank, ensuring that the table remains consistent regardless of how many assets are involved.
// Automatically extending table based on the number of used assets
var table table = table.new(position.bottom_center, 50, 50, color.new(color.black, 100), color.white, 3, color.white, 1)
if barstate.islast
if not hide_head
table.cell(table, 0, 0, "Universal Ratio Trend Matrix", text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.merge_cells(table, 0, 0, used_assets + 3, 0)
if not hide_inps
table.cell(table, 0, 1,
text = "Inputs: You are using " + str.tostring(trend_indicator) + ", which takes: " + str.tostring(f_get_input(trend_indicator)),
text_color = color.white, text_size = fontSize), table.merge_cells(table, 0, 1, used_assets + 3, 1)
table.cell(table, 0, 2, "Assets", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, 2, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.cell(table, 0, x + 3, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = f_asset_col(array.get(ranks, x)), text_size = fontSize)
for r = 0 to (used_assets - 1)
for c = 0 to (used_assets - 1)
table.cell(table, c + 1, r + 3, text = str.tostring(array.get(combined_array, c + (r * 40))),
text_color = hl_type == "Text" ? f_get_col(array.get(combined_array, c + (r * 40))) : color.white, text_size = fontSize,
bgcolor = hl_type == "Background" ? f_get_col(array.get(combined_array, c + (r * 40))) : na)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, x + 3, "", bgcolor = #010c3b)
table.cell(table, used_assets + 1, 2, "", bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 1, x + 3, "==>", text_color = color.white)
table.cell(table, used_assets + 2, 2, "SUM", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
table.cell(table, used_assets + 3, 2, "RANK", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 2, x + 3,
text = str.tostring(array.get(array_sums, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_sum(array.get(array_sums, x), array.get(ranks, x)))
table.cell(table, used_assets + 3, x + 3,
text = str.tostring(array.get(ranks, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_rank(array.get(ranks, x)))






















