Auto Hourly Deviations {Module+}Description
This indicator automatically calculates and visualizes the prior hour’s price structure and its deviation levels. By combining core reference lines (high, low, EQ, quarters, open) with dynamic deviation levels and shaded zones, it provides a framework for understanding intraday price behavior relative to the most recent hourly range.
The tool has three functional sections that work together:
Core Hourly Structure – Captures the prior hour’s high, low, EQ (50%), and quarter levels (25% and 75%), plus the current open.
Deviation Levels – Projects standardized deviation multiples (±0.33, ±0.5, ±0.66, ±1.0, ±1.33, ±1.66, ±2.0) above and below the prior hour’s range.
Shading & Anchoring – Fills zones between key deviation levels for visual emphasis, while allowing projection offsets and anchor line references for precise chart alignment.
Together, these layers give traders a structured map of price movement around hourly ranges, making it easier to track expansion, retracement, and trend continuation.
1. Core Hourly Structure
Plots the prior hour’s high and low as key reference points.
Automatically calculates EQ (midpoint), 25%, and 75% levels.
Tracks the open of the current hour for immediate orientation.
Optional anchor line marks the start of each hourly window for time alignment.
Use: Frames the “hourly box” and subdivides it for intraday structure analysis.
2. Deviation Levels
Uses the prior hour’s range as a baseline.
Projects deviation levels above and below: ±0.33, ±0.5, ±0.66, ±1.0, ±1.33, ±1.66, and ±2.0.
Each level can be individually toggled with full line/label styling.
Use: Quantifies how far price is moving relative to the last hour’s volatility — useful for spotting overextensions, retraces, and probable reaction zones.
3. Shading & Anchoring
Shaded zones between selected deviation bands (e.g., +0.33 to +0.66 or +1.33 to +1.66) highlight potential liquidity or reaction areas.
Projection offsets allow levels to extend forward into future bars for planning.
Labels and color controls make the chart highly customizable.
Use: Provides quick visual cues for potential trading ranges and deviations without clutter.
Intended Use
This is a visualization tool, not a buy/sell system. Traders can use it to:
Track how price interacts with the prior hour’s high/low.
Measure hourly expansion through deviation levels.
Spot retracements or continuation zones inside and beyond the prior hour’s range.
Limitations & Disclaimers
Levels are derived from completed hourly candles; they do not predict outcomes.
Deviations are static calculations and do not account for fundamentals or volatility shifts.
This indicator does not provide financial advice or trading signals.
For informational and educational purposes only.
Trading involves risk; always apply proper risk management.
Closed-source (Protected): Logic is accessible on charts, but the source code is hidden. A TradingView paid plan is required for protected indicators.
Educational
Gustavo Status barA Pine Script v6 chart overlay that shows a persistent status table with continuously updating Buy/Sell percentages, driven by 15-minute microstructure but governed (and capped) by the selected main timeframe’s market structure (default 1H) using HH/HL vs LL/LH with smooth easing.
DTT ⴵDTT ⴵ — Watermarks, Sessions & HTF Countdown
DTT ⴵ is a clean, lightweight utility for adding professional watermarks and time-based reminders to any chart. It displays your brand/title, live market data (ticker/price/timeframe), the current date, configurable trading sessions (with your own reminder header), and an optional higher-timeframe (HTF) bar-close countdown —each with independent positioning, sizing, and auto-contrast.
Designed for focus and discipline: use it to keep risk reminders visible, mark key session windows, and glance the next HTF close without cluttering the chart.
What it shows
Main Watermark (brand/message)
Big title + subtitle, anywhere on the chart, with optional auto color that adapts to light/dark themes.
Market Data Watermark
Per-line display for Ticker, Last Price, and Timeframe (formatted as M5 / H1 / D1 / W1 / MN1, etc.). Each line has its own color, or you can enable a global auto-contrast override.
Date Watermark
Current date in your preferred format (e.g., yyyy-MM-dd, MMM dd, yyyy), with optional auto-contrast.
HTF Countdown (optional)
Minutes (or smart d/h/m) remaining to the next close of selected higher timeframes (5m → Monthly). Can auto-hide lower TFs relative to the current chart timeframe.
Session Watermarks (up to 3)
Three time windows with names, colors, and a timezone selector. Show a prominent header like “Reminder ⚠︎” or “Check Position Size” and only display sessions when they’re currently active.
Quick Start
In Main Watermark, set your Title and optional Subtitle.
In Market Data, choose which lines you want (Ticker/Price/Timeframe) and their position.
In Date Watermark, pick a format and position.
Toggle HTF Countdown on (optional). Choose which TFs to track (e.g., D/W), and whether to Auto-Hide Lower TF.
In Session Watermarks, set your Timezone and edit any of the three sessions (name, time window, color). Only active sessions will render.
Inputs & Controls
Main Watermark
Enable Main Watermark — show/hide.
Position — any of the 9 corners/centers.
Main Title / Subtitle — free text.
Sizes — Tiny / Small / Normal / Large / Huge (independent per line).
Auto-Adjust Colors to Chart — adapts title/subtitle to theme, with extra protection on extremely bright/dark backgrounds.
Manual Colors — choose title/subtitle colors when Auto is off.
Market Data Watermark
Enable Market Data — show/hide.
Position / Text Size — independent of the main watermark.
Show Ticker / Price / Timeframe — toggle each line.
Ticker/Price/Timeframe Colors — per-line colors.
Auto-Adjust All Colors — override individual colors with automatic contrast to chart background.
Timeframe formatting is normalized:
1,3,5,15,30,45 → M1/M3/M5/M15/M30/M45
60,120,180,240 → H1/H2/H3/H4
D or 1D → D1 ; multi-day → D2, D3, …
W or 1W → W1 ; multi-week → W2, …
M or 1M → MN1 ; multi-month → MN2, …
Date Watermark
Enable Date
Position / Text Size
Date Format — yyyy-MM-dd, MM/dd/yyyy, dd/MM/yyyy, MMM dd, yyyy, dd MMM yyyy
Date Color or Auto-Adjust Color
HTF Countdown
Enable HTF Countdown
Position / Text Size
Show Header / Header Text / Header Color
Auto-Hide Lower Timeframes — when ON, only show countdowns above the current chart TF.
Pick TFs — 5m, 15m, 30m, 1h, 4h, D, W, M (toggle any).
Format — Smart (d/h/m) or Minutes Only (m).
Countdown Color or Auto-Adjust Colors (applies to header & lines).
Session Watermarks
Enable Session Watermarks
Position / Text Size
Timezone — select from common regions or Exchange (uses the symbol’s exchange).
Show Header / Header Text / Header Color — e.g., “Reminder ⚠︎”, “Risk Management 🔔”.
Session 1 / 2 / 3
Enable
Name — e.g., “Potential News”, “NY Open”, “Close Positions”
Time — HHMM-HHMM (24-hour) using the selected Timezone
Color
Text Opacity — 0 = fully opaque text, 100 = fully transparent text.
Auto-Adjust Session Colors — auto-contrast against background (applies opacity too).
Sessions only render when the current time is inside their time window.
How it works (under the hood)
Tables on last bar: All watermarks render via table.* only on the last bar for performance (barstate.islast).
Auto-contrast: The script inspects chart.bg_color to detect light/dark and extreme backgrounds, choosing white/black when needed.
Market data: Uses syminfo.ticker, close, and a formatter for timeframe.period.
Date: Formatted with str.format from the current bar’s time.
HTF countdowns:
Pulls time(tf) to anchor the current HTF bar start and computes the minutes until the next close.
Smart mode chooses Xd Yh, Xh Ym, or Xm automatically; Minutes Only shows Xm.
Daily/Weekly/Monthly calculations use current clock values. Weekly assumes the next week starts Monday; monthly uses actual month length for countdown display.
Auto-Hide Lower TFs compares TFs in minutes vs. the current chart TF and hides anything at or below it.
Sessions: input.session windows are evaluated in the selected timezone (or exchange hours if “Exchange” is chosen). A session row appears only while in-session.
Tips & Best Practices
Use Auto-Adjust color options when sharing charts across themes (dark/light).
Keep the Main Watermark subtle (e.g., Normal/Small) and move Market Data to a corner to avoid covering price.
For scalping charts, enable D and W countdowns—great for anticipating session/HTF closes.
Set Session 1 to your news-check window and keep the header on (e.g., “Check Position Size ”).
Limitations / Notes
Countdown logic depends on TradingView’s session/time context; exotic custom sessions may not match exchange close rules.
Weekly countdown assumes week rollover on Monday.
“Monthly” duration comparisons use an approximate 30-day minute value only for thresholding in some helpers; the visible countdown uses the real month length.
No alerts—this is a visual utility.
Performance
Very light; all drawing is table-based and only refreshed on the last bar.
Works on any symbol and timeframe.
Built for the DTT Trading Community ⴵ to promote clarity, patience, and time-based discipline on the chart.
TradeMEP ChecklisteThe TradeMEP Checklist is a visual tool for structured trade analysis and preparation.
The indicator clearly displays the most important entry and exit conditions for trend reversals and trend continuations.
All points can be individually checked off, providing a clear overview of whether the requirements for a setup are met.
Features:
Separate checklists for trend reversal and trend continuation
Ability to show or hide each section
Color highlighting when all conditions are fulfilled
Flexible positioning and adjustable font sizes
This indicator is designed specifically for traders who follow clear rules and want to systematically review their setups.
It does not replace analysis but helps to avoid mistakes and work consistently according to defined criteria.
Malaysian SnR + Storyline This indicator combines the Malaysian Support & Resistance (SnR) method with a Multi-Timeframe Storyline view.
🔹 Malaysian SnR (A/V levels)
Plots Support & Resistance using candlestick bodies only (close → open).
“A” shape = Resistance (bullish close → bearish open).
“V” shape = Support (bearish close → bullish open).
Supports Fresh/Unfresh logic with wick-touch validation.
🔹 Storyline (W/D/H4/H1 bias lines)
Weekly = Big map / macro bias.
Daily = Medium trend / retracement.
H4 = Intraday bias confirmation.
H1 = Execution bias (entry filter).
Lines extend forward and only update when a new pivot confirms.
🔹 Extra Features
Alignment Rule: option to hide A/V levels when TF biases don’t align (e.g. W=D=H4=H1).
Story Labels: optional text labels describing each TF storyline.
History filter: show storyline for the last X days only, for cleaner charts.
This script is designed for price action traders who want to combine body-based SnR levels with a clear multi-timeframe bias storyline, making it easier to align intraday execution with higher timeframe context.
Ameebha D Equities Buy IndicatorShows Buy Decision and key metrics (RS, EMA, Supertrend, Close Price)
CAGR Indicator (Flexible Holding Period)CAGR Indicator (Flexible Holding Period)
The CAGR Indicator (Flexible Holding Period) is designed to convert any cumulative investment outcome into a standardized, annualized growth rate that can be compared across assets, strategies, and time horizons. Its core metric is the compound annual growth rate, which represents the constant yearly rate that, if compounded smoothly, transforms an initial value into a final value over a specified horizon. By annualizing returns, the indicator removes distortions caused by unequal test lengths and allows direct comparison with benchmarks such as index returns or risk-free rates.
Conceptually, the indicator proceeds in two stages: measuring growth and normalizing time. Growth is summarized by the growth multiple, which is the ratio of ending value to starting value when concrete values are provided, or equivalently 1 plus total percentage return divided by 100 when only a cumulative percent is known. Time is normalized by converting the user’s holding period into a year-equivalent, so that a 45-day, 30-week, 18-month, or multi-year interval can all be mapped onto a common annual scale. The conversions use widely accepted approximations: days divided by 365.25, weeks divided by approximately 52.1429, and months divided by 12, while years are used as entered.
Once growth and time are expressed in compatible units, the indicator applies the standard compounding identity: CAGR = (Growth Multiple)^(1/T) − 1, where T is the year-equivalent holding period. This transformation inverts the compounding process and yields the geometric mean rate of return per year. Because the geometric mean is path-independent, the CAGR summarizes start-to-finish performance without reference to the sequence of gains and losses. The output therefore reflects the constant annual rate that would have produced the observed terminal value from the initial value if returns had been smooth.
The indicator admits two data entry modes to accommodate common reporting practices. In Start/End Values mode, the user supplies initial and final portfolio values; the indicator computes the growth multiple as end divided by start and also displays absolute profit or loss in currency terms to aid practical interpretation. In Total PnL (%) mode, the user supplies a cumulative return percentage; the indicator converts this to a growth multiple and estimates a corresponding ending value for display, while the CAGR computation itself relies only on the multiple and the time horizon.
Validity checks ensure that reported numbers are meaningful. The growth multiple must be strictly positive; cumulative losses at or below minus one hundred percent make the multiple nonpositive and render the CAGR undefined. The holding period must be positive and convertible to a year-equivalent. In Start/End mode, the starting value must exceed zero to avoid division by zero and degenerate ratios. When these conditions are not met, the indicator withholds a numeric result and signals that the quantity is not well defined.
Interpreting the output requires recognizing both its strengths and its limits. The CAGR is a concise, comparable measure of long-run performance that abstracts from timing and volatility. It is particularly useful for benchmarking strategies of different durations, setting policy targets for funds, communicating results to stakeholders, and aligning outcomes with hurdle rates. However, because it is path-independent, the CAGR does not reflect interim drawdowns, variance, or tail risk. It also presumes a lump-sum investment with no intermediate cash flows; when deposits or withdrawals occur, internal rate of return methods such as IRR or XIRR are more appropriate.
Typical applications include comparing backtests with unequal sample lengths, reporting consolidated results from discrete projects on a common annual basis, and translating short-horizon event outcomes (for example, a multi-week campaign) into an annualized figure for decision-making. The indicator’s auxiliary displays, such as total profit or loss in currency and the explicit statement of the original holding period alongside its year-equivalent, improve transparency and auditability of the transformation.
Users should remain mindful of several caveats. Time conversions rely on conventional averages and may differ from calendar-exact counts by small amounts, which is usually immaterial but worth noting for edge cases. Selection bias can inflate reported CAGRs if intervals are cherry-picked; robust practice involves rolling windows, out-of-sample tests, and sensitivity analysis. Most importantly, the CAGR should be paired with risk and stability measures—such as maximum drawdown, Sharpe or Sortino ratios, downside deviation, or ulcer index—to form a complete assessment of a strategy’s quality.
In sum, the indicator operationalizes a simple but powerful idea: separate the measurement of growth from the normalization of time, then apply the compounding identity to express outcomes as a consistent per-year rate. By combining flexible period inputs with a rigorous geometric transformation, it enables fair, intelligible comparisons while encouraging the complementary use of risk diagnostics to avoid over-reliance on a single summary statistic.
Whale Money Flow DetectorKey Components:
Volume Analysis: Detects unusual volume spikes compared to average
Money Flow Index: Shows buying vs selling pressure
Whale Detection: Identifies large moves with high volume
Cumulative Flow: Tracks net whale activity over time
Visual Signals: Background colors and whale emoji labels
What it detects:
Large volume transactions (configurable multiplier)
Significant price moves with corresponding volume
Buying vs selling pressure from large players
Cumulative whale flow momentum
Customizable Parameters:
Volume MA Length (default: 20)
Whale Volume Multiplier (default: 2.0x)
Money Flow Length (default: 14)
Detection Sensitivity (default: 1.5)
Visual Features:
Green background for whale buying
Red background for whale selling
Whale emoji labels on significant moves
Real-time stats table
Multiple plot lines for different metrics
How to use:
Copy the code to TradingView's Pine Editor
Apply to your chart
Adjust sensitivity settings based on your asset's behavior
Set up alerts for whale buy/sell signals
Interval — full-screen verticals + H/L + metrics (robust v6)Specify the start date of the analysis and the end date of the analysis, after which 2 vertical lines will appear, the extremes in this period will be marked, and the percentage of deviations will be shown. Next, you can switch assets and see how they behave over the same time interval.
MC RSI + Stoch (multi-level bands)This indicator combines RSI and Stochastic Oscillator into a single panel for easier market analysis. It is designed for traders who want both momentum context and precise timing, with multiple reference levels for better decision-making.
🔧 Features
RSI (Relative Strength Index) with adjustable length (default 14).
Stochastic Oscillator (default 18, 9, 5) with smoothing applied to %K.
Both oscillators plotted in the same scale (0–100) for clear comparison.
Custom horizontal levels:
10 & 90 (purple)
20 & 80 (teal)
30 & 70 (blue)
40 & 60 (gray)
50 midline (red) for balance point reference.
Optional shaded band between 20–80 for quick visualization of momentum extremes.
Toggle switches to show/hide RSI or Stochastic independently.
🎯 How to Use
RSI gives the overall momentum strength.
Stochastic provides faster entry/exit signals by showing short-term momentum shifts.
Use the multi-level bands to identify different market conditions:
10/90 = Extreme exhaustion zones.
20/80 = Overbought/oversold boundaries.
30/70 = Secondary confirmation levels.
40/60 = Neutral momentum bands.
50 = Midline equilibrium.
Alert: 10m FU at Top of HourWhen an FU happens on the hour, it will typically give a good indication of direction
Pair this with negation and HCS
Candle Range Theory (CRT) +Candle Range Theory (CRT)+
Summary
Purpose: Projects a Higher Timeframe (HTF) candle’s range onto your current chart and adds a compact multi-timeframe confluence table to judge premium/discount, trend vs pullback, and alignment.
What it draws:
HTF Range: Active HTF High, Low, and the 50% Equilibrium (EQ) line. Range updates while the HTF bar is building and resets when a new HTF bar starts.
Confluence Table (optional): Up to 5 rows, each pairing a configurable HTF and LTF. Background tint shows premium/discount relative to that row’s HTF EQ. The row label reports directional state (bullish/bearish and pullback/continuation) using simple bar-close momentum checks and a configurable lookback.
How the Confluence Table works
Rows: Up to five independent HTF/LTF pairs (each row can be toggled on/off and configured).
Location: Price vs that row’s HTF EQ
Above EQ = Premium (maroon tint by default)
Below EQ = Discount (green tint by default)
Direction/State: A bar-close momentum read combined with HTF location to label:
Bullish continuation / Bearish continuation
Bullish pullback (upward momentum in discount) / Bearish pullback (downward momentum in premium)
Lookback control:
Uniform Lookback ON: HTF and LTF both use a 1-bar lookback (more responsive).
Uniform Lookback OFF: HTF uses a slightly longer lookback on higher frames for stability; LTF remains 1-bar for responsiveness.
Disclaimer:
This script is for educational and informational purposes only and does not constitute financial advice, investment advice, or trading recommendations. Trading involves substantial risk; you can lose some or all of your capital. Past performance or examples are not indicative of future results. The author provides no warranties regarding accuracy, completeness, or fitness for any purpose and disclaims liability for any losses arising from the use of this tool. Always use your own judgment, confirm on bar close, and consider multiple factors (e.g., volatility, liquidity, news) before taking any action. You are solely responsible for your trading decisions.
Navigator Range Pro+Title Navigator Range Pro+
What it is Navigator Range Pro+ is a confluence-first indicator that blends multi-timeframe (MTF) trend bias with a Dealing Range (DR) framework. It helps you quickly see when higher timeframes align and pairs that bias with clean breakout triggers from a current range. Designed to reduce noise and keep charts readable.
What you’ll see
Dealing Range: Auto-detected range top/bottom with a midline. Choose Stuck (pivot-based, fixed) or Dynamic (rolling highest/lowest) modes.
MTF Bias: Higher timeframe trend bias derived from a selectable moving average (SMA/EMA).
Compact Info Panel (table): A configurable on-chart panel that summarizes each higher timeframe’s bias, optional lower-timeframe analog labels, and a confluence tally. You can position it, resize text, and set columns/rows to fit your layout.
Clean Charting: Flip labels are optional and default to off, so alerts can fire without covering price action.
How it works
Bias engine: Computes bullish/bearish bias for each selected higher timeframe using your chosen MA length/type, then aggregates them into a confluence count.
DR engine: Finds or follows the current trading range and calculates a midline reference for signals or context.
Signals: You can use pure confluence, pure DR breakouts, or a combined “Bias + DR” confirmation for higher-quality entries.
Inputs to know
HTF Ranges (comma separated): Higher timeframes to assess (e.g., W,D,240,60,15).
MA Length/Type: Controls the bias engine’s sensitivity.
DR Mode: Stuck (pivot-based, fixed until a new pivot confirms) or Dynamic (rolling high/low by lookback).
Swing Length / Dynamic Lookback / Extend Right: Shape how the range is found and displayed.
Panel Position / Text Size / Panel Columns / Panel Rows: Customize the on-chart table.
Alerts: Min HTFs to align and Strict alignment (no opposite) to refine confluence.
Show Flip Labels on Chart: Optional visual flip labels; alerts are unaffected if kept off.
Alert conditions
Multi-TF Confluence Bullish: Minimum number of HTFs are bullish (optionally strict).
Multi-TF Confluence Bearish: Minimum number of HTFs are bearish (optionally strict).
DR Breakout Up: Close crosses above DR top.
DR Breakout Down: Close crosses below DR bottom.
Bias + DR Combo Bullish: Bullish confluence and price above your DR threshold (Midline or Top/Bottom).
Bias + DR Combo Bearish: Bearish confluence and price below your DR threshold (Midline or Top/Bottom).
Tips
For live trading, “Once per bar close” alerts are the safest and most consistent.
Increase the Min HTFs to align to reduce noise; switch Combo Threshold to Top/Bottom for fewer, stronger momentum entries.
Keep flip labels off to maintain a clean chart (alerts still fire).
Disclaimer This script is for educational and informational purposes only and does not constitute financial, investment, or trading advice. Trading involves risk, including the risk of loss. You are solely responsible for your own trading decisions. Past performance does not guarantee future results. Always test on a demo and consult a licensed professional where appropriate.
壹神趨勢過濾器壹神趨勢過濾器 (2-pole)
此指標利用雙極濾波器 (Two-pole Filter) 來平滑價格波動,並以顏色與提示符號顯示市場趨勢變化,幫助交易者判斷多空趨勢。
僅供教育與研究使用,未經本人授權請勿盜用。
English:
YiShen Trend Filter (2-pole)
This indicator applies a two-pole filter to smooth price fluctuations and uses color gradients and signal markers to highlight market trend shifts. It is designed to help traders identify bullish and bearish conditions.
Disclaimer: For educational and research purposes only. Unauthorized use or redistribution is strictly prohibited.
Simple MA Crossover - TradicatorsSimple MA Crossover is a beginner-friendly indicator that visualizes moving average crossovers to help identify potential trend shifts. It uses two simple moving averages (SMA):
A Fast Moving Average (short-term)
A Slow Moving Average (long-term)
When the fast MA crosses above the slow MA, a green BUY label appears below the candle. When the fast MA crosses below the slow MA, a red SELL label appears above the candle.
These crossovers can be used as basic signals to suggest potential trend continuation or reversal points. The indicator works on all timeframes and can be used with various assets.
📌 This script is for educational and illustrative purposes only and should not be considered financial advice. Use it in conjunction with your own research, trading strategy, and risk management practices.
Add the Indicator
Open any chart on TradingView
Click on the Indicators tab
Search for “Simple MA Crossover” and add it to your chart
How It Works
The script plots two colored lines:
Orange Line: Fast Moving Average (default 9-period)
Blue Line: Slow Moving Average (default 21-period)
When the orange line crosses above the blue line → a BUY signal is printed
When the orange line crosses below the blue line → a SELL signal is printed
Customization
You can change the lengths of the moving averages in the settings to match your style
Works on any chart — crypto, stocks, forex, etc.
Try different timeframes (15min, 1H, 4H, Daily) to see what suits your strategy best
Reminder
Always test the indicator on a demo account before using it in live trading
Combine this tool with your own technical/fundamental analysis
No indicator guarantees profits or prevents losses
Copeland Dynamic Dominance Matrix System | GForgeCopeland Dynamic Dominance Matrix System | GForge - v1
---
📊 COMPREHENSIVE SYSTEM OVERVIEW
The GForge Dynamic BB% TrendSync System represents a revolutionary approach to algorithmic portfolio management, combining cutting-edge statistical analysis, momentum detection, and regime identification into a unified framework. This system processes up to 39 different cryptocurrency assets simultaneously, using advanced mathematical models to determine optimal capital allocation across dynamic market conditions.
Core Innovation: Multi-Dimensional Analysis
Unlike traditional single-asset indicators, this system operates on multiple analytical dimensions:
Momentum Analysis: Dual Bollinger Band Modified Deviation (DBBMD) calculations
Relative Strength: Comprehensive dominance matrix with head-to-head comparisons
Fundamental Screening: Alpha and Beta statistical filtering
Market Regime Detection: Five-component statistical testing framework
Portfolio Optimization: Dynamic weighting and allocation algorithms
Risk Management: Multi-layered protection and regime-based positioning
---
🔧 DETAILED COMPONENT BREAKDOWN
1. Dynamic Bollinger Band % Modified Deviation Engine (DBBMD)
The foundation of this system is an advanced oscillator that combines two independent Bollinger Band systems with asymmetric parameters to create unique momentum readings.
Technical Implementation:
[
// BB System 1: Fast-reacting with extended standard deviation
primary_bb1_ma_len = 40 // Shorter MA for responsiveness
primary_bb1_sd_len = 65 // Longer SD for stability
primary_bb1_mult = 1.0 // Standard deviation multiplier
// BB System 2: Complementary asymmetric design
primary_bb2_ma_len = 8 // Longer MA for trend following
primary_bb2_sd_len = 66 // Shorter SD for volatility sensitivity
primary_bb2_mult = 1.7 // Wider bands for reduced noise
Key Features:
Asymmetric Design: The intentional mismatch between MA and Standard Deviation periods creates unique oscillation characteristics that traditional Bollinger Bands cannot achieve
Percentage Scale: All readings are normalized to 0-100% scale for consistent interpretation across assets
Multiple Combination Modes:
BB1 Only: Fast/reactive system
BB2 Only: Smooth/stable system
Average: Balanced blend (recommended)
Both Required: Conservative (both must agree)
Either One: Aggressive (either can trigger)
Mean Deviation Filter: Additional volatility-based layer that measures the standard deviation of the DBBMD% itself, creating dynamic trigger bands
Signal Generation Logic:
// Primary thresholds
primary_long_threshold = 71 // DBBMD% level for bullish signals
primary_short_threshold = 33 // DBBMD% level for bearish signals
// Mean Deviation creates dynamic bands around these thresholds
upper_md_band = combined_bb + (md_mult * bb_std)
lower_md_band = combined_bb - (md_mult * bb_std)
// Signal triggers when DBBMD crosses these dynamic bands
long_signal = lower_md_band > long_threshold
short_signal = upper_md_band < short_threshold
For more information on this BB% indicator, find it here:
2. Revolutionary Dominance Matrix System
This is the system's most sophisticated innovation - a comprehensive framework that compares every asset against every other asset to determine relative strength hierarchies.
Mathematical Foundation:
The system constructs a mathematical matrix where each cell represents whether asset i dominates asset j:
// Core dominance matrix (39x39 for maximum assets)
var matrix dominance_matrix = matrix.new(39, 39, 0)
// For each qualifying asset pair (i,j):
for i = 0 to active_count - 1
for j = 0 to active_count - 1
if i != j
// Calculate price ratio BB% TrendSync for asset_i/asset_j
ratio_array = calculate_price_ratios(asset_i, asset_j)
ratio_dbbmd = calculate_dbbmd(ratio_array)
// Asset i dominates j if ratio is in uptrend
if ratio_dbbmd_state == 1
matrix.set(dominance_matrix, i, j, 1)
Copeland Scoring Algorithm:
Each asset receives a dominance score calculated as:
Dominance Score = Total Wins - Total Losses
// Calculate net dominance for each asset
for i = 0 to active_count - 1
wins = 0
losses = 0
for j = 0 to active_count - 1
if i != j
if matrix.get(dominance_matrix, i, j) == 1
wins += 1
else
losses += 1
copeland_score = wins - losses
array.set(dominance_scores, i, copeland_score)
Head-to-Head Analysis Process:
Ratio Construction: For each asset pair, calculate price_asset_A / price_asset_B
DBBMD Application: Apply the same DBBMD analysis to these ratios
Trend Determination: If ratio DBBMD shows uptrend, Asset A dominates Asset B
Matrix Population: Store dominance relationships in mathematical matrix
Score Calculation: Sum wins minus losses for final ranking
This creates a tournament-style ranking where each asset's strength is measured against all others, not just against a benchmark.
3. Advanced Alpha & Beta Filtering System
The system incorporates fundamental analysis through Capital Asset Pricing Model (CAPM) calculations to filter assets based on risk-adjusted performance.
Alpha Calculation (Excess Return Analysis):
// CAPM Alpha calculation
f_calc_alpha(asset_prices, benchmark_prices, alpha_length, beta_length, risk_free_rate) =>
// Calculate asset and benchmark returns
asset_returns = calculate_returns(asset_prices, alpha_length)
benchmark_returns = calculate_returns(benchmark_prices, alpha_length)
// Get beta for expected return calculation
beta = f_calc_beta(asset_prices, benchmark_prices, beta_length)
// Average returns over period
avg_asset_return = array_average(asset_returns) * 100
avg_benchmark_return = array_average(benchmark_returns) * 100
// Expected return using CAPM: E(R) = Beta * Market_Return + Risk_Free_Rate
expected_return = beta * avg_benchmark_return + risk_free_rate
// Alpha = Actual Return - Expected Return
alpha = avg_asset_return - expected_return
Beta Calculation (Volatility Relationship):
// Beta measures how much an asset moves relative to benchmark
f_calc_beta(asset_prices, benchmark_prices, length) =>
// Calculate return series for both assets
asset_returns =
benchmark_returns =
// Populate return arrays
for i = 0 to length - 1
asset_return = (current_price - previous_price) / previous_price
benchmark_return = (current_bench - previous_bench) / previous_bench
// Calculate covariance and variance
covariance = calculate_covariance(asset_returns, benchmark_returns)
benchmark_variance = calculate_variance(benchmark_returns)
// Beta = Covariance(Asset, Market) / Variance(Market)
beta = covariance / benchmark_variance
Filtering Applications:
Alpha Filter: Only includes assets with alpha above specified threshold (e.g., >0.5% monthly excess return)
Beta Filter: Screens for desired volatility characteristics (e.g., beta >1.0 for aggressive assets)
Combined Screening: Both filters must pass for asset qualification
Dynamic Thresholds: User-configurable parameters for different market conditions
4. Intelligent Tie-Breaking Resolution System
When multiple assets have identical dominance scores, the system employs sophisticated methods to determine final rankings.
Standard Tie-Breaking Hierarchy:
// Primary tie-breaking logic
if score_i == score_j // Tied dominance scores
// Level 1: Compare Beta values (higher beta wins)
beta_i = array.get(beta_values, i)
beta_j = array.get(beta_values, j)
if beta_j > beta_i
swap_positions(i, j)
else if beta_j == beta_i
// Level 2: Compare Alpha values (higher alpha wins)
alpha_i = array.get(alpha_values, i)
alpha_j = array.get(alpha_values, j)
if alpha_j > alpha_i
swap_positions(i, j)
Advanced Tie-Breaking (Head-to-Head Analysis):
For the top 3 performers, an enhanced tie-breaking mechanism analyzes direct head-to-head price ratio performance:
// Advanced tie-breaker for top performers
f_advanced_tiebreaker(asset1_idx, asset2_idx, lookback_period) =>
// Calculate price ratio over lookback period
ratio_history =
for k = 0 to lookback_period - 1
price_ratio = price_asset1 / price_asset2
array.push(ratio_history, price_ratio)
// Apply simplified trend analysis to ratio
current_ratio = array.get(ratio_history, 0)
average_ratio = calculate_average(ratio_history)
// Asset 1 wins if current ratio > average (trending up)
if current_ratio > average_ratio
return 1 // Asset 1 dominates
else
return -1 // Asset 2 dominates
5. Five-Component Aggregate Market Regime Filter
This sophisticated framework combines multiple statistical tests to determine whether market conditions favor trending strategies or require defensive positioning.
Component 1: Augmented Dickey-Fuller (ADF) Test
Tests for unit root presence to distinguish between trending and mean-reverting price series.
// Simplified ADF implementation
calculate_adf_statistic(price_series, lookback) =>
// Calculate first differences
differences =
for i = 0 to lookback - 2
diff = price_series - price_series
array.push(differences, diff)
// Statistical analysis of differences
mean_diff = calculate_mean(differences)
std_diff = calculate_standard_deviation(differences)
// ADF statistic approximation
adf_stat = mean_diff / std_diff
// Compare against threshold for trend determination
is_trending = adf_stat <= adf_threshold
Component 2: Directional Movement Index (DMI)
Classic Wilder indicator measuring trend strength through directional movement analysis.
// DMI calculation for trend strength
calculate_dmi_signal(high_data, low_data, close_data, period) =>
// Calculate directional movements
plus_dm_sum = 0.0
minus_dm_sum = 0.0
true_range_sum = 0.0
for i = 1 to period
// Directional movements
up_move = high_data - high_data
down_move = low_data - low_data
// Accumulate positive/negative movements
if up_move > down_move and up_move > 0
plus_dm_sum += up_move
if down_move > up_move and down_move > 0
minus_dm_sum += down_move
// True range calculation
true_range_sum += calculate_true_range(i)
// Calculate directional indicators
di_plus = 100 * plus_dm_sum / true_range_sum
di_minus = 100 * minus_dm_sum / true_range_sum
// ADX calculation
dx = 100 * math.abs(di_plus - di_minus) / (di_plus + di_minus)
adx = dx // Simplified for demonstration
// Trending if ADX above threshold
is_trending = adx > dmi_threshold
Component 3: KPSS Stationarity Test
Complementary test to ADF that examines stationarity around trend components.
// KPSS test implementation
calculate_kpss_statistic(price_series, lookback, significance_level) =>
// Calculate mean and variance
series_mean = calculate_mean(price_series, lookback)
series_variance = calculate_variance(price_series, lookback)
// Cumulative sum of deviations
cumulative_sum = 0.0
cumsum_squared_sum = 0.0
for i = 0 to lookback - 1
deviation = price_series - series_mean
cumulative_sum += deviation
cumsum_squared_sum += math.pow(cumulative_sum, 2)
// KPSS statistic
kpss_stat = cumsum_squared_sum / (lookback * lookback * series_variance)
// Compare against critical values
critical_value = significance_level == 0.01 ? 0.739 :
significance_level == 0.05 ? 0.463 : 0.347
is_trending = kpss_stat >= critical_value
Component 4: Choppiness Index
Measures market directionality using fractal dimension analysis of price movement.
// Choppiness Index calculation
calculate_choppiness(price_data, period) =>
// Find highest and lowest over period
highest = price_data
lowest = price_data
true_range_sum = 0.0
for i = 0 to period - 1
if price_data > highest
highest := price_data
if price_data < lowest
lowest := price_data
// Accumulate true range
if i > 0
true_range = calculate_true_range(price_data, i)
true_range_sum += true_range
// Choppiness calculation
range_high_low = highest - lowest
choppiness = 100 * math.log10(true_range_sum / range_high_low) / math.log10(period)
// Trending if choppiness below threshold (typically 61.8)
is_trending = choppiness < 61.8
Component 5: Hilbert Transform Analysis
Phase-based cycle detection and trend identification using mathematical signal processing.
// Hilbert Transform trend detection
calculate_hilbert_signal(price_data, smoothing_period, filter_period) =>
// Smooth the price data
smoothed_price = calculate_moving_average(price_data, smoothing_period)
// Calculate instantaneous phase components
// Simplified implementation for demonstration
instant_phase = smoothed_price
delayed_phase = calculate_moving_average(price_data, filter_period)
// Compare instantaneous vs delayed signals
phase_difference = instant_phase - delayed_phase
// Trending if instantaneous leads delayed
is_trending = phase_difference > 0
Aggregate Regime Determination:
// Combine all five components
regime_calculation() =>
trending_count = 0
total_components = 0
// Test each enabled component
if enable_adf and adf_signal == 1
trending_count += 1
if enable_adf
total_components += 1
// Repeat for all five components...
// Calculate trending proportion
trending_proportion = trending_count / total_components
// Market is trending if proportion above threshold
regime_allows_trading = trending_proportion >= regime_threshold
The system only allows asset positions when the specified percentage of components indicate trending conditions. During choppy or mean-reverting periods, the system automatically positions in USD to preserve capital.
6. Dynamic Portfolio Weighting Framework
Six sophisticated allocation methodologies provide flexibility for different market conditions and risk preferences.
Weighting Method Implementations:
1. Equal Weight Distribution:
// Simple equal allocation
if weighting_mode == "Equal Weight"
weight_per_asset = 1.0 / selection_count
for i = 0 to selection_count - 1
array.push(weights, weight_per_asset)
2. Linear Dominance Scaling:
// Linear scaling based on dominance scores
if weighting_mode == "Linear Dominance"
// Normalize scores to 0-1 range
min_score = array.min(dominance_scores)
max_score = array.max(dominance_scores)
score_range = max_score - min_score
total_weight = 0.0
for i = 0 to selection_count - 1
score = array.get(dominance_scores, i)
normalized = (score - min_score) / score_range
weight = 1.0 + normalized * concentration_factor
array.push(weights, weight)
total_weight += weight
// Normalize to sum to 1.0
for i = 0 to selection_count - 1
current_weight = array.get(weights, i)
array.set(weights, i, current_weight / total_weight)
3. Conviction Score (Exponential):
// Exponential scaling for high conviction
if weighting_mode == "Conviction Score"
// Combine dominance score with DBBMD strength
conviction_scores =
for i = 0 to selection_count - 1
dominance = array.get(dominance_scores, i)
dbbmd_strength = array.get(dbbmd_values, i)
conviction = dominance + (dbbmd_strength - 50) / 25
array.push(conviction_scores, conviction)
// Exponential weighting
total_weight = 0.0
for i = 0 to selection_count - 1
conviction = array.get(conviction_scores, i)
normalized = normalize_score(conviction)
weight = math.pow(1 + normalized, concentration_factor)
array.push(weights, weight)
total_weight += weight
// Final normalization
normalize_weights(weights, total_weight)
Advanced Features:
Minimum Position Constraint: Prevents dust allocations below specified threshold
Concentration Factor: Adjustable parameter controlling weight distribution aggressiveness
Dominance Boost: Extra weight for assets exceeding specified dominance thresholds
Dynamic Rebalancing: Automatic weight recalculation on portfolio changes
7. Intelligent USD Management System
The system treats USD as a competing asset with its own dominance score, enabling sophisticated cash management.
USD Scoring Methodologies:
Smart Competition Mode (Recommended):
f_calculate_smart_usd_dominance() =>
usd_wins = 0
// USD beats assets in downtrends or weak uptrends
for i = 0 to active_count - 1
asset_state = get_asset_state(i)
asset_dbbmd = get_asset_dbbmd(i)
// USD dominates shorts and weak longs
if asset_state == -1 or (asset_state == 1 and asset_dbbmd < long_threshold)
usd_wins += 1
// Calculate Copeland-style score
base_score = usd_wins - (active_count - usd_wins)
// Boost during weak market conditions
qualified_assets = count_qualified_long_assets()
if qualified_assets <= active_count * 0.2
base_score := math.round(base_score * usd_boost_factor)
base_score
Auto Short Count Mode:
// USD dominance based on number of bearish assets
usd_dominance = count_assets_in_short_state()
// Apply boost during low activity
if qualified_long_count <= active_count * 0.2
usd_dominance := usd_dominance * usd_boost_factor
Regime-Based USD Positioning:
When the five-component regime filter indicates unfavorable conditions, the system automatically overrides all asset signals and positions 100% in USD, protecting capital during choppy markets.
8. Multi-Asset Infrastructure & Data Management
The system maintains comprehensive data structures for up to 39 assets simultaneously.
Data Collection Framework:
// Full OHLC data matrices (200 bars depth for performance)
var matrix open_data = matrix.new(39, 200, na)
var matrix high_data = matrix.new(39, 200, na)
var matrix low_data = matrix.new(39, 200, na)
var matrix close_data = matrix.new(39, 200, na)
// Real-time data collection
if barstate.isconfirmed
for i = 0 to active_count - 1
ticker = array.get(assets, i)
= request.security(ticker, timeframe.period,
[open , high , low , close ],
lookahead=barmerge.lookahead_off)
// Store in matrices with proper shifting
matrix.set(open_data, i, 0, nz(o, 0))
matrix.set(high_data, i, 0, nz(h, 0))
matrix.set(low_data, i, 0, nz(l, 0))
matrix.set(close_data, i, 0, nz(c, 0))
Asset Configuration:
The system comes pre-configured with 39 major cryptocurrency pairs across multiple exchanges:
Major Pairs: BTC, ETH, XRP, SOL, DOGE, ADA, etc.
Exchange Coverage: Binance, KuCoin, MEXC for optimal liquidity
Configurable Count: Users can activate 2-39 assets based on preferences
Custom Tickers: All asset selections are user-modifiable
---
⚙️ COMPREHENSIVE CONFIGURATION GUIDE
Portfolio Management Settings
Maximum Portfolio Size (1-10):
Conservative (1-2): High concentration, captures strong trends
Balanced (3-5): Moderate diversification with trend focus
Diversified (6-10): Lower concentration, broader market exposure
Dominance Clarity Threshold (0.1-1.0):
Low (0.1-0.4): Prefers diversification, holds multiple assets frequently
Medium (0.5-0.7): Balanced approach, context-dependent allocation
High (0.8-1.0): Concentration-focused, single asset preference
Signal Generation Parameters
DBBMD Thresholds:
// Standard configuration
primary_long_threshold = 71 // Conservative: 75+, Aggressive: 65-70
primary_short_threshold = 33 // Conservative: 25-30, Aggressive: 35-40
// BB System parameters
bb1_ma_len = 40 // Fast system: 20-50
bb1_sd_len = 65 // Stability: 50-80
bb2_ma_len = 8 // Trend: 60-100
bb2_sd_len = 66 // Sensitivity: 10-20
Risk Management Configuration
Alpha/Beta Filters:
Alpha Threshold: 0.0-2.0% (higher = more selective)
Beta Threshold: 0.5-2.0 (1.0+ for aggressive assets)
Calculation Periods: 20-50 bars (longer = more stable)
Regime Filter Settings:
Trending Threshold: 0.3-0.8 (higher = stricter trend requirements)
Component Lookbacks: 30-100 bars (balance responsiveness vs stability)
Enable/Disable: Individual component control for customization
---
📊 PERFORMANCE TRACKING & VISUALIZATION
Real-Time Dashboard Features
The compact dashboard provides essential information:
Current Holdings: Asset names and allocation percentages
Dominance Score: Current position's relative strength ranking
Active Assets: Qualified long signals vs total asset count
Returns: Total portfolio performance percentage
Maximum Drawdown: Peak-to-trough decline measurement
Trade Count: Total portfolio transitions executed
Regime Status: Current market condition assessment
Comprehensive Ranking Table
The left-side table displays detailed asset analysis:
Ranking Position: Numerical order by dominance score
Asset Symbol: Clean ticker identification with color coding
Dominance Score: Net wins minus losses in head-to-head comparisons
Win-Loss Record: Detailed breakdown of dominance relationships
DBBMD Reading: Current momentum percentage with threshold highlighting
Alpha/Beta Values: Fundamental analysis metrics when filters enabled
Portfolio Weight: Current allocation percentage in signal portfolio
Execution Status: Visual indicator of actual holdings vs signals
Visual Enhancement Features
Color-Coded Assets: 39 distinct colors for easy identification
Regime Background: Red tinting during unfavorable market conditions
Dynamic Equity Curve: Portfolio value plotted with position-based coloring
Status Indicators: Symbols showing execution vs signal states
---
🔍 ADVANCED TECHNICAL FEATURES
State Persistence System
The system maintains asset states across bars to prevent excessive switching:
// State tracking for each asset and ratio combination
var array asset_states = array.new(1560, 0) // 39 * 40 ratios
// State changes only occur on confirmed threshold breaks
if long_crossover and current_state != 1
current_state := 1
array.set(asset_states, asset_index, 1)
else if short_crossover and current_state != -1
current_state := -1
array.set(asset_states, asset_index, -1)
Transaction Cost Integration
Realistic modeling of trading expenses:
// Transaction cost calculation
transaction_fee = 0.4 // Default 0.4% (fees + slippage)
// Applied on portfolio transitions
if should_execute_transition
was_holding_assets = check_current_holdings()
will_hold_assets = check_new_signals()
// Charge fees for meaningful transitions
if transaction_fee > 0 and (was_holding_assets or will_hold_assets)
fee_amount = equity * (transaction_fee / 100)
equity -= fee_amount
total_fees += fee_amount
Dynamic Memory Management
Optimized data structures for performance:
200-Bar History: Sufficient for calculations while maintaining speed
Matrix Operations: Efficient storage and retrieval of multi-asset data
Array Recycling: Memory-conscious data handling for long-running backtests
Conditional Calculations: Skip unnecessary computations during initialization
12H 30 assets portfolio
---
🚨 SYSTEM LIMITATIONS & TESTING STATUS
CURRENT DEVELOPMENT PHASE: ACTIVE TESTING & OPTIMIZATION
This system represents cutting-edge algorithmic trading technology but remains in continuous development. Key considerations:
Known Limitations:
Requires significant computational resources for 39-asset analysis
Performance varies significantly across different market conditions
Complex parameter interactions may require extensive optimization
Slippage and liquidity constraints not fully modeled for all assets
No consideration for market impact in large position sizes
Areas Under Active Development:
Enhanced regime detection algorithms
Improved transaction cost modeling
Additional portfolio weighting methodologies
Machine learning integration for parameter optimization
Cross-timeframe analysis capabilities
---
🔒 ANTI-REPAINTING ARCHITECTURE & LIVE TRADING READINESS
One of the most critical aspects of any trading system is ensuring that signals and calculations are based on confirmed, historical data rather than current bar information that can change throughout the trading session. This system implements comprehensive anti-repainting measures to ensure 100% reliability for live trading .
The Repainting Problem in Trading Systems
Repainting occurs when an indicator uses current, unconfirmed bar data in its calculations, causing:
False Historical Signals: Backtests appear better than reality because calculations change as bars develop
Live Trading Failures: Signals that looked profitable in testing fail when deployed in real markets
Inconsistent Results: Different results when running the same indicator at different times during a trading session
Misleading Performance: Inflated win rates and returns that cannot be replicated in practice
GForge Anti-Repainting Implementation
This system eliminates repainting through multiple technical safeguards:
1. Historical Data Usage for All Calculations
// CRITICAL: All calculations use PREVIOUS bar data (note the offset)
= request.security(ticker, timeframe.period,
[open , high , low , close , close],
lookahead=barmerge.lookahead_off)
// Store confirmed previous bar OHLC for calculations
matrix.set(open_data, i, 0, nz(o1, 0)) // Previous bar open
matrix.set(high_data, i, 0, nz(h1, 0)) // Previous bar high
matrix.set(low_data, i, 0, nz(l1, 0)) // Previous bar low
matrix.set(close_data, i, 0, nz(c1, 0)) // Previous bar close
// Current bar close only for visualization
matrix.set(current_prices, i, 0, nz(c0, 0)) // Live price display
2. Confirmed Bar State Processing
// Only process data when bars are confirmed and closed
if barstate.isconfirmed
// All signal generation and portfolio decisions occur here
// using only historical, unchanging data
// Shift historical data arrays
for i = 0 to active_count - 1
for bar = math.min(data_bars, 199) to 1
// Move confirmed data through historical matrices
old_data = matrix.get(close_data, i, bar - 1)
matrix.set(close_data, i, bar, old_data)
// Process new confirmed bar data
calculate_all_signals_and_dominance()
3. Lookahead Prevention
// Explicit lookahead prevention in all security calls
request.security(ticker, timeframe.period, expression,
lookahead=barmerge.lookahead_off)
// This ensures no future data can influence current calculations
// Essential for maintaining signal integrity across all timeframes
4. State Persistence with Historical Validation
// Asset states only change based on confirmed threshold breaks
// using historical data that cannot change
var array asset_states = array.new(1560, 0)
// State changes use only confirmed, previous bar calculations
if barstate.isconfirmed
=
f_calculate_enhanced_dbbmd(confirmed_price_array, ...)
// Only update states after bar confirmation
if long_crossover_confirmed and current_state != 1
current_state := 1
array.set(asset_states, asset_index, 1)
Live Trading vs. Backtesting Consistency
The system's architecture ensures identical behavior in both environments:
Backtesting Mode:
Uses historical offset data for all calculations
Processes confirmed bars with `barstate.isconfirmed`
Maintains identical signal generation logic
No access to future information
Live Trading Mode:
Uses same historical offset data structure
Waits for bar confirmation before signal updates
Identical mathematical calculations and thresholds
Real-time price display without affecting signals
Technical Implementation Details
Data Collection Timing
// Example of proper data collection timing
if barstate.isconfirmed // Wait for bar to close
// Collect PREVIOUS bar's confirmed OHLC data
for i = 0 to active_count - 1
ticker = array.get(assets, i)
// Get confirmed previous bar data (note offset)
=
request.security(ticker, timeframe.period,
[open , high , low , close , close],
lookahead=barmerge.lookahead_off)
// ALL calculations use prev_* values
// current_close only for real-time display
portfolio_calculations_use_previous_bar_data()
Signal Generation Process
// Signal generation workflow (simplified)
if barstate.isconfirmed and data_bars >= minimum_required_bars
// Step 1: Calculate DBBMD using historical price arrays
for i = 0 to active_count - 1
historical_prices = get_confirmed_price_history(i) // Uses offset data
= calculate_dbbmd(historical_prices)
update_asset_state(i, state)
// Step 2: Build dominance matrix using confirmed data
calculate_dominance_relationships() // All historical data
// Step 3: Generate portfolio signals
new_portfolio = generate_target_portfolio() // Based on confirmed calculations
// Step 4: Compare with previous signals for changes
if portfolio_signals_changed()
execute_portfolio_transition()
Verification Methods for Users
Users can verify the anti-repainting behavior through several methods:
1. Historical Replay Test
Run the indicator on historical data
Note signal timing and portfolio changes
Replay the same period - signals should be identical
No retroactive changes in historical signals
2. Intraday Consistency Check
Load indicator during active trading session
Observe that previous day's signals remain unchanged
Only current day's final bar should show potential signal changes
Refresh indicator - historical signals should be identical
Live Trading Deployment Considerations
Data Quality Assurance
Exchange Connectivity: Ensure reliable data feeds for all 39 assets
Missing Data Handling: System includes safeguards for data gaps
Price Validation: Automatic filtering of obvious price errors
Timeframe Synchronization: All assets synchronized to same bar timing
Performance Impact of Anti-Repainting Measures
The robust anti-repainting implementation requires additional computational resources:
Memory Usage: 200-bar historical data storage for 39 assets
Processing Delay: Signals update only after bar confirmation
Calculation Overhead: Multiple historical data validations
Alert Timing: Slight delay compared to current-bar indicators
However, these trade-offs are essential for reliable live trading performance and accurate backtesting results.
Critical: Equity Curve Anti-Repainting Architecture
The most sophisticated aspect of this system's anti-repainting design is the temporal separation between signal generation and performance calculation . This creates a realistic trading simulation that perfectly matches live trading execution.
The Timing Sequence
// STEP 1: Store what we HELD during the current bar (for performance calc)
if barstate.isconfirmed
// Record positions that were active during this bar
array.clear(held_portfolio)
array.clear(held_weights)
for i = 0 to array.size(execution_portfolio) - 1
array.push(held_portfolio, array.get(execution_portfolio, i))
array.push(held_weights, array.get(execution_weights, i))
// STEP 2: Calculate performance based on what we HELD
portfolio_return = 0.0
for i = 0 to array.size(held_portfolio) - 1
held_asset = array.get(held_portfolio, i)
held_weight = array.get(held_weights, i)
// Performance from current_price vs reference_price
// This is what we ACTUALLY earned during this bar
if held_asset != "USD"
current_price = get_current_price(held_asset) // End of bar
reference_price = get_reference_price(held_asset) // Start of bar
asset_return = (current_price - reference_price) / reference_price
portfolio_return += asset_return * held_weight
// STEP 3: Apply return to equity (realistic timing)
equity := equity * (1 + portfolio_return)
// STEP 4: Generate NEW signals for NEXT period (using confirmed data)
= f_generate_target_portfolio()
// STEP 5: Execute transitions if signals changed
if signal_changed
// Update execution_portfolio for NEXT bar
array.clear(execution_portfolio)
array.clear(execution_weights)
for i = 0 to array.size(new_signal_portfolio) - 1
array.push(execution_portfolio, array.get(new_signal_portfolio, i))
array.push(execution_weights, array.get(new_signal_weights, i))
Why This Prevents Equity Curve Repainting
Performance Attribution: Returns are calculated based on positions that were **actually held** during each bar, not future signals
Signal Timing: New signals are generated **after** performance calculation, affecting only **future** bars
Realistic Execution: Mimics real trading where you earn returns on current positions while planning future moves
No Retroactive Changes: Once a bar closes, its performance contribution to equity is permanent and unchangeable
The One-Bar Offset Mechanism
This system implements a critical one-bar timing offset:
// Bar N: Performance Calculation
// ================================
// 1. Calculate returns on positions held during Bar N
// 2. Update equity based on actual holdings during Bar N
// 3. Plot equity point for Bar N (based on what we HELD)
// Bar N: Signal Generation
// ========================
// 4. Generate signals for Bar N+1 (using confirmed Bar N data)
// 5. Send alerts for what will be held during Bar N+1
// 6. Update execution_portfolio for Bar N+1
// Bar N+1: The Cycle Continues
// =============================
// 1. Performance calculated on positions from Bar N signals
// 2. New signals generated for Bar N+2
Alert System Timing
The alert system reflects this sophisticated timing:
Transaction Cost Realism
Even transaction costs follow realistic timing:
// Fees applied when transitioning between different portfolios
if should_execute_transition
// Charge fees BEFORE taking new positions (realistic timing)
if transaction_fee > 0
fee_amount = equity * (transaction_fee / 100)
equity -= fee_amount // Immediate cost impact
total_fees += fee_amount
// THEN update to new portfolio
update_execution_portfolio(new_signals)
transitions += 1
// Fees reduce equity immediately, affecting all future calculations
// This matches real trading where fees are deducted upon execution
LIVE TRADING CERTIFICATION:
This system has been specifically designed and tested for live trading deployment. The comprehensive anti-repainting measures ensure that:
Backtesting results accurately represent real trading potential
Signals are generated using only confirmed, historical data
No retroactive changes can occur to previously generated signals
Portfolio transitions are based on reliable, unchanging calculations
Performance metrics reflect realistic trading outcomes including proper timing
Users can deploy this system with confidence that live trading results will closely match backtesting performance, subject to normal market execution factors such as slippage and liquidity.
---
⚡ ALERT SYSTEM & AUTOMATION
The system provides comprehensive alerting for automation and monitoring:
Available Alert Conditions
Portfolio Signal Change: Triggered when new portfolio composition is generated
Regime Override Active: Alerts when market regime forces USD positioning
Individual Asset Signals: Can be configured for specific asset transitions
Performance Thresholds: Drawdown or return-based notifications
---
📈 BACKTESTING & PERFORMANCE ANALYSIS
8 Comprehensive Metrics Tracking
The system maintains detailed performance statistics:
Equity Curve: Real-time portfolio value progression
Returns Calculation: Total and annualized performance metrics
Drawdown Analysis: Peak-to-trough decline measurements
Transaction Counting: Portfolio transition frequency
Fee Tracking: Cumulative transaction cost impact
Win Rate Analysis: Success rate of position changes
Backtesting Configuration
// Backtesting parameters
initial_capital = 10000.0 // Starting capital
use_custom_start = true // Enable specific start date
custom_start = timestamp("2023-09-01") // Backtest beginning
transaction_fee = 0.4 // Combined fees and slippage %
// Performance calculation
total_return = (equity - initial_capital) / initial_capital * 100
current_drawdown = (peak_equity - equity) / peak_equity * 100
---
🔧 TROUBLESHOOTING & OPTIMIZATION
Common Configuration Issues
Insufficient Data: Ensure 100+ bars available before start date
[*} Not Compiling: Go on an asset's price chart with 2 or 3 years of data to
make the system compile or just simply reapply the indicator again
Too Many Assets: Reduce active count if experiencing timeouts
Regime Filter Too Strict: Lower trending threshold if always in USD
Excessive Switching: Increase MD multiplier or adjust thresholds
---
💡 USER FEEDBACK & ENHANCEMENT REQUESTS
The continuous evolution of this system depends heavily on user experience and community feedback. Your insights will help motivate me for new improvements and new feature developments.
---
⚖️ FINAL COMPREHENSIVE RISK DISCLAIMER
TRADING INVOLVES SUBSTANTIAL RISK OF LOSS
This indicator is a sophisticated analytical tool designed for educational and research purposes. Important warnings and considerations:
System Limitations:
No algorithmic system can guarantee profitable outcomes
Complex systems may fail in unexpected ways during extreme market events
Historical backtesting does not account for all real-world trading challenges
Slippage, liquidity constraints, and market impact can significantly affect results
System parameters require careful optimization and ongoing monitoring
The creator and distributor of this indicator assume no liability for any financial losses, system failures, or adverse outcomes resulting from its use. This tool is provided "as is" without any warranties, express or implied.
By using this indicator, you acknowledge that you have read, understood, and agreed to assume all risks associated with algorithmic trading and cryptocurrency investments.
Simple Technicals Table📊 Simple Technicals Table
🎯 A comprehensive technical analysis dashboard displaying key pivot points and moving averages across multiple timeframes
📋 OVERVIEW
The Simple Technicals Table is a powerful indicator that organizes essential trading data into a clean, customizable table format. It combines Fibonacci-based pivot points with critical moving averages for both daily and weekly timeframes, giving traders instant access to key support/resistance levels and trend information.
Perfect for:
Technical analysts studying multi-timeframe data
Chart readers needing quick reference levels
Market researchers analyzing price patterns
Educational purposes and data visualization
🚀 KEY FEATURES
📊 Dual Timeframe Analysis
Daily (D1) and Weekly (W1) data side-by-side
Real-time updates as market conditions change
Seamless comparison between timeframes
🎯 Fibonacci Pivot Points
R3, R2, R1 : Resistance levels using Fibonacci ratios (38.2%, 61.8%, 100%)
PP : Central pivot point from previous period's data
S1, S2, S3 : Support levels with same methodology
📈 Complete EMA Suite
EMA 10 : Short-term trend identification
EMA 20 : Popular swing trading reference
EMA 50 : Medium-term trend confirmation
EMA 100 : Institutional support/resistance
EMA 200 : Long-term trend determination
📊 Essential Indicators
RSI 14 : Momentum for overbought/oversold conditions
ATR 14 : Volatility measurement for risk management
🎨 Full Customization
9 table positions : Place anywhere on your chart
5 text sizes : Tiny to huge for optimal visibility
Custom colors : Background, headers, and text
Optional pivot lines : Visual weekly levels on chart
⚙️ HOW IT WORKS
Fibonacci Pivot Calculation:
Pivot Point (PP) = (High + Low + Close) / 3
Range = High - Low
Resistance Levels:
R1 = PP + (Range × 0.382)
R2 = PP + (Range × 0.618)
R3 = PP + (Range × 1.000)
Support Levels:
S1 = PP - (Range × 0.382)
S2 = PP - (Range × 0.618)
S3 = PP - (Range × 1.000)
Smart Price Formatting:
< $1: 5 decimal places (crypto-friendly)
$1-$10: 4 decimal places
$10-$100: 3 decimal places
> $100: 2 decimal places
📊 TECHNICAL ANALYSIS APPLICATIONS
⚠️ EDUCATIONAL PURPOSE ONLY
This indicator is designed solely for technical analysis and educational purposes . It provides data visualization to help understand market structure and price relationships.
📈 Data Analysis Uses
Support & Resistance Identification : Visualize Fibonacci-based pivot levels
Trend Analysis : Study EMA relationships and price positioning
Multi-Timeframe Study : Compare daily and weekly technical data
Market Structure : Understand key technical levels and indicators
📚 Educational Benefits
Learn about Fibonacci pivot point calculations
Understand moving average relationships
Study RSI and ATR indicator values
Practice multi-timeframe technical analysis
🔍 Data Visualization Features
Organized table format for easy data reading
Color-coded levels for quick identification
Real-time technical indicator values
Historical data integrity maintained
🛠️ SETUP GUIDE
1. Installation
Search "Simple Technicals Table" in indicators
Add to chart (appears in middle-left by default)
Table displays automatically on any timeframe
2. Customization
Table Position : Choose from 9 locations
Text Size : Adjust for screen resolution
Colors : Match your chart theme
Pivot Lines : Toggle weekly level visualization
3. Optimization Tips
Use larger text on mobile devices
Dark backgrounds work well with light text
Enable pivot lines for visual reference
✅ BEST PRACTICES
Recommended Usage:
Use for technical analysis and educational study only
Combine with other analytical methods for comprehensive analysis
Study multi-timeframe data relationships
Practice understanding technical indicator values
Important Notes:
Levels based on previous period's data
Most effective in trending markets
No repainting - uses confirmed data only
Works on all instruments and timeframes
🔧 TECHNICAL SPECS
Performance:
Pine Script v5 optimized code
Minimal CPU/memory usage
Real-time data updates
No lookahead bias
Compatibility:
All chart types (Candlestick, Bar, Line)
Any instrument (Stocks, Forex, Crypto, etc.)
All timeframes supported
Mobile and desktop friendly
Data Accuracy:
Precise floating-point calculations
Historical data integrity maintained
No future data leakage
📱 DEVICE SUPPORT
✅ Desktop browsers (Chrome, Firefox, Safari, Edge)
✅ TradingView mobile app (iOS/Android)
✅ TradingView desktop application
✅ Light and dark themes
✅ All screen resolutions
📋 VERSION INFO
Version 1.0 - Initial Release
Fibonacci-based pivot calculations
Dual timeframe support (Daily/Weekly)
Complete EMA suite (10, 20, 50, 100, 200)
RSI and ATR indicators
Fully customizable interface
Optional pivot line visualization
Smart price formatting
Mobile-optimized display
⚠️ DISCLAIMER
This indicator is designed for technical analysis, educational and informational purposes ONLY . It provides data visualization and technical calculations to help users understand market structure and price relationships.
⚠️ NOT FOR TRADING DECISIONS
This tool does NOT provide trading signals or investment advice
All data is for analytical and educational purposes only
Users should not base trading decisions solely on this indicator
Always conduct thorough research and analysis before making any financial decisions
📚 Educational Use Only
Use for learning technical analysis concepts
Study market data and indicator relationships
Practice chart reading and data interpretation
Understand mathematical calculations behind technical indicators
The Simple Technicals Table provides technical data visualization to assist in market analysis education. It does not constitute financial advice, trading recommendations, or investment guidance. Users are solely responsible for their own research and decisions.
Author: ToTrieu
Version: 1.0
Category: Technical Analysis / Support & Resistance
License: Open source for educational use
💬 Questions? Comments? Feel free to reach out!
ORB + Volume FilterI created this for testing purposes only. If this script works as expected I will add a better description.
MEMEC - Meme Coin Market Cap [Da_Prof]For this indicator, the meme coin market cap of the top meme coins are added together to get an estimate of the total meme coin market cap back to the first meme coin, DOGE. Meme.C does this natively on TradingView, but its data only goes back to 19 May 2025. For the indicator, MEME.C supersedes the addition of all the individual meme coins (i.e., from 19 May 2025 to present). The start of MEME.C is labeled on the chart by default, but can be removed by deselecting the label in the settings.
After the creation of DOGE, but before data is available for Meme.C, the highest market cap meme coins are added together to estimate the meme coin market cap. The meme coins used by default are DOGE, SHIB, PEPE, BONK, FLOKI, PENGU, TRUMP, SPX6900, FARTCOIN, WIF, M, BRETT, B, MOG, APE, TURBO, DOG, and POPCAT. Users can select if they wish to disregard any or all of these coins. As of the creation of the indicator, DOGE, SHIB, and PEPE have CRYPTOCAP symbols on TradingView. Therefore, the true market cap of these coins is integrated into this indicator. The other meme coin market caps are estimated using price and the circulating supply as of 09/16/2025. I make no claims as to the indicator's exact accuracy. In fact, it isn't exactly accurate since I utilized the circulating supply on the day it was created, so for meme coins that have a changing supply, the market cap will be at least slightly inaccurate. Use this indicator at your own risk.
To use the indicator, it is best to plot overlayed on the CRYPTOCAP:DOGE chart. You can decide whether or not to hide the DOGE market cap.