Seasonality with Custom IntervalSeasonality with Custom Interval Lookback
by TradersPod
Description:
This script is a modified version of Kaschko's original Seasonal Trend with Interval Lookback indicator, designed to help traders analyze seasonal trends over customizable intervals. The modifications in this version provide enhanced flexibility and improved visualization, making it a valuable tool for analyzing seasonal patterns in various markets.
Key Features:
1. Custom Lookback Multiplier: The script allows users to adjust the lookback period with a multiplier, giving more control over the number of years analyzed for seasonality. This feature is especially useful for traders looking to tailor the analysis based on different market cycles or election cycles.
2. Enhanced Visualization: Users can customize the color and line width of the plotted seasonality line for better readability. The smoothing parameter has been added to allow for flexible moving averages, reducing noise in the trend visualization.
3 Detailed Chart Plotting: The script plots the trading week of the year (TWOY), trading day of the month (TDOM), and trading day of the year (TDOY) on the status line, providing users with additional insights into how seasonal trends affect price movements.
How to Use:
1. Lookback Period: Set the number of years to look back. For example, if you set it to 16 years, the script will gather data from the last 16 years.
2. Interval Years: You can set an interval (e.g., 4 years for U.S. elections) to focus on specific years:
Interval = 0: This setting will use all years within the lookback period.
Interval > 0: This setting will use only every nth year, based on the interval you set (e.g., 4 for U.S. elections, 10 for decennial years).
3 Future Projections: You can specify how many bars into the future the script should project the seasonal trend.
Example Settings:
>Lookback Period: 16 years.
>Interval: 4 years (this would focus on U.S. election years).
>]Future Projections: 30 bars (the seasonal trend is projected 30 bars into the future).
Intended Use : This indicator is ideal for traders who:
>Want to analyze how market prices react to seasonal cycles.
>Need flexible, customizable tools for tracking longer-term trends.
>Prefer visual clarity in their seasonal trend analysis with adjustable settings for better readability.
How It Works:
>The script calculates the average price change for each trading day, week, or month, using a lookback period of up to 30 years. It then smooths the seasonal trend using a customizable moving average and projects the trend into the future, allowing users to forecast potential price movements based on historical seasonal patterns.
>The script also offers a projection of future seasonality by plotting the seasonal trend up to 252 bars into the future, with options to offset the start of the seasonality.
Notes:
>This script is open-source under the Mozilla Public License 2.0.
>Original script by Kaschko. Modifications by TradersPod.
Search in scripts for "Cycle"
BTC Growth | AlchimistOfCrypto🌈 BTC Regression Bands & Halvings – Unveiling Bitcoin's Logarithmic Growth Fields 🌈
"The Bitcoin Regression Bands, engineered through advanced logarithmic mathematics, visualizes the probabilistic distribution of Bitcoin's price evolution within a multi-cycle growth paradigm. This indicator employs principles from hyperbolic regression where decay coefficients create mathematical boundaries that define Bitcoin's long-term value progression. Our implementation features algorithmically enhanced rainbow visualization derived from extensive cycle analysis, creating a dynamic representation of Bitcoin's logarithmic growth with adaptive color gradients that highlight critical halving-based phase transitions in the asset's monetary evolution."
📊 Professional Trading Application
The Bitcoin Regression Bands transcends traditional price prediction models with a sophisticated multi-band illumination system that reveals the underlying structure of Bitcoin's monetary evolution. Scientifically calibrated across multiple halving cycles and featuring seamless rainbow visualization, it enables investors to perceive Bitcoin's position within its macro growth trajectory with unprecedented clarity.
- Visual Theming 🎨
Scientifically designed rainbow gradient optimized for cycle pattern recognition:
- Violet-Blue: Lower value accumulation zones with highest mathematical growth potential
- Green: Fair value equilibrium zone representing the regression mean
- Yellow-Orange: Moderate overvaluation regions indicating potential resistance
- Red: Statistical extreme zones indicating mathematical cycle peaks
- Halving Visualization 🔍
- Precise cycle boundaries demarcating Bitcoin's fundamental supply shock events
- Adaptive band spacing based on mathematical cycle progression
- Multiple sub-cycle markers revealing the probabilistic nature of Bitcoin's trajectory
🚀 How to Use
1. Identify Macro Position ⏰: Locate Bitcoin's current price relative to the regression bands
2. Understand Cycle Context 🎚️: Note position within the current halving cycle for time-based analysis
3. Assess Mathematical Value 🌈: Determine potential over/undervaluation based on band location
4. Adjust Investment Strategy 🔎: Modulate position sizing based on mathematical value assessment
5. Identify Cycle Phases ✅: Monitor band transitions to detect accumulation and distribution zones
6. Invest with Precision 🛡️: Utilize lower bands for strategic accumulation, upper bands for strategic reduction
7. Manage Risk Dynamically 🔐: Scale investment allocations based on mathematical cycle positioning
Trading Psychology - Fear & Greed Index by DGTPsychology of a Market Cycle - Where are we in the cycle?
Before proceeding with the question "where", let's first have a quick look at "What is market psychology?"
Market psychology is the idea that the movements of a market reflect the emotional state of its participants. It is one of the main topics of behavioral economics - an interdisciplinary field that investigates the various factors that precede economic decisions. Many believe that emotions are the main driving force behind the shifts of financial markets and that the overall fluctuating investor sentiment is what creates the so-called psychological market cycles - which is also dynamic.
Stages of Investor Emotions:
* Optimism – A positive outlook encourages us about the future, leading us to buy stocks.
* Excitement – Having seen some of our initial ideas work, we begin considering what our market success could allow us to accomplish.
* Thrill – At this point we investors cannot believe our success and begin to comment on how smart we are.
* Euphoria – This marks the point of maximum financial risk. Having seen every decision result in quick, easy profits, we begin to ignore risk and expect every trade to become profitable.
* Anxiety – For the first time the market moves against us. Having never stared at unrealized losses, we tell ourselves we are long-term investors and that all our ideas will eventually work.
* Denial – When markets have not rebounded, yet we do not know how to respond, we begin denying either that we made poor choices or that things will not improve shortly.
* Fear – The market realities become confusing. We believe the stocks we own will never move in our favor.
* Desperation – Not knowing how to act, we grasp at any idea that will allow us to get back to breakeven.
* Panic – Having exhausted all ideas, we are at a loss for what to do next.
* Capitulation – Deciding our portfolio will never increase again, we sell all our stocks to avoid any future losses.
* Despondency – After exiting the markets we do not want to buy stocks ever again. This often marks the moment of greatest financial opportunity.
* Depression – Not knowing how we could be so foolish, we are left trying to understand our actions.
* Hope – Eventually we return to the realization that markets move in cycles, and we begin looking for our next opportunity.
* Relief – Having bought a stock that turned profitable, we renew our faith that there is a future in investing.
It's hard to predict with certainty where we exactly are in the market cycle, we can only make an educated guess as to the rough stage based on data available. And here comes the study "Trading Psychology - Fear & Greed Index"
Factors taken into account in this study include:
1-Price Momentum : Price Divergence/Convergence versus its Slow Moving Average
2-Strenght : Rate of Return (RoR) also called Return on Investment (ROI) is a performance measure used to evaluate the efficiency of an investment, net gain or loss of an investment over a specified time period, the rate of change in price movement over a period of time to help investors determine the strength
3-Money Flow : Chaikin Money Flow (CMF) is a technical analysis indicator used to measure Money Flow Volume over a set period of time. CMF can be used as a way to further quantify changes in buying and selling pressure and can help to anticipate future changes and therefore trading opportunities. CMF calculations is based on Accumulation/Distribution
4-Market Volatility : CBOE Volatility Index (VIX), the Volatility Index, or VIX, is a real-time market index that represents the market's expectation of 30-day forward-looking volatility. Derived from the price inputs of the S&P 500 index options, it provides a measure of market risk and investors' sentiments. It is also known by other names like "Fear Gauge" or "Fear Index." Investors, research analysts and portfolio managers look to VIX values as a way to measure market risk, fear and stress before they take investment decisions
5-Safe Haven Demand : in this study GOLD demand is assumed
What to look for :
*Fear and Greed Index as explained above,
*Divergencies
Tool tip of the label displayed provides details of references
Conclusion:
As investors, we always get caught up in the day to day price movements, and lose sight of the bigger picture. The biggest crashes happen not when investors are cautious and fearful, it's when they're euphoric and expecting financial instruments to continue going higher. So as we continue investing, don’t forget to stop and ask yourself, where in the chart do you think we are right now? The Market Psychology Cycle shines light on how emotions evolve, fear and greed index can come in handy, provided that it is not the only tool used to make investment decisions. It is easy to look back at market cycles and recognize how the overall psychology changed. Analyzing previous data makes it obvious what actions and decisions would have been the most profitable. However, it is much harder to understand how the market is changing as it goes - and even harder to predict what comes next. Many investors use technical analysis (TA) to attempt to anticipate where the market is likely to go. Investors are advised to keep tabs on fear for potential buying the dips opportunities and view periods of greed as a potential indicator that financial instruments might be overvalued.
Warren Buffett's quote, buy when others are fearful, and sell when others are greedy
Trading success is all about following your trading strategy and the indicators should fit within your trading strategy, and not to be traded upon solely
Disclaimer : The script is for informational and educational purposes only. Use of the script does not constitute professional and/or financial advice. You alone have the sole responsibility of evaluating the script output and risks associated with the use of the script. In exchange for using the script, you agree not to hold dgtrd TradingView user liable for any possible claim for damages arising from any decision you make based on use of the script
Swing Oracle Stock// (\_/)
// ( •.•)
// (")_(")
📌 Swing Oracle Stock – Professional Cycle & Trend Detection Indicator
The Swing Oracle Stock is an advanced market analysis tool designed to highlight price cycles, trend shifts, and key trading zones with precision. It combines trendline dynamics, normalized oscillators, and multi-timeframe confirmation into a single comprehensive indicator.
🔑 Key Features
NDOS (Normalized Dynamic Oscillator System):
Measures price strength relative to recent highs and lows to detect overbought, neutral, and oversold zones.
Dynamic Trendline (EMA8 or SMA231):
Flexible source selection for adapting to different trading styles (scalping vs. swing).
Multi-Timeframe H1 Confirmation:
Adds higher-timeframe validation to improve signal reliability.
Automated Buy & Sell Signals:
Triggered only on significant crossovers above/below defined levels.
Weekly Cycles (7-day M5 projection):
Tracks recurring time-based market cycles to anticipate reversal points.
Intuitive Visualization:
Colored zones (high, low, neutral) for quick market context.
Optional background and candlestick coloring for better clarity.
Multi-Timeframe Cross Table:
Automatically compares SMA50 vs. EMA200 across multiple timeframes (1m → 4h), showing clear status:
⭐️⬆️ UP = bullish trend confirmation
💀⬇️ Drop = bearish trend confirmation
📊 Built-in Statistical Tools
Normalized difference between short and long EMA.
Projected normalized mean levels plotted directly on the main chart.
Dynamic analysis of price distance from SMA50 to capture market “waves.”
🎯 Use Cases
Spot trend reversals with multi-timeframe confirmation.
Identify powerful breakout and breakdown zones.
Time entries and exits based on trend + cycle confluence.
Enhance market timing for swing trades, scalps, or long-term positions.
⚡ Swing Oracle Stock brings together cycle detection, oscillator normalization, and multi-timeframe confirmation into one streamlined indicator for traders who want a professional edge.
Markov Chain [3D] | FractalystWhat exactly is a Markov Chain?
This indicator uses a Markov Chain model to analyze, quantify, and visualize the transitions between market regimes (Bull, Bear, Neutral) on your chart. It dynamically detects these regimes in real-time, calculates transition probabilities, and displays them as animated 3D spheres and arrows, giving traders intuitive insight into current and future market conditions.
How does a Markov Chain work, and how should I read this spheres-and-arrows diagram?
Think of three weather modes: Sunny, Rainy, Cloudy.
Each sphere is one mode. The loop on a sphere means “stay the same next step” (e.g., Sunny again tomorrow).
The arrows leaving a sphere show where things usually go next if they change (e.g., Sunny moving to Cloudy).
Some paths matter more than others. A more prominent loop means the current mode tends to persist. A more prominent outgoing arrow means a change to that destination is the usual next step.
Direction isn’t symmetric: moving Sunny→Cloudy can behave differently than Cloudy→Sunny.
Now relabel the spheres to markets: Bull, Bear, Neutral.
Spheres: market regimes (uptrend, downtrend, range).
Self‑loop: tendency for the current regime to continue on the next bar.
Arrows: the most common next regime if a switch happens.
How to read: Start at the sphere that matches current bar state. If the loop stands out, expect continuation. If one outgoing path stands out, that switch is the typical next step. Opposite directions can differ (Bear→Neutral doesn’t have to match Neutral→Bear).
What states and transitions are shown?
The three market states visualized are:
Bullish (Bull): Upward or strong-market regime.
Bearish (Bear): Downward or weak-market regime.
Neutral: Sideways or range-bound regime.
Bidirectional animated arrows and probability labels show how likely the market is to move from one regime to another (e.g., Bull → Bear or Neutral → Bull).
How does the regime detection system work?
You can use either built-in price returns (based on adaptive Z-score normalization) or supply three custom indicators (such as volume, oscillators, etc.).
Values are statistically normalized (Z-scored) over a configurable lookback period.
The normalized outputs are classified into Bull, Bear, or Neutral zones.
If using three indicators, their regime signals are averaged and smoothed for robustness.
How are transition probabilities calculated?
On every confirmed bar, the algorithm tracks the sequence of detected market states, then builds a rolling window of transitions.
The code maintains a transition count matrix for all regime pairs (e.g., Bull → Bear).
Transition probabilities are extracted for each possible state change using Laplace smoothing for numerical stability, and frequently updated in real-time.
What is unique about the visualization?
3D animated spheres represent each regime and change visually when active.
Animated, bidirectional arrows reveal transition probabilities and allow you to see both dominant and less likely regime flows.
Particles (moving dots) animate along the arrows, enhancing the perception of regime flow direction and speed.
All elements dynamically update with each new price bar, providing a live market map in an intuitive, engaging format.
Can I use custom indicators for regime classification?
Yes! Enable the "Custom Indicators" switch and select any three chart series as inputs. These will be normalized and combined (each with equal weight), broadening the regime classification beyond just price-based movement.
What does the “Lookback Period” control?
Lookback Period (default: 100) sets how much historical data builds the probability matrix. Shorter periods adapt faster to regime changes but may be noisier. Longer periods are more stable but slower to adapt.
How is this different from a Hidden Markov Model (HMM)?
It sets the window for both regime detection and probability calculations. Lower values make the system more reactive, but potentially noisier. Higher values smooth estimates and make the system more robust.
How is this Markov Chain different from a Hidden Markov Model (HMM)?
Markov Chain (as here): All market regimes (Bull, Bear, Neutral) are directly observable on the chart. The transition matrix is built from actual detected regimes, keeping the model simple and interpretable.
Hidden Markov Model: The actual regimes are unobservable ("hidden") and must be inferred from market output or indicator "emissions" using statistical learning algorithms. HMMs are more complex, can capture more subtle structure, but are harder to visualize and require additional machine learning steps for training.
A standard Markov Chain models transitions between observable states using a simple transition matrix, while a Hidden Markov Model assumes the true states are hidden (latent) and must be inferred from observable “emissions” like price or volume data. In practical terms, a Markov Chain is transparent and easier to implement and interpret; an HMM is more expressive but requires statistical inference to estimate hidden states from data.
Markov Chain: states are observable; you directly count or estimate transition probabilities between visible states. This makes it simpler, faster, and easier to validate and tune.
HMM: states are hidden; you only observe emissions generated by those latent states. Learning involves machine learning/statistical algorithms (commonly Baum–Welch/EM for training and Viterbi for decoding) to infer both the transition dynamics and the most likely hidden state sequence from data.
How does the indicator avoid “repainting” or look-ahead bias?
All regime changes and matrix updates happen only on confirmed (closed) bars, so no future data is leaked, ensuring reliable real-time operation.
Are there practical tuning tips?
Tune the Lookback Period for your asset/timeframe: shorter for fast markets, longer for stability.
Use custom indicators if your asset has unique regime drivers.
Watch for rapid changes in transition probabilities as early warning of a possible regime shift.
Who is this indicator for?
Quants and quantitative researchers exploring probabilistic market modeling, especially those interested in regime-switching dynamics and Markov models.
Programmers and system developers who need a probabilistic regime filter for systematic and algorithmic backtesting:
The Markov Chain indicator is ideally suited for programmatic integration via its bias output (1 = Bull, 0 = Neutral, -1 = Bear).
Although the visualization is engaging, the core output is designed for automated, rules-based workflows—not for discretionary/manual trading decisions.
Developers can connect the indicator’s output directly to their Pine Script logic (using input.source()), allowing rapid and robust backtesting of regime-based strategies.
It acts as a plug-and-play regime filter: simply plug the bias output into your entry/exit logic, and you have a scientifically robust, probabilistically-derived signal for filtering, timing, position sizing, or risk regimes.
The MC's output is intentionally "trinary" (1/0/-1), focusing on clear regime states for unambiguous decision-making in code. If you require nuanced, multi-probability or soft-label state vectors, consider expanding the indicator or stacking it with a probability-weighted logic layer in your scripting.
Because it avoids subjectivity, this approach is optimal for systematic quants, algo developers building backtested, repeatable strategies based on probabilistic regime analysis.
What's the mathematical foundation behind this?
The mathematical foundation behind this Markov Chain indicator—and probabilistic regime detection in finance—draws from two principal models: the (standard) Markov Chain and the Hidden Markov Model (HMM).
How to use this indicator programmatically?
The Markov Chain indicator automatically exports a bias value (+1 for Bullish, -1 for Bearish, 0 for Neutral) as a plot visible in the Data Window. This allows you to integrate its regime signal into your own scripts and strategies for backtesting, automation, or live trading.
Step-by-Step Integration with Pine Script (input.source)
Add the Markov Chain indicator to your chart.
This must be done first, since your custom script will "pull" the bias signal from the indicator's plot.
In your strategy, create an input using input.source()
Example:
//@version=5
strategy("MC Bias Strategy Example")
mcBias = input.source(close, "MC Bias Source")
After saving, go to your script’s settings. For the “MC Bias Source” input, select the plot/output of the Markov Chain indicator (typically its bias plot).
Use the bias in your trading logic
Example (long only on Bull, flat otherwise):
if mcBias == 1
strategy.entry("Long", strategy.long)
else
strategy.close("Long")
For more advanced workflows, combine mcBias with additional filters or trailing stops.
How does this work behind-the-scenes?
TradingView’s input.source() lets you use any plot from another indicator as a real-time, “live” data feed in your own script (source).
The selected bias signal is available to your Pine code as a variable, enabling logical decisions based on regime (trend-following, mean-reversion, etc.).
This enables powerful strategy modularity : decouple regime detection from entry/exit logic, allowing fast experimentation without rewriting core signal code.
Integrating 45+ Indicators with Your Markov Chain — How & Why
The Enhanced Custom Indicators Export script exports a massive suite of over 45 technical indicators—ranging from classic momentum (RSI, MACD, Stochastic, etc.) to trend, volume, volatility, and oscillator tools—all pre-calculated, centered/scaled, and available as plots.
// Enhanced Custom Indicators Export - 45 Technical Indicators
// Comprehensive technical analysis suite for advanced market regime detection
//@version=6
indicator('Enhanced Custom Indicators Export | Fractalyst', shorttitle='Enhanced CI Export', overlay=false, scale=scale.right, max_labels_count=500, max_lines_count=500)
// |----- Input Parameters -----| //
momentum_group = "Momentum Indicators"
trend_group = "Trend Indicators"
volume_group = "Volume Indicators"
volatility_group = "Volatility Indicators"
oscillator_group = "Oscillator Indicators"
display_group = "Display Settings"
// Common lengths
length_14 = input.int(14, "Standard Length (14)", minval=1, maxval=100, group=momentum_group)
length_20 = input.int(20, "Medium Length (20)", minval=1, maxval=200, group=trend_group)
length_50 = input.int(50, "Long Length (50)", minval=1, maxval=200, group=trend_group)
// Display options
show_table = input.bool(true, "Show Values Table", group=display_group)
table_size = input.string("Small", "Table Size", options= , group=display_group)
// |----- MOMENTUM INDICATORS (15 indicators) -----| //
// 1. RSI (Relative Strength Index)
rsi_14 = ta.rsi(close, length_14)
rsi_centered = rsi_14 - 50
// 2. Stochastic Oscillator
stoch_k = ta.stoch(close, high, low, length_14)
stoch_d = ta.sma(stoch_k, 3)
stoch_centered = stoch_k - 50
// 3. Williams %R
williams_r = ta.stoch(close, high, low, length_14) - 100
// 4. MACD (Moving Average Convergence Divergence)
= ta.macd(close, 12, 26, 9)
// 5. Momentum (Rate of Change)
momentum = ta.mom(close, length_14)
momentum_pct = (momentum / close ) * 100
// 6. Rate of Change (ROC)
roc = ta.roc(close, length_14)
// 7. Commodity Channel Index (CCI)
cci = ta.cci(close, length_20)
// 8. Money Flow Index (MFI)
mfi = ta.mfi(close, length_14)
mfi_centered = mfi - 50
// 9. Awesome Oscillator (AO)
ao = ta.sma(hl2, 5) - ta.sma(hl2, 34)
// 10. Accelerator Oscillator (AC)
ac = ao - ta.sma(ao, 5)
// 11. Chande Momentum Oscillator (CMO)
cmo = ta.cmo(close, length_14)
// 12. Detrended Price Oscillator (DPO)
dpo = close - ta.sma(close, length_20)
// 13. Price Oscillator (PPO)
ppo = ta.sma(close, 12) - ta.sma(close, 26)
ppo_pct = (ppo / ta.sma(close, 26)) * 100
// 14. TRIX
trix_ema1 = ta.ema(close, length_14)
trix_ema2 = ta.ema(trix_ema1, length_14)
trix_ema3 = ta.ema(trix_ema2, length_14)
trix = ta.roc(trix_ema3, 1) * 10000
// 15. Klinger Oscillator
klinger = ta.ema(volume * (high + low + close) / 3, 34) - ta.ema(volume * (high + low + close) / 3, 55)
// 16. Fisher Transform
fisher_hl2 = 0.5 * (hl2 - ta.lowest(hl2, 10)) / (ta.highest(hl2, 10) - ta.lowest(hl2, 10)) - 0.25
fisher = 0.5 * math.log((1 + fisher_hl2) / (1 - fisher_hl2))
// 17. Stochastic RSI
stoch_rsi = ta.stoch(rsi_14, rsi_14, rsi_14, length_14)
stoch_rsi_centered = stoch_rsi - 50
// 18. Relative Vigor Index (RVI)
rvi_num = ta.swma(close - open)
rvi_den = ta.swma(high - low)
rvi = rvi_den != 0 ? rvi_num / rvi_den : 0
// 19. Balance of Power (BOP)
bop = (close - open) / (high - low)
// |----- TREND INDICATORS (10 indicators) -----| //
// 20. Simple Moving Average Momentum
sma_20 = ta.sma(close, length_20)
sma_momentum = ((close - sma_20) / sma_20) * 100
// 21. Exponential Moving Average Momentum
ema_20 = ta.ema(close, length_20)
ema_momentum = ((close - ema_20) / ema_20) * 100
// 22. Parabolic SAR
sar = ta.sar(0.02, 0.02, 0.2)
sar_trend = close > sar ? 1 : -1
// 23. Linear Regression Slope
lr_slope = ta.linreg(close, length_20, 0) - ta.linreg(close, length_20, 1)
// 24. Moving Average Convergence (MAC)
mac = ta.sma(close, 10) - ta.sma(close, 30)
// 25. Trend Intensity Index (TII)
tii_sum = 0.0
for i = 1 to length_20
tii_sum += close > close ? 1 : 0
tii = (tii_sum / length_20) * 100
// 26. Ichimoku Cloud Components
ichimoku_tenkan = (ta.highest(high, 9) + ta.lowest(low, 9)) / 2
ichimoku_kijun = (ta.highest(high, 26) + ta.lowest(low, 26)) / 2
ichimoku_signal = ichimoku_tenkan > ichimoku_kijun ? 1 : -1
// 27. MESA Adaptive Moving Average (MAMA)
mama_alpha = 2.0 / (length_20 + 1)
mama = ta.ema(close, length_20)
mama_momentum = ((close - mama) / mama) * 100
// 28. Zero Lag Exponential Moving Average (ZLEMA)
zlema_lag = math.round((length_20 - 1) / 2)
zlema_data = close + (close - close )
zlema = ta.ema(zlema_data, length_20)
zlema_momentum = ((close - zlema) / zlema) * 100
// |----- VOLUME INDICATORS (6 indicators) -----| //
// 29. On-Balance Volume (OBV)
obv = ta.obv
// 30. Volume Rate of Change (VROC)
vroc = ta.roc(volume, length_14)
// 31. Price Volume Trend (PVT)
pvt = ta.pvt
// 32. Negative Volume Index (NVI)
nvi = 0.0
nvi := volume < volume ? nvi + ((close - close ) / close ) * nvi : nvi
// 33. Positive Volume Index (PVI)
pvi = 0.0
pvi := volume > volume ? pvi + ((close - close ) / close ) * pvi : pvi
// 34. Volume Oscillator
vol_osc = ta.sma(volume, 5) - ta.sma(volume, 10)
// 35. Ease of Movement (EOM)
eom_distance = high - low
eom_box_height = volume / 1000000
eom = eom_box_height != 0 ? eom_distance / eom_box_height : 0
eom_sma = ta.sma(eom, length_14)
// 36. Force Index
force_index = volume * (close - close )
force_index_sma = ta.sma(force_index, length_14)
// |----- VOLATILITY INDICATORS (10 indicators) -----| //
// 37. Average True Range (ATR)
atr = ta.atr(length_14)
atr_pct = (atr / close) * 100
// 38. Bollinger Bands Position
bb_basis = ta.sma(close, length_20)
bb_dev = 2.0 * ta.stdev(close, length_20)
bb_upper = bb_basis + bb_dev
bb_lower = bb_basis - bb_dev
bb_position = bb_dev != 0 ? (close - bb_basis) / bb_dev : 0
bb_width = bb_dev != 0 ? (bb_upper - bb_lower) / bb_basis * 100 : 0
// 39. Keltner Channels Position
kc_basis = ta.ema(close, length_20)
kc_range = ta.ema(ta.tr, length_20)
kc_upper = kc_basis + (2.0 * kc_range)
kc_lower = kc_basis - (2.0 * kc_range)
kc_position = kc_range != 0 ? (close - kc_basis) / kc_range : 0
// 40. Donchian Channels Position
dc_upper = ta.highest(high, length_20)
dc_lower = ta.lowest(low, length_20)
dc_basis = (dc_upper + dc_lower) / 2
dc_position = (dc_upper - dc_lower) != 0 ? (close - dc_basis) / (dc_upper - dc_lower) : 0
// 41. Standard Deviation
std_dev = ta.stdev(close, length_20)
std_dev_pct = (std_dev / close) * 100
// 42. Relative Volatility Index (RVI)
rvi_up = ta.stdev(close > close ? close : 0, length_14)
rvi_down = ta.stdev(close < close ? close : 0, length_14)
rvi_total = rvi_up + rvi_down
rvi_volatility = rvi_total != 0 ? (rvi_up / rvi_total) * 100 : 50
// 43. Historical Volatility
hv_returns = math.log(close / close )
hv = ta.stdev(hv_returns, length_20) * math.sqrt(252) * 100
// 44. Garman-Klass Volatility
gk_vol = math.log(high/low) * math.log(high/low) - (2*math.log(2)-1) * math.log(close/open) * math.log(close/open)
gk_volatility = math.sqrt(ta.sma(gk_vol, length_20)) * 100
// 45. Parkinson Volatility
park_vol = math.log(high/low) * math.log(high/low)
parkinson = math.sqrt(ta.sma(park_vol, length_20) / (4 * math.log(2))) * 100
// 46. Rogers-Satchell Volatility
rs_vol = math.log(high/close) * math.log(high/open) + math.log(low/close) * math.log(low/open)
rogers_satchell = math.sqrt(ta.sma(rs_vol, length_20)) * 100
// |----- OSCILLATOR INDICATORS (5 indicators) -----| //
// 47. Elder Ray Index
elder_bull = high - ta.ema(close, 13)
elder_bear = low - ta.ema(close, 13)
elder_power = elder_bull + elder_bear
// 48. Schaff Trend Cycle (STC)
stc_macd = ta.ema(close, 23) - ta.ema(close, 50)
stc_k = ta.stoch(stc_macd, stc_macd, stc_macd, 10)
stc_d = ta.ema(stc_k, 3)
stc = ta.stoch(stc_d, stc_d, stc_d, 10)
// 49. Coppock Curve
coppock_roc1 = ta.roc(close, 14)
coppock_roc2 = ta.roc(close, 11)
coppock = ta.wma(coppock_roc1 + coppock_roc2, 10)
// 50. Know Sure Thing (KST)
kst_roc1 = ta.roc(close, 10)
kst_roc2 = ta.roc(close, 15)
kst_roc3 = ta.roc(close, 20)
kst_roc4 = ta.roc(close, 30)
kst = ta.sma(kst_roc1, 10) + 2*ta.sma(kst_roc2, 10) + 3*ta.sma(kst_roc3, 10) + 4*ta.sma(kst_roc4, 15)
// 51. Percentage Price Oscillator (PPO)
ppo_line = ((ta.ema(close, 12) - ta.ema(close, 26)) / ta.ema(close, 26)) * 100
ppo_signal = ta.ema(ppo_line, 9)
ppo_histogram = ppo_line - ppo_signal
// |----- PLOT MAIN INDICATORS -----| //
// Plot key momentum indicators
plot(rsi_centered, title="01_RSI_Centered", color=color.purple, linewidth=1)
plot(stoch_centered, title="02_Stoch_Centered", color=color.blue, linewidth=1)
plot(williams_r, title="03_Williams_R", color=color.red, linewidth=1)
plot(macd_histogram, title="04_MACD_Histogram", color=color.orange, linewidth=1)
plot(cci, title="05_CCI", color=color.green, linewidth=1)
// Plot trend indicators
plot(sma_momentum, title="06_SMA_Momentum", color=color.navy, linewidth=1)
plot(ema_momentum, title="07_EMA_Momentum", color=color.maroon, linewidth=1)
plot(sar_trend, title="08_SAR_Trend", color=color.teal, linewidth=1)
plot(lr_slope, title="09_LR_Slope", color=color.lime, linewidth=1)
plot(mac, title="10_MAC", color=color.fuchsia, linewidth=1)
// Plot volatility indicators
plot(atr_pct, title="11_ATR_Pct", color=color.yellow, linewidth=1)
plot(bb_position, title="12_BB_Position", color=color.aqua, linewidth=1)
plot(kc_position, title="13_KC_Position", color=color.olive, linewidth=1)
plot(std_dev_pct, title="14_StdDev_Pct", color=color.silver, linewidth=1)
plot(bb_width, title="15_BB_Width", color=color.gray, linewidth=1)
// Plot volume indicators
plot(vroc, title="16_VROC", color=color.blue, linewidth=1)
plot(eom_sma, title="17_EOM", color=color.red, linewidth=1)
plot(vol_osc, title="18_Vol_Osc", color=color.green, linewidth=1)
plot(force_index_sma, title="19_Force_Index", color=color.orange, linewidth=1)
plot(obv, title="20_OBV", color=color.purple, linewidth=1)
// Plot additional oscillators
plot(ao, title="21_Awesome_Osc", color=color.navy, linewidth=1)
plot(cmo, title="22_CMO", color=color.maroon, linewidth=1)
plot(dpo, title="23_DPO", color=color.teal, linewidth=1)
plot(trix, title="24_TRIX", color=color.lime, linewidth=1)
plot(fisher, title="25_Fisher", color=color.fuchsia, linewidth=1)
// Plot more momentum indicators
plot(mfi_centered, title="26_MFI_Centered", color=color.yellow, linewidth=1)
plot(ac, title="27_AC", color=color.aqua, linewidth=1)
plot(ppo_pct, title="28_PPO_Pct", color=color.olive, linewidth=1)
plot(stoch_rsi_centered, title="29_StochRSI_Centered", color=color.silver, linewidth=1)
plot(klinger, title="30_Klinger", color=color.gray, linewidth=1)
// Plot trend continuation
plot(tii, title="31_TII", color=color.blue, linewidth=1)
plot(ichimoku_signal, title="32_Ichimoku_Signal", color=color.red, linewidth=1)
plot(mama_momentum, title="33_MAMA_Momentum", color=color.green, linewidth=1)
plot(zlema_momentum, title="34_ZLEMA_Momentum", color=color.orange, linewidth=1)
plot(bop, title="35_BOP", color=color.purple, linewidth=1)
// Plot volume continuation
plot(nvi, title="36_NVI", color=color.navy, linewidth=1)
plot(pvi, title="37_PVI", color=color.maroon, linewidth=1)
plot(momentum_pct, title="38_Momentum_Pct", color=color.teal, linewidth=1)
plot(roc, title="39_ROC", color=color.lime, linewidth=1)
plot(rvi, title="40_RVI", color=color.fuchsia, linewidth=1)
// Plot volatility continuation
plot(dc_position, title="41_DC_Position", color=color.yellow, linewidth=1)
plot(rvi_volatility, title="42_RVI_Volatility", color=color.aqua, linewidth=1)
plot(hv, title="43_Historical_Vol", color=color.olive, linewidth=1)
plot(gk_volatility, title="44_GK_Volatility", color=color.silver, linewidth=1)
plot(parkinson, title="45_Parkinson_Vol", color=color.gray, linewidth=1)
// Plot final oscillators
plot(rogers_satchell, title="46_RS_Volatility", color=color.blue, linewidth=1)
plot(elder_power, title="47_Elder_Power", color=color.red, linewidth=1)
plot(stc, title="48_STC", color=color.green, linewidth=1)
plot(coppock, title="49_Coppock", color=color.orange, linewidth=1)
plot(kst, title="50_KST", color=color.purple, linewidth=1)
// Plot final indicators
plot(ppo_histogram, title="51_PPO_Histogram", color=color.navy, linewidth=1)
plot(pvt, title="52_PVT", color=color.maroon, linewidth=1)
// |----- Reference Lines -----| //
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dashed, linewidth=1)
hline(50, "Midline", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(-50, "Lower Midline", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(25, "Upper Threshold", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
hline(-25, "Lower Threshold", color=color.gray, linestyle=hline.style_dotted, linewidth=1)
// |----- Enhanced Information Table -----| //
if show_table and barstate.islast
table_position = position.top_right
table_text_size = table_size == "Tiny" ? size.tiny : table_size == "Small" ? size.small : size.normal
var table info_table = table.new(table_position, 3, 18, bgcolor=color.new(color.white, 85), border_width=1, border_color=color.gray)
// Headers
table.cell(info_table, 0, 0, 'Category', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
table.cell(info_table, 1, 0, 'Indicator', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
table.cell(info_table, 2, 0, 'Value', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.blue, 70))
// Key Momentum Indicators
table.cell(info_table, 0, 1, 'MOMENTUM', text_color=color.purple, text_size=table_text_size, bgcolor=color.new(color.purple, 90))
table.cell(info_table, 1, 1, 'RSI Centered', text_color=color.purple, text_size=table_text_size)
table.cell(info_table, 2, 1, str.tostring(rsi_centered, '0.00'), text_color=color.purple, text_size=table_text_size)
table.cell(info_table, 0, 2, '', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 1, 2, 'Stoch Centered', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 2, str.tostring(stoch_centered, '0.00'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 3, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 3, 'Williams %R', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 3, str.tostring(williams_r, '0.00'), text_color=color.red, text_size=table_text_size)
table.cell(info_table, 0, 4, '', text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 1, 4, 'MACD Histogram', text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 2, 4, str.tostring(macd_histogram, '0.000'), text_color=color.orange, text_size=table_text_size)
table.cell(info_table, 0, 5, '', text_color=color.green, text_size=table_text_size)
table.cell(info_table, 1, 5, 'CCI', text_color=color.green, text_size=table_text_size)
table.cell(info_table, 2, 5, str.tostring(cci, '0.00'), text_color=color.green, text_size=table_text_size)
// Key Trend Indicators
table.cell(info_table, 0, 6, 'TREND', text_color=color.navy, text_size=table_text_size, bgcolor=color.new(color.navy, 90))
table.cell(info_table, 1, 6, 'SMA Momentum %', text_color=color.navy, text_size=table_text_size)
table.cell(info_table, 2, 6, str.tostring(sma_momentum, '0.00'), text_color=color.navy, text_size=table_text_size)
table.cell(info_table, 0, 7, '', text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 1, 7, 'EMA Momentum %', text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 2, 7, str.tostring(ema_momentum, '0.00'), text_color=color.maroon, text_size=table_text_size)
table.cell(info_table, 0, 8, '', text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 1, 8, 'SAR Trend', text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 2, 8, str.tostring(sar_trend, '0'), text_color=color.teal, text_size=table_text_size)
table.cell(info_table, 0, 9, '', text_color=color.lime, text_size=table_text_size)
table.cell(info_table, 1, 9, 'Linear Regression', text_color=color.lime, text_size=table_text_size)
table.cell(info_table, 2, 9, str.tostring(lr_slope, '0.000'), text_color=color.lime, text_size=table_text_size)
// Key Volatility Indicators
table.cell(info_table, 0, 10, 'VOLATILITY', text_color=color.yellow, text_size=table_text_size, bgcolor=color.new(color.yellow, 90))
table.cell(info_table, 1, 10, 'ATR %', text_color=color.yellow, text_size=table_text_size)
table.cell(info_table, 2, 10, str.tostring(atr_pct, '0.00'), text_color=color.yellow, text_size=table_text_size)
table.cell(info_table, 0, 11, '', text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 1, 11, 'BB Position', text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 2, 11, str.tostring(bb_position, '0.00'), text_color=color.aqua, text_size=table_text_size)
table.cell(info_table, 0, 12, '', text_color=color.olive, text_size=table_text_size)
table.cell(info_table, 1, 12, 'KC Position', text_color=color.olive, text_size=table_text_size)
table.cell(info_table, 2, 12, str.tostring(kc_position, '0.00'), text_color=color.olive, text_size=table_text_size)
// Key Volume Indicators
table.cell(info_table, 0, 13, 'VOLUME', text_color=color.blue, text_size=table_text_size, bgcolor=color.new(color.blue, 90))
table.cell(info_table, 1, 13, 'Volume ROC', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 13, str.tostring(vroc, '0.00'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 14, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 14, 'EOM', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 14, str.tostring(eom_sma, '0.000'), text_color=color.red, text_size=table_text_size)
// Key Oscillators
table.cell(info_table, 0, 15, 'OSCILLATORS', text_color=color.purple, text_size=table_text_size, bgcolor=color.new(color.purple, 90))
table.cell(info_table, 1, 15, 'Awesome Osc', text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 2, 15, str.tostring(ao, '0.000'), text_color=color.blue, text_size=table_text_size)
table.cell(info_table, 0, 16, '', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 1, 16, 'Fisher Transform', text_color=color.red, text_size=table_text_size)
table.cell(info_table, 2, 16, str.tostring(fisher, '0.000'), text_color=color.red, text_size=table_text_size)
// Summary Statistics
table.cell(info_table, 0, 17, 'SUMMARY', text_color=color.black, text_size=table_text_size, bgcolor=color.new(color.gray, 70))
table.cell(info_table, 1, 17, 'Total Indicators: 52', text_color=color.black, text_size=table_text_size)
regime_color = rsi_centered > 10 ? color.green : rsi_centered < -10 ? color.red : color.gray
regime_text = rsi_centered > 10 ? "BULLISH" : rsi_centered < -10 ? "BEARISH" : "NEUTRAL"
table.cell(info_table, 2, 17, regime_text, text_color=regime_color, text_size=table_text_size)
This makes it the perfect “indicator backbone” for quantitative and systematic traders who want to prototype, combine, and test new regime detection models—especially in combination with the Markov Chain indicator.
How to use this script with the Markov Chain for research and backtesting:
Add the Enhanced Indicator Export to your chart.
Every calculated indicator is available as an individual data stream.
Connect the indicator(s) you want as custom input(s) to the Markov Chain’s “Custom Indicators” option.
In the Markov Chain indicator’s settings, turn ON the custom indicator mode.
For each of the three custom indicator inputs, select the exported plot from the Enhanced Export script—the menu lists all 45+ signals by name.
This creates a powerful, modular regime-detection engine where you can mix-and-match momentum, trend, volume, or custom combinations for advanced filtering.
Backtest regime logic directly.
Once you’ve connected your chosen indicators, the Markov Chain script performs regime detection (Bull/Neutral/Bear) based on your selected features—not just price returns.
The regime detection is robust, automatically normalized (using Z-score), and outputs bias (1, -1, 0) for plug-and-play integration.
Export the regime bias for programmatic use.
As described above, use input.source() in your Pine Script strategy or system and link the bias output.
You can now filter signals, control trade direction/size, or design pairs-trading that respect true, indicator-driven market regimes.
With this framework, you’re not limited to static or simplistic regime filters. You can rigorously define, test, and refine what “market regime” means for your strategies—using the technical features that matter most to you.
Optimize your signal generation by backtesting across a universe of meaningful indicator blends.
Enhance risk management with objective, real-time regime boundaries.
Accelerate your research: iterate quickly, swap indicator components, and see results with minimal code changes.
Automate multi-asset or pairs-trading by integrating regime context directly into strategy logic.
Add both scripts to your chart, connect your preferred features, and start investigating your best regime-based trades—entirely within the TradingView ecosystem.
References & Further Reading
Ang, A., & Bekaert, G. (2002). “Regime Switches in Interest Rates.” Journal of Business & Economic Statistics, 20(2), 163–182.
Hamilton, J. D. (1989). “A New Approach to the Economic Analysis of Nonstationary Time Series and the Business Cycle.” Econometrica, 57(2), 357–384.
Markov, A. A. (1906). "Extension of the Limit Theorems of Probability Theory to a Sum of Variables Connected in a Chain." The Notes of the Imperial Academy of Sciences of St. Petersburg.
Guidolin, M., & Timmermann, A. (2007). “Asset Allocation under Multivariate Regime Switching.” Journal of Economic Dynamics and Control, 31(11), 3503–3544.
Murphy, J. J. (1999). Technical Analysis of the Financial Markets. New York Institute of Finance.
Brock, W., Lakonishok, J., & LeBaron, B. (1992). “Simple Technical Trading Rules and the Stochastic Properties of Stock Returns.” Journal of Finance, 47(5), 1731–1764.
Zucchini, W., MacDonald, I. L., & Langrock, R. (2017). Hidden Markov Models for Time Series: An Introduction Using R (2nd ed.). Chapman and Hall/CRC.
On Quantitative Finance and Markov Models:
Lo, A. W., & Hasanhodzic, J. (2009). The Heretics of Finance: Conversations with Leading Practitioners of Technical Analysis. Bloomberg Press.
Patterson, S. (2016). The Man Who Solved the Market: How Jim Simons Launched the Quant Revolution. Penguin Press.
TradingView Pine Script Documentation: www.tradingview.com
TradingView Blog: “Use an Input From Another Indicator With Your Strategy” www.tradingview.com
GeeksforGeeks: “What is the Difference Between Markov Chains and Hidden Markov Models?” www.geeksforgeeks.org
What makes this indicator original and unique?
- On‑chart, real‑time Markov. The chain is drawn directly on your chart. You see the current regime, its tendency to stay (self‑loop), and the usual next step (arrows) as bars confirm.
- Source‑agnostic by design. The engine runs on any series you select via input.source() — price, your own oscillator, a composite score, anything you compute in the script.
- Automatic normalization + regime mapping. Different inputs live on different scales. The script standardizes your chosen source and maps it into clear regimes (e.g., Bull / Bear / Neutral) without you micromanaging thresholds each time.
- Rolling, bar‑by‑bar learning. Transition tendencies are computed from a rolling window of confirmed bars. What you see is exactly what the market did in that window.
- Fast experimentation. Switch the source, adjust the window, and the Markov view updates instantly. It’s a rapid way to test ideas and feel regime persistence/switch behavior.
Integrate your own signals (using input.source())
- In settings, choose the Source . This is powered by input.source() .
- Feed it price, an indicator you compute inside the script, or a custom composite series.
- The script will automatically normalize that series and process it through the Markov engine, mapping it to regimes and updating the on‑chart spheres/arrows in real time.
Credits:
Deep gratitude to @RicardoSantos for both the foundational Markov chain processing engine and inspiring open-source contributions, which made advanced probabilistic market modeling accessible to the TradingView community.
Special thanks to @Alien_Algorithms for the innovative and visually stunning 3D sphere logic that powers the indicator’s animated, regime-based visualization.
Disclaimer
This tool summarizes recent behavior. It is not financial advice and not a guarantee of future results.
My-Indicator - Global Liquidity & Money Supply M2 + Time OffsetThis script is designed to visualize a global liquidity and money supply index by combining data from various regions and, optionally, central bank activity. Visualizing this data on a chart allows you to see how central banks are intervening in the financial system and how the total amount of money in the economy is changing. Let’s take a look at how it works:
Central Bank Liquidity
Shows the actions of central banks (e.g. FED, ECB) providing short-term cash to commercial banks. If you see spikes or a steady increase in these indicators, it may suggest that liquidity is being increased through intervention, which often stimulates the market.
Money Supply
M2 money supply is a monetary aggregate that includes M1 (cash and current deposits) plus savings deposits, small term deposits, and other financial instruments that, while not as liquid as M1, can be quickly converted into cash. As a result, M2 provides a broader picture of the available money in the economy, which is useful for analyzing market conditions and potential economic trends.
How does it help investors?
It allows you to quickly see when central banks are injecting additional liquidity, which could signal higher prices.
It allows you to see trends in the money supply, which informs potential changes in inflation and the economic cycle.
Combining both sets of data provides a more complete picture – both in the short and long term – which makes it easier to predict upcoming price movements.
This allows investors to better respond to changes in central bank policy and broader monetary trends, increasing their chances of making better investment decisions.
Data Collection
The script retrieves money supply data for key markets such as the USA (USM2), Europe (EUM2), China (CNM2), and Japan (JPM2). It also offers additional money supply series for other markets—like Canada (CAM2), Great Britain (GBM2), Russia (RUM2), Brazil (BRM2), Mexico (MXM2), and New Zealand (NZM2)—with extra options (e.g., Australia, India, Korea, Indonesia, Malaysia, Sweden) disabled by default. Moreover, you can enable data for central bank liquidity (such as FED, RRP, TGA, ECB, PBC, BOJ, and other central banks), which are also disabled by default.
Index Calculation
The indicator calculates the index by adding together all the enabled money supply series (and the central bank data if activated) and then scales the sum by dividing it by 1,000,000,000,000 (one trillion). This scaling makes the resulting values more manageable and easier to read on the chart.
Time Offset Feature
A key feature of the script is the time offset. With the input parameter "Time Offset (days)", the user can shift the plotted index line by a specific number of days. The script converts the given offset in days into a number of bars based on the current chart's timeframe. This allows you to adjust for the delay between liquidity changes and their effect on asset prices.
Overall, the indicator plots a line on your chart representing the global liquidity and money supply index, allowing you to visually monitor trends and better understand how liquidity and central bank actions may influence market movements.
What makes this script different from others?
Every supported market—both major regions (USA, Eurozone, China, Japan, etc.) and additional ones—is available. You can toggle each series on or off, so you can view only Money Supply data, only Central Bank Liquidity, or any custom combination.
Separated Data Groups. Inputs are organized into clear groups (“Money Supply”, “Other Money Supply”, “Central Bank Liquidity”), making it easy to focus on just the data you need without clutter.
True Day‑Based Offset. This script converts your chosen “Time Offset (days)” into actual days regardless of timeframe. Whether you’re on a 5‑minute or daily chart, the index is always shifted by exactly the number of days you specify.
Descending Elliot Wave Patterns [theEccentricTrader]█ OVERVIEW
This indicator automatically draws descending Elliot Wave patterns and price projections derived from the ranges that constitute the patterns.
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices (Basic)
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Support and Resistance
• Support refers to a price level where the demand for an asset is strong enough to prevent the price from falling further.
• Resistance refers to a price level where the supply of an asset is strong enough to prevent the price from rising further.
Support and resistance levels are important because they can help traders identify where the price of an asset might pause or reverse its direction, offering potential entry and exit points. For example, a trader might look to buy an asset when it approaches a support level , with the expectation that the price will bounce back up. Alternatively, a trader might look to sell an asset when it approaches a resistance level , with the expectation that the price will drop back down.
It's important to note that support and resistance levels are not always relevant, and the price of an asset can also break through these levels and continue moving in the same direction.
Upper Trends
• A return line uptrend is formed when the current peak price is higher than the preceding peak price.
• A downtrend is formed when the current peak price is lower than the preceding peak price.
• A double-top is formed when the current peak price is equal to the preceding peak price.
Lower Trends
• An uptrend is formed when the current trough price is higher than the preceding trough price.
• A return line downtrend is formed when the current trough price is lower than the preceding trough price.
• A double-bottom is formed when the current trough price is equal to the preceding trough price.
Muti-Part Upper and Lower Trends
• A multi-part return line uptrend begins with the formation of a new return line uptrend, or higher peak, and continues until a new downtrend, or lower peak, completes the trend.
• A multi-part downtrend begins with the formation of a new downtrend, or lower peak, and continues until a new return line uptrend, or higher peak, completes the trend.
• A multi-part uptrend begins with the formation of a new uptrend, or higher trough, and continues until a new return line downtrend, or lower trough, completes the trend.
• A multi-part return line downtrend begins with the formation of a new return line downtrend, or lower trough, and continues until a new uptrend, or higher trough, completes the trend.
Double Trends
• A double uptrend is formed when the current trough price is higher than the preceding trough price and the current peak price is higher than the preceding peak price.
• A double downtrend is formed when the current peak price is lower than the preceding peak price and the current trough price is lower than the preceding trough price.
Muti-Part Double Trends
• A multi-part double uptrend begins with the formation of a new uptrend that proceeds a new return line uptrend, and continues until a new downtrend or return line downtrend ends the trend.
• A multi-part double downtrend begins with the formation of a new downtrend that proceeds a new return line downtrend, and continues until a new uptrend or return line uptrend ends the trend.
Wave Cycles
A wave cycle is here defined as a complete two-part move between a swing high and a swing low, or a swing low and a swing high. The first swing high or swing low will set the course for the sequence of wave cycles that follow; for example a chart that begins with a swing low will form its first complete wave cycle upon the formation of the first complete swing high and vice versa.
Figure 1.
Fibonacci Retracement and Extension Ratios
The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding numbers, starting with 0 and 1. For example 0 + 1 = 1, 1 + 1 = 2, 1 + 2 = 3, and so on. Ultimately, we could go on forever but the first few numbers in the sequence are as follows: 0 , 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144.
The extension ratios are calculated by dividing each number in the sequence by the number preceding it. For example 0/1 = 0, 1/1 = 1, 2/1 = 2, 3/2 = 1.5, 5/3 = 1.6666..., 8/5 = 1.6, 13/8 = 1.625, 21/13 = 1.6153..., 34/21 = 1.6190..., 55/34 = 1.6176..., 89/55 = 1.6181..., 144/89 = 1.6179..., and so on. The retracement ratios are calculated by inverting this process and dividing each number in the sequence by the number proceeding it. For example 0/1 = 0, 1/1 = 1, 1/2 = 0.5, 2/3 = 0.666..., 3/5 = 0.6, 5/8 = 0.625, 8/13 = 0.6153..., 13/21 = 0.6190..., 21/34 = 0.6176..., 34/55 = 0.6181..., 55/89 = 0.6179..., 89/144 = 0.6180..., and so on.
1.618 is considered to be the 'golden ratio', found in many natural phenomena such as the growth of seashells and the branching of trees. Some now speculate the universe oscillates at a frequency of 0,618 Hz, which could help to explain such phenomena, but this theory has yet to be proven.
Traders and analysts use Fibonacci retracement and extension indicators, consisting of horizontal lines representing different Fibonacci ratios, for identifying potential levels of support and resistance. Fibonacci ranges are typically drawn from left to right, with retracement levels representing ratios inside of the current range and extension levels representing ratios extended outside of the current range. If the current wave cycle ends on a swing low, the Fibonacci range is drawn from peak to trough. If the current wave cycle ends on a swing high the Fibonacci range is drawn from trough to peak.
Elliot Wave Patterns
Ralph Nelson Elliott, authored his book on Elliott wave theory titled "The Wave Principle" in 1938. In this book, Elliott presented his theory of market behaviour, which he believed reflected the natural laws that govern human behaviour.
The Elliott Wave Theory is based on the principle that waves have a tendency to unfold in a specific sequence of five waves in the direction of the trend, followed by three waves leading in the opposite direction. This pattern is called a 5-3 wave pattern and is the foundation of Elliott's theory.
The five waves in the direction of the trend are labelled 1, 2, 3, 4, and 5, while the three waves in the opposite direction are labelled A, B, and C. Waves 1, 3, and 5 are impulse waves, while waves 2 and 4 are corrective waves. Waves A and C are also corrective waves, while wave B is an impulse wave.
According to Elliott, the pattern of waves is fractal in nature, meaning that it occurs on all time frames, from the smallest to the largest.
In Elliott Wave Theory, the distance that waves move from each other depends on the specific market conditions and the amplitude of the waves involved. There is no fixed rule or limit for how far waves should move from each other, however, there are several guidelines to help identify and measure wave distances. One of the most common guidelines is the Fibonacci ratios, which can be used to describe the relationships between wave lengths. For example, Elliott identified that wave 3 is typically the strongest and longest wave, and it tends to be 1.618 times the length of wave 1. Meanwhile, wave 2 tends to retrace between 50% and 78.6% of wave 1, and wave 4 tends to retrace between 38.2% and 78.6% of wave 3.
In general, the patterns are quite rare and the distances that the waves move in relation to one another is subject to interpretation. For such reasons, I have simply included the ratios of the current ranges as ratios of the preceding ranges in the wave labels and it will, ultimately, be up to the user to decide whether or not the patterns qualify as valid.
█ FEATURES
Inputs
• Show Projections
• Pattern Color
• Label Color
• Extend Current Projection Lines
█ LIMITATIONS
All green and red candle calculations are based on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. This may cause some unexpected behaviour on some markets and timeframes. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with.
Ascending Elliot Wave Patterns [theEccentricTrader]█ OVERVIEW
This indicator automatically draws ascending Elliot Wave patterns and price projections derived from the ranges that constitute the patterns.
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices (Basic)
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Support and Resistance
• Support refers to a price level where the demand for an asset is strong enough to prevent the price from falling further.
• Resistance refers to a price level where the supply of an asset is strong enough to prevent the price from rising further.
Support and resistance levels are important because they can help traders identify where the price of an asset might pause or reverse its direction, offering potential entry and exit points. For example, a trader might look to buy an asset when it approaches a support level , with the expectation that the price will bounce back up. Alternatively, a trader might look to sell an asset when it approaches a resistance level , with the expectation that the price will drop back down.
It's important to note that support and resistance levels are not always relevant, and the price of an asset can also break through these levels and continue moving in the same direction.
Upper Trends
• A return line uptrend is formed when the current peak price is higher than the preceding peak price.
• A downtrend is formed when the current peak price is lower than the preceding peak price.
• A double-top is formed when the current peak price is equal to the preceding peak price.
Lower Trends
• An uptrend is formed when the current trough price is higher than the preceding trough price.
• A return line downtrend is formed when the current trough price is lower than the preceding trough price.
• A double-bottom is formed when the current trough price is equal to the preceding trough price.
Muti-Part Upper and Lower Trends
• A multi-part return line uptrend begins with the formation of a new return line uptrend, or higher peak, and continues until a new downtrend, or lower peak, completes the trend.
• A multi-part downtrend begins with the formation of a new downtrend, or lower peak, and continues until a new return line uptrend, or higher peak, completes the trend.
• A multi-part uptrend begins with the formation of a new uptrend, or higher trough, and continues until a new return line downtrend, or lower trough, completes the trend.
• A multi-part return line downtrend begins with the formation of a new return line downtrend, or lower trough, and continues until a new uptrend, or higher trough, completes the trend.
Double Trends
• A double uptrend is formed when the current trough price is higher than the preceding trough price and the current peak price is higher than the preceding peak price.
• A double downtrend is formed when the current peak price is lower than the preceding peak price and the current trough price is lower than the preceding trough price.
Muti-Part Double Trends
• A multi-part double uptrend begins with the formation of a new uptrend that proceeds a new return line uptrend, and continues until a new downtrend or return line downtrend ends the trend.
• A multi-part double downtrend begins with the formation of a new downtrend that proceeds a new return line downtrend, and continues until a new uptrend or return line uptrend ends the trend.
Wave Cycles
A wave cycle is here defined as a complete two-part move between a swing high and a swing low, or a swing low and a swing high. The first swing high or swing low will set the course for the sequence of wave cycles that follow; for example a chart that begins with a swing low will form its first complete wave cycle upon the formation of the first complete swing high and vice versa.
Figure 1.
Fibonacci Retracement and Extension Ratios
The Fibonacci sequence is a series of numbers in which each number is the sum of the two preceding numbers, starting with 0 and 1. For example 0 + 1 = 1, 1 + 1 = 2, 1 + 2 = 3, and so on. Ultimately, we could go on forever but the first few numbers in the sequence are as follows: 0 , 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144.
The extension ratios are calculated by dividing each number in the sequence by the number preceding it. For example 0/1 = 0, 1/1 = 1, 2/1 = 2, 3/2 = 1.5, 5/3 = 1.6666..., 8/5 = 1.6, 13/8 = 1.625, 21/13 = 1.6153..., 34/21 = 1.6190..., 55/34 = 1.6176..., 89/55 = 1.6181..., 144/89 = 1.6179..., and so on. The retracement ratios are calculated by inverting this process and dividing each number in the sequence by the number proceeding it. For example 0/1 = 0, 1/1 = 1, 1/2 = 0.5, 2/3 = 0.666..., 3/5 = 0.6, 5/8 = 0.625, 8/13 = 0.6153..., 13/21 = 0.6190..., 21/34 = 0.6176..., 34/55 = 0.6181..., 55/89 = 0.6179..., 89/144 = 0.6180..., and so on.
1.618 is considered to be the 'golden ratio', found in many natural phenomena such as the growth of seashells and the branching of trees. Some now speculate the universe oscillates at a frequency of 0,618 Hz, which could help to explain such phenomena, but this theory has yet to be proven.
Traders and analysts use Fibonacci retracement and extension indicators, consisting of horizontal lines representing different Fibonacci ratios, for identifying potential levels of support and resistance. Fibonacci ranges are typically drawn from left to right, with retracement levels representing ratios inside of the current range and extension levels representing ratios extended outside of the current range. If the current wave cycle ends on a swing low, the Fibonacci range is drawn from peak to trough. If the current wave cycle ends on a swing high the Fibonacci range is drawn from trough to peak.
Elliot Wave Patterns
Ralph Nelson Elliott, authored his book on Elliott wave theory titled "The Wave Principle" in 1938. In this book, Elliott presented his theory of market behaviour, which he believed reflected the natural laws that govern human behaviour.
The Elliott Wave Theory is based on the principle that waves have a tendency to unfold in a specific sequence of five waves in the direction of the trend, followed by three waves leading in the opposite direction. This pattern is called a 5-3 wave pattern and is the foundation of Elliott's theory.
The five waves in the direction of the trend are labelled 1, 2, 3, 4, and 5, while the three waves in the opposite direction are labelled A, B, and C. Waves 1, 3, and 5 are impulse waves, while waves 2 and 4 are corrective waves. Waves A and C are also corrective waves, while wave B is an impulse wave.
According to Elliott, the pattern of waves is fractal in nature, meaning that it occurs on all time frames, from the smallest to the largest.
In Elliott Wave Theory, the distance that waves move from each other depends on the specific market conditions and the amplitude of the waves involved. There is no fixed rule or limit for how far waves should move from each other, however, there are several guidelines to help identify and measure wave distances. One of the most common guidelines is the Fibonacci ratios, which can be used to describe the relationships between wave lengths. For example, Elliott identified that wave 3 is typically the strongest and longest wave, and it tends to be 1.618 times the length of wave 1. Meanwhile, wave 2 tends to retrace between 50% and 78.6% of wave 1, and wave 4 tends to retrace between 38.2% and 78.6% of wave 3.
In general, the patterns are quite rare and the distances that the waves move in relation to one another is subject to interpretation. For such reasons, I have simply included the ratios of the current ranges as ratios of the preceding ranges in the wave labels and it will, ultimately, be up to the user to decide whether or not the patterns qualify as valid.
█ FEATURES
Inputs
• Show Projections
• Pattern Color
• Label Color
• Extend Current Projection Lines
█ LIMITATIONS
All green and red candle calculations are based on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. This may cause some unexpected behaviour on some markets and timeframes. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with.
APA Adaptive Fisher Transform [Loxx]APA Adaptive Fisher Transform is an adaptive cycle Fisher Transform using Ehlers Autocorrelation Periodogram Algorithm to calculate the dominant cycle period.
What is an adaptive cycle, and what is Ehlers Autocorrelation Periodogram Algorithm?
From Ehlers' book Cycle Analytics for Traders Advanced Technical Trading Concepts by John F. Ehlers , 2013, page 135:
"Adaptive filters can have several different meanings. For example, Perry Kaufman’s adaptive moving average ( KAMA ) and Tushar Chande’s variable index dynamic average ( VIDYA ) adapt to changes in volatility . By definition, these filters are reactive to price changes, and therefore they close the barn door after the horse is gone.The adaptive filters discussed in this chapter are the familiar Stochastic , relative strength index ( RSI ), commodity channel index ( CCI ), and band-pass filter.The key parameter in each case is the look-back period used to calculate the indicator. This look-back period is commonly a fixed value. However, since the measured cycle period is changing, it makes sense to adapt these indicators to the measured cycle period. When tradable market cycles are observed, they tend to persist for a short while.Therefore, by tuning the indicators to the measure cycle period they are optimized for current conditions and can even have predictive characteristics.
The dominant cycle period is measured using the Autocorrelation Periodogram Algorithm. That dominant cycle dynamically sets the look-back period for the indicators. I employ my own streamlined computation for the indicators that provide smoother and easier to interpret outputs than traditional methods. Further, the indicator codes have been modified to remove the effects of spectral dilation.This basically creates a whole new set of indicators for your trading arsenal."
What is Fisher Transform?
The Fisher Transform is a technical indicator created by John F. Ehlers that converts prices into a Gaussian normal distribution.
The indicator highlights when prices have moved to an extreme, based on recent prices. This may help in spotting turning points in the price of an asset. It also helps show the trend and isolate the price waves within a trend.
Included:
Zero-line and signal cross options for bar coloring
Customizable overbought/oversold thresh-holds
Alerts
Signals
Financial Astrology Uranus SpeedWhen Uranus is accelerating in speed from retrograde to direct phase, there is a quick acceleration of price change. We can observe very clearly that in BTCUSD the most relevant price growth periods happened after the retrogradation period, when Uranus was moving direct and accelerating. Additionally, is very clear that when Uranus is decelerating in speed a period of correction or price congestion occurs. Very similar speed effect pattern was observed for multiples planets speed cycles so is clear that what is good for price growth is that most of the planets are in direct motion.
Note: The Uranus speed indicator is based on an ephemeris array that covers years 2010 to 2030, prior or after this years the speed is not available, this daily ephemeris are based on UTC time so in order to align properly with the price bars times you should set UTC as your chart timezone.
Grover Llorens Activator [alexgrover & Lucía Llorens] Trailing stops play a key role in technical analysis and are extremely popular trend following indicators. Their main strength lie in their ability to minimize whipsaws while conserving a decent reactivity, the most popular ones include the Supertrend, Parabolic SAR and Gann Hilo activator. However, and like many indicators, most trailing stops assume an infinitely long trend, which penalize their ability to provide early exit points, this isn't the case of the parabolic SAR who take this into account and thus converge toward the price at an increasing speed the longer a trend last.
Today a similar indicator is proposed. From an original idea of alexgrover & Lucía Llorens who wanted to revisit the classic parabolic SAR indicator, the Llorens activator aim to converge toward the price the longer a trend persist, thus allowing for potential early and accurate exit points. The code make use of the idea behind the price curve channel that you can find here :
I tried to make the code as concise as possible.
The Indicator
The indicator posses 2 user settings, length and mult , length control the rate of convergence of the indicator, with higher values of length making the indicator output converge more slowly toward the price. Mult is also related with the rate of convergence, basically once the price cross the trailing stop its value will become equal to the previous trailing stop value plus/minus mult*atr depending on the previous trailing stop value, therefore higher values of mult will require more time for the trailing stop to reach the closing price, use higher values of mult if you want to avoid potential whipsaws.
Above the indicator with slow convergence time (high length) and low mult.
Points with early exit points are highlighted.
Usage For Oscillators
The difference between the closing price and an overlay indicator can provide an oscillator with characteristics depending on the indicators used for differencing, Lucía Llorens stated that we should find indicators for differencing that highlight the cycles in the price, in other terms : Price - Signal , where we want to find Signal such that we maximize the visibility of the cycles, it can be demonstrated that in the case where the closing price is an additive model : Trend + Cycles + Noise , the zero lag estimation of the Trend component can allow for the conservation of the cycle and noise component, that is : Price - Estimate(Trend) , for example the difference between the price and moving average isn't optimal because of the moving average lag, instead the use of zero lag moving averages is more suitable, however the proposed indicator allow for a surprisingly good representation of the cycles when using differencing.
The normalization of this oscillator (via the RSI) allow to make the peak amplitude of the cycles more constant. Note however that such method can return an output with a sign inverse to the one of the original cycle component.
Conclusion
We proposed an indicator which share the logic of the SAR indicator, that is using convergence toward the price in order to provide early exit points detection. We have seen that this indicator can be used to highlight cycles when used for differencing and i don't exclude publishing more indicators based on this method.
Lucía Llorens has been a great person to work with, and provided enormous feedback and support while i was coding the indicator, this is why i include her in the indicator name as well as copyright notice. I hope we can make more indicators togethers in the future.
(altho i was against using buy/sells labels xD !)
Thanks for reading !
J-Lines Ribbon • 4-Cycle Engine (CHOP / ANTI / LONG / SHORT)📈 J-Lines Ribbon • 4-Cycle Engine (CHOP / ANTI / LONG / SHORT)
Version: Pine Script v6
Author: Thomas Lee
Category: Trend-Following / Mean Reversion / Scalping
Timeframes: Optimized for 1–5m (but adaptable) Seems to work best on Fibb Time
🧠 Strategy Overview:
The J-Lines Ribbon 4-Cycle Engine is a precision trading algorithm designed to navigate complex market microstructure across four adaptive states:
🔁 CHOP (No Trade / Flatten)
🟡 ANTI (Legacy Layer / Under Development)
🟢 LONG (Trend-Continuation & Rebounds)
🔴 SHORT (Inverse Trend-Continuation & Rebounds)
It combines a multi-layer EMA ribbon, ADX-based CHOP detection, and smart pivot analysis to dynamically shift between market modes, entering and exiting trades with surgical precision.
🔍 Core Features:
Dynamic Market Cycle Detection
Auto-classifies each bar into one of the 4 market states using ADX + EMA 72/89 crossovers.
One-Shot Entries & Rebound Logic
Initiates base entries at the start of new trend cycles. Re-entries (ReLong/ReShort) trigger on EMA 72 and EMA 126 pullbacks with momentum resumption.
CHOP State Autopilot
Automatically closes open positions when CHOP begins, preventing sideways market exposure.
Precision Take-Profits & Pivots-Based Stop Losses
Real-time adaptive exits using pivot high/low swing points as dynamic SL/TP anchors.
Customizable Parameters
Pivot length (left/right)
ADX thresholds
Rebound tolerance bands
Ribbon display and state-labels
📊 Indicator Components:
📏 EMA Ribbon: 72, 89, 126, 267, 360, 445
📉 ADX Filter: Filters out sideways noise, confirms directional bias
🔁 Crossover Events: Detects trend initiations
🌀 Cycle Labels: Real-time visual display of current market state
🛠️ Ideal Use Cases:
Scalping volatile markets
Automated strategy testing & optimization
Entry/exit signal confirmation for discretionary traders
Trend filtering in algorithmic stacks
⚠️ Notes:
ANTI cycle logic is scaffolded but not fully deployed in this version. It will be extended in a future release for deep mean-reversion detection.
Tailor ADX floor and pivot sensitivity to your specific asset and timeframe for optimal performance.
Financial Astrology Mercury LongitudeMercury energy influence the mind, the intellect and mental temperament, in mundane astrology is well know that rules: news, science, debating, trading, commerce, contracts. telecommunication, short-distance travels, among others. W. D. Gann discovered that the Mercury speed phases (stationary, retrograde, direct) transitions was very relevant as trading signals, he used the Sun conjunction retrograde Mercury to confirm the formation of top and bottoms that seems to be a relevant leading indicator in multiples markets.
As part of the Financial Astrology Research Group experiments, we created hundreds of machine learning models that try to predict daily trend direction for a research portfolio of 10 crypto-currencies and is confirmed that including the Mercury speed and aspects features (variables) in the models increase the accuracy in a consistent manner. Therefore, there is enough evidence that Mercury is one of the most powerful mid term trading cycles.
This is the first open source PIneScript indicator that is able to plot the Mercury Tropical Longitude for the years 2010-2030, we publish as open source in order to support and simplify the research of the amazing astro-traders community at TradingView that have been working manually with annotations and lines to represent the Mercury longitude zodiac signs entries and the speed phases transitions. That manual work is over. Let's move faster in our cycles research!
We encourage all astro traders to continue researching and sharing your ideas of astro cycles trading strategies with us and contribute your experiments at our Github Financial Stats exploration project
so we can improve the cosmic energy models that influence traders behaviours.
Note: The Mercury longitude is based on an ephemeris array that covers years 2010 to 2030, prior or after this years the longitude is not available, this daily ephemeris are based on UTC time so in order to align properly with the price bars times you should set UTC as your chart reference timezone.
Others astro trading indicators from Financial Astrology Research Group:
[blackcat] L2 Ehlers Cyber Cycle Trading StrategyLevel: 2
Background
John F. Ehlers introuced Cyber Cycle Trading Strategy in his "Cybernetic Analysis for Stocks and Futures" chapter 4 on 2004.
Function
With cyber cycle alone, the Trigger lags the Cycle by one bar, so that their crossing introduces at least another bar of lag. Finally, Dr Ehler concluded that we can’t execute the trade until the bar after the signal is observed. In total, that means our trade execution will be at least four bars late. If we are working with an eight-bar cycle, that means the signal will be exactly wrong. We could do better to buy when the signal says sell, and vice versa.
The difficulties arising from the lag suggest a way to build an automatic trading strategy. Suppose we choose to use the trading signal in the opposite direction of the signal. That will work if we can introduce lag so the correct signal will be given in the more general case, not just the case of an eight-bar cycle. Therefore, the Cyber Cycle trading strategy was introduced by Dr. Ehlers. It starts exactly the same as the Cyber Cycle Indicator. Dr. Ehlers then introduce the variable Signal, which is an exponential moving average of the Cycle variable. The exponential moving average generates the desired lag in the trading signal. The relationship between the alpha of an exponential moving average and lag is alpha2 = 1/ (Lag+1). This relationship is used to create the variable alpha2 in the code and the variable Signal using the exponential moving average. The trading signals using the variable Signal crossing itself delayed by one bar are exactly the opposite of the trading signals I would have used if there were no delay. But, since the variable Signal is delayed such that the net delay is less than half a cycle, the trading signals are correct to catch the next cyclic reversal. The idea of betting against the correct direction by waiting for the next cycle reversal can be pretty scary because that reversal may “never” happen because the market takes off in a trend. For this reason Dr. Ehlers included two lines of code that are escape mechanisms if we were wrong in our entry signal. These last two Signal lines of code reverse the trading position if we have been in the trade for more than eight bars and the trade has an open position loss.
Key Signal
Cycle ---> Cyber Cycle fast line
Cycle (2) ---> Cyber Cycle slow line
Signal ---> Trading signal fast line
Signal(1) ---> Trading signal slow line
Pros and Cons
100% John F. Ehlers definition translation of original work, even variable names are the same. This help readers who would like to use pine to read his book. If you had read his works, then you will be quite familiar with my code style.
Remarks
The 25th script for Blackcat1402 John F. Ehlers Week publication.
Readme
In real life, I am a prolific inventor. I have successfully applied for more than 60 international and regional patents in the past 12 years. But in the past two years or so, I have tried to transfer my creativity to the development of trading strategies. Tradingview is the ideal platform for me. I am selecting and contributing some of the hundreds of scripts to publish in Tradingview community. Welcome everyone to interact with me to discuss these interesting pine scripts.
The scripts posted are categorized into 5 levels according to my efforts or manhours put into these works.
Level 1 : interesting script snippets or distinctive improvement from classic indicators or strategy. Level 1 scripts can usually appear in more complex indicators as a function module or element.
Level 2 : composite indicator/strategy. By selecting or combining several independent or dependent functions or sub indicators in proper way, the composite script exhibits a resonance phenomenon which can filter out noise or fake trading signal to enhance trading confidence level.
Level 3 : comprehensive indicator/strategy. They are simple trading systems based on my strategies. They are commonly containing several or all of entry signal, close signal, stop loss, take profit, re-entry, risk management, and position sizing techniques. Even some interesting fundamental and mass psychological aspects are incorporated.
Level 4 : script snippets or functions that do not disclose source code. Interesting element that can reveal market laws and work as raw material for indicators and strategies. If you find Level 1~2 scripts are helpful, Level 4 is a private version that took me far more efforts to develop.
Level 5 : indicator/strategy that do not disclose source code. private version of Level 3 script with my accumulated script processing skills or a large number of custom functions. I had a private function library built in past two years. Level 5 scripts use many of them to achieve private trading strategy.
Stacey Burke Signal Day LTE“Previously published as ‘Day Zero Fakeout Detector MTF’”
Stacey Burke Signal Day LTE
Automatic detection of Day Zero, Inside Days, and Outside Days for Stacey Burke’s intraday playbook
🔎 Stacey Burke’s Signal Days
This indicator highlights the key daily patterns that often lead to high-probability intraday setups in Stacey Burke’s methodology:
1️⃣ Day Zero
The reset days within a 3-day cycle (e.g. breakout → continuation → exhaustion/reversal).
Can mark the beginning of a new directional phase.
Trades back inside the prior range after a Peak Formation High (PFH) or Peak Formation Low (PFL).
Bias: Look for measured parabolic session moves. When combined with trend following indicators, these signal days can be very powerful.
2️⃣ Inside Day
A day where the entire range is contained within the prior day’s range.
Signals consolidation and energy build-up.
Often leads to explosive breakouts in the next session.
Bias: Trade breakouts of the inside day’s high/low or breakout reversal in the session at key timings in the direction of higher timeframe bias. When combined with trend following indicators, these signal days can be very powerful.
3️⃣ Outside Day (Engulfing Day)
`
A day where the range is larger than the prior day’s range, engulfing both high and low.
Marks trapped traders and fakeouts on both sides.
Often precedes strong continuations or sharp reversals from outside of the ranges.
Bias: Align trades with the true continuation move. When combined with trend following indicators, these signal days can be very powerful.
📌 How They Work Together
Day Zero → Signals the new cycle after PFH/PFL.
Inside Day → Signals compression → expect breakout setups.
Outside Day → Signals exhaustion/fakeouts → expect reversals or continuations.
Together, they give traders a clear daily roadmap for where liquidity sits and when to expect the highest-probability setups.
✅ Example in Practice
Market rallies for 3 days → PFH forms → Day Zero short bias.
Next day prints an Inside Day → watch for breakout continuation short, and breakout reversals.
Later, an Outside Day traps both longs and shorts → the following session offers a clean intraday reversal or continuation trade in line with the underlying MTF trend/bias.
⚙️ Features of This Indicator
Automatic detection of Day Zero, Inside Days, and Outside Days
Multi-Timeframe (MTF) support for cycle alignment
Visual markers for PFH/PFL and consolidation zones
Measured move projections for breakout targets
👉 Stacey Burke Signal Day LTE gives traders just a few of the most important signal days — Day Zero, Inside Day, and Outside Day — to structure their intraday trades around fake outs, breakouts, and reversals within the daily cycles of the week. (This is work in progress: Next up, FRD/FGD's, 3-day cycle detecting, 3DLs, 3DSs).
Bitcoin Pi Cycle Top Indicator - Daily Timeframe Only1 Day Timeframe Only
The Bitcoin Pi Cycle Top Indicator has garnered attention for its historical effectiveness in identifying the timing of Bitcoin's market cycle peaks with remarkable precision, typically within a margin of 3 days.
It utilizes a specific combination of moving averages—the 111-day moving average and a 2x multiple of the 350-day moving average—to signal potential tops in the Bitcoin market.
The 111-day moving average (MA): This shorter-term MA is chosen to reflect more recent price action and trends within the Bitcoin market.
The 350-day moving average (MA) multiplied by 2: This longer-term MA is adjusted to capture broader market trends and cycles over an extended period.
The key premise behind the Bitcoin Pi Cycle Top Indicator is that a potential market top for Bitcoin can be signaled when the 111-day MA crosses above the 350-day MA (which has been doubled). Historically, this crossover event has shown a remarkable correlation with the peaks of Bitcoin's price cycles, making it a tool of interest for traders and investors aiming to anticipate significant market shifts.
#Bitcoin
WaveTrend 3D█ OVERVIEW
WaveTrend 3D (WT3D) is a novel implementation of the famous WaveTrend (WT) indicator and has been completely redesigned from the ground up to address some of the inherent shortcomings associated with the traditional WT algorithm.
█ BACKGROUND
The WaveTrend (WT) indicator has become a widely popular tool for traders in recent years. WT was first ported to PineScript in 2014 by the user @LazyBear, and since then, it has ascended to become one of the Top 5 most popular scripts on TradingView.
The WT algorithm appears to have origins in a lesser-known proprietary algorithm called Trading Channel Index (TCI), created by AIQ Systems in 1986 as an integral part of their commercial software suite, TradingExpert Pro. The software’s reference manual states that “TCI identifies changes in price direction” and is “an adaptation of Donald R. Lambert’s Commodity Channel Index (CCI)”, which was introduced to the world six years earlier in 1980. Interestingly, a vestige of this early beginning can still be seen in the source code of LazyBear’s script, where the final EMA calculation is stored in an intermediate variable called “tci” in the code.
█ IMPLEMENTATION DETAILS
WaveTrend 3D is an alternative implementation of WaveTrend that directly addresses some of the known shortcomings of the indicator, including its unbounded extremes, susceptibility to whipsaw, and lack of insight into other timeframes.
In the canonical WT approach, an exponential moving average (EMA) for a given lookback window is used to assess the variability between price and two other EMAs relative to a second lookback window. Since the difference between the average price and its associated EMA is essentially unbounded, an arbitrary scaling factor of 0.015 is typically applied as a crude form of rescaling but still fails to capture 20-30% of values between the range of -100 to 100. Additionally, the trigger signal for the final EMA (i.e., TCI) crossover-based oscillator is a four-bar simple moving average (SMA), which further contributes to the net lag accumulated by the consecutive EMA calculations in the previous steps.
The core idea behind WT3D is to replace the EMA-based crossover system with modern Digital Signal Processing techniques. By assuming that price action adheres approximately to a Gaussian distribution, it is possible to sidestep the scaling nightmare associated with unbounded price differentials of the original WaveTrend method by focusing instead on the alteration of the underlying Probability Distribution Function (PDF) of the input series. Furthermore, using a signal processing filter such as a Butterworth Filter, we can eliminate the need for consecutive exponential moving averages along with the associated lag they bring.
Ideally, it is convenient to have the resulting probability distribution oscillate between the values of -1 and 1, with the zero line serving as a median. With this objective in mind, it is possible to borrow a common technique from the field of Machine Learning that uses a sigmoid-like activation function to transform our data set of interest. One such function is the hyperbolic tangent function (tanh), which is often used as an activation function in the hidden layers of neural networks due to its unique property of ensuring the values stay between -1 and 1. By taking the first-order derivative of our input series and normalizing it using the quadratic mean, the tanh function performs a high-quality redistribution of the input signal into the desired range of -1 to 1. Finally, using a dual-pole filter such as the Butterworth Filter popularized by John Ehlers, excessive market noise can be filtered out, leaving behind a crisp moving average with minimal lag.
Furthermore, WT3D expands upon the original functionality of WT by providing:
First-class support for multi-timeframe (MTF) analysis
Kernel-based regression for trend reversal confirmation
Various options for signal smoothing and transformation
A unique mode for visualizing an input series as a symmetrical, three-dimensional waveform useful for pattern identification and cycle-related analysis
█ SETTINGS
This is a summary of the settings used in the script listed in roughly the order in which they appear. By default, all default colors are from Google's TensorFlow framework and are considered to be colorblind safe.
Source: The input series. Usually, it is the close or average price, but it can be any series.
Use Mirror: Whether to display a mirror image of the source series; for visualizing the series as a 3D waveform similar to a soundwave.
Use EMA: Whether to use an exponential moving average of the input series.
EMA Length: The length of the exponential moving average.
Use COG: Whether to use the center of gravity of the input series.
COG Length: The length of the center of gravity.
Speed to Emphasize: The target speed to emphasize.
Width: The width of the emphasized line.
Display Kernel Moving Average: Whether to display the kernel moving average of the signal. Like PCA, an unsupervised Machine Learning technique whereby neighboring vectors are projected onto the Principal Component.
Display Kernel Signal: Whether to display the kernel estimator for the emphasized line. Like the Kernel MA, it can show underlying shifts in bias within a more significant trend by the colors reflected on the ribbon itself.
Show Oscillator Lines: Whether to show the oscillator lines.
Offset: The offset of the emphasized oscillator plots.
Fast Length: The length scale factor for the fast oscillator.
Fast Smoothing: The smoothing scale factor for the fast oscillator.
Normal Length: The length scale factor for the normal oscillator.
Normal Smoothing: The smoothing scale factor for the normal frequency.
Slow Length: The length scale factor for the slow oscillator.
Slow Smoothing: The smoothing scale factor for the slow frequency.
Divergence Threshold: The number of bars for the divergence to be considered significant.
Trigger Wave Percent Size: How big the current wave should be relative to the previous wave.
Background Area Transparency Factor: Transparency factor for the background area.
Foreground Area Transparency Factor: Transparency factor for the foreground area.
Background Line Transparency Factor: Transparency factor for the background line.
Foreground Line Transparency Factor: Transparency factor for the foreground line.
Custom Transparency: Transparency of the custom colors.
Total Gradient Steps: The maximum amount of steps supported for a gradient calculation is 256.
Fast Bullish Color: The color of the fast bullish line.
Normal Bullish Color: The color of the normal bullish line.
Slow Bullish Color: The color of the slow bullish line.
Fast Bearish Color: The color of the fast bearish line.
Normal Bearish Color: The color of the normal bearish line.
Slow Bearish Color: The color of the slow bearish line.
Bullish Divergence Signals: The color of the bullish divergence signals.
Bearish Divergence Signals: The color of the bearish divergence signals.
█ ACKNOWLEDGEMENTS
@LazyBear - For authoring the original WaveTrend port on TradingView
@PineCoders - For the beautiful color gradient framework used in this indicator
@veryfid - For the inspiration of using mirrored signals for cycle analysis and using multiple lookback windows as proxies for other timeframes
Lunar calendar day Crypto Trading StrategyLunar calendar day Crypto Trading Strategy
This strategy explores the potential impact of the lunar calendar on cryptocurrency price cycles.
It implements a simple but unconventional rule:
Buy on the 5th day of each lunar month
Sell on the 26th day of the lunar month
No trades between January 1 (solar) and Lunar New Year’s Day (holiday buffer period)
Research background
Several academic studies have investigated the influence of lunar cycles on financial markets. Their findings suggest:
Returns tend to be higher around the full moon compared to the new moon.
Periods between the full moon and the waning phase often show stronger average returns than the waxing phase.
This strategy combines those observations into a practical implementation by testing fixed entry (lunar day 5) and exit (lunar day 26) points, while excluding the transition period from solar New Year to Lunar New Year, effectively capturing mid-month lunar effects.
How it works
The script includes a custom lunar date calculation function, reconstructing lunar months and days for each year (2020–2026).
On lunar day 5, the strategy opens a long position with 100% of equity.
On lunar day 26, the strategy closes the position.
No trades are executed between Jan 1 and Lunar New Year’s Day.
All trades include:
Commission: 0.1%
Slippage: 3 ticks
Position sizing uses the entire equity (100%) for simplicity, but this is not recommended for live trading.
Why this is original
Unlike mashups of built-in indicators, this script:
Implements a full lunar calendar system inside Pine Script.
Translates academic findings on lunar effects into an applied backtest.
Adds a realistic trading filter (holiday gap) based on cultural/seasonal calendar rules.
Provides researchers and traders with a framework to explore non-traditional, time-based signals.
Notes
This is an experimental, research-oriented strategy, not financial advice.
Results are highly dependent on the chosen period (2020–2026).
Using 100% equity per trade is for simplification only and is not a viable money management practice.
The purpose is to investigate whether cyclical patterns linked to lunar time can provide any statistical edge in ETHUSDT.
Bitcoin Logarithmic Growth Curve 2025 Z-Score"The Bitcoin logarithmic growth curve is a concept used to analyze Bitcoin's price movements over time. The idea is based on the observation that Bitcoin's price tends to grow exponentially, particularly during bull markets. It attempts to give a long-term perspective on the Bitcoin price movements.
The curve includes an upper and lower band. These bands often represent zones where Bitcoin's price is overextended (upper band) or undervalued (lower band) relative to its historical growth trajectory. When the price touches or exceeds the upper band, it may indicate a speculative bubble, while prices near the lower band may suggest a buying opportunity.
Unlike most Bitcoin growth curve indicators, this one includes a logarithmic growth curve optimized using the latest 2024 price data, making it, in our view, superior to previous models. Additionally, it features statistical confidence intervals derived from linear regression, compatible across all timeframes, and extrapolates the data far into the future. Finally, this model allows users the flexibility to manually adjust the function parameters to suit their preferences.
The Bitcoin logarithmic growth curve has the following function:
y = 10^(a * log10(x) - b)
In the context of this formula, the y value represents the Bitcoin price, while the x value corresponds to the time, specifically indicated by the weekly bar number on the chart.
How is it made (You can skip this section if you’re not a fan of math):
To optimize the fit of this function and determine the optimal values of a and b, the previous weekly cycle peak values were analyzed. The corresponding x and y values were recorded as follows:
113, 18.55
240, 1004.42
451, 19128.27
655, 65502.47
The same process was applied to the bear market low values:
103, 2.48
267, 211.03
471, 3192.87
676, 16255.15
Next, these values were converted to their linear form by applying the base-10 logarithm. This transformation allows the function to be expressed in a linear state: y = a * x − b. This step is essential for enabling linear regression on these values.
For the cycle peak (x,y) values:
2.053, 1.268
2.380, 3.002
2.654, 4.282
2.816, 4.816
And for the bear market low (x,y) values:
2.013, 0.394
2.427, 2.324
2.673, 3.504
2.830, 4.211
Next, linear regression was performed on both these datasets. (Numerous tools are available online for linear regression calculations, making manual computations unnecessary).
Linear regression is a method used to find a straight line that best represents the relationship between two variables. It looks at how changes in one variable affect another and tries to predict values based on that relationship.
The goal is to minimize the differences between the actual data points and the points predicted by the line. Essentially, it aims to optimize for the highest R-Square value.
Below are the results:
snapshot
snapshot
It is important to note that both the slope (a-value) and the y-intercept (b-value) have associated standard errors. These standard errors can be used to calculate confidence intervals by multiplying them by the t-values (two degrees of freedom) from the linear regression.
These t-values can be found in a t-distribution table. For the top cycle confidence intervals, we used t10% (0.133), t25% (0.323), and t33% (0.414). For the bottom cycle confidence intervals, the t-values used were t10% (0.133), t25% (0.323), t33% (0.414), t50% (0.765), and t67% (1.063).
The final bull cycle function is:
y = 10^(4.058 ± 0.133 * log10(x) – 6.44 ± 0.324)
The final bear cycle function is:
y = 10^(4.684 ± 0.025 * log10(x) – -9.034 ± 0.063)
The main Criticisms of growth curve models:
The Bitcoin logarithmic growth curve model faces several general criticisms that we’d like to highlight briefly. The most significant, in our view, is its heavy reliance on past price data, which may not accurately forecast future trends. For instance, previous growth curve models from 2020 on TradingView were overly optimistic in predicting the last cycle’s peak.
This is why we aimed to present our process for deriving the final functions in a transparent, step-by-step scientific manner, including statistical confidence intervals. It's important to note that the bull cycle function is less reliable than the bear cycle function, as the top band is significantly wider than the bottom band.
Even so, we still believe that the Bitcoin logarithmic growth curve presented in this script is overly optimistic since it goes parly against the concept of diminishing returns which we discussed in this post:
This is why we also propose alternative parameter settings that align more closely with the theory of diminishing returns."
Now with Z-Score calculation for easy and constant valuation classification of Bitcoin according to this metric.
Created for TRW
Ehlers Stable Dominant Cycle Length [graylange]Stable Dominant Cycle Length – Adaptive Cycle Detection for Market Timing
This script calculates the dominant cycle length of the market using an improved version of John Ehlers' Hilbert Transform approach. Unlike traditional implementations, this version includes advanced smoothing techniques to reduce noise and prevent erratic spikes, making it more reliable for adaptive cycle-based strategies.
🔥 Key Features:
✅ Noise-Reduced Cycle Detection – Uses a Weighted Moving Average (WMA) detrending method instead of raw Hilbert Transform values to enhance stability.
✅ Adaptive Smoothing – Applies an Exponential Moving Average (EMA) to the instantaneous period, reducing excessive volatility in cycle length calculations.
✅ Phase Wrapping & Constraints – Clamps phase changes to prevent unrealistic cycle swings and division errors.
✅ Dynamic Cycle Adjustment – The dominant cycle length updates in real time, constrained within a reasonable range (6 to 50 bars) to avoid extreme peaks.
📌 How to Use It:
Identify Market Cycles – Use the dominant cycle length to determine optimal trend-following vs. mean-reversion strategies.
Enhance MESA Filters – Apply the detected cycle length to adjust Ehlers’ MESA Adaptive Moving Average (MAMA) dynamically.
Fine-Tune Alpha Settings – Reduce overfitting in cycle-based indicators by basing parameters on a stable dominant cycle estimate.
AuriumFlowAURIUM (GOLD-Weighted Average with Fractal Dynamics)
Aurium is a cutting-edge indicator that blends volume-weighted moving averages (VWMA), fractal geometry, and Fibonacci-inspired calculations to deliver a precise and holistic view of market trends. By dynamically adjusting to price and volume, Aurium uncovers key levels of confluence for trend reversals and continuations, making it a powerful tool for traders.
Key Features:
Dynamic Trendline (GOLD):
The central trendline is a weighted moving average based on price and volume, tuned using Fibonacci-based fast (34) and slow (144) exponential moving average lengths. This ensures the trendline adapts seamlessly to the flow of market dynamics.
Formula:
GOLD = VWMA(34) * Volume Factor + VWMA(144) * (1 - Volume Factor)
Fractal Highs and Lows:
Detects pivotal market points using a fractal lookback period (default 5, odd-numbered). Fractals identify local highs and lows over a defined window, capturing the structure of market cycles.
Trend Background Highlighting:
Bullish Zone: Price above the GOLD line with a green background.
Bearish Zone: Price below the GOLD line with a red background.
Buy and Sell Alerts:
Generates actionable signals when fractals align with GOLD. Bullish fractals confirm continuation or reversal in an uptrend, while bearish fractals validate a downtrend.
The Math Behind Aurium:
Volume-Weighted Adjustments:
By integrating volume into the calculation, Aurium dynamically emphasizes price levels with greater participation, giving traders insight into zones of institutional interest.
Formula:
VWMA = EMA(Close * Volume) / EMA(Volume)
Fractal Calculations:
Fractals are identified as local maxima (highs) or minima (lows) based on the surrounding bars, leveraging the natural symmetry in price behavior.
Fibonacci Relationships:
The 34 and 144 EMA lengths are Fibonacci numbers, offering a natural alignment with price cycles and market rhythms.
Ideal For:
Traders seeking a precise and intuitive indicator for aligning with trends and detecting reversals.
Strategies inspired by Bill Williams, with added volume and fractal-based insights.
Short-term scalpers and long-term trend-followers alike.
Unlock deeper market insights and trade with precision using Aurium!
Moonhub Cycle IndexMoonhub Cycle Index is a composite index derived from three popular technical analysis indicators: Moving Average Convergence Divergence (MACD), Schaff Trend Cycle (STC), and Detrended Price Oscillator (DPO). The indicator is designed to help identify potential trends and market sentiment by combining the unique characteristics of each indicator.
Key components of the indicator include:
Input Parameters:
COEMA Length (len_DIema): The length of the Exponential Moving Average (EMA) applied to the Custom Index. Default is set to 9.
COSMA Length (len_DIsma): The length of the Simple Moving Average (SMA) applied to the Custom Index. Default is set to 30.
Indicators:
MACD: A momentum oscillator that shows the relationship between two moving averages of a security's price. It is calculated using the difference between the 12-period and 26-period EMA, and a 9-period EMA (signal line) of the MACD.
STC: A cyclic indicator that identifies cyclical trends in the market. It is calculated using the Stochastic oscillator formula applied to the close, high, and low prices over a 10-period lookback window.
DPO: A price oscillator that eliminates the trend from price data to focus on underlying cycles. It is calculated using a custom function that shifts the price by half the length and subtracts the SMA from the shifted price.
Custom Index: The composite index is calculated by taking the average of the MACD line, STC, and DPO.
COEMA and COSMA: Exponential and Simple Moving Averages applied to the Custom Index using the lengths specified by the input parameters (len_DIema and len_DIsma).
Plots: The Custom Index, COEMA, and COSMA are plotted with different colors and line widths to visualize their interaction and provide insights into potential market trends.
This Custom Index Indicator can be useful for traders who want to analyze the market using a combination of these indicators to make more informed decisions. It can also help identify potential trends and market sentiment by combining the unique characteristics of each indicator.
Price Action AverageThis indicator is perfect for scalping in 1 minute, it consists of a channel and a line that is made up of the average of the highs and lows of the price in 12 and 64 cycles.
The channel has as its center a 7 cycles SMA, when the average line (Called Signal, the purple one) crosses the upper band it is time to make a Long.
If it crosses the lower band it is time to make a short, if the line returns to the channel a signal appears to close the operation.
The indicator works with all timeframes, I use it on the 1 hour chart and I do the trades in 1 minute.