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.
Buscar en scripts para "donchian"
Breakout TrendTiltFolio Breakout Trend indicator
The Breakout Trend indicator is designed to help traders clearly visualize trend direction by combining two complementary techniques: moving averages and Donchian-style breakout logic.
Rather than relying on just one type of signal, this indicator merges short-term and long-term moving averages with breakout levels based on recent highs and lows. The moving averages define the broader trend regime, while the breakout logic pinpoints moments when price confirms directional momentum. This layered approach filters out many false signals while still capturing high-conviction moves.
Yes, these are lagging indicators by design — and that’s the point. Instead of predicting every wiggle, the Breakout Trend waits for confirmation, offering higher signal quality and fewer whipsaws. When the price breaks above a recent high and sits above the long-term moving average, the trend is more likely to persist. That’s when this indicator shines.
While it performs best on higher timeframes (daily/weekly), it's also adaptable to shorter timeframes for intraday traders who value clean, systematic trend signals.
For early signal detection, we recommend pairing this with TiltFolio’s Buying/Selling Proxy, which anticipates pressure buildups—albeit with more noise.
It's easy to read and built for real-world trading discipline.
True Range eXpansion🕯️ TRX — True Range eXpansion
Clean Candle Bodies · Volatility Bands · Adaptive Range Envelope System
Not your grandfather’s candles. Not your brokerage’s bands.
----------------------------------------------------
TRX begins with a simple concept: visualize the true range of every candle, without the noise of flickering wicks.
From there, it grows into a fully adaptive price visualization framework.
What started as a candle-only visualizer evolved into a modular, user-controlled price engine.
From wickless candle clarity to dynamic volatility envelopes, TRX adapts to you.
There are plenty of band and channel indicators out there — Bollinger, Keltner, Donchian, Envelope, the whole crew.
But none of them are built on the true candle range, adaptive ATR shaping, and full user control like TRX.
This isn’t just another indicator — it’s a new framework.
Most bands and channels are based on close price and statistical deviation — useful, but limited.
TRX uses the full true range of each candle as its foundation, then applies customizable smoothing and directional ATR scaling to form a dynamic, volatility-reactive envelope.
The result? Bands that breathe with the market — not lag behind it.
----------------------------------------------------
🔧 Core Features:
🕯️ True Range Candles — Each candle is plotted from low to high, body-only, colored by open/close.
📈 Adjustable High/Low Moving Averages — Select your smoothing style: SMA, EMA, WMA, RMA, or HMA.
🌬️ ATR-Based Expansion — Bands dynamically breathe based on market volatility.
🔀 Per-Band Multipliers — Fine-tune expansion individually for the upper and lower bands.
⚖️ Basis Line — Optional centerline between bands for structure tracking and equilibrium zones.
🎛️ Full Visual Control — Width, transparency, color, on/off toggles for each element.
----------------------------------------------------
🧠 Default Use Case:
With the included default settings, TRX behaves like an evolved Bollinger Band system — based on True Range candle structure, not just close price and standard deviation.
----------------------------------------------------
🔄 How to Zero Out the Bands (for Minimalist Use):
Want just candles? A clean MA? Single band? You got it.
➤ Use TRX like a clean moving average:
• Set ATR Multiplier to 0
• Set both Band ATR Adjustments to 0
• Leave the Basis Line ON or OFF — your call
➤ Show only candles (no bands at all):
• Turn off "Show High/Low MAs"
• Turn off Basis Line
➤ Single-line ceiling or floor tracking:
• Set one band’s Transparency to 100
• Use the remaining band as a price envelope or support/resistance guide
----------------------------------------------------
🧬 Notes:
TRX can be made:
• Spiky or silky (via smoothing & ATR)
• Wide or tight (via multipliers)
• Subtle or aggressive (via color/transparency)
• Clean as a compass or dirty as a chaos meter
Built by accident. Tuned with intention.
Released to the world as one of the most adaptable and expressive visual overlays ever made.
Created by Sherlock_MacGyver
My S.T.A.C.K.📊 My S.T.A.C.K. (Simplified TA Combined Kit)
All your favorite technical tools in one clean, customizable overlay.
My S.T.A.C.K. is a power-packed indicator designed to streamline your chart by combining the most commonly used technical analysis tools into a single, space-saving script. Whether you're a trend trader, swing trader, or just looking to declutter your view — this kit gives you everything you need, nothing you don’t.
🔧 Features:
5 Customizable Moving Averages: Choose your type (SMA, EMA, WMA, etc.) and periods to match your strategy.
Bollinger Bands: Visualize volatility and overbought/oversold zones with precision.
Donchian Channels: Spot breakouts and trend reversals based on high/low ranges.
ATR Bands: Adaptive support/resistance zones based on Average True Range.
Clean Visualization: Toggle each element on or off, adjust colors, and focus only on what matters.
✅ Ideal For:
- Traders who want multiple indicators in one place
- Reducing indicator clutter on TradingView
- Quick visual analysis without switching scripts
[blackcat] L3 Ichimoku FusionCOMPREHENSIVE ANALYSIS OF THE L3 ICHIMOKU FUSION INDICATOR
🌐 Overview:
The L3 Ichimoku Fusion is a sophisticated multi-layered technical analysis tool integrating classic Japanese market forecasting techniques with enhanced dynamic elements designed specifically for identifying potential turning points in financial instruments' pricing action.
Key Purpose:
To provide traders with an intuitive yet powerful framework combining established ichimoku principles while incorporating additional validation checkpoints derived from cross-timeframe convergence studies.
THEORETICAL FOUNDATION EXPLAINED
🎓 Conceptual Background:
:
• Conversion & Base Lines tracking intermediate term averages
• Lagging Span providing delayed feedback mechanism
• Lead Spans projecting future equilibrium states
:
• Adaptive parameter scaling options
• Automated labeling system for critical junctures
• Real-time alert infrastructure enabling immediate response capability
PARAMETER CONFIGURATION GUIDE
⚙️ Input Parameters Explained In Detail:
Regional Setting Selection:**
→ Oriental Configuration: Standardized approach emphasizing slower oscillation cycles
→ Occidental Variation: Optimized settings reducing lag characteristics typical of original methodology
Multiplier Adjustment Functionality:**
↔ Allows fine-graining oscillator responsiveness without altering core relationship dynamics
↕ Enables adaptation to various instrument volatility profiles efficiently
Displacement Value Control:**
↓ Controls lead/lag offset positioning relative to current prices
↑ Provides flexibility in adjusting visual representation alignment preferences
DYNAMIC CALCULATION PROCESSES
💻 Algorithmic Foundation:
:
Utilizes highest/lowest extremes over specified lookback windows
Produces more responsive conversions compared to simple MAs
:
→ Confirms directional bias across multiple independent criteria
← Ensures higher probability outcomes reduce random noise influence
:
♾ Creates persistent annotations documenting significant events
🔄 Handles complex state transitions maintaining historical record integrity
VISUALIZATION COMPONENTS OVERVIEW
🎨 Display Architecture Details:
:
→ Solid colored trendlines representing conversion/base relationships
↑ Fill effect overlay differentiating expansion/compression phases
↔ Offset spans positioned according to calculated displacement values
:
→ Green shading indicates positive configuration scenarios
↘ Red filling highlights negative arrangement situations
⟳ Orange transition areas mark transitional periods requiring caution
:
✔️ LE: Long Entry opportunity confirmed
❌ SE: Short Setup validated
☑ XL/XS: Position closure triggers active
✓ RL/RS: Potential re-entry chances emerging
STRATEGIC APPLICATION FRAMEWORK
📋 Practical Deployment Guidelines:
Initial Integration Phase:
Select appropriate timeframe matching trading horizon preference
Configure input parameters aligning with target asset behavior traits
Test thoroughly under simulated conditions prior to live usage
Active Monitoring Procedures:
• Regular observation of cloud formation evolution
• Tracking label placements against actual price movements
• Noting pattern development leading up to signaled entry/exit moments
Decision Making Process Flowchart:
→ Identify clear breakout/crossover events exceeding confirmation thresholds
← Evaluate contextual factors supporting/rejecting indicated direction
↑ Execute trades only after achieving required number of confirming inputs
PERFORMANCE OPTIMIZATION TECHNIQUES
🚀 Refinement Strategies:
Calibration Optimization Approach:
→ Start testing with default suggested configurations
↓ Gradually adjust individual components observing outcome changes
↑ Document findings systematically building personalized version profile
Context Adaptability Methods:
➕ Add supplementary indicators enhancing overall reliability
➖ Remove unnecessary complexity layers if causing confusion
✨ Incorporate custom rules adapting to specific security behaviors
Efficiency Improvement Tactics:
🔧 Streamline redundant processing routines where possible
♻️ Leverage shared data streams whenever feasible
⚡ Optimize refresh frequencies balancing update speed vs computational load
RISK MITIGATION PROTOCOLS
🛡️ Safety Measures Implementation Guide:
Position Sizing Principles:
∅ Never exceed preset maximum exposure limits defined by risk tolerance
± Scale positions proportionally per account size/market capitalization
× Include slippage allowances within planning stages accounting for liquidity variations
Validation Requirements Hierarchy:
☐ Verify signals meet minimum number of concurrent validations
⛔ Ignore isolated occurrences lacking adequate evidence backing
▶ Look for convergent evidence strengthening conviction level
Emergency Response Planning:
↩ Establish predefined exit strategies including trailing stops mechanisms
🌀 Plan worst-case scenario responses ahead avoiding panic reactions
⇄ Maintain contingency plans addressing unexpected adverse developments
USER EXPERIENCE ENHANCEMENT FEATURES
🌟 Additional Utility Functions:
Alert System Infrastructure:
→ Automatic notifications delivered directly to user devices
↑ Message content customized explaining triggered condition specifics
↔ Timing optimization ensuring minimal missed opportunities due to latency issues
Historical Review Capability:
→ Ability to analyze past performance retrospectively
↓ Assess effectiveness across varying market regimes objectively
↗ Generate statistics measuring success/failure rates quantitatively
Community Collaboration Support:
↪ Share personal optimizations benefiting wider trader community
↔ Exchange experiences improving collective understanding base
✍️ Provide constructive feedback aiding ongoing refinement process
CONCLUSION AND NEXT STEPS
This comprehensive guide serves as your roadmap toward mastering the capabilities offered by the L3 Ichimoku Fusion indicator effectively. Success relies heavily on disciplined application combined with continuous learning and adjustment processes throughout implementation journey.
Wishing you prosperous trading endeavors! 👋💰
Ichimoku Cloud +Ichimoku Cloud Plus - Advanced Technical Analysis Indicator
Ichimoku Cloud Plus is an advanced technical analysis tool that combines the traditional Ichimoku Cloud system with Pearson correlation analysis and multi-timeframe momentum tracking. This innovative approach provides traders with a comprehensive view of market trends, momentum, and potential reversal points across multiple time frames.
Core Components
Enhanced Ichimoku Cloud Analysis
The traditional Ichimoku Cloud components have been preserved and enhanced with customizable visual parameters:
The indicator includes:
- Conversion Line (Tenkan-sen) - Short-term trend identifier
- Base Line (Kijun-sen) - Medium-term trend identifier
- Leading Span A and B (Senkou Span A and B) - Future cloud projections
- Lagging Span (Chikou Span) - Historical price momentum confirmation
The cloud (Kumo) formations provide dynamic support and resistance levels, with color-coding to instantly identify bullish and bearish market conditions.
Pearson Correlation Analysis
A sophisticated Pearson correlation coefficient calculation has been integrated to provide statistical validation of trend strength and direction. This component:
- Calculates correlation between price movement and time
- Provides real-time correlation coefficients
- Identifies trend strength through correlation thresholds
- Generates signals for trend changes and potential reversals
Multi-Timeframe Momentum Tracking
The indicator incorporates a unique multi-timeframe analysis system that:
- Displays momentum calculations across five timeframes (15m, 30m, 1h, 4h, 1d)
- Provides percentage-based momentum values
- Includes volatility adjustment capabilities
- Offers volume-weighted calculations for enhanced accuracy
Advanced Features
Statistical Analysis Panel
A comprehensive statistical panel provides real-time analysis including:
- Current Pearson coefficient value
- Correlation strength classification
- Trend direction identification
- Analysis period information
Dynamic Alert System
The indicator includes sophisticated alert conditions for:
- Bearish trend initiation (positive correlation threshold breach)
- Bullish trend initiation (negative correlation threshold breach)
- Trend direction changes (zero-line crossovers)
Visual Optimization
Advanced visualization features include:
- Customizable color schemes for all components
- Adjustable label sizes and positions
- Transparency controls for better chart visibility
- Warning indicators for potential trend weakening
Technical Implementation
The indicator combines multiple calculation methods:
- Donchian Channel calculations for Ichimoku components
- Pearson correlation coefficient computation with customizable periods
- EMA smoothing for momentum calculations
- Volume-weighted averaging capabilities
- Volatility adjustment mechanisms
Trading Applications
This indicator is particularly effective for:
1. Trend Direction Confirmation
- Multiple timeframe analysis provides comprehensive trend validation
- Pearson correlation adds statistical confidence to trend identification
- Ichimoku cloud formations confirm support and resistance levels
2. Entry and Exit Point Identification
- Cloud breakouts combined with correlation strength indicate potential entry points
- Multi-timeframe momentum alignment helps identify high-probability trades
- Warning indicators assist in timing market exits
3. Risk Management
- Dynamic support and resistance levels from the cloud
- Statistical trend strength measurement
- Multi-timeframe confirmation reduces false signals
Performance Considerations
The indicator uses efficient calculations to maintain good performance while providing comprehensive analysis. The smoothing parameters and analysis periods can be adjusted to balance between responsiveness and reliability.
Future Applications and Research
This combination of indicators opens possibilities for:
- Machine learning integration for pattern recognition
- Additional statistical measures for trend validation
- Enhanced alert systems based on multiple condition combinations
- Further optimization of calculation methods
The innovative combination of traditional Ichimoku analysis with modern statistical methods and multi-timeframe momentum tracking provides traders with a powerful tool for market analysis and decision-making.
*2.2 Aggregated (Raw Z-scores with MA)***To be used with other 2.2 indicator***
Key Indicators Used:
Oscillating Indicators: RSI, TSI, Stochastic, MACD, CCI, Vortex Indicator, Williams %R.
Perpetual Trend Indicators: EMA, ADX, Parabolic SAR, Supertrend, Donchian Channel, Ichimoku Cloud, RVGI.
How to Use the Indicator:
Raw Z-Score (Blue Line): This represents the real-time aggregated Z-score of all the indicators. It shows how far the current market conditions are from their average, helping you identify trends.
Moving Average of Z-Score (Orange Line): A smoothed version of the Z-score that helps confirm trends and eliminate noise.
Shaded Area: The area between the Z-score and its moving average is shaded green if the Z-score is above the moving average (bullish), and red if below the moving average (bearish).
Zero Line (Gray Line): Serves as a reference point. A Z-score crossing above zero could signal a bullish market, while crossing below zero could indicate bearish conditions.
This indicator helps in identifying market extremes and trend reversals by combining various technical indicators into a single aggregate score, ideal for spotting overbought or oversold conditions and possible trend shifts
Oscillator Scatterplot Analysis [Trendoscope®]In this indicator, we demonstrate how to plot oscillator behavior of oversold-overbought against price movements in the form of scatterplots and perform analysis. Scatterplots are drawn on a graph containing x and y-axis, where x represent one measure whereas y represents another. We use the library Graph to collect the data and plot it as scatterplot.
Pictorial explanation of components is defined in the chart below.
🎲 This indicator performs following tasks
Calculate and plot oscillator
Identify oversold and overbought areas based on various methods
Measure the price and bar movement from overbought to oversold and vice versa and plot them on the chart.
In our example,
The x-axis represents price movement. The plots found on the right side of the graph has positive price movements, whereas the plots found on the left side of the graph has negative price movements.
The y-axis represents the number of bars it took for reaching overbought to oversold and/or oversold to overbought. Positive bars mean we are measuring oversold to overbought, whereas negative bars are a measure of overbought to oversold.
🎲 Graph is divided into 4 equal quadrants
Quadrant 1 is the top right portion of the graph. Plots in this quadrant represent the instances where positive price movement is observed when the oscillator moved from oversold to overbought
Quadrant 2 is the top left portion of the graph. Plots in this quadrant represent the instances where negative price movement is observed when the oscillator moved from oversold to overbought.
Quadrant 3 is the bottom left portion of the chart. Plots in this quadrant represent the instances where negative price movement is observed when the oscillator moved from overbought to oversold.
Quadrant 4 is the bottom right portion of the chart. Plots in this quadrant represent the instances where positive price movement is observed when the oscillator moved from overbought to oversold.
🎲 Indicator components in Detail
Let's dive deep into the indicator.
🎯 Oscillator Selection
Select the Oscillator and define the overbought oversold conditions through input settings
Indicator - Oscillator base used for performing analysis
Length - Loopback length on which the oscillator is calculated
OB/OS Method - We use Bollinger Bands, Keltener Channel and Donchian channel to calculate dynamic overbought and oversold levels instead of static 80-10. This is also useful as other type of indicators may not be within 0-100 range.
Length and Multiplier are used for the bands for calculating Overbought/Oversold boundaries.
🎯 Define Graph Properties
Select different graph properties from the input settings that will instruct how to display the scatterplot.
Type - this can be either scatterplot or heatmap. Scatterplot will display plots with specific transparency to indicate the data, whereas heatmap will display background with different transparencies.
Plot Color - this is the color in which the scatterplot or heatmap is drawn
Plot Size - applicable mainly for scatterplot. Since the character we use for scatterplot is very tiny, the large at present looks optimal. But, based on the user's screen size, we may need to select different sizes so that it will render properly.
Rows and Columns - Number of rows and columns allocated per quadrant. This means, the total size of the chart is 2X rows and 2X columns. Data sets are divided into buckets based on the number of available rows and columns. Hence, changing this can change the appearance of the overall chart, even though they are representing the same data. Also, please note that tables can have max 10000 cells. If we increase the rows and columns by too much, we may get runtime errors.
Outliers - this is used to exclude the extreme data. 20% outlier means, the chart will ignore bottom 20% and top 20% when defining the chart boundaries. However, the extreme data is still added to the boundaries.
Moving Average Exponential-DonCHI-SUPERTRENDThe "Moving Average Exponential-DonCHI-SUPERTREND" is a trading strategy or indicator that combines three distinct technical analysis tools:
Moving Average Exponential (EMA): This is a type of moving average that gives more weight to recent prices, making it more responsive to price changes compared to a simple moving average.
Donchian Channels (DonCHI): These are bands that are plotted above and below the recent price highs and lows. They help identify the current price volatility and potential breakout points.
SUPERTREND: This is a trend-following indicator that uses the average true range (ATR) to determine the direction of the trend. It provides signals similar to moving averages but with less lag.
Custom Signal Oscillator StrategyThe CSO is made to help traders easily test their theories by subtracting the difference between two customizable plots(indicators) without having to search for strategies. The general purpose is to provide a tool to users without coding knowledge.
How to use :
Apply the indicator(s) to test
Go to the CSO strategy input settings and select the desired plots from the added indicators. (The back test will enter long or short depending on the fast signal crosses on the slow signal)
Pull up the strategy tester
Adjust the input settings on the selected indicator(s) to back test
For example, the published strategy is using the basis lines from two Donchian channels with varying length. This can be utilized with multiple overlays on the chart and oscillators that are operating on the same scale with each other. Since chart glows aren't extremely common, a glow option is included to stand out on the chart as the chain operator. A long only option for is also included for versatility.
Candle Strength Oscillator by SyntaxGeekThis candle strength oscillator displays a smoothed rolling difference between the body range (close and open) and total candle range (high and low).
When candles have small bodies, such as a doji, it can indicate weakness, when candles have essentially little to no wicks it can indicate strength.
There are two modes of display for the strength trend to show potential exhaustion on either side, bollinger bands and donchian channels. Each has their own pros and cons but as most are familiar with bollinger bands this is the default.
Another feature is the ATR measurement, which can assist in displaying an overall reduction in range volatility when comparing historical price movements to current oscillations.
The zero line can show some importance with regards to the peaks and valleys of the main measurement, when everything is trending and there's a reversal, if the zero line isn't broken it could be considered a trend continuation pullback vs a complete reversal.
Trend arrows and bar coloring are available but should not be considered trade signals for entry and exit, merely just another way of viewing the lower study information.
As the raw data of each candle measurement is quite noisy, the entire dataset is passed through an HMA smoothing process, if more options are requested I'll consider adding them.
Thanks for view my script and happy trading!
Quan Channel - Quan DaoI tried several channels, like the supertrend, ATR, Donchian or Bollingers, but they do not seem to fit my needs.
So I created a new channel to PREDICT the next impulse move of a price.
The current value of the top or bottom of the channel is based on 2 previous candles (not the candle itself), and it takes into account:
- The Direction of the previous candles (red or green) and
- The Width of their bodies
In my channel, the top or bottom lines will cover the price movement most of the time. But in some cases, when the price is on a big move, it will go out of the channel. And this is the time we need to consider a buy/sell (or take some profit) as well (not necessarily 100% of the time, though).
Personally, I like to use another oscillator in combination with this channel to predict whether it will reverse after the breakouts or continue to make another peak. If you are a DCA or long-term investor, I guess it would be safe to buy at the blue signals (out of bottom) and take some profits at the orange signals (out of top).
I also added an alert when the price breaks out of the channel for easier tracking.
Moving Fib Based on Donchain/Pivot/BBThis script's purpose is to provide the user with an indicator that automatically plots Fibonacci levels. The user has three main options for determining the Fibonacci's high and low. This indicator offers an ample number of settings, making it a modular Fibonacci overlay.
The default setting is based on Donchian high and low.
Another option is to base the high and low on TradingView's Pivot indicator.
The last option is to determine Fibonacci levels based on Bollinger Bands.
Add up to 16 Fib levels with customizable settings, plot them on a log scale, and explore various other settings to personalize the Fib overlay.
This indicator can be utilized for trading momentum or mean reversion strategies
[blackcat] L1 NinjaTrader ChannelNinjaTrader is a popular charting software widely used for trading analysis and execution in financial markets such as stocks, futures, and forex. It provides rich features and tools to assist traders in technical analysis, trade strategy development, and trade execution. When I discovered a built-in channel technical indicator in NinjaTrader and became interested in it but didn't understand its principles, I utilized my extensive development experience to simulate a similar version based on its characteristics, naming it "Ninja Channel" for reference only. First, I observed the characteristics and behavior of the built-in channel indicator. Pay attention to how it calculates and plots the channels, as well as its parameter settings and usage methods. This information can help me better understand the principles and functions of this indicator. Then, I attempted to simulate a similar channel indicator using my existing knowledge of technical analysis tools. I used charting tools and indicators to plot and calculate the upper and lower boundaries of the channel according to my needs and preferences. Please remember that this simulated version is for reference only; there is no guarantee that it will be exactly identical to the built-in channel indicator in NinjaTrader. The original built-in indicator may have more complex calculation methods with more precise results. Therefore, before engaging in actual trading activities, it is recommended that you carefully study and understand the principles and usage methods of the original indicator.
The Ninja Channel belongs to a type of technical indicator used for analyzing price range fluctuations and trends. It constructs an upper-lower boundary channel based on high-low points or moving average line fluctuations of prices to assist traders in determining overbought/oversold zones, trend strength/weaknesses,and price reversal points.
The main uses of Ninja Channel include:
1.Trend determination: The Ninja Channel helps traders determine price trends.When prices are located above half partofthechannel,it indicates an uptrend; when prices are located below half partofthechannel,it indicates adowntrend. Traders can formulate corresponding trading strategies based on trend analysis.
2.Overbought/oversold zones: The upper and lower boundaries of the Ninja Channel can be used to determine overbought and oversold zones.When prices touch or exceed the upper boundary of the channel, it may indicate an overbought market condition with a potential price pullback or reversal; when prices touch or fall below the lower boundary of the channel, it may indicate an oversold market condition with a potential price rebound or reversal.Traders can develop counter-trend or reversal trading strategies based on these overbought/oversold zones.
3.Dynamic support and resistance: The upper and lower boundaries of the Ninja Channel can be seen as dynamic support and resistance levels.When prices approach the upper boundary ofthechannel,theupperboundarymay act asresistance, limiting upward price movement; when prices approachthelowerboundaryofthechannel,thelowerboundarymayactassupport,limiting downward price movement.Traderscanmake trading decisions based on these dynamic supportandresistancelevels.
Of course, for this newly created indicator,some aspects are still unfamiliar.However,the learning process can refer to some common channel-type technical indicators including Bollinger Bands,Keltner Channels,and Donchian Channels. Each indicator has its unique calculation method and parameter settings.Traderscan choose suitable indicators according to their own needsandpreferences.
In summary,NinjaChannel is a type of technical indicator used for analyzingprice range fluctuationsandtrends.It helps traders determine trends,overbought/oversoldzones,anddynamic support/resistance levels in order to formulate appropriate trading strategies.However,technicalindicatorsareonly auxiliary tools.Traderstill needsto consider other factorsandsrisk managementstrategiesinorder tomakemore informedtradingdecisions.
Multi Time Frame Composite BandsMulti Time Frame Composite Bands utilizes Fibonacci numbers (5, 8, 13, 21, 34) as period lengths for calculations. The indicator calculates a composite high line (C_high) by averaging the highest prices over Fibonacci periods, incorporating moving averages (SMA) of high prices for added refinement and smoothing. Similarly, a composite low line (C_low) is calculated by averaging the lowest prices with moving averages of low prices. The midline, obtained from the mean of C_high and C_low.
This band can function as volatility bands unlike traditional volatility indicators like Bollinger Bands , ATR bands it does not use traditional measures of volatility such standard deviation , ATR. This hugs closely to the price and during trending markets the some part of the candles stay outside the band and when the entire candle digress outside the band a price correction or reversal can be anticipated. This can be considered as a smoothed Donchian channel.
Band-Zigzag - TrendFollower Strategy [Trendoscope]Strategy Time!!!
Have built this on my earlier published indicator Band-Zigzag-Trend-Follower . This is just one possible implementation of strategy on Band-Based-Zigzag .
🎲 Notes
Experimental prototype. Not financial advise and strategy not guaranteed to make money despite backtest results
Not created or tested for any specific instrument or timeframe
Test and adopt with own risk
🎲 Strategy
This is trend following strategy built based on Bands and Zigzag. Traits of trend following strategies are
Lower win rate (Yes, thats right)
High risk reward (Compensates low win rate)
Higher drawdown
If market is choppy, trend following methods suffer.
The script implements few points to overcome the negatives such as lower win rate and higher drawdown by actively assessing pivots on the direction of trend along. This helps us take regular profits and exit on time during the end of trend. Most of the other concepts are defined and explained in indicator - Band-Zigzag-Trend-Follower and Band-Based-Zigzag
Defining a trend following method is simple. Basic rule of trend following is Buy High and Sell Low (Yes, you heard it right). To explain further - methodology involve finding an established trend which is flying high and join the trend with proper risk and optimal stop. Once you get into the trade, you will not exit unless there is change in the trend. Or in other words, the parameters which you used to define trend has reversed and the trend is not valid anymore.
🎯 Using bands
When price breaks out of upper bands (example, Bollinger Band , Keltener Channel, or Donchian Channel), with a pre determined length and multiplier, we can consider the trend to be bullish and similarly when price breaks down the lower band, we can consider the trend to be bearish .
🎯 Using Pivots
Simple logic using zigzag or pivot points is that when price starts making higher highs and higher lows, we can consider this as uptrend. And when price starts making lower highs and lower lows, we can consider this as downtrend. There are few supertrend implementations I have published in the past based on zigzags and pivot points .
Drawbacks of both of these methods is that there will be too many fluctuations in both cases unless we increase the reference length. And if we increase the reference length, we will have higher drawdown.
🎯 Band Based Zigzag Method
Here we use bands to define our pivot high and pivot low - this makes sure that we are identifying trend only on breakouts as pivots are only formed on breakouts
Our method also includes pivot ratio to cross over 1.0 to be able to consider it as trend. This means, we are waiting for price also to make new high high or lower low before making the decision on trend. But, this helps us ignore smaller pivot movements due to the usage of bands.
I have also implemented few tricks such as sticky bands (Bands will not contract unless there is breakout) and Adaptive Bands (Band will not expand unless price is moving in the direction of band). This makes the trend following method very robust.
To avoid fakeouts, we also use percentB of high/low in comparison with price retracement to define breakout.
🎲 Settings
Settings are fairly simpler and are explained as below. You will find most of the required information in tooltips.
Colorful Channelwhat is "Colorful Channel"?
it is a overbought - oversold indicator.
what it does?
It fills the area between the upper band of the channel and the price line with green, the area between the lower band of the channel and the price line with red color and applies a transparency to these colors according to the distance of the price from the channel lines. thus allowing users to get an idea of ??the current value of the price.
how it does it?
subtracts the percentage of the price from the lower channel from the transparency ratio of the red color, and the percentage of the price from the upper band from the transparency ratio of the green color. thus, a different transparency value is obtained for each percentile. In addition, the transparency rate can be changed with a multiplier determined by the users.
how to use it?
In the "lenght" section, you select the number of bars that the indicator will base backwards on. For example, if length=100, the indicator determines the upper and lower bands according to the distances from the highest and lowest values ??within 100 bar. so the length part works like donchian channels.
You can change the transparency ratio of the colors in the "transp" section.
1 saat transp
yan trend
4 saat
SSL Hybrid by gigazPerfect for scalping crypto timeframe 1M, 3M, 5M
to use with TrendMeter and Donchian Trend Ribbon to avoid false signals
it takes alert from a lot of pairs, you have only to adjust your tick timeframe
BB-EMA-MAWikipedia: Bollinger Bands are a type of statistical chart characterizing the prices and volatility over time of a financial instrument or commodity, using a formulaic method propounded by John Bollinger in the 1980s. Financial traders employ these charts as a methodical tool to inform trading decisions, control automated trading systems, or as a component of technical analysis. Bollinger Bands display a graphical band (the envelope maximum and minimum of moving averages, similar to Keltner or Donchian channels) and volatility (expressed by the width of the envelope) in one two-dimensional chart.
If you set Type = 2 then it will use EMA average for Bollinger bands .
If you set Type = 1 then it will use MA average for Bollinger bands .
Default settings is moving average with period 50
When price move to standard Deviation (std) +2 and std +3 is signal for sell ( selling zone)
When price move to standard Deviation (std) -2 and std -3 is signal for sell ( buying zone)
lib_hlmLibrary "lib_hlm"
Ichimoku trend line and plotting tools.
HLM(Period)
Optionless Ichimoku/Donchian trend line calculation.
Parameters:
Period : The period for the trend line calculation.
Returns: The midpoint of the highest high and the lowest low.
HLM_Offset(offset, currentIsZero, intoPast)
Standardized language for plotting offsets.
Parameters:
offset : The offset number to use.
currentIsZero : `true` for ichimoku counting. `false` for natural language
intoPast : `true` if projecting backwards. `false` if projecting forwards.
Returns: The offset adjusted by counting style and direction.
TK()
Calculates the Ichimoku Tenkan and Kijun lines.
Returns: {tenkan, kijun}
SenkouSpans(period_1, period_2, period_3)
Calculates the Ichimoku Senkou Span A and Senkou Span B values.
Parameters:
period_1 : default=9
period_2 : default=26
period_3 : default=52
Returns: {senkou_a, senkou_b}
Ichimoku_Cloud(period_1, period_2, period_3)
Calculate the Ichimoku cloud value and offsets.
Parameters:
period_1 : default=9
period_2 : default=26
period_3 : default=52
Returns: {senkou_a, senkou_b, cloud_offset}
Chikou_Span()
Gets the chikou span and offsets.
Returns: {chikou, chikou_offset}
Ichimoku(enabled)
Get the values for the full, default Ichimoku system, including plotting offsets. Common toggle for all values.
Parameters:
enabled : `true` will return plottable values. `false` will return only na's (turns off plotting).
Returns: {tenkan, kijun, senkou_a, senkou_b, cloud_offset, chikou, chikou_offset}
Ichimoku_Line_Colors()
Get a set of colors with a common transparency for Ichimoku.
Returns: {tenkan_color, kijun_color, senkou_a_color, senkou_b_color, chikou_color}
Ichimoku_Cloud_Color()
Determines the cloud color and applies transparency (Ichimoku).
Returns: the dominant lines color with applied transparency
Ichimoku_Colors()
Gets a full set of default ichimoku colors with cloud color based on the input senkou values.
Returns: {tenkan_color, kijun_color, senkou_a_color, senkou_b_color, chikou_color, cloud_color}
RedK Chop & Breakout Scout (C&B_Scout)The RedK Chop & Breakout Scout (C&BS or just CBS) is a centered oscillator that helps traders identify when the price is in a chop zone, where it's recommended to avoid trading or exit existing trades - and helps identify (good & tradeable) price breakouts.
i receive many questions asking for simple ways to identify chops .. Here's one way we can do that.
(This is work in progress - i was exploring with the idea, and wasn't sure how interesting other may find it. )
Quick Intro:
==================
Quick techno piece: This concept is similar to a Stochastic Oscillator - with the main difference being that we're utilizing units of ATR (instead of a channel width) to calculate the main indicator line - which will then lead to a non-restricted oscillator (rather than a +/- 100%) - given that ATR changes with the underlying and the timeframe, among other variables.
to make this easy, and avoid a lot of technical speak in the next part, :) i created (on the top price panel) the same setup that the C&B Scout represents as a lower-panel indicator.
So as you read below, please look back and compare what C&BS is doing in its lower panel, with how the price is behaving on the price chart.
how this works
========================
- To identify chops and breakouts, we need to first agree on a definition that we will use for these terms.
- for the sake of this exercise, let's agree that the price is in a chop zone, as long as the price is moving within a certain distance from a "price baseline" of choice ( which we can adjust based on the underlying, the volatility, the timeframe, the trading style..etc)
- when the price moves out of that chop zone, we consider this a breakout
- Now not all breakouts are "good" = they need to at least happen in the direction of the longer term trend. In this case, we can apply a long Moving Average to act as a filter - and consider breakouts to be "good" if they are in the same direction as the filter line
- With the above background in mind, we establish a price baseline (as you see on the top panel, this is based on the midline of a Donchian Channel - but we can use other slow moving averages in future versions)
- we will decide how far above/below that baseline is considered to be "chop zone" - we do this in terms of units of Average True Range (ATR) - using ATR here is valuable for so many reasons, most of all, how it adjusts to timeframe and volatility of underlying.
- The C&B Scout line simply calculates how far the price is above/below the baseline in terms of "ATR units". and shows how that value compares to our own definition of a "chop zone"
- so as long as the price is within the chop zone, the CBS line will be inside the shaded area - and when the price "breaks out" of the chop zone, the CBS line will also breakout (or down) from the chop zone.
- C&B Scout will give a visual clue to help take trades in the direction of the prevailing trend - the chop zone is green when the price is in "long mode", as in, the price is above the filter line - and will be red when we are in "short mode" - so the price is below the filter line. in green mode, we should only consider breakouts to the upside, and ignore breakouts to the downside (or breakdowns) - in red mode, we should only consider breakouts to the downside., and ignore the ones to the upside.
- i added some examples of "key actions" on the chart to help explain the approach here further.
Usage & settings Notes:
========================
- even though for many traders this will be a basic concept/setup, i still highly suggest you spend time getting used to how it works/reacts and adjusting the settings to suit your own trading style, timeframe, tolerance, what you trade....etc
- for example, if i am a conservative trader, i may consider any price movement within 1 x ATR above and below the baseline to be in "chop" (ATR Channel width = 2 x ATR) - and i want to only take trades when the price moves outside of that range *and* in the direction of the prevailing trend
- An aggressive trader may use a smaller ATR-based value, say 0.5 x ATR above/below the baseline, as their chop zone.
- A swing trader may use a shorter filter line and focus on the CBS line crossing the 0 line.
- .... and so on.
- Also note that the "tradeable" signal is when the CBS line "exits" the chop zone (upward on green background, or downward on red background) - however, an aggressive trader may take the crossing of the CBS line with the 0 line as the signal to open a trade.
- As usual please do not use this indicator "in isolation" and ensure you have other confirming signals from your setups before trading.
conclusion
===========
As i mentioned, this is really a simple concept - and i'm a big fan of those :) -- and there's so much that could be done to expand around it (add more visuals/colors, add alerts, add options for ATR calculation, Filter line calculations, baseline..etc) - but with this v1.0, i wanted to share this initially and see how much interest and how valuable fellow traders find it, before playing any further with it. so please be generous with your comments.
Relative Bandwidth FilterThis is a very simple script which can be used as measure to define your trading zones based on volatility.
Concept
This script tries to identify the area of low and high volatility based on comparison between Bandwidth of higher length and ATR of lower length.
Relative Bandwidth = Bandwidth / ATR
Bandwidth can be based on either Bollinger Band, Keltner Channel or Donchian Channel. Length of the bandwidth need to be ideally higher.
ATR is calculated using built in ATR method and ATR length need to be ideally lower than that used for calculating Bandwidth.
Once we got Relative Bandwidth, the next step is to apply Bollinger Band on this to measure how relatively high/low this value is.
Overall - If relative bandwidth is higher, then volatility is comparatively low. If relative bandwidth is lower, then volatility is comparatively high.
Usage
This can be used with your own strategy to filter out your non-trading zones based on volatility. Script plots a variable called "Signal" - which is not shown on chart pane. But, it is available in the data window. This can be used in another script as external input and apply logic.
Signal values can be
1 : Allow only Long
-1 : Allow only short
0 : Do not allow any trades
2 : Allow both Long and Short
Volume Spread for VSA CustomHey everyone, I have been using volume a lot more lately as price action can sometimes get manipulated but volume shows us the truth!
Anyways, I have enjoyed the Volume Spread for VSA indicator but wished I had the code to change a few settings. This volume indicator includes spread analysis with the ability to customize input values and I'm making it open source so you can do with it as you please.
I have made notes all throughout the code to give suggestions on a few changes or why I have written it in such a way. I have also tried to section everything off to make it easier to see where each piece of the code is used. Overall I think it is a good example of how to code cleanly and how to add useful notes when you are learning Pine for yourself :D
The indicator on the price chart is my Donchian Channel indicator, which you can also find on my profile. This is the one I use every day.