Williams %R Color MapThis script is used to have a quick view for my triple screen trading system.
I use it in 1 hour chart so that the higher timeframe is 5-hour and daily.
Visual for the current price on which fib area of 5-hour and daily chart.
Cari dalam skrip untuk "williams"
Williams FractalsThis script shows the channel identified by the most recent up and down fractals. When there is a fractal break, the chance of having an impulsive move is much higher than when we are in the fractal range. This script uses the weekly timeframe for fractal identification, but can be applied to any lower timeframes.
Williams Fractals One// It is same as William fractal default one. I have just modified to provide the fractal UP or DOWN considering one handle on each side other than default two.
// It will help in ICT methods to find the Market structure.
Williams %R & top candle seg & down candle paternmix Anas colored %W (original one) and Anas candle signal generator and candle high low break points lower one .
Williams Gator Oscillator// The Gator Oscillator histogram above zero shows the absolute difference between blue and red lines of Alligator indicator,
// while histogram below zero shows the absolute difference between red and green lines.
//
// There are green and red bars on the Gator Oscillator histograms.
// A green bar appears when its value is higher than the value of the previous bar.
// A red bars appears when its value is lower than the value of the previous bar.
//
// Gator Oscillator helps to better visualize the upcoming changes in the trends: to know when Alligator sleeps, eats, fills //out and is about to go to sleep.
Stoch_Williams_RSI[wozdux]Strategy. The indicator gives buy and sell signals based on two or three indicators.
Alert 2 is the signal from the two indicators is the Stochastic + Williams. Alert 3 signal from three Stochastic + Williams+ RSI indicators is simple. The Alert4 signal from the three Stochastic + Williams+MTF indicators is simple. Alert5 signal from three Stochastic + Williams+ RSI-2 indicators smoothed.
Settings.
""alert 2 show" - show signal button
""alert 3 show" - show signal button
""alert 4 show" - show signal button
""alert 5 show" - show signal button
To use, you need to connect the "alert" by one of the "alert-2-3-4-5".
Стратегия. Индикатор дает сигналы на покупку и продажу на основе двух или трех индикаторов.
Alert2 это сигнал от двух индикаторов Stochastic + Williams. Alert3 сигнал от трех индикаторов Stochastic + Williams+ RSI простой. Alert4 сигнал от трех индикаторов Stochastic + Williams+MTF простой. Alert5 сигнал от трех индикаторов Stochastic + Williams+ RSI-2 сглаженный.
Настройки.
"alert2 show"- кнопка показать сигнал
"alert3 show"- кнопка показать сигнал
"alert4 show"- кнопка показать сигнал
"alert5 show"- кнопка показать сигнал
Чтобы воспользоваться, нужно подключить "оповещение" по одному из «alert-2-3-4-5».
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.
Trendfilter AD2Trendfilter AD2
What It Is: The Trendfilter AD2 is a versatile technical indicator that combines multiple analysis methods, including Bollinger Bands, Larry Williams' Accumulation/Distribution method, and Swing Volatility. It aims to detect market trends early, identify trend changes, and measure market volatility.
What It Does:
The Trendfilter AD2 provides comprehensive market analysis features:
Trend Direction and Changes: The indicator uses the Signal Line in conjunction with Bollinger Bands to give early indications of potential trend changes.
Accumulation/Distribution by Larry Williams: This method helps assess market strength and determine direction.
Swing Volatility: The indicator calculates swing volatility based on short-term highs and lows and uses this to define a volatility range.
Divergence Analysis: The indicator allows for manual detection of divergences to identify potential trend reversals.
How to Use It:
Bollinger Bands and Signal Line:
Bollinger Bands consist of an upper band, a middle line, and a lower band. The middle line represents the moving average of the Signal Line.
The Signal Line is calculated based on swing volatility and price differences. A breakout of the Signal Line through the middle line can provide early signals of trend changes:
Breakout Upwards: Indicates a potential beginning of an uptrend.
Breakout Downwards: Indicates a potential beginning of a downtrend.
Accumulation/Distribution by Larry Williams:
This method evaluates market strength and direction based on price movements. Accumulation occurs when the close is above the previous close, while Distribution occurs when the close is below the previous close.
Swing Volatility:
The indicator calculates swing volatility based on short-term highs and lows. This volatility is used to define the Bollinger Band ranges, helping to identify and interpret volatile market phases.
Divergence Analysis:
Divergences must be manually identified. To do this, compare price movements with the calculated momentum or volatility line:
Bullish Divergence: Occurs when the price makes new lows while the indicator forms higher lows. This may indicate a potential upward trend reversal.
Bearish Divergence: Occurs when the price makes new highs while the indicator forms lower highs. This may indicate a potential downward trend reversal.
This indicator is particularly useful for traders looking for early signals of trend changes, those wanting to analyze market volatility, and for those who need to manually identify divergences.
This indicator also identifies and displays 8 different candlestick patterns, offering traders additional insights into price action.
Disclaimer
This indicator is for educational and informational purposes only and should not be considered financial advice. Past performance of any trading strategy is not indicative of future results. Trading involves significant risk, and you should only trade with funds that you are prepared to lose. Always conduct your own analysis and consult a professional financial advisor if needed.
Deep in the Tape – VSA Educational (Invite Only)Deep in the Tape – VSA Educational (Invite-Only)
Overview
This invite-only study is built entirely on the Volume Spread Analysis (VSA) methodology developed by Tom Williams. VSA examines the interplay of volume, spread (bar range), and closing position to highlight the footprints of professional activity.
The aim of this tool is educational: to make it easier for traders to study how supply and demand pressures appear on the chart in real time. It does not generate trading advice, but instead plots markers based on classical VSA principles so students of the method can recognize strength, weakness, confirmations, and traps without the cryptic complexity often found in raw VSA study.
What It Displays
Key VSA Events (visual markers on the chart):
Stopping Volume (SV): Wide down bars with climactic volume closing off the lows.
Selling Climax (SC): Exhaustion selling at the end of a decline, often near bottoms.
Shakeout (SO): A sharp push down that springs back to close strong.
No Supply (NS): Narrow down bar on low volume, showing lack of selling pressure.
No Demand (ND): Narrow up bar on low volume, showing lack of buying interest.
Supply Coming In: Volume surge after an up-move, suggesting sellers active.
Buying Climax (BC): Wide up bar with climactic volume and weakness into the close.
Upthrust (UT): False break above prior highs with a weak close.
End of Rising Market (EoRM): Narrow up bar on very high volume, closing weak, often signaling distribution.
Test Bar: Down bar on very low volume in an uptrend, testing for lack of supply.
Contextual Tools:
Trigger Levels: High/low of ultra-high volume bars projected forward, serving as natural support/resistance levels.
Cluster Zones: Optional shading to mark zones of repeated high-volume activity (potential accumulation/distribution).
Background MA: A simple moving average for context only — not a signal generator.
Interpreting the Markers (Tom Williams Style)
Bullish Background (professional strength):
Events such as SV, SC, SO, and NS.
Best studied when price is trading above trigger levels and above the MA, showing demand in control.
Bearish Background (professional weakness):
Events such as BC, UT, Supply Coming In, and EoRM.
Best studied when price is below trigger levels and below the MA, showing supply dominance.
Multi-Timeframe Context & Market Behavior
A key principle to study with this tool is that higher-timeframe context usually outweighs signals on smaller timeframes. For example:
A short marker on a 5-minute chart often fails if the hourly background is bullish.
Likewise, a bullish signal on a small timeframe is less reliable if higher-timeframe background is bearish.
This highlights an important discipline lesson: not every small signal should be acted upon in isolation. Patience and alignment with the broader background improves study of how professional activity develops.
Channeling & Probing Behavior After Climactic Volume:
After a Stopping Volume (SV) bar on ultra-high volume, the market often enters a sideways channel between the blue (support) and red (resistance) trigger lines.
Professionals may probe the market — for example, dropping price through the lower red line on low volume to test for active sellers. If no significant supply is found, price rallies back inside the channel.
This absorption process may repeat until weakness is removed. Only then do No Supply (NS) or Test bars appear, providing stronger bullish confirmation.
The reverse applies in a bearish background, where No Demand (ND) or weakness confirmations appear after probing and absorption.
Studying these patterns helps traders recognize the probing nature of professional activity, why markets often pause after climactic signals, and how strength or weakness is confirmed over time.
Aggressive Trades (Educational Extension)
In addition to classical confirmations, this study also highlights aggressive follow-through conditions — situations where professionals act quickly after a major VSA event, before the “clean” confirmation appears.
Aggressive Longs may include:
Breakouts immediately above a Stopping Volume (SV) or Selling Climax (SC) high with strong volume.
Shakeout confirmations (price closes above the SO high on effort).
Failure of weakness (e.g., BC/UT/Supply signals that get overrun on strength).
Aggressive Shorts may include:
Confirmed follow-through after Supply Coming In.
Breakdowns after a Buying Climax (BC) or Upthrust (UT).
Shakeout failures where the rally attempt collapses.
End of Rising Market (EoRM) breaks on weakness.
These are marked separately for study. They are not “signals” but rather examples of how strength or weakness can assert itself early.
Failures (Educational Study Only)
Not all setups confirm. In VSA, Tests sometimes fail, and NS/ND bars can be absorbed. These are marked as Failure markers.
Their purpose is purely educational:
To show where expectations do not play out.
To help students see how traps or absorptions form.
To illustrate Tom Williams’ lesson that the market is a testing ground — not a perfect pattern machine.
Why It’s Original
Built directly from Tom Williams’ VSA logic — spread, volume relative to average, wick size, close location, and background context.
Adds projected trigger levels, cluster zones, and aggressive trade markers for educational context.
Designed for clarity and study, removing unnecessary complexity while staying faithful to VSA principles.
Not a mash-up of public scripts — a purpose-built framework for studying supply and demand dynamics.
Disclaimer
This script is for educational and analytical purposes only.
It does not generate buy/sell/alert signals, nor does it provide financial advice.
Always perform your own analysis and risk management before making trading decisions.
BW MFI fixed v6Bill Williams MFI
Sure! Here’s an English description of the indicator you have:
---
### Bill Williams Market Facilitation Index (MFI) — Indicator Description
This indicator implements the **Market Facilitation Index (MFI)** as introduced by Bill Williams. The MFI measures the market's willingness to move the price by comparing the price range to the volume.
---
### How it works:
* **MFI Calculation:**
The MFI is calculated as the difference between the current bar’s high and low prices divided by the volume of that bar:
$$
\text{MFI} = \frac{\text{High} - \text{Low}}{\text{Volume}}
$$
* **Color Coding Logic:**
The indicator compares the current MFI and volume values to their previous values and assigns colors to visualize market conditions according to Bill Williams’ methodology:
| Color | Condition | Market Interpretation |
| ----------- | ------------------ | --------------------------------------------------------------------------------------------- |
| **Green** | MFI ↑ and Volume ↑ | Strong trend continuation or acceleration (increased price movement supported by volume) |
| **Brown** | MFI ↓ and Volume ↓ | Trend weakening or possible pause (both price movement and volume are decreasing) |
| **Blue** | MFI ↑ and Volume ↓ | Possible false breakout or lack of conviction (price moves but volume decreases) |
| **Fuchsia** | MFI ↓ and Volume ↑ | Market indecision or battle between bulls and bears (volume rises but price movement shrinks) |
| **Gray** | None of the above | Neutral or unchanged market condition |
* **Display:**
The indicator plots the MFI values as colored columns on a separate pane below the price chart, providing a visual cue of the market’s behavior.
---
### Purpose:
This tool helps traders identify changes in market momentum and the strength behind price moves, providing insight into when trends might accelerate, weaken, or potentially reverse.
---
If you want, I can help you write a more detailed user guide or trading strategy based on this indicator!
Acceleration/Deceleration with alerts (Hendo@4C)My variation of the Acceleration/Deceleration by Bill Williams. I found the existing variations of this indicator on TradingView severely lacking in terms of options. Credits go to a close friend who recommended writing this.
NOTE: The setting called: "Invert acceleration dots", can make gauging tops and bottoms "earlier" easier. Due to the nature of this indicator and the fact that you can set alerts on deceleration.
//Overview of settings//
“Plot tops and bottoms” default: True
An option to enable plotting shapes when a top or bottom is printed. I use a non conventional way to detect tops and bottoms. This secures false signals. Alerts can be added to this.
“Fill background” default: True
Fills the background between the A/D and the 0 line.
“Source for A/D” default: (high+low)/2
This is the source for calculation of the indicator. Bill Williams himself describes using the “HL2” and this is what the default value is. Potentially once could experiment with “HLC3” (high+low+close)/3. Since this is also a popular way of using this indicator.
“Length of F-SMA” default: 5
The length of the fast simple moving average that the indicator uses. Again: The default is 5 but one could experiment with higher/lower values to change the reaction time of the indicator.
“Length of S-SMA” default: 34
The lenght of the slow simple moving average that the indicator uses. The default by Bill Williams here is 34. One could experiment with higher values to reduce noise.
“Activate less noise mode” default: False
Uses a proprietary way of averaging values in price. This creates an entirely new indicator in itself. Can be very useful for trading the lower timeframes. It is however advised to understand that enabling this settings will not make the indicator the “standard A/D // AC” anymore.
“Plot alert levels” default: False
This setting allows you to plot extra levels at certain values (just like the RSI for example). Keep in mind however that you need to manually adjust the values to fit the instrument you’re trading. Of course you can set alerts to these levels. Be careful enabling this: Since it might pull the chart out of proper scaling.
“Value of +Line plot” default: 25”
Sets the level of the first “alert level” described earlier. I picked 25 as an example for Bitcoin. Be careful setting these levels: Since it might pull the chart out of proper scaling.
“Value of -Line plot” default: -25”
Sets the level of the second “alert level” described earlier. I picked -25 as an example for Bitcoin. Be careful setting these levels: Since it might pull the chart out of proper scaling.
“Fill background between lines” default: False
Enabling this will fill the background between the previously discussed +Line plot and the -Line plot. Again: Much like RSI.
“Color background if 0 is crossed” default: True
Colors the background of the indicator everytime the 0 line is crossed. Of course alerts can be set up in order to push an alert every time this happens. The default color for this is “Fuchsia”. Because it contrasts well.
“Show visual accel/decel” default: True
Uses a few simple mathematical functions in order to calculate if the A/D is accelerating or decelerating. If enabled it will plot dots when the A/D is accelerating up or accelerating down: Meaning: When the change is more rapid than the previous change (hence acceleration).
"Invert acceleration dots" default: False
Changes the previous function mentioned: Let’s say you don’t want to know acceleration but you want to know the the A/D is decelerating (meaning: The change is less rapid than the previous change). You can enable this setting. If you enable this it will plot dots on the A/D when we’re decelerating instead of accelerating. (hence deceleration).
"Color entire background of A/D" default: False
In case you desire to plot the entire background of the indicator you can enable this setting. Might make it a little bit more easy to spot changes in the A/D (especially when using multiple indicators).
That’s all in terms of settings. Most of these settings also describe the use case.
The use case as described by TradingView is the following:
“The Accelerator Oscillator (AC) is an indicator developed by Bill Williams that helps traders gauge changes in momentum. It is based on the Awesome Oscillator (AO) and measures the difference between that indicator and its 5-period moving average, effectively showing how quickly the AO changes and predicting what it will do next. If the AC is in positive territory, the upward acceleration is likely to continue. If the AC is in negative territory, the downward acceleration is likely to continue. The bars in the histogram have 2 colors: red indicating a fall in price and green indicating a rise in price. Various specific buy and sell signals can be derived from the color of the bars and whether they are above or below the 0-line.”
I’ve decided to add any alert I could think of: Meaning there are in total 22 customizable alerts to set up when using this indicator. If you have any conditions that I forgot to add feel free to leave a comment.
COT IndexReference:
Trade Stocks and Commodities with the Insiders
Secrets of the COT Report by Larry Williams pg34
The equation is as below:
Current week's value- Lowest value of last three years
---------------------------------------------------------------------------- X 100%
Highest high of last three years-Lowest low of last three years
According to Larry Williams, traders should follow commercials direction. When the commercial index line (yellow line) is above 80, this indicates commercials are bullish. Hence, traders can look for potential buy setup. Conversely, when commercials index line (yellow line) is below 20, this indicates commercials are bearish, we can look for sell setup.
Do note that this is only applicable on Weekly chart as COT reports come out on weekly basis.
Modification from the original COT index from Larry Williams:
1) I've added 1year and 6months period, so traders maybe can look for pullback using shorter period. By default, Larry Williams uses 3 years Commercial index.
2) I've added non-commercials and retail traders index, they basically trade opposite way of commercials.
This indicator should not be used as a timing tool or entry tool, you can use it as your weekly or monthly bias tool. For more information, please read the books. Feel free to modify the code, if u have a better version of this, you may share to me if you want, I will be very grateful!
Student Wyckoff Target Shooter
**Target Shooter — Equal Move Target Tool (Larry Williams idea)**
**1. What this indicator does**
Target Shooter is a tool that measures the last meaningful price swing and projects an **equal move target** in the direction of the breakout.
The logic is simple:
* The market makes a move from point A to point B (a swing high to a swing low, or vice versa).
* Then price breaks out above or below this swing range.
* Target Shooter takes the size of that swing and **adds it in the direction of the breakout**, showing a logical **price target zone** where the move may:
* slow down,
* react,
* or potentially reverse.
This is a practical implementation of the “Equal Moves” idea often referenced by Larry Williams.
---
**2. Core idea (example)**
Example from the classic explanation:
* Price drops from **80 down to 20** → the move is **60 points**.
* The swing range is now: **High = 80, Low = 20**.
* Later, price **breaks above 80**.
Target Shooter assumes:
> “If the market could move 60 points in one direction, after a breakout it may travel another 60 points in the opposite direction.”
So the upside target becomes:
* Move size: 80 − 20 = 60
* Breakout above 80
* **Target = 80 + 60 = 140**
The indicator finds such swings automatically and draws:
* **UT (Upper Target)** on upside breakouts
* **DT (Down Target)** on downside breakouts
---
**3. What you see on the chart**
1. **Target lines**
* When price breaks **above** a previous swing range, the indicator plots a horizontal **UT (Upper Target)** line — the projected equal move target.
* When price breaks **below** the previous swing range, it plots a **DT (Down Target)** line — the downside target.
* Each line is drawn from the breakout bar and extended to the right for a user-defined number of bars.
2. **Price labels**
* A small label “UT” or “DT” is shown at the end of the line with the exact target price.
* This makes it easy to see where the projected target is without checking the scale.
3. **Optional swing range (debug view)**
* There is an option to display the **swing range** that the target is based on (similar to a Donchian channel on previous bars).
* This shows the upper (swing high) and lower (swing low) boundaries the indicator used to define the last move.
---
**4. Key inputs (plain language)**
* **Swing window length (bars)**
How many bars back the indicator looks to find the last meaningful swing (highest high and lowest low).
This is like the length of a Donchian channel used to define the previous range.
Smaller values → more frequent, shorter targets.
Larger values → bigger swings and more distant targets.
* **Minimum move size (in ticks)**
This is a noise filter.
If the distance between the swing high and swing low is smaller than this threshold, no targets are drawn.
The indicator will only react to moves that are big enough to matter for your trading.
* **Breakout type: Close vs High/Low**
* **Breakout by Close**:
The target appears only when the **bar closes** above/below the swing range.
More conservative and fewer false signals.
* **Breakout by High/Low**:
The target appears as soon as the **high** or **low** of the bar breaks the swing range.
Faster and more aggressive, but more sensitive to noise.
* **Target line length (bars)**
How far to the right the UT/DT lines should be extended.
Shorter length → local target zones.
Longer length → important levels visible far into the future.
* **Appearance settings**
* Separate color, width and style for **UT** and **DT** lines.
* Option to show or hide labels with price and “UT/DT” text.
---
**5. How to use Target Shooter in trading**
> Important: this is **not** an entry signal indicator.
> Target Shooter is a **targeting and context tool**, not a standalone system.
Typical uses:
1. **Planning take-profit zones**
* You already have an entry signal from your own strategy (Wyckoff, Larry Williams patterns, levels, volume, whatever you use).
* Target Shooter shows a **logical equal move target** where the current wave can reasonably “shoot”.
* You can:
* place your main take-profit around the target,
* scale out part of the position,
* tighten stops when price approaches the target.
2. **Finding potential reaction / reversal areas**
* Equal move targets often act as **zones of interest**.
* If price reaches a UT/DT level and then shows weakness/absorption/volume spikes or reversal candles, this might be a good place to take profits or look for counter-trend opportunities (for experienced traders).
3. **Assessing trend strength**
* If price **easily exceeds** the equal move target and keeps going without any reaction, it suggests a very strong trend.
* If price **fails to reach** the target and reverses early, the move is weaker than expected.
---
**6. Timeframes**
Target Shooter can be used on:
* **Intraday** (M5, M15, M30, H1) — for shorter-term targets within the day,
* **Higher timeframes** (H4, D1 and above) — for swing and position trades.
General rule:
The **higher the timeframe and the larger the swing**, the **more important** the target level tends to be.
---
**7. Notes and limitations**
* The indicator does **not** predict the future.
It simply projects a geometric equal move from the last swing.
* It should be combined with your own trading framework:
* support/resistance,
* Wyckoff / VSA,
* trend tools,
* volume/flow, etc.
* Always keep proper risk management.
A target is a **scenario**, not a guarantee.
.
Setup Max e Min Larry WilliansLarry Williams used this system to win the trading championship
Hello friends, I bring a script with a trading strategy to be used in futures such as Index, Forex and Commodities. Developed by famous trader Larry Williams.
In them we use two 3-period Simple Moving Averages (Arithmetic) (one with the high price, the other with the low price), and a 21-period Moving Average (Arithmetic) to determine the trend. This will form an average channel with the prices of the maximums and minimums of the last three candles.
Best time charts use the strategy: from 5 minutes to 60 minutes.
This strategy is quite simple. The 21 Moving Average will color according to the trend (Green for bullish, Red for bearish and Gray for transitions). The Script will signal the entry according to the trend by the colors of the candles and also by the signal:
When green, the buy will be on the crossing of the lower Moving Average crossing the candlestick, and the exit will be on the crossing of the candlestick on the next Upper Moving Average.
When red, the sell will be at the crossing of the Upper Moving Average crossing the candlestick, and the exit will be at the crossing of the candlestick on the next Lower Moving Average.
When the Script signals the candle with a purple X, it means that the trend is changing and the entire open operation must be closed.
This system has no Stop, so be careful when using it.
Na linguagem do autor:
Larry Williams usou esse sistema ganhar campeonato de trade
Olá amigos, trago um script com uma estratégia de trade pra ser usada em futuros como Índice, Forex e Commodities. Desenvolvido pelo famoso trader Larry Willians.
Neles usamos duas Médias Móveis Simples (Aritmética) de 3 períodos (uma com o preço da máxima, outra com o preço da mínima), e uma Média Móvel (Aritmética) de 21 períodos para determinar a tendência. Nisso vai formar uma canal de médias com os preços das máximas e mínimas dos últimos três candles.
Melhores tempos gráficos usar a estratégia: de 5 minutos até 60 minutos.
Essa estratégia é bem simples. A Média Móvel de 21 irá colorir de acordo com a tendência (Green pra alta, Red para baixa e Gray para transições). O Script irá sinalizar a entrada de acordo com a tendência pela cores dos candles e também pela sinalização:
Quando green, a compra será no cruzamento da Média Móvel inferior cruzando o candle, e a saida será no cruzamento do candle na Média Móvel Superior seguinte.
Quando red, a venda será no cruzamento da Média Móvel Superior cruzando o candle, e a saida será no cruzamento do candle na Média Móvel Inferior seguinte.
Quando o Script sinaliza o candle com X purple, significa que a tendência está em mudança e deve ser fechada toda a operação em aberto.
Este sistema não possui Stop, portando cuidado quanto a seu uso.
100PipsADay third screen / triple screen strategy MACD and W%RThird Screen Strategy
This particular script is specifically designed around this strategy. D1 MACD & H1 Williams %.
I coded the script in a way that you automatically get the signal that is calculated taking in consideration both the indicators (macd and w%R)
Green means that the daily MACD histogram is above 0 (crowd is bullish) but w%R shows that momentarily there is a lower price (W%R is oversold),
Red is vice versa.
Quote from original post :
Below is how I would normally take a trade using my strategy.
As you can see below in my chart, I look on the D1 chart for the MACD to cross over.
Once it is clear that it has crossed over, I will enter positions on the H1 chart using Williams %.
end quote.
This Script i coded in a way that automatically account for both the indicators, so you don't have to switch between timeframes.
3 Important rules :
To get the indicator set correctly you need to use on 1 Hour time frame
-----------------------
You should wait 6 hours when signal appear to open an other position on the same pair
-----------------------
I coded an alarm that gets triggered when the pair meet both condition (when the bar and/or the background is green) so you can just set it by right clicking the indicator and be relaxed!
Italiano :
Strategia Third screen
Questo particolare script è specificamente progettato attorno a questa strategia. D1 MACD e H1 Williams%.
Ho codificato lo script in modo da ottenere automaticamente il segnale calcolato tenendo conto di entrambi gli indicatori (macd e w% R)
Verde indica che l'istogramma MACD giornaliero è superiore a 0 (la folla è rialzista) ma w% R mostra che momentaneamente esiste un prezzo inferiore (W% R è sotto il livello di oversold),
Il rosso è viceversa.
Ho codificato questo script in un modo che tiene conto automaticamente di entrambi gli indicatori, quindi non è necessario passare da un intervallo di tempo all'altro.
3 Regole importanti:
Per impostare correttamente l'indicatore è necessario utilizzare nel periodo di 1 ora
-----------------------
Dovresti aspettare 6 ore una volta che arriva il segnale per aprire un'altra posizione sullo stessa moneta
-----------------------
Ho codificato un allarme che viene attivato quando sono soddisfatte entrambe le condizioni (ossia quando lo sfondo è verde), quindi puoi semplicemente impostarlo facendo clic con il pulsante destro del mouse sull'indicatore ed essere rilassato!
iPyra◬_ChillyWillyCHILLYWILLY
ChillyWilly looks for the momentum trades.
ChillyWilly combines the 4 different well known momentum indicators to bring the best signals.
ChillyWilly works with any kind of market state, any kind of trading, and any kind of asset.
ChillyWilly has more features than any other momentum indicator in the market: Combining shorter term momentum with longer term momentum, and looking for M's and W's for you.
--------------------------------------
ChillyWilly is designed for longer time frame traders and investors.
All you have to do is:
1- Use it like you would use RSI (ChillyWilly is ranging between 0-100 --> Closer to 0 means Long ~~ Closer to 100 means short)
2- Look for green or orange lines. (Orange means momentum is BOTH in a good location to long and showing a W ; Green means EITHER momentum is in a good location to long or showing a W)
3- Look for red or maroon lines. (Red means momentum is BOTH in a good location to short and showing a M ; Green means EITHER momentum is in a good location to short or showing a M)
------------------------------------------------------------
iPyra◬
Enlighten others
$MTF Fractal Echo DetectorMIL:MTVFR FRACTAL ECHO DETECTOR by Timmy741
The first public multi-timeframe fractal convergence system that actually works.
Market makers don’t move price randomly.
They test the same fractal structure on lower timeframes first → then execute the real move on higher timeframes.
This indicator catches the “echo” — when 3–5 timeframes are printing fractals at almost the exact same price level.
That’s not coincidence. That’s preparation.
FEATURES
• 5 simultaneous timeframes (1min → 4H by default)
• Real Williams Fractal detection (configurable period)
• Dynamic echo tolerance & minimum TF alignment
• Visual S/R zones from every timeframe
• Bullish / Bearish echo convergence signals
• Strength meter (3/5, 4/5, 5/5 TF alignment)
• Zero repainting — uses proper lookahead=off
• Fully Pine v6 typed + optimized
USE CASE
When you see a 4/5 or 5/5 echo:
→ That level is being defended or attacked with intent
→ 80%+ chance the next real move comes from there
→ Trade the breakout or reversal at that exact fractal cluster
Works insane on:
• BTC / ETH (all timeframes)
• Nasdaq / SPX futures
• Forex majors (especially GBP & gold)
• 2025 small-cap rotation setups
100% Open Source • MPL 2.0 • Built by Timmy741 • December 2024
If you know about fractal echoes… you already know.
#fractal #mtf #echo #williamsfractal #multitimeframe #smartmoney #ict #smc #orderflow #convergence #timmy741 #snr #structure
OptiRange | FractalystWhat’s the purpose of this indicator?
This indicator is designed to integrate probabilities with liquidity levels, while also providing a mechanical method for identifying market structure by using Fractals by Williams.
----
How does this indicator identify market structure?
This script identifies breaks of market structure by analyzing candle closures above or below swing levels.
As soon as a candle has closed above or below the initial swing on your charts, the script validates that there is at least one swing preceding the break before confirming it as a structural break.
Once a break is occured then it assigns a numeric ID to the break starting from 1 and draws two extremities: one as liquidity and the other as invalidation (LIQ/INV).
----
What do the extremities show us on the charts?
you'll see two clear extremities on your charts:
1. The first extremity represents the structural liquidity level. (LIQ)
2. The other extremity indicates the level that, if price breaks through it, results in a structural shift to the opposite side. (INV)
----
How does it calculate probabilities?
Each break of market structure, denoted as X, is assigned a unique ID, starting from X1 for the first break, X2 for the second, and so on.
The probabilities are calculated based on breaks holding, meaning price closing through the liquidity level, rather than invalidation. This probability is then divided by the total count of similar numeric breaks.
For example, if 75 out of 100 bullish X1s become X2, then the probability of X1 becoming X2 on your charts will be displayed as 80% in the following format: ⬆ 75%
----
What are the Fractal blocks?
Fractal blocks refer to the most extreme swing candle within the latest break. They can serve as significant levels for price rejection and may guide movements toward the next break, often in confluence with probability analysis for added confirmation.
If the price retraces back to a bullish fractal block, we aim to look for buy/long positions. Conversely, if the price retraces back to a bearish fractal block, we aim to look for sell/short positions.
----
What are mitigations?
Mitigations refer to specific price action occurrences identified by the script:
1- When the price reaches the most recent fractal block and confirms a swing candle, the script automatically draws a line from the swing to the fractal block bar and labels it with a checkmark.
1- If the price wicks through the invalidation level and then retraces back to the fractal block while forming a swing candle, the script labels this as a double mitigation on the chart.
This level will serve as the next potential invalidation level if a break occurs in the same direction.
----
What does the bottom table display?
The bottom table presents numeric breaks across multiple timeframes, with the text color indicating the trend direction. Enabling traders to assess the higher timeframes market trend without needing to switch between timeframes manually.
----
How to use the indicator?
1. Add "OptiRange | Fractalyst" to your TradingView chart.
2. Choose the pair you want to analyze or trade.
3. Start with the 12-month timeframe.
4. Use the table bias with the maximal settings to find the lowest timeframe that’s showing you the mitigation (✓)
5. Confirm that the probability of the current liquidity is higher than 50%.
6. Place your limit order at the Fibonacci level of 0.618 of the mitigation candle.
7. Set your stop-loss at the mitigation level.
8. Determine your take profit based on the liquidity of the current timeframe, or if possible, the liquidity of a higher timeframe in the same direction; otherwise, use the liquidity of the current timeframe.
9. Risk adjustment and Trade management based on your personal preferences.
Example:
----
User-input settings and customizations
----
What makes this indicator original?
- This script leverages Fractals, a fundamental concept in many trading methodologies.
- For a break to be considered valid, price must have at least two swings:
a swing high followed by a swing low for bullish breaks and a swing low follow by a swing high for bearish breaks.
- This means that each swing point is confirmed by the formation of two candles on its left and two candles on its right, totaling 5 candles for each swing high and swing low, thus requiring 10 candles overall. (This strict rule ensures a thorough assessment of market structure before confirming a break.)
- The script assigns a unique numerical ID to each break of structure, starting from 1.
This numbering system enables the script to calculate the probability of the most recent break becoming the next break, while also factoring in the trend direction.
- Additionally, this script provides insights into higher timeframes' break IDs in the bottom/top centre table, keeping traders informed about the overall higher timeframe picture.
- By integrating these methodologies, the script introduces a unique and systematic method for identifying market structure, thereby enhancing its originality in guiding trading decisions.
Terms and Conditions | Disclaimer
Our charting tools are provided for informational and educational purposes only and should not be construed as financial, investment, or trading advice. They are not intended to forecast market movements or offer specific recommendations. Users should understand that past performance does not guarantee future results and should not base financial decisions solely on historical data. By utilizing our charting tools, the buyer acknowledges that neither the seller nor the creator assumes responsibility for decisions made using the information provided. The buyer assumes full responsibility and liability for any actions taken and their consequences, including potential financial losses. Therefore, by purchasing these charting tools, the customer acknowledges that neither the seller nor the creator is liable for any unfavorable outcomes resulting from the development, sale, or use of the products.
The buyer is responsible for canceling their subscription if they no longer wish to continue at the full retail price. Our policy does not include reimbursement, refunds, or chargebacks once the Terms and Conditions are accepted before purchase.
By continuing to use our charting tools, the user acknowledges and accepts the Terms and Conditions outlined in this legal disclaimer.






















