ATR Range Adaptive ATR Range Adaptive — TF-adaptive volatility bands with dashboard.
A precision volatility tool that projects the statistical extent of a "normal" bar move as five horizontal levels around the previous close — and recalculates automatically on whatever timeframe you're viewing.
How it works:
Add the indicator once. From the previous closed bar of the current chart timeframe it draws the middle line (previous close) plus four ATR-multiplied bands — ±0.5 × ATR and ±1.0 × ATR. Switch to 1H → hourly levels. Switch to 5M → 5-minute levels. No presets to change.
What it shows:
- Previous close as the anchor (middle line)
- +100% band (upper strong resistance) at previous close + 1 × ATR
- +50% band (intermediate resistance) at previous close + 0.5 × ATR
- -50% band (intermediate support) at previous close - 0.5 × ATR
- -100% band (lower strong support) at previous close - 1 × ATR
- Corner dashboard: current TF, previous close, 1 ATR as a percentage of price, and each level's value + distance from the live price
Key features:
- Fully TF-adaptive: no fixed daily/monthly assumption — bands follow the chart's timeframe
- Selectable ATR smoothing: RMA (Wilder), EMA, SMA, WMA
- Adjustable ATR length and multiplier
- Level lines extend a configurable number of bars to the right
- Middle line can be toggled independently of the ATR bands
- Dashboard: 6 anchor positions, 4 text sizes, adjustable cell transparency
- Full color palette for each band + header and text
- Tooltip on "1 ATR, %" explains volatility bands (low / normal / elevated / high)
- Clean overlay: only 5 lines and 1 dashboard, no chart clutter
Who it's for:
Traders who want a fast, timeframe-aware read on how far price has already stretched from the previous close — and where a "normal" move statistically ends. Useful for intraday range trading, scalping around ATR extremes, sizing stops, and spotting bars that break out of typical volatility. Индикатор

Индикатор

SMC Volume Footprints SMC Volume Footprints 制作者@silverginging
「SMC Volume Footprints」は、ローソク足の価格変位と相対出来高を組み合わせ、強い値動きがどこから始まったのかをチャート上に可視化するインジケーターです。
単純に売買シグナルを出すのではなく、価格帯別出来高(Volume Profile)と組み合わせて、
* どの価格帯に売買が多く積み上がっているのか
* どの価格帯は売買が少なく、値段が速く通過しやすいのか
* 現在の値動きが壁に止められたのか
* その壁を突破し、今度は足場にできるのか
を判断するために作られています。
ここでいう「構造判断」とは、難しい理論ではありません。価格帯別出来高で市場の「厚い場所」と「薄い場所」を確認し、本インジケーターで値動きが始まった場所と、その動きの強さを確認することです。
### BaseとSingle
**Base**
複数の小さなローソク足と出来高の低下によって形成された持ち合いを検出し、その高値または安値を終値で突破した場合に表示します。
売買のエネルギーをためた場所から発生するブレイクを捉えるための、比較的信頼度の高い検出です。
**Single**
Baseが存在しない場合に、直近の反転足を1本の起点として検出します。
Baseより早く表示される一方、ノイズも多くなるため、補助的な確認として使用します。本スクリプトではBaseを優先し、Singleを第二候補として扱います。
### 太枠と細枠の違い
枠の太さは、検出された値動きにどの程度の出来高が伴っていたかを表します。
**太枠**
相対出来高が設定した基準を超えた場合に表示されます。価格が大きく動いただけでなく、平均を上回る出来高が伴った、存在感の強いFootprintです。
初期設定では、出来高が平均の1.5倍以上になると太枠・濃い色・`★`で強調されます。
**細枠**
価格変位の条件は満たしているものの、出来高が強調基準に達していない場合に表示されます。
細枠は「無効」という意味ではありません。出来高の裏付けが太枠ほど強くないため、価格帯別出来高やAVWAP、上位足の方向などによる追加確認が必要なFootprintです。
枠の太さは売買の優劣を断定するシグナルではなく、出来高による強弱を一目で比較するための段階表示です。
### PとVの意味
各ラベルには、値動きと出来高の強さが表示されます。
* `P`:ローソク足の実体をATRで割った価格変位の大きさ
* `V`:現在の出来高を平均出来高で割った相対出来高
Pが大きいほど価格の変位が強く、Vが大きいほど出来高による裏付けが強いことを示します。
「価格は大きく動いたが出来高は少ない」「価格変位と出来高の両方が強い」といった違いを、P・V・枠の太さによって確認できます。
### 価格帯別出来高との組み合わせ
本インジケーターは、価格帯別出来高と重ねて使用することを意図して設計されています。
価格帯別出来高の厚い場所は、多くの市場参加者が売買した価格帯です。反対に、出来高の薄い場所は売買の積み上がりが少なく、価格が速く通過しやすい場所です。
例えば、次のように確認します。
* 出来高の厚い価格帯で太枠が出た
→ 多くの売買を伴う攻防や反転の可能性を確認する
* 出来高の厚い価格帯の端を、太枠で突破した
→ 出来高を伴って壁を抜けた可能性を確認する
* 出来高の薄い価格帯で細枠が出た
→ 強い買い・売りというより、注文の少なさによって価格が動いた可能性も考える
* 突破後にBaseやBREAK CLOSEへ戻り、再び反発した
→ 以前の壁を新しい足場として維持できているかを確認する
このように、価格帯別出来高で「市場の地形」を見て、SMC Volume Footprintsで「その場所に残された値動きと出来高の痕跡」を確認します。
### BREAK CLOSE
`BREAK CLOSE`は目標価格ではなく、BaseまたはSingleからのブレイクが確定したローソク足の終値です。
その後、この価格が支持線・抵抗線として機能するか、再び割り込むかを確認するための基準として使用します。
`EXTREME`や`GAP`は、急激な価格変位やギャップが発生した場所を確認するための補助マーカーです。単独の売買シグナルではありません。
### 基本的な使い方
1. 価格帯別出来高で、出来高の厚い場所と薄い場所を確認する
2. BaseまたはSingleがどの位置に発生したかを見る
3. P・V・枠の太さから、価格変位と出来高の強さを確認する
4. BREAK CLOSEや起点ゾーンへのリテストを見る
5. AVWAPや上位足の方向も加えて最終判断する
本インジケーターは自動売買システムではなく、値動きの起点とブレイクの質を整理するための補助ツールです。
### 初期設定の主な基準
* ATR・平均出来高の計算期間:50
* 太枠となる出来高基準:平均出来高の1.5倍
* Base形成時の低出来高基準:平均出来高の0.8倍
* 最小Power:1.5
* 最大Power:5.0
各市場や時間足に応じて調整できます。
### 注意事項
本スクリプトはTradingViewから取得できるOHLCVデータを使用しています。板情報、注文の追加・取消し、正確なBid/Ask別出来高、デルタ、OFIなどを直接解析する本来のFootprintチャートではありません。
名称の「Footprints」は、価格と出来高がチャート上に残した痕跡を可視化するという意味で使用しています。
また、出来高データの性質は銘柄やデータ配信元によって異なり、FXなどではティック出来高が使用される場合があります。
確定足表示を有効にした場合、シグナルはローソク足の終値確定後に描画されます。過去の検出結果は、将来の値動きや利益を保証するものではありません。
全文をTradingView用のBBCode形式で英訳しました。
SMC Volume Footprints
Created by @silverginging
SMC Volume Footprints is an indicator that combines candlestick price displacement with relative volume to visualize where significant price moves originated.
Rather than simply generating buy or sell signals, it is designed to be used together with Volume Profile to assess:
Which price levels have accumulated substantial trading activity
Which price levels have limited participation and may be crossed quickly
Whether the current price move has been stopped by a barrier
Whether price has broken through that barrier and can now use it as new support or resistance
“Market structure analysis” may sound complicated, but the idea is simple. Volume Profile shows where trading activity is concentrated and where it is sparse. This indicator then shows where a price move began and how strongly price and volume supported that move.
Base and Single
Base
A Base is detected when several small candlesticks and declining volume form a consolidation area. It is displayed when price closes above the high or below the low of that area.
This is a relatively higher-confidence detection designed to identify breakouts originating from areas where price and volume have compressed.
Single
When no Base is available, the indicator uses a recent reversal candle as a single-bar origin point.
A Single may appear earlier than a Base, but it can also produce more noise. For this reason, it is intended as a secondary confirmation. The script prioritizes Base structures and uses Single structures as the second option.
Thick and Thin Borders
Border thickness indicates how much relative volume accompanied the detected price move.
Thick Border
A thick border appears when relative volume exceeds the selected threshold. It represents a more prominent Footprint in which a significant price move was accompanied by above-average volume.
Under the default settings, volume of at least 1.5 times its average is emphasized with a thick border, darker coloring, and a ★ symbol.
Thin Border
A thin border appears when the price-displacement requirement is met, but volume does not reach the emphasis threshold.
A thin border does not mean that the Footprint is invalid. It means that the move has less volume confirmation than a thick-border Footprint and therefore requires additional confirmation from Volume Profile, AVWAP, or the higher-timeframe trend.
Border thickness is not a definitive buy or sell signal. It is a graded visual display that allows users to compare the volume strength of detected price moves at a glance.
What P and V Mean
Each label displays the strength of the price move and its accompanying volume.
P : Price displacement calculated by dividing the candlestick body size by ATR
V : Relative volume calculated by dividing the current volume by average volume
A higher P value indicates stronger price displacement, while a higher V value indicates stronger volume confirmation.
P, V, and border thickness make it possible to distinguish between situations such as “price moved significantly on low volume” and “both price displacement and volume were strong.”
Using the Indicator with Volume Profile
This indicator was specifically designed to be overlaid and used together with Volume Profile.
High-volume areas represent price levels where many market participants have traded. Low-volume areas contain less accumulated trading activity and may allow price to move through them more quickly.
Examples of how to interpret the combination include:
A thick-bordered Footprint appears inside a high-volume area
This may indicate an active battle between buyers and sellers or the possibility of a reaction from that price area.
Price breaks through the edge of a high-volume area with a thick-bordered Footprint
This may indicate that price has broken through a market barrier with volume confirmation.
A thin-bordered Footprint appears inside a low-volume area
Consider the possibility that price moved because of limited trading participation rather than exceptionally strong buying or selling pressure.
After a breakout, price returns to the Base or BREAK CLOSE and reacts again
Observe whether the former barrier is being maintained as a new support or resistance level.
In this way, Volume Profile provides a view of the market’s “terrain,” while SMC Volume Footprints shows the price-and-volume traces left at specific locations within that terrain.
BREAK CLOSE
BREAK CLOSE is not a price target. It represents the closing price of the candlestick that confirmed the breakout from a Base or Single structure.
It can be used as a reference level to observe whether the breakout close later acts as support or resistance, or whether price moves back through it.
EXTREME and GAP are supplementary markers used to identify areas where unusually large price displacement or a price gap occurred. They are not standalone buy or sell signals.
Basic Workflow
Use Volume Profile to identify high-volume and low-volume areas.
Check where a Base or Single structure has appeared.
Use P, V, and border thickness to evaluate price displacement and volume strength.
Observe retests of BREAK CLOSE and the origin zone.
Include AVWAP and the higher-timeframe direction in the final assessment.
This indicator is not an automated trading system. It is a supporting tool for organizing the origin of price moves and evaluating the quality of breakouts.
Main Default Parameters
ATR and average-volume calculation period: 50
Volume threshold for a thick border: 1.5 times average volume
Low-volume threshold for Base formation: 0.8 times average volume
Minimum Power: 1.5
Maximum Power: 5.0
These parameters can be adjusted to suit different markets and timeframes.
Important Notes
This script uses OHLCV data available through TradingView. It is not a conventional Footprint chart that directly analyzes order-book data, order additions or cancellations, precise Bid/Ask volume, Delta, or Order Flow Imbalance (OFI).
The term “Footprints” in the indicator’s name refers to the traces that price and volume leave on the chart.
The nature and quality of volume data vary depending on the instrument and data provider. Some markets, including Forex, may use tick volume rather than actual traded volume.
When confirmed-bar display is enabled, detections are drawn only after the candlestick has closed. Historical detections do not guarantee future price movements or profits.
Индикатор

jrhMultORB_ChecklistjrhMultORB_Checklist — Documentation
Non-destructive fork of the real jrhMultORB indicator. Every original input, calculation, marker, and alert is untouched — this version adds one new group ("Execution Checklist") and a second table wired directly to jrhMultORB's actual internal state, so the checklist can never disagree with the chart markers the way a separate/standalone recreation could.
What's New vs. the Original jrhMultORB
Only one new input group was added:
SettingWhat it controlsShow Checklist TableMaster on/off for the new tablePositionWhere it renders (Top Right / Top Left / Bottom Right / Bottom Left)Text SizeTiny / Small / Normal / Large
Everything else — Opening Range, Custom Range, Breakout Signals, Targets, Bull/Bear Target levels, Session Moving Average, Trend & Momentum, the original Info Table, and Style — is 100% identical to your source file.
Execution Checklist Table — Row Reference
OR Levels
Locked Opening Range high–low (orh–orl) once the OR session ends. Shows "forming..." while still building.
Day Bias / ADX
Same two readouts as your original Info Table:
Bullish / Bearish / Neutral — day_dir, comparing this session's OR midpoint to the previous session's
ADX value — same adxVal as the ADX row in your Info Table
Breakout Up / Breakout Down
Reflects upSignalUsed / downSignalUsed directly — "Fired this session" or "Not yet".
Retest (Up) / Retest (Down)
The core entry-decision row, reading waitRetestUp/waitRetestDown, retest_up/retest_down, and rtUpOutcome/rtDownOutcome directly from the real script:
StatusMeaningActionNot yet (from Breakout row)No breakoutWaitArmed - awaiting retest of ORH/ORLBreakout fired, watching for the retest touchWaitRTC - continuation confirmedRetest candle closed back through the levelEntry signal in the breakout directionRTF - retest failedRetest candle closed back inside the rangeDon't enter continuation; watch the opposite Rev/Fade rowRetest window expired (stale)No touch within your Max Bars to WaitVoid
Includes (N bars ago), computed from waitRetestUpBar/waitRetestDownBar — the actual bar index your real script arms the retest watch on. This tells you whether an RTC/RTF is live or historical context.
Rev/Fade (after Up-fail) / (after Dn-fail)
Only activates after the matching Retest shows RTF. Reads waitRevFadeLong/waitRevFadeShort and revLong/fadeLong/revShort/fadeShort directly:
StatusMeaning—Not armedArmed - watching ORL/ORH for reversal/fadeWatching the opposite level after an RTFREV - reversed through ORL/ORH, fresh short/longOpposite level closed through — new opportunity in the new directionFADE - rejected at ORL/ORH, range holdingOpposite level touched but rejected — range is holding
Also includes (N bars ago), from waitRevFadeLongBar/waitRevFadeShortBar.
Signal vs Bias Check
Compares a confirmed RTC direction against day_dir (the same Day Bias shown two rows up — not a separate ADX-based proxy):
DisplayMeaningNo conflictNo confirmed RTC yet, or it agrees with Day Bias⚠ Confirmed LONG vs Bearish Day BiasRTC long confirmed while Day Bias reads Bearish⚠ Confirmed SHORT vs Bullish Day BiasRTC short confirmed while Day Bias reads Bullish
A caution flag, not a stop signal — it's a cue to size down, tighten stops, or be skeptical of extended targets, not an automatic skip.
Important Usage Notes
Retest/Rev-Fade rows are historical snapshots. They hold whatever text they last resolved to until the next OR session resets them — always check the (N bars ago) tag before treating a status as a live signal.
Day Bias / ADX recalculates live, so it can visibly diverge from an older Retest status as the session progresses.
All checklist state resets automatically at the start of each new OR session (or_start), same as your original script's own state.
This checklist reads your actual script's internal variables — it cannot disagree with the breakout/retest/REV/FADE markers drawn on the chart, since both come from the same calculation.
Still no automatic stop/target/position-size calc — pair with your own risk rules, same as before. Индикатор

VPIN Flow Regime [OutOfSampleLab]VPIN Flow Regime visualises order-flow toxicity and buy/sell pressure directly on your chart, with non-repainting flow-price divergence. It describes the current state of the tape. It does not give buy or sell signals.
How it works
- Each bar's volume is split into buy and sell parts using Bulk Volume Classification: the buy fraction is the CDF of the standardised close-to-close change. Two paper-faithful variants are selectable: the standard-normal CDF (Easley, Lopez de Prado & O'Hara, 2012) or the fat-tailed Student-t CDF with 0.25 degrees of freedom (their 2016 paper). To our knowledge no other public script offers both.
- VPIN toxicity = sum |buy - sell| / sum volume over N bars. An unsigned measure of how one-sided flow has been. It is coloured by its own rolling percentile into a regime light: Quiet, Normal, Elevated, Burst.
- Buy pressure = net flow rescaled to 0-100 (50 = balanced).
- Divergence: when price makes a higher high (or lower low) that net flow does not confirm. Confirmed on pivots a few bars later, so it never repaints. By default the divergence lines and labels are drawn directly on the price chart.
Alerts
- Toxicity crossing into Elevated / Burst / back to calm.
- Bullish / bearish flow-price divergence.
All alerts are state-change events, not trade instructions.
Honest limitations (please read)
- This is a bar-based approximation of VPIN, not tick-level VPIN on a true volume clock. Read relative levels and percentiles, not absolute values.
- TradingView volume is feed-dependent; on many FX/index/CFD symbols it is tick count, not traded volume, and the reading is weak there. Prefer symbols with real volume.
- Aggressor classification is imperfect and depends on the window settings.
This is an impersonal educational tool that runs the same for everyone. Not financial advice, no performance claims.
References: Easley, Lopez de Prado & O'Hara (2012), Review of Financial Studies 25(5); (2016), Journal of Financial Economics 120(2); Lee & Ready (1991), Journal of Finance 46(2). Индикатор

Индикатор

Dividends, Returns, and Growth Calculator**1 / 3 / 5 / 10 Year Returns, Income and Value**
This indicator estimates how a fixed investment would have performed over the past 1, 3, 5, and 10 years.
It combines historical price performance, gross dividend distributions, optional dividend reinvestment, accumulated shares, latest payout income, trailing-12-month dividend yield, and current position value in one compact table.
The script is designed for dividend-paying stocks, ETFs, and funds.
## Main Features
* Calculates 1-year, 3-year, 5-year, and 10-year price returns
* Calculates total return with or without dividend reinvestment
* Simulates whole-share or fractional-share DRIP
* Uses actual historical gross dividend events
* Estimates the delay between dividend events and cash distribution
* Calculates trailing-12-month dividend yield
* Shows the cash generated by the latest completed distribution
* Shows the number of shares currently held
* Shows the current market value of the simulated position
* Automatically estimates monthly, quarterly, semi-annual, or annual payout frequency
* Uses daily data internally, allowing the table to work on intraday and higher-timeframe charts
## Table Columns
### Term
The historical investment period being simulated:
* 1Y
* 3Y
* 5Y
* 10Y
### Start
The historical closing price used to establish the original position.
The initial investment is divided by this price to calculate the original number of shares purchased.
### Price %
The change in share price from the historical starting price to the current price.
Dividends are not included.
### Total %
The total return generated by the investment, including dividends.
The calculation changes depending on whether dividend reinvestment is enabled.
**Reinvest Dividends enabled**
Total return includes:
* The current value of the original shares
* The current value of all shares purchased through DRIP
* Dividends generated by DRIP-acquired shares
* Any remaining whole-share DRIP cash
* Any dividend cash waiting for the estimated distribution date
This represents a compounded total-return simulation.
**Reinvest Dividends disabled**
Total return includes:
* The current value of the original shares
* All dividends received during the selected period
* Any dividend payment that has been earned but is still pending
Dividends are assumed to be withdrawn after each payout. They are still counted as investment return, but they do not purchase additional shares or compound.
### DIV Yld TTM
The trailing-12-month dividend yield.
It is calculated as:
Total gross dividends per share recorded during the last 365 days divided by the current share price.
This calculation uses actual historical dividend events rather than a financial-statement estimate.
Special dividends, payout increases, payout reductions, and irregular distributions may therefore affect the displayed yield.
### Last Payout
The cash generated by all shares held for the latest completed distribution.
The payout is calculated using the number of shares owned when that distribution was earned.
With DRIP enabled, this is the cash received before the payment was reinvested.
With DRIP disabled, it is the cash generated by the original shares.
The displayed prefix represents the estimated distribution frequency:
* M = Monthly
* Q = Quarterly
* S = Semi-Annual
* A = Annual
### Shares
The number of shares currently held in the simulation.
With dividend reinvestment enabled, this includes the original shares and all additional shares purchased through DRIP.
With dividend reinvestment disabled, the share count remains equal to the original shares purchased at the beginning of the selected period.
### Value
The current market value of the shares still held.
With dividend reinvestment disabled, the Value column always shows:
Current shares held multiplied by the current share price.
Previously withdrawn dividends are not added to Value.
With dividend reinvestment enabled, the user can select:
**Total Value**
Includes the current market value of all shares plus remaining and pending dividend cash.
**Stock Value Only**
Includes only the number of shares held multiplied by the current share price.
## Dividend Reinvestment
When dividend reinvestment is enabled, each historical distribution is calculated using the number of shares held at that time.
The resulting dividend cash becomes available on the estimated distribution date and is reinvested using the closing price on that date.
Two DRIP methods are available.
### Whole Shares Only
Only complete shares are purchased.
Unused dividend cash is carried forward until enough cash is available to purchase another full share.
### Fractional Shares
All available dividend cash is reinvested, including fractional shares.
This generally produces a more complete compounding simulation because no cash is left waiting for a whole-share purchase.
## Distribution-Date Estimate
TradingView provides historical dividend events but does not consistently provide the actual historical cash payment date for every symbol.
This script can therefore delay reinvestment until an estimated distribution date.
Automatic defaults are:
* ETFs and funds: 7 calendar days
* Individual stocks: 28 calendar days
The delay can also be disabled or set manually.
When the delay is disabled, dividend cash is treated as available on TradingView’s dividend-event date.
## Important Notes
This indicator is a historical simulation and does not guarantee future performance, income, or dividend growth.
Results depend on the completeness and accuracy of TradingView’s historical price and dividend data.
The simulation does not include:
* Income taxes
* Dividend withholding taxes
* Brokerage commissions
* Foreign-exchange conversion costs
* Bid-and-ask spreads
* Broker-specific DRIP discounts
* Broker-specific reinvestment timing
* Slippage
* Corporate actions not represented correctly in TradingView’s data
Gross dividend values are used.
Actual investor results may differ depending on tax residency, account type, broker policies, currency conversion, and dividend eligibility.
This indicator is intended for research, comparison, and educational purposes only. It is not financial advice.
Индикатор

Strong ETF Screener | ProjectSyndicateStrong ETF Screener turns dozens of charts into a single institutional-style dashboard, ranking a curated universe of the 40 largest US-listed ETFs by performance across six timeframes and scoring each one on professional-grade risk metrics — Beta, Sharpe, Sortino, Omega, Z-Score, and Kelly — so you can find the market's leaders and weigh their risk-adjusted quality at a glance, all on one clean, sortable panel. Every figure is computed live on the daily timeframe from real price history, not hard-coded, so the board reflects the market as it actually is right now.
📊 Curated Top-40-by-AUM Universe — the screener watches the 40 biggest US-listed ETFs by assets under management in one place: broad-market and S&P 500 cores (VOO, SPY, IVV, VTI), growth and tech (QQQ, VUG, VGT, XLK, SMH), international and emerging markets (VEA, IEFA, VXUS, VWO, IEMG), bonds (BND, AGG, TLT, BNDX, VCIT), factor and income (SCHD, VYM, VIG, QUAL, JEPI, RSP), and alternatives like gold (GLD) and spot Bitcoin (IBIT). Instead of flipping through forty charts, you see every fund's performance and risk profile side by side and immediately spot which sleeve of the market is leading and which is rolling over.
🗓️ Six-Timeframe Performance — each ETF is tracked across Week, Month, Quarter, 6-Month, 12-Month, and Year-to-Date returns, so you can separate a one-week move from a genuine long-run trend and see momentum building or fading across horizons in a single row.
🧮 Institutional Risk Metrics, Done Properly — beyond raw returns, every fund is scored on Sharpe (excess return per unit of total volatility), Sortino (return per unit of downside risk only), Omega (probability-weighted gains versus losses above the risk-free threshold), Z-Score (how stretched the recent move is in standard deviations), and the Kelly fraction (a theoretical optimal-sizing read from return and variance). The stats are annualized from daily returns over a rolling one-year window with a configurable risk-free rate, so the risk picture is consistent and comparable across the whole list — letting you line a high-flying tech fund up against a steady bond ETF on the same footing.
🎯 Basket-Relative Beta — Beta is measured against an equal-weight basket of the 40 ETFs in the screener, so it tells you how a fund moves relative to this specific top-40 cohort rather than a single broad index. Beta above 1 swings harder than the group; below 1 is steadier — an instant read on which names amplify the market and which cushion it. You control the lookback length used for the beta and correlation calculation.
🌡️ Annualized Weekly Volatility — a dedicated Wk Vol column annualizes the standard deviation of recent weekly returns, giving you a fast read on how violent each fund's price action is before you size into it — so a leveraged-feeling growth or crypto ETF never gets mistaken for a sleepy aggregate-bond fund.
🔀 Dynamic Sorting — sort the entire board by any of the six performance columns, or by static AUM rank, with a single setting. Rank by YTD to find the year's leaders, by Week to catch what is moving on fresh flows, or by any horizon in between — the table re-ranks instantly.
🎨 Bloomberg-Amber Theme with Color-Coded Strength — a clean amber-on-black dashboard with a multi-level gradient that runs from bright amber on the strongest gains through to deep red on the steepest losses, so strength and weakness jump out the moment you look at the panel.
🧩 Fully Customizable Dashboard — place the table anywhere on the chart (Top / Middle / Bottom paired with Left / Center / Right), choose your text size (Tiny / Small / Normal / Large), set the sort column, the beta length, and the risk-free rate and periods — all from the settings menu, no code editing required. The 40-ticker list is a single, clearly labeled block in the source, so refreshing the universe as AUM rankings shift is a quick edit.
🔒 Daily-Timeframe Lock — the screener is built for daily data and will prompt you to switch if you load it on a lower timeframe, so the returns, volatility, and ratios are always calculated on the basis they are designed for.
⚡ Lightweight and Efficient — the whole 40-name board is built from a tight, well-organized script that runs smoothly on TradingView, with a clean merged title heading and an alternating-row layout for easy reading. Delisted or halted tickers degrade gracefully to blank rows rather than breaking the panel.
🎯 Why this is different — most watchlists show you price and maybe a percentage move. This screener puts performance and a full institutional risk stack — Sharpe, Sortino, Omega, Z-Score, Kelly, Beta, and annualized volatility — for the forty largest ETFs on one sortable, color-coded panel, so you are ranking opportunities by risk-adjusted quality, not just chasing the biggest green number.
🚀 Where to use it — apply it to any daily chart to monitor the ETF leadership landscape as a whole. Use it for top-down asset-allocation and rotation ideas, cross-sleeve comparison (equity vs bond vs commodity vs crypto), and risk screening before you drill into an individual fund's chart for entry timing.
⚠️ Important — this is a research and decision-support dashboard, not a buy/sell system, and it makes no performance guarantees. The 40-name universe is a snapshot of the current largest ETFs by AUM and will drift over time; the board re-ranks live, but membership is fixed until you update the ticker list. All figures are historical and descriptive, computed from past price data, and say nothing certain about the future. Risk metrics like Sharpe, Sortino, Omega, Z-Score, and Kelly are simplified, assumption-based estimates and should inform your judgment, not replace it. Always pair the screener with your own analysis and risk management. Индикатор

Индикатор

jrhORBChecklistjrhORBChecklist — Documentation
Standalone companion script that automates the ORB entry/exit checklist as a live TradingView table. Built to mirror the rules described for jrhMultiORB (close-only breakout, retest RTC/RTF, Failed-ORB REV/FADE, max-bars expiration, one-signal-per-direction lock).
Input Groups
Group Setting What it controls
Opening Range Window OR Session (exchange time)
The session window used to build the Opening Range (default 09:30–10:00)
Session Timezone IANA timezone for the OR session (default America/New_York)
Plot OR High/Low on Chart Toggles the lime/red OR High/Low step-lines
Retest / Reversal Rules Max Bars to Wait How long a retest or reversal/fade watch stays armed before it's abandoned as stale
Day Bias / Strength Filter ADX/DMI Length, ADX Smoothing Standard ADX/DMI calculation settings
ADX 'Weak Trend' Threshold Below this, bias reads "Weak / Choppy" regardless of DI direction
Checklist Table Show Checklist Table Master on/off
Position Where the table renders on the chart
Table Row Reference
OR Range
Shows the locked Opening Range high–low once the session window closes. Reads "forming..." while the session is still building. Everything else in the table is measured against these two levels.
Day Bias / Strength
Live ADX/DMI reading, recalculated every bar (unlike the rows below, which are historical snapshots). Format: Strong Up/Down (ADX X) or Weak / Choppy (ADX X). A low ADX going into a session means breakouts are more prone to failing/reversing.
Breakout Up / Breakout Down
Shows whether that direction's breakout has fired this session ("used this session" / "not yet"). Each direction can only fire once per session (one-signal-per-direction lock) — a second breakout attempt in the same direction won't retrigger it.
Retest (Up) / Retest (Down)
The core entry-decision row. Cycles through these states:
Status Meaning Action
OR locked — waiting for breakout No breakout yet Wait
Breakout confirmed — awaiting retest Breakout closed beyond the OR level, watching for price to come back and tag it Wait
RTC — continuation confirmed Retest candle closed back through the level, confirming the breakout is holding Entry signal in the breakout direction
RTF — retest failed Retest candle closed back inside the range Do not enter continuation; watch the opposite Reversal/Fade row instead
Retest window expired (stale) No retest touch within Max Bars to Wait Treat as void
Includes a (N bars ago) tag showing how long ago that status last changed — critical for judging whether an RTC/RTF is a live, actionable signal or old context from earlier in the session.
Reversal/Fade (from Up-fail) / (from Dn-fail)
Only activates after the matching Retest row shows RTF. Watches the opposite OR level:
Status Meaning
— Not armed (no RTF has occurred yet)
Armed - watching ORL/ORH for reversal/fade RTF occurred, now watching the opposite level
REV/FADE tagged at OR Low/High Opposite level was reached within the window — a separate, opposite-direction opportunity, distinct from the original breakout
Fade window expired (stale) No touch within Max Bars to Wait
Also includes a (N bars ago) tag.
Signal vs Bias Check
Compares the current Retest status against the live Day Bias reading:
Display Meaning
No conflict No confirmed RTC exists, or it agrees with Day Bias
⚠ Confirmed LONG vs Bearish Bias An RTC long is confirmed while Day Bias reads Strong Down
⚠ Confirmed SHORT vs Bullish Bias An RTC short is confirmed while Day Bias reads Strong Up
This is a caution flag, not a stop signal — it surfaces a judgment call (skip, reduce size, or tighten targets) rather than making it for you.
Important Usage Notes
• Retest/Fade rows are historical snapshots, not live recalculations. Once RTC/RTF/REV/FADE fires, that text stays displayed unchanged until the next session reset — always check the (N bars ago) tag before treating a status as a current signal.
• Day Bias is the opposite — it's a live indicator value recalculated every bar, so it can visibly diverge from an older Retest status as price evolves through the session.
• All session-tracking state (OR levels, breakout-used flags, retest/fade bar counters) resets automatically at the start of each new Opening Range session.
• This script does not compute stop/target levels or position size — pair it with your own risk rules.
Индикатор

Options ConfluenceBacktest Strategy. EMA (13-period) — Trend Direction Filter
The Exponential Moving Average weights recent price more heavily than older price, so it reacts faster to changes than a simple moving average. Here it's used as a basic trend filter: price above EMA = bullish bias, price below = bearish bias. It's the "which side of the market am I even allowed to trade" gate.
2. VWAP — Institutional Fair Value Reference
Volume-Weighted Average Price is the average price weighted by volume traded at each price level, resetting each session. It's widely used by institutional/algo desks as a benchmark for "fair value" for the day — price above VWAP suggests buyers are in control and paying a premium to average; below suggests sellers are dominant. Combining EMA + VWAP means you're requiring both a short-term trend signal and an institutional positioning signal to agree before considering a trade.
3. Chandelier Exit — Volatility-Adjusted Trend/Stop Indicator
Originally built by Chuck LeBeau, this uses ATR (Average True Range) to set a trailing stop: highest high (over N bars) − ATR × multiplier for longs, lowest low + ATR × multiplier for shorts. The idea is the stop distance scales with how volatile the market currently is — tighter stops in calm markets, wider stops in choppy ones — rather than using a fixed point/percentage stop. Here it's repurposed as a directional filter (ceDir): once price closes beyond its own ratcheted stop line, the market is considered to have flipped regime. This is the piece that was buggy before — a proper Chandelier Exit locks in its stop level as the trend extends (never loosens it), so it acts like a ratchet defining trend persistence, not just a moving band.
4. BOS (Break of Structure) — Price Action / Smart Money Concepts
This comes from ICT/Smart Money Concepts trading theory. A "break of structure" happens when price closes beyond a recent swing high (bullish BOS) or swing low (bearish BOS), signaling that the prevailing short-term structure has been broken and a new directional leg may be underway. Here it's simplified to "close beyond the highest high/lowest low of the last N bars" — a lightweight proxy for genuine swing-point BOS.
How they combine — Confluence Trading
The core theory tying this together is confluence: no single indicator is trusted alone; a trade only triggers when multiple independent signal types agree simultaneously:
Trend (EMA)
Institutional reference level (VWAP)
Volatility-adjusted regime/momentum (Chandelier direction)
Structural price action break (BOS)
The logic is that each indicator alone throws false signals regularly, but the intersection of unrelated methodologies (a moving average, a volume-weighted price, a volatility band, and a structural break) filters out a lot of that noise, at the cost of trading much less frequently — you're trading only the highest-conviction setups where trend, order flow proxy, volatility regime, and structure all point the same way at once.
The tradeoff worth knowing: confluence models like this tend to have fewer trades and (in theory) higher win rates per trade, but they also lag — by the time all four conditions align, you're often entering after a meaningful chunk of the move has already happened, which matters a lot for options where theta is working against you while you wait for the setup to form. Стратегия

Day-Extreme Reversal Signals (SPY 5m)What you'll see on the chart
5-minute scouts (small triangles + small labels). When a bar makes a new session low with one of the study shapes, it's marked with its honest hold-rate: 5m RevClose: holds 28% (base 14%) (green bar closing in its top third at the low — the most common day-low shape), 5m Spring: holds 17% (big lower wick, close held up), 5m V-confirm: holds 27% (green bar defending the prior bar's flush). Deliberately subtle styling — at 17–28% these are scouts, not entries. High-side scouts get the same treatment with their (weak) 11–12% numbers.
Hourly signals (full background band + large label). When a completed hourly bar prints one of the shapes at a session extreme, the next 12 five-minute bars get a colored band and a loud label: HOURLY RevClose at session low: DAY LOW 64% (base 35%). This is the real signal tier — teal bands for lows, orange for highs (with the high label honestly adding "expect a retest attempt," since even the best high pattern only holds 47%). Alerts fire on both hourly signal types.
The decision panel (top-right)
- Live session state: current session low/high, when each was set, and — the piece I think you'll use most — "Odds the day extreme has ALREADY printed: low ~X%, high ~Y%", interpolated live from the measured time-of-day curves as the session progresses. At 10:30 ET it'll say the low is ~47% likely already in but the high only ~32%.
- Hourly forming row: what shape the current, incomplete hourly bar is building (labeled provisional — it only becomes a signal at the hour close).
- The two structural rules, always visible: lows are V-shaped — 55% never retest within 30 minutes, don't wait for confirmation; highs retest 82% of the time — first touch is rarely final, exits can be patient.
- Timing reference (lows in by 10:00/10:30/11:30 on 37/47/60% of days; highs skew late) and the honesty footer distinguishing scout-grade from signal-grade percentages.
Design honesty, as always
The percentages are P(that extreme holds as the day's extreme) from real-time simulation on 60 days of 5m and 730 days of hourly data — the number you actually face in the moment, which is why they're much lower than the hindsight lifts from the study (a 3.9× lift collapsed to 28% precision once you can't peek at the future). None of this has been tested as an entry system with P&L — it's decision support for the scalps you're already taking within the daily-bias framework. The natural marriage: an hourly RevClose band firing while the bias panel shows an active long tier is the highest-alignment moment this whole project can currently produce. If you want, the next study can quantify exactly that intersection — hold-rate and forward return when hourly low-signals fire during active T1–T3 windows. Индикатор

Индикатор

Индикатор

MAGALHAES NEOWAVE ONDA 3 PRO//@version=6
indicator(
title="MAGALHAES NEOWAVE ONDA 3 PRO",
shorttitle="NEOWAVE O3 PRO",
overlay=true,
max_lines_count=500,
max_labels_count=500
)
//==================================================
// 1. MOTOR DA ESTRUTURA
//==================================================
grupoMotor = "1. Motor da Estrutura"
inicioLeitura = input.time(
defval=timestamp("01 Jan 2024 00:00 +0000"),
title="Iniciar/Reiniciar leitura em",
confirm=true,
group=grupoMotor
)
forcaPivot = input.int(
defval=5,
title="Força do pivô",
minval=2,
maxval=30,
group=grupoMotor
)
hipoteseCorrecao = input.string(
defval="Onda 2",
title="Correção analisada",
options= ,
group=grupoMotor
)
retracaoMinima = input.float(
defval=0.236,
title="Retração mínima para validar",
minval=0.05,
maxval=1.00,
step=0.001,
group=grupoMotor
)
fibIdealMinimo = input.float(
defval=0.382,
title="Início da região Fibonacci válida",
minval=0.05,
maxval=1.00,
step=0.001,
group=grupoMotor
)
fibIdealMaximo = input.float(
defval=0.886,
title="Fim da região Fibonacci válida",
minval=0.05,
maxval=1.50,
step=0.001,
group=grupoMotor
)
invalidarEm100 = input.bool(
defval=true,
title="Invalidar se fechar além de 100%",
group=grupoMotor
)
scoreMinimo = input.int(
defval=80,
title="Índice mínimo de confirmação",
minval=40,
maxval=100,
step=20,
group=grupoMotor
)
//==================================================
// 2. TEMPO NEOWAVE
//==================================================
grupoTempo = "2. Tempo NeoWave"
relacaoMinimaTempo = input.float(
defval=1.00,
title="Tempo mínimo da correção",
minval=0.10,
maxval=5.00,
step=0.05,
group=grupoTempo
)
relacaoIdealInicio = input.float(
defval=1.50,
title="Início da janela temporal ideal",
minval=0.20,
maxval=6.00,
step=0.05,
group=grupoTempo
)
relacaoIdealFim = input.float(
defval=2.00,
title="Fim da janela temporal ideal",
minval=0.30,
maxval=8.00,
step=0.05,
group=grupoTempo
)
//==================================================
// 3. VISUALIZAÇÃO
//==================================================
grupoVisual = "3. Visualização"
mostrarPainel = input.bool(true, "Mostrar painel", group=grupoVisual)
mostrarBase = input.bool(true, "Mostrar movimento direcional", group=grupoVisual)
mostrarCorrecao = input.bool(true, "Mostrar correção", group=grupoVisual)
mostrarFibonacci = input.bool(true, "Mostrar Fibonacci", group=grupoVisual)
mostrarAlvos = input.bool(true, "Mostrar alvos", group=grupoVisual)
mostrarSinal = input.bool(true, "Mostrar sinal da próxima onda", group=grupoVisual)
mostrarFundo = input.bool(false, "Colorir fundo temporal", group=grupoVisual)
//==================================================
// 4. NÍVEIS
//==================================================
grupoNiveis = "4. Níveis"
usar236 = input.bool(true, "23,6%", group=grupoNiveis)
usar382 = input.bool(true, "38,2%", group=grupoNiveis)
usar500 = input.bool(true, "50,0%", group=grupoNiveis)
usar618 = input.bool(true, "61,8%", group=grupoNiveis)
usar705 = input.bool(true, "70,5%", group=grupoNiveis)
usar786 = input.bool(true, "78,6%", group=grupoNiveis)
usar810 = input.bool(true, "81,0%", group=grupoNiveis)
usar854 = input.bool(true, "85,4%", group=grupoNiveis)
usar886 = input.bool(true, "88,6%", group=grupoNiveis)
usar100 = input.bool(true, "100,0%", group=grupoNiveis)
//==================================================
// 5. CORES
//==================================================
grupoCores = "5. Cores"
corAlta = input.color(color.lime, "Direcional de alta", group=grupoCores)
corBaixa = input.color(color.red, "Direcional de baixa", group=grupoCores)
corCorrecao = input.color(color.orange, "Correção", group=grupoCores)
corFibo = input.color(color.aqua, "Fibonacci", group=grupoCores)
corIdeal = input.color(color.yellow, "Janela temporal ideal", group=grupoCores)
corConfirmacao = input.color(color.green, "Próxima onda confirmada", group=grupoCores)
corAlvo = input.color(color.fuchsia, "Alvos", group=grupoCores)
//==================================================
// 6. FUNÇÕES
//==================================================
f_tempo(float minutos) =>
string texto = "AGUARDANDO"
if not na(minutos)
int dias = int(math.floor(minutos / 1440.0))
int horas = int(math.floor((minutos % 1440.0) / 60.0))
int mins = int(math.floor(minutos % 60.0))
if dias > 0
texto := str.tostring(dias) + "d " + str.tostring(horas) + "h " + str.tostring(mins) + "m"
else if horas > 0
texto := str.tostring(horas) + "h " + str.tostring(mins) + "m"
else
texto := str.tostring(mins) + "m"
texto
f_percentual(float valor) =>
na(valor) ? "AGUARDANDO" : str.tostring(valor * 100.0, "#.##") + "%"
f_relacao(float valor) =>
na(valor) ? "AGUARDANDO" : str.tostring(valor, "#.##") + "x"
f_preco(float valor) =>
na(valor) ? "-" : str.tostring(valor, format.mintick)
f_simNao(bool condicao) =>
condicao ? "SIM" : "NÃO"
f_nivelRetracao(float inicio, float fim, float percentual) =>
fim - ((fim - inicio) * percentual)
f_nomeProximaOnda(string tipoCorrecao) =>
string nome = "ONDA C"
if tipoCorrecao == "Onda 2"
nome := "ONDA 3"
else if tipoCorrecao == "Onda 4"
nome := "ONDA 5"
nome
f_direcaoTexto(int direcao) =>
string texto = "AGUARDANDO"
if direcao == 1
texto := "ALTA"
else if direcao == -1
texto := "BAIXA"
texto
//==================================================
// 7. PIVÔS CONFIRMADOS
//==================================================
float pivotTopo = ta.pivothigh(high, forcaPivot, forcaPivot)
float pivotFundo = ta.pivotlow(low, forcaPivot, forcaPivot)
float novoPivotPreco = na
int novoPivotBar = na
int novoPivotTempo = na
int novoPivotTipo = 0
if not na(pivotTopo) and na(pivotFundo)
novoPivotPreco := pivotTopo
novoPivotBar := bar_index - forcaPivot
novoPivotTempo := time
novoPivotTipo := 1
else if not na(pivotFundo) and na(pivotTopo)
novoPivotPreco := pivotFundo
novoPivotBar := bar_index - forcaPivot
novoPivotTempo := time
novoPivotTipo := -1
//==================================================
// 8. ESTADOS
//==================================================
// 0 = procurando movimento direcional
// 1 = correção ativa
// 2 = próxima onda iniciada
var int estado = 0
//==================================================
// 9. MEMÓRIA DO ÚLTIMO PIVÔ
//==================================================
var float ultimoPivotPreco = na
var int ultimoPivotBar = na
var int ultimoPivotTempo = na
var int ultimoPivotTipo = 0
//==================================================
// 10. MOVIMENTO DIRECIONAL TRAVADO
//==================================================
var float baseInicioPreco = na
var float baseFimPreco = na
var int baseInicioBar = na
var int baseFimBar = na
var int baseInicioTempo = na
var int baseFimTempo = na
var int direcaoBase = 0
var float tempoBase = na
var float amplitudeBase = na
//==================================================
// 11. CORREÇÃO
//==================================================
var float extremoCorrecao = na
var int extremoCorrecaoBar = na
var int extremoCorrecaoTempo = na
var float retracaoMaxima = na
var bool correcaoValidada = false
var int finalCorrecaoTempo = na
var int confirmacaoBar = na
var float confirmacaoPreco = na
//==================================================
// 12. OBJETOS
//==================================================
var line linhaBase = na
var line linhaCorrecao = na
var line linhaRetomada = na
var label labelInicio = na
var label labelFim = na
var label labelCorrecao = na
var label labelConfirmacao = na
var line linhasFibo = array.new_line()
var label labelsFibo = array.new_label()
var line linhasAlvo = array.new_line()
var label labelsAlvo = array.new_label()
//==================================================
// 13. LIMPEZA DOS NÍVEIS
//==================================================
f_limparFibo() =>
int totalLinhas = array.size(linhasFibo)
if totalLinhas > 0
for i = 0 to totalLinhas - 1
line.delete(array.get(linhasFibo, i))
int totalLabels = array.size(labelsFibo)
if totalLabels > 0
for i = 0 to totalLabels - 1
label.delete(array.get(labelsFibo, i))
array.clear(linhasFibo)
array.clear(labelsFibo)
f_limparAlvos() =>
int totalLinhas = array.size(linhasAlvo)
if totalLinhas > 0
for i = 0 to totalLinhas - 1
line.delete(array.get(linhasAlvo, i))
int totalLabels = array.size(labelsAlvo)
if totalLabels > 0
for i = 0 to totalLabels - 1
label.delete(array.get(labelsAlvo, i))
array.clear(linhasAlvo)
array.clear(labelsAlvo)
//==================================================
// 14. DESENHO DE FIBONACCI
//==================================================
f_desenharFibo(float precoNivel, string nome, bool habilitado) =>
if habilitado and mostrarFibonacci and not na(precoNivel) and not na(baseFimBar)
line novaLinha = line.new(
x1=baseFimBar,
y1=precoNivel,
x2=bar_index + 25,
y2=precoNivel,
xloc=xloc.bar_index,
extend=extend.right,
color=corFibo,
style=line.style_dashed,
width=1
)
label novoLabel = label.new(
x=bar_index,
y=precoNivel,
text=nome + " " + f_preco(precoNivel),
xloc=xloc.bar_index,
yloc=yloc.price,
style=label.style_label_left,
color=color.new(corFibo, 78),
textcolor=corFibo,
size=size.tiny
)
array.push(linhasFibo, novaLinha)
array.push(labelsFibo, novoLabel)
//==================================================
// 15. DESENHO DOS ALVOS
//==================================================
f_desenharAlvo(float precoAlvo, string nome) =>
if mostrarAlvos and not na(precoAlvo) and not na(confirmacaoBar)
line novaLinha = line.new(
x1=confirmacaoBar,
y1=precoAlvo,
x2=bar_index + 30,
y2=precoAlvo,
xloc=xloc.bar_index,
extend=extend.right,
color=corAlvo,
style=line.style_dotted,
width=2
)
label novoLabel = label.new(
x=bar_index,
y=precoAlvo,
text=nome + " " + f_preco(precoAlvo),
xloc=xloc.bar_index,
yloc=yloc.price,
style=label.style_label_left,
color=color.new(corAlvo, 75),
textcolor=corAlvo,
size=size.small
)
array.push(linhasAlvo, novaLinha)
array.push(labelsAlvo, novoLabel)
//==================================================
// 16. IDENTIFICAÇÃO DO MOVIMENTO DIRECIONAL
//==================================================
bool leituraAtiva = time >= inicioLeitura
if leituraAtiva and estado == 0 and novoPivotTipo != 0 and novoPivotTempo >= inicioLeitura
if na(ultimoPivotPreco)
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
ultimoPivotTipo := novoPivotTipo
else if novoPivotTipo == ultimoPivotTipo
bool pivotMaisExtremo = novoPivotTipo == 1 ? novoPivotPreco > ultimoPivotPreco : novoPivotPreco < ultimoPivotPreco
if pivotMaisExtremo
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
else
baseInicioPreco := ultimoPivotPreco
baseInicioBar := ultimoPivotBar
baseInicioTempo := ultimoPivotTempo
baseFimPreco := novoPivotPreco
baseFimBar := novoPivotBar
baseFimTempo := novoPivotTempo
direcaoBase := baseFimPreco > baseInicioPreco ? 1 : -1
tempoBase := math.abs(baseFimTempo - baseInicioTempo) / 60000.0
amplitudeBase := math.abs(baseFimPreco - baseInicioPreco)
extremoCorrecao := baseFimPreco
extremoCorrecaoBar := baseFimBar
extremoCorrecaoTempo := baseFimTempo
retracaoMaxima := 0.0
correcaoValidada := false
finalCorrecaoTempo := na
confirmacaoBar := na
confirmacaoPreco := na
estado := 1
ultimoPivotPreco := novoPivotPreco
ultimoPivotBar := novoPivotBar
ultimoPivotTempo := novoPivotTempo
ultimoPivotTipo := novoPivotTipo
//==================================================
// 17. MEDIÇÃO DA CORREÇÃO
//==================================================
float retracaoAtual = na
if estado == 1 and not na(amplitudeBase) and amplitudeBase > 0
if direcaoBase == 1
if low < extremoCorrecao
extremoCorrecao := low
extremoCorrecaoBar := bar_index
extremoCorrecaoTempo := time
retracaoAtual := math.max(0.0, (baseFimPreco - close) / amplitudeBase)
retracaoMaxima := math.max(0.0, (baseFimPreco - extremoCorrecao) / amplitudeBase)
else if direcaoBase == -1
if high > extremoCorrecao
extremoCorrecao := high
extremoCorrecaoBar := bar_index
extremoCorrecaoTempo := time
retracaoAtual := math.max(0.0, (close - baseFimPreco) / amplitudeBase)
retracaoMaxima := math.max(0.0, (extremoCorrecao - baseFimPreco) / amplitudeBase)
correcaoValidada := retracaoMaxima >= retracaoMinima
//==================================================
// 18. TEMPO DA CORREÇÃO
//==================================================
int tempoAgora = barstate.isrealtime ? timenow : time_close
float tempoCorrecao = na
if estado == 1 and not na(baseFimTempo)
tempoCorrecao := math.max(0.0, (tempoAgora - baseFimTempo) / 60000.0)
else if estado == 2
if not na(baseFimTempo) and not na(finalCorrecaoTempo)
tempoCorrecao := math.max(0.0, (finalCorrecaoTempo - baseFimTempo) / 60000.0)
float relacaoTemporal = na
if not na(tempoBase) and tempoBase > 0 and not na(tempoCorrecao)
relacaoTemporal := tempoCorrecao / tempoBase
float tempoMinimo = na
float inicioJanela = na
float fimJanela = na
if not na(tempoBase)
tempoMinimo := tempoBase * relacaoMinimaTempo
inicioJanela := tempoBase * relacaoIdealInicio
fimJanela := tempoBase * relacaoIdealFim
float faltamMinimo = na
if not na(tempoCorrecao) and not na(tempoMinimo)
if tempoCorrecao < tempoMinimo
faltamMinimo := tempoMinimo - tempoCorrecao
float faltamJanela = na
if not na(tempoCorrecao) and not na(inicioJanela)
if tempoCorrecao < inicioJanela
faltamJanela := inicioJanela - tempoCorrecao
bool tempoValido = not na(relacaoTemporal) and relacaoTemporal >= relacaoMinimaTempo
bool janelaIdeal = not na(relacaoTemporal) and relacaoTemporal >= relacaoIdealInicio and relacaoTemporal <= relacaoIdealFim
bool tempoExcedido = not na(relacaoTemporal) and relacaoTemporal > relacaoIdealFim
bool fibValida = not na(retracaoMaxima) and retracaoMaxima >= fibIdealMinimo and retracaoMaxima <= fibIdealMaximo
//==================================================
// 19. INVALIDAÇÃO
//==================================================
bool estruturaInvalidada = false
if estado == 1 and invalidarEm100 and not na(baseInicioPreco)
if direcaoBase == 1
estruturaInvalidada := close <= baseInicioPreco
else if direcaoBase == -1
estruturaInvalidada := close >= baseInicioPreco
if estruturaInvalidada
estado := 0
ultimoPivotPreco := na
ultimoPivotBar := na
ultimoPivotTempo := na
ultimoPivotTipo := 0
baseInicioPreco := na
baseFimPreco := na
baseInicioBar := na
baseFimBar := na
baseInicioTempo := na
baseFimTempo := na
direcaoBase := 0
tempoBase := na
amplitudeBase := na
extremoCorrecao := na
extremoCorrecaoBar := na
extremoCorrecaoTempo := na
retracaoMaxima := na
correcaoValidada := false
finalCorrecaoTempo := na
confirmacaoBar := na
confirmacaoPreco := na
if not na(linhaBase)
line.delete(linhaBase)
if not na(linhaCorrecao)
line.delete(linhaCorrecao)
if not na(linhaRetomada)
line.delete(linhaRetomada)
linhaBase := na
linhaCorrecao := na
linhaRetomada := na
if not na(labelInicio)
label.delete(labelInicio)
if not na(labelFim)
label.delete(labelFim)
if not na(labelCorrecao)
label.delete(labelCorrecao)
if not na(labelConfirmacao)
label.delete(labelConfirmacao)
labelInicio := na
labelFim := na
labelCorrecao := na
labelConfirmacao := na
f_limparFibo()
f_limparAlvos()
//==================================================
// 20. CONFIRMAÇÃO DA PRÓXIMA ONDA
//==================================================
bool retomadaAlta = estado == 1 and direcaoBase == 1 and correcaoValidada and close > baseFimPreco
bool retomadaBaixa = estado == 1 and direcaoBase == -1 and correcaoValidada and close < baseFimPreco
bool retomadaConfirmada = barstate.isconfirmed and (retomadaAlta or retomadaBaixa)
if retomadaConfirmada
estado := 2
finalCorrecaoTempo := time_close
confirmacaoBar := bar_index
confirmacaoPreco := close
//==================================================
// 21. ÍNDICE NEOWAVE
//==================================================
int indiceNeoWave = 0
if not na(baseFimPreco)
indiceNeoWave += 20
if correcaoValidada
indiceNeoWave += 20
if tempoValido
indiceNeoWave += 20
if fibValida
indiceNeoWave += 20
if estado == 2
indiceNeoWave += 20
bool proximaOndaConfirmada = estado == 2 and indiceNeoWave >= scoreMinimo
//==================================================
// 22. TEXTOS OPERACIONAIS
//==================================================
string nomeProximaOnda = f_nomeProximaOnda(hipoteseCorrecao)
string proximaOndaDirecao = "AGUARDANDO"
if direcaoBase == 1
proximaOndaDirecao := nomeProximaOnda + " DE ALTA"
else if direcaoBase == -1
proximaOndaDirecao := nomeProximaOnda + " DE BAIXA"
string faseTexto = "PROCURANDO DIRECIONAL"
string ondaAtualTexto = "AGUARDANDO"
string estagioTexto = "AGUARDANDO"
string acaoTexto = "AGUARDAR"
string sinalTexto = "SEM SINAL"
if estado == 1
faseTexto := "CORREÇÃO ATIVA"
ondaAtualTexto := str.upper(hipoteseCorrecao)
if not correcaoValidada
estagioTexto := "CORREÇÃO NÃO VALIDADA"
acaoTexto := "AGUARDAR RETRAÇÃO MÍNIMA"
else if not tempoValido
estagioTexto := "CORREÇÃO JOVEM"
acaoTexto := "AGUARDAR MATURIDADE"
else if janelaIdeal and fibValida
estagioTexto := "JANELA DE FINAL DA " + str.upper(hipoteseCorrecao)
acaoTexto := "AGUARDAR RETOMADA DE " + f_direcaoTexto(direcaoBase)
else if tempoExcedido
estagioTexto := "CORREÇÃO COMPLEXA"
acaoTexto := "REAVALIAR CONTAGEM"
else
estagioTexto := "CORREÇÃO MADURA"
acaoTexto := "MONITORAR FINAL DA " + str.upper(hipoteseCorrecao)
else if estado == 2
faseTexto := "EXPANSÃO INICIADA"
ondaAtualTexto := proximaOndaDirecao
if proximaOndaConfirmada
estagioTexto := proximaOndaDirecao + " CONFIRMADA"
if direcaoBase == 1
sinalTexto := "SINAL DE ALTA"
acaoTexto := "ACOMPANHAR EXPANSÃO DE ALTA"
else
sinalTexto := "SINAL DE BAIXA"
acaoTexto := "ACOMPANHAR EXPANSÃO DE BAIXA"
else
estagioTexto := "RETOMADA CONFIRMADA"
acaoTexto := "ÍNDICE ABAIXO DO MÍNIMO"
//==================================================
// 23. STOP E ALVOS
//==================================================
float stopTecnico = estado == 2 ? extremoCorrecao : na
float alvo100 = na
float alvo1618 = na
float alvo2618 = na
if estado == 2 and not na(extremoCorrecao) and not na(amplitudeBase)
alvo100 := extremoCorrecao + direcaoBase * amplitudeBase
alvo1618 := extremoCorrecao + direcaoBase * amplitudeBase * 1.618
alvo2618 := extremoCorrecao + direcaoBase * amplitudeBase * 2.618
//==================================================
// 24. DESENHO DO DIRECIONAL
//==================================================
if not na(baseInicioBar) and not na(baseFimBar)
color corDirecional = direcaoBase == 1 ? corAlta : corBaixa
if mostrarBase
if na(linhaBase)
linhaBase := line.new(
x1=baseInicioBar,
y1=baseInicioPreco,
x2=baseFimBar,
y2=baseFimPreco,
xloc=xloc.bar_index,
color=corDirecional,
width=3
)
else
line.set_xy1(linhaBase, baseInicioBar, baseInicioPreco)
line.set_xy2(linhaBase, baseFimBar, baseFimPreco)
line.set_color(linhaBase, corDirecional)
if na(labelInicio)
labelInicio := label.new(
x=baseInicioBar,
y=baseInicioPreco,
text="INÍCIO DIRECIONAL",
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=corDirecional,
textcolor=color.white,
size=size.small
)
if na(labelFim)
labelFim := label.new(
x=baseFimBar,
y=baseFimPreco,
text="FIM DIRECIONAL " + f_tempo(tempoBase),
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_down : label.style_label_up,
color=corDirecional,
textcolor=color.white,
size=size.small
)
//==================================================
// 25. DESENHO DA CORREÇÃO
//==================================================
if mostrarCorrecao and estado >= 1 and not na(baseFimBar) and not na(extremoCorrecaoBar)
if na(linhaCorrecao)
linhaCorrecao := line.new(
x1=baseFimBar,
y1=baseFimPreco,
x2=extremoCorrecaoBar,
y2=extremoCorrecao,
xloc=xloc.bar_index,
color=corCorrecao,
width=2
)
else
line.set_xy1(linhaCorrecao, baseFimBar, baseFimPreco)
line.set_xy2(linhaCorrecao, extremoCorrecaoBar, extremoCorrecao)
line.set_color(linhaCorrecao, corCorrecao)
string textoCorrecao = str.upper(hipoteseCorrecao) + " " + f_tempo(tempoCorrecao)
if na(labelCorrecao)
labelCorrecao := label.new(
x=extremoCorrecaoBar,
y=extremoCorrecao,
text=textoCorrecao,
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=corCorrecao,
textcolor=color.white,
size=size.small
)
else
label.set_xy(labelCorrecao, extremoCorrecaoBar, extremoCorrecao)
label.set_text(labelCorrecao, textoCorrecao)
//==================================================
// 26. SINAL DA PRÓXIMA ONDA
//==================================================
if estado == 2
if not na(confirmacaoBar)
if na(linhaRetomada)
linhaRetomada := line.new(
x1=extremoCorrecaoBar,
y1=extremoCorrecao,
x2=confirmacaoBar,
y2=confirmacaoPreco,
xloc=xloc.bar_index,
color=corConfirmacao,
width=3
)
else
line.set_xy1(linhaRetomada, extremoCorrecaoBar, extremoCorrecao)
line.set_xy2(linhaRetomada, confirmacaoBar, confirmacaoPreco)
line.set_color(linhaRetomada, corConfirmacao)
string textoConfirmacao = "RETOMADA CONFIRMADA " + str.tostring(indiceNeoWave) + "/100"
if proximaOndaConfirmada
textoConfirmacao := proximaOndaDirecao + " CONFIRMADA " + str.tostring(indiceNeoWave) + "/100"
if mostrarSinal
if na(labelConfirmacao)
labelConfirmacao := label.new(
x=confirmacaoBar,
y=direcaoBase == 1 ? low : high,
text=textoConfirmacao,
xloc=xloc.bar_index,
yloc=yloc.price,
style=direcaoBase == 1 ? label.style_label_up : label.style_label_down,
color=proximaOndaConfirmada ? corConfirmacao : color.orange,
textcolor=color.white,
size=size.normal
)
else
label.set_xy(labelConfirmacao, confirmacaoBar, direcaoBase == 1 ? low : high)
label.set_text(labelConfirmacao, textoConfirmacao)
label.set_color(labelConfirmacao, proximaOndaConfirmada ? corConfirmacao : color.orange)
//==================================================
// 27. FIBONACCI
//==================================================
if barstate.islast
f_limparFibo()
if estado >= 1 and not na(baseInicioPreco) and not na(baseFimPreco)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.236), "23,6%", usar236)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.382), "38,2%", usar382)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.500), "50,0%", usar500)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.618), "61,8%", usar618)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.705), "70,5%", usar705)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.786), "78,6%", usar786)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.810), "81,0%", usar810)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.854), "85,4%", usar854)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 0.886), "88,6%", usar886)
f_desenharFibo(f_nivelRetracao(baseInicioPreco, baseFimPreco, 1.000), "100,0%", usar100)
//==================================================
// 28. ALVOS
//==================================================
if barstate.islast
f_limparAlvos()
if proximaOndaConfirmada
f_desenharAlvo(alvo100, "ALVO 1 — 100%")
f_desenharAlvo(alvo1618, "ALVO 2 — 161,8%")
f_desenharAlvo(alvo2618, "ALVO 3 — 261,8%")
//==================================================
// 29. FUNDO
//==================================================
color corFundo = na
if mostrarFundo and estado == 1 and janelaIdeal
corFundo := color.new(corIdeal, 88)
else if mostrarFundo and proximaOndaConfirmada
corFundo := color.new(corConfirmacao, 90)
bgcolor(corFundo)
//==================================================
// 30. PAINEL
//==================================================
var table painel = table.new(position.top_right, 2, 23, border_width=1)
if mostrarPainel and barstate.islast
color corDirecao = color.gray
color corEstado = corCorrecao
if direcaoBase == 1
corDirecao := corAlta
else if direcaoBase == -1
corDirecao := corBaixa
if proximaOndaConfirmada
corEstado := corConfirmacao
else if janelaIdeal
corEstado := corIdeal
else if tempoExcedido
corEstado := color.fuchsia
string movimentoBaseTexto = "AGUARDANDO"
if direcaoBase == 1
movimentoBaseTexto := "DIRECIONAL DE ALTA"
else if direcaoBase == -1
movimentoBaseTexto := "DIRECIONAL DE BAIXA"
string textoJanela = "-"
if janelaIdeal
textoJanela := "JANELA ATIVA"
else if tempoExcedido
textoJanela := "JANELA EXCEDIDA"
else if not na(faltamJanela)
textoJanela := f_tempo(faltamJanela)
table.cell(painel, 0, 0, "MAGALHAES", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 0, "NEOWAVE ONDA 3 PRO", bgcolor=color.black, text_color=color.white)
table.cell(painel, 0, 1, "Fase", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 1, faseTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 2, "Movimento Base", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 2, movimentoBaseTexto, bgcolor=corDirecao, text_color=color.white)
table.cell(painel, 0, 3, "Onda Atual", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 3, ondaAtualTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 4, "Estágio", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 4, estagioTexto, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 5, "Tempo Direcional", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 5, f_tempo(tempoBase), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 6, "Tempo Correção", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 6, f_tempo(tempoCorrecao), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 7, "Relação Temporal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 7, f_relacao(relacaoTemporal), bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 8, "Tempo Mínimo", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 8, f_tempo(tempoMinimo), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 9, "Faltam Mínimo", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 9, not na(faltamMinimo) ? f_tempo(faltamMinimo) : "CUMPRIDO", bgcolor=tempoValido ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 10, "Janela Ideal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 10, f_tempo(inicioJanela) + " até " + f_tempo(fimJanela), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 11, "Faltam Janela", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 11, textoJanela, bgcolor=corEstado, text_color=color.white)
table.cell(painel, 0, 12, "Retração Atual", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 12, f_percentual(retracaoAtual), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 13, "Retração Máxima", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 13, f_percentual(retracaoMaxima), bgcolor=color.gray, text_color=color.white)
table.cell(painel, 0, 14, "Tempo Válido", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 14, f_simNao(tempoValido), bgcolor=tempoValido ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 15, "Fib Válida", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 15, f_simNao(fibValida), bgcolor=fibValida ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 16, "Correção Completa", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 16, estado == 2 ? "SIM" : "NÃO", bgcolor=estado == 2 ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 17, "Rompimento", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 17, estado == 2 ? "CONFIRMADO" : "AGUARDANDO", bgcolor=estado == 2 ? color.green : color.gray, text_color=color.white)
table.cell(painel, 0, 18, "Índice NeoWave", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 18, str.tostring(indiceNeoWave) + " / 100", bgcolor=indiceNeoWave >= scoreMinimo ? color.green : color.orange, text_color=color.white)
table.cell(painel, 0, 19, "Sinal", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 19, sinalTexto, bgcolor=proximaOndaConfirmada ? corDirecao : color.gray, text_color=color.white)
table.cell(painel, 0, 20, "Stop Técnico", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 20, f_preco(stopTecnico), bgcolor=color.red, text_color=color.white)
table.cell(painel, 0, 21, "Alvos", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 21, "100%: " + f_preco(alvo100) + " 161,8%: " + f_preco(alvo1618) + " 261,8%: " + f_preco(alvo2618), bgcolor=corAlvo, text_color=color.white)
table.cell(painel, 0, 22, "Estado / Ação", bgcolor=color.black, text_color=color.white)
table.cell(painel, 1, 22, estagioTexto + " " + acaoTexto, bgcolor=corEstado, text_color=color.white)
//==================================================
// 31. ALERTAS
//==================================================
alertcondition(
correcaoValidada and not correcaoValidada ,
title="NeoWave — Correção validada",
message="A correção atingiu a retração mínima."
)
alertcondition(
tempoValido and not tempoValido ,
title="NeoWave — Tempo mínimo cumprido",
message="A correção cumpriu o tempo mínimo."
)
alertcondition(
janelaIdeal and not janelaIdeal ,
title="NeoWave — Janela temporal ativa",
message="A correção entrou na janela temporal ideal."
)
alertcondition(
retomadaConfirmada,
title="NeoWave — Retomada confirmada",
message="A correção terminou e a direção original foi retomada."
)
alertcondition(
proximaOndaConfirmada and not proximaOndaConfirmada ,
title="NeoWave — Próxima onda confirmada",
message="A próxima onda foi confirmada pelo motor NeoWave."
)
alertcondition(
estruturaInvalidada,
title="NeoWave — Estrutura invalidada",
message="A correção fechou além da origem do movimento direcional."
) Индикатор

YL / RL Professional Version 3 - Multi-Market Trading LevelsYL / RL Professional V3 — Multi-Market Trading Levels
I designed this simple indicator to help me implement the RocketScooter Levels in TradingView.
YL / RL Professional V3 is a customizable horizontal-level indicator designed for traders who track key reference levels across Nasdaq and S&P 500 futures.
The indicator allows users to enter separate groups of trading levels for:
MNQ and NQ
MES and ES
Levels entered for MNQ automatically display on NQ, while levels entered for MES automatically display on ES. This eliminates duplicate data entry when switching between micro and full-sized futures contracts.
Included level types
Yellow Levels
Red Levels
DD Band Levels
MHP
Dynamic MHP
HP
Dynamic HP
Bull Zone Bottom
HG
Bear Zone Top
Main features
Comma-separated entry for multiple Yellow, Red and DD Band levels
Separate Nasdaq and S&P 500 level groups
Automatic ticker detection
Shared levels between MNQ/NQ and MES/ES
Custom colors, line widths and transparency
Solid, dashed and dotted line styles
Optional price labels
Adjustable label size and placement
Duplicate-level removal
Automatic level sorting
Show or hide individual level groups
Optional touch alerts
On-chart status panel showing the active market and number of displayed levels
How it works
Enter Nasdaq levels once in the MNQ/NQ settings section. Those levels will appear automatically on both MNQ and NQ charts.
Enter S&P 500 levels once in the MES/ES settings section. Those levels will appear automatically on both MES and ES charts.
When the chart symbol changes, the indicator automatically displays the correct level set and removes levels belonging to the other market.
Supported symbols
MNQ
NQ
MES
ES
The indicator supports continuous contracts and standard dated futures contracts, provided TradingView identifies the symbol root as MNQ, NQ, MES or ES.
Alerts
Touch alerts can be enabled for Yellow Levels, Red Levels, DD Bands and named levels. To receive alerts, create a TradingView alert and select:
Any alert() function call
Important note
This indicator does not calculate or generate trading levels. All levels are entered manually by the user based on their own analysis, methodology or trading plan.
Open-source notice
This script is published as open source so traders can review, customize and improve it for their own use. Please credit the original author when sharing modified versions.
Disclaimer: This indicator is provided for informational and educational purposes only. It is not financial advice and does not guarantee trading results. Индикатор

PROTOS 700 StrategiesPROTOS · 700 Strategies packs a full research library into a single indicator: 616 documented trading strategies drawn from quantitative research and classic technical analysis literature (Wilder, Connors, Crabel, Kaufman, Pring, Kyle, Osler, Bai-Perron, Lo-MacKinlay...), ready to display and visually test on any chart.
How to use it
Open the indicator settings.
Pick up to 5 strategies at once from the 5 dropdown menus. Tip: type a keyword directly in the menu to filter the list ("rsi", "breakout", "ichimoku", "session"...).
The indicators each strategy is built on (EMA, Bollinger, SuperTrend, Ichimoku, Keltner, Donchian, VWAP...) are automatically drawn on the chart, one color per slot.
Arrows mark the signals: ▲ LONG below the bar, ▼ SHORT above.
The summary panel shows, for each slot: ID, name, signal state and live indicator values (handy for oscillator-based strategies such as RSI, ADX or Z-score).
Alerts
Click "Create alert" and pick a PROTOS condition: LONG/SHORT per slot or global. Detailed messages (strategy name and ID) are also sent through "Any alert() function call".
Under the hood
12 categories: trend following, mean reversion, breakout, volatility, microstructure, sessions, volume, momentum, candlesticks, statistical...
Each strategy is a precise set of conditions on indicators computed with their original formulas (Wilder RSI/ATR/ADX, population Bollinger Bands, MT5-style stochastic, UTC-based sessions).
Signals are evaluated on bar close: no repainting.
Volume-based strategies stay silent on symbols that do not provide volume data. Индикатор

Индикатор

Session Intelligence Matrix ProSession Intelligence Matrix Pro
Session Intelligence Matrix Pro is a professional institutional-style session analytics indicator designed to reveal what each major Forex trading session historically contributes to the market. Instead of simply highlighting trading sessions with colored boxes, this indicator performs statistical analysis on hundreds of previous sessions and displays the probability, behavior, volatility, and smart-money characteristics of every session in one professional dashboard.
The primary objective of this indicator is to help traders understand which session is statistically strongest, which session usually creates the daily high or low, where volatility is most likely to appear, and when institutional activity is historically at its highest.
Whether you trade Forex, Gold, Indices, Crypto, or CFDs, Session Intelligence Matrix Pro allows you to make decisions based on historical session behavior rather than assumptions.
Why This Indicator Was Created
Most traders know the names of the major trading sessions:
Asia
London
New York AM
New York Lunch
New York PM
However, very few traders actually know:
Which session usually creates the largest move?
Which session most often sets the High of the Day?
Which session usually creates the Low of the Day?
Which session generates the largest Fair Value Gaps?
Which session contributes the highest percentage of daily volume?
Which session normally produces continuation after the previous session?
These statistics are extremely valuable for intraday traders, yet TradingView does not provide them.
Session Intelligence Matrix Pro was developed to solve this problem by collecting historical session statistics and presenting them in an easy-to-read institutional dashboard.
How the Indicator Works
The indicator automatically separates each trading day into five major sessions:
Asia Session
London Session
New York AM
New York Lunch
New York PM
For every completed session, it records important market information including:
Price range
ATR percentage
Candle size
Volume contribution
Bullish or bearish close
Highest price of the day
Lowest price of the day
Fair Value Gap creation
Session percentile
Over time, these records build a statistical database that is used to calculate historical averages and probabilities.
The dashboard is continuously updated as new market data becomes available.
Dashboard Metrics Explained
Average Range
Shows the average number of price points traveled during each session.
This helps identify which sessions normally produce the biggest market movement.
Large average range generally means:
Better trading opportunities
Higher volatility
Larger profit potential
Average ATR %
Displays how large each session is relative to the Daily ATR.
Instead of showing raw price movement, this metric compares every session against the market's normal daily volatility.
Higher values indicate stronger expansion.
Volume Share %
Shows how much of the entire day's trading volume is generated during each session.
This quickly reveals where institutional participation is strongest.
Average Candle Size
Calculates the average size of candles printed during every session.
Larger candles usually indicate:
Strong momentum
Institutional participation
Aggressive buying or selling
Highest Range
Displays the largest range ever recorded for that session within the available historical dataset.
Useful for understanding maximum expansion potential.
Lowest Range
Displays the smallest recorded range for every session.
This helps traders recognize when markets are historically quiet.
Bullish Session %
Shows how often each session closes bullish.
Example:
London Bullish Session = 54%
This means London has historically closed bullish approximately 54% of the recorded sessions.
High Of Day %
One of the most useful statistics.
Shows how frequently a session creates the day's highest price.
For example:
NY PM = 72%
This means that historically, the New York PM session has produced the High of the Day in 72% of the analyzed periods.
Low Of Day %
Shows how often each session creates the day's lowest price.
This helps traders anticipate where reversals or trend completions are most likely to occur.
Average FVG Count
Counts the average number of Fair Value Gaps created during every session.
Higher values indicate more institutional imbalance and stronger Smart Money activity.
Live Percentile
This feature compares the current session against historical data.
For example:
Live Percentile = 75%
This means the current session is already larger than 75% of previous sessions.
This allows traders to instantly understand whether today's market is:
Normal
Weak
Exceptionally volatile
Session Visualization
The indicator also draws colored session boxes directly on the chart.
Each box clearly highlights:
Session start
Session end
Session range
Session identification
This allows traders to quickly recognize where important moves occurred during the trading day.
Designed For
Session Intelligence Matrix Pro can be used on:
Forex
Gold (XAU/USD)
Silver
Crypto
Indices
CFDs
Futures
It is especially valuable for:
Intraday Traders
Scalpers
Smart Money Traders
ICT Traders
Session-Based Traders
Price Action Traders
Institutional Strategy Traders
Key Benefits
Automatically analyzes every major trading session.
Tracks historical session performance.
Displays institutional-quality statistics in a professional dashboard.
Identifies where volatility is historically concentrated.
Shows which session most frequently creates the High and Low of the Day.
Measures average volatility and ATR expansion.
Calculates volume contribution for each session.
Tracks Fair Value Gap frequency.
Displays live session percentile against historical data.
Helps traders trade with statistical confidence instead of emotion.
Disclaimer
This indicator is designed as a market analysis and statistical decision-support tool. Historical probabilities do not guarantee future market performance. Traders should always combine session statistics with proper market structure analysis, confirmation, and sound risk management before entering any trade.
Verification
Verified Original Script
Developed, programmed, and independently published by Forex_Market_Insights
This script represents original work created specifically for this TradingView publication and is not intended to copy or reproduce another author's proprietary implementation.
Clarification
Forex_Market_Insights is the original creator and developer of the concepts, analytical methodology, and overall trading framework reflected in this indicator.
This publication has been created with full acknowledgment of the original research and development behind the project. The verification reference to Forex_Market_Insights is included solely to recognize the origin of the analytical concepts and development process associated with this work.
The inclusion of Forex_Market_Insights in the verification section is intended as proper attribution and acknowledgment of the original creator's contribution to the methodology presented in this indicator. Индикатор

SWING DEMA 200 SUPERTRENDThis script is a high-confluence, trend-following Kill Zone & Swing Trading Strategy built for TradingView (Pine Script v6). It filters short-term candlestick structural reversals against long-term and medium-term trends during specific high-volume market sessions.
Core Components & LogicSession & Kill Zone Filter (Time Filter)
Tracks 4 major trading sessions: Asia, London Open, NY AM, and London Close (configured using New York time).
Valid trades can only be triggered when the market is inside these specific high-volume "Kill Zones.
"Trend Definition (Trend Filter)
Macro Trend: Defined by the 200 Double Exponential Moving Average (DEMA 200).Long positions (Buys) are only allowed if the price is above the DEMA 200.Short positions (Sells) are only allowed if the price is below the DEMA 200.
Micro Trend: Monitored by the Original Supertrend formula. It acts as a secondary filter ensuring you never trade against immediate momentum.
Anti-Whipsaw Filter (Volatility Filter)Measures the rate of change of the DEMA 200 against a 14-period ATR.If the market moves too flat (sideways), the background changes to a custom gray color, and all trading signals are locked to prevent false breakouts.
3-Candle Swing Signals (Execution)
Automatically detects structural Swing Highs (Pinnacles) and Swing Lows (Valleys) based on 3-candle fractal formations.Signals are plotted on the chart as highly visible Red and Green Triangles.
Dynamic Money Management (Risk Control)
Once a valid signal prints, the script instantly calculates and plots Stop Loss (SL) and Take Profit (TP) target guide lines.The SL is anchored directly to the Supertrend line plus a safety tick buffer, while the TP is automatically projected based on a user-defined Risk-to-Reward Ratio (e.g., 1:1.5).
🟢 ENTRY CHECKLIST
- BUY (LONG) POSITION
Phase 1: Timing Validation (Kill Zone)
Active Session: Current server time must fall within an authorized window (Asia, London Open, NY AM, or London Close).
Session BG Active: The chart background must display the session color (Purple, Blue, Orange, or Maroon).
Phase 2: Trend & Volatility Validation
Macro Filter: The current candle price must close above the orange DEMA 200 line.
Micro Filter: The original Supertrend line must be Green and plotting underneath the candles.
Volatility Filter: The background MUST NOT turn Gray (DEMA 200 is healthy and the market is not flat/sideways).
Phase 3: Candle Execution
Fractal Trigger: A structural Green Triangle (Low Swing) must print at the bottom of the pattern.
Bar Close Confirmation: The entry candle must fully close to prevent signal recalculation or repainting.
Risk Parameters: Orders must be set using the dynamic red line for Stop Loss (targetSL) and the teal line for Take Profit (targetTP).
🔴 ENTRY CHECKLIST - SELL (SHORT) POSITION
Phase 1: Timing Validation (Kill Zone)Active Session: Current server time must fall within an authorized window (Asia, London Open, NY AM, or London Close).Session BG Active: The chart background must display the session color (Purple, Blue, Orange, or Maroon).
Phase 2: Trend & Volatility Validation
Macro Filter: The current candle price must close below the orange DEMA 200 line.
Micro Filter: The original Supertrend line must be Red and plotting above the candles.
Volatility Filter: The background MUST NOT turn Gray (DEMA 200 is healthy and the market is not flat/sideways).
Phase 3: Candle Execution
Fractal Trigger: A structural Red Triangle (High Swing) must print at the top of the pattern.
Bar Close Confirmation: The entry candle must fully close to prevent signal recalculation or repainting.
Risk Parameters: Orders must be set using the dynamic red line for Stop Loss (targetSL) and the teal line for Take Profit (targetTP).
⚠️ NO-TRADE ZONE (DO NOT ENTER)
Immediately skip the trade setup if any of these conditions are met:
Gray Background is active → The algorithm detects a flat market where trend-following accuracy plummets.
Conflicting indicators → For example, a Green Buy Triangle prints but the price is under DEMA 200 or the Supertrend is still Red.
Outside Session Windows → The market lacks the necessary institutional momentum to push price targets efficiently.
"Special thanks to kivancOzbilgic for his amazing Supertrend script, which allowed me to successfully integrate it into this method." Индикатор

Индикатор

FractalMemoryLib [Jayadev Rana]FractalMemoryLib packages the pattern-memory engine used by the Fractal Memory Projection indicator and the Fractal Memory Strategy so any script can import it.
WHAT IT DOES
The library finds the historical window whose movement shape most resembles the most recent bars (mean squared distance between stdev-normalized log returns), replays what followed that window as a projected close path, and sizes stops and targets adaptively by volatility regime.
EXPORTED FUNCTIONS
logRet(src) - one-bar log return of a series.
bestMatch(src, winLen, scanDepth, gapAhead) - scans up to scanDepth bars back and returns the offset of the most similar window plus a 0-100 similarity score. gapAhead reserves bars after the match for a projection.
analogPath(src, offset, fcLen, scaleF) - array of fcLen projected closes built by replaying the returns that followed the match, rescaled by scaleF (for example current ATR over ATR at the match).
adaptiveR(atrLen, rankLen, base) - volatility-adaptive unit risk: ATR times (base plus its 0-1 percentile rank), plus the rank itself. Call on every bar.
volRegime(volRank) - "Low", "Normal" or "High" label from the rank.
targets(entry, dirSign, unitR, slMult) - stop loss and TP1/TP2/TP3 at 1R, 2R and 3R.
USAGE NOTES
Call adaptiveR on every bar for ta consistency. bestMatch and analogPath are loop-heavy; for display purposes call them on the last bar only, and make sure the chart has at least scanDepth plus gapAhead bars of history. When the library itself is added to a chart it draws a small demo projection line from the best analog.
The analog projection is a statistical reference to a similar past episode, not a prediction, and not financial advice. Библиотека

Fractal Memory Strategy [Jayadev Rana]Fractal Memory Strategy trades the same engine as the Fractal Memory Projection indicator: it looks for the historical episode most similar to current price action, and only takes trend flips that agree with how that episode played out. Exits scale out at three volatility-adaptive targets.
HOW IT DECIDES
An ATR trailing stop tracks the trend. When it flips, the last 30 closes are converted to normalized log returns and compared against past windows by mean squared distance. The bars that followed the best analog give a net direction; the flip is only traded when the analog direction agrees (the filter can be disabled). Orders are processed on bar close, so no lookahead is involved. For visual context the strategy also draws the 50-candle ghost projection beyond the last bar - it is display-only and never affects order logic.
ENTRIES AND EXITS
On a confirmed bullish flip with agreement the strategy closes any short and enters long; the mirror applies to shorts. One unit of risk R equals ATR times (1.2 plus the ATR percentile rank over 200 bars), so targets and stops widen in volatile regimes and tighten in quiet ones. Position exits: one third at 1R, one third at 2R, the remainder at 3R, with a stop at 1.5R (all adjustable). Direction can be restricted to long-only or short-only.
PROPERTIES USED IN THE PUBLISHED BACKTEST
10,000 initial capital, 10 percent of equity per trade, 0.01 percent commission per order, 2 ticks slippage, no pyramiding, orders on close. These are deliberately conservative; adjust them to match your own broker before drawing any conclusion.
PANEL
Match similarity, volatility regime, forecast direction, closed trade count and win rate.
NOTES
The analog projection is a statistical reference, not a prediction, and past behaviour does not guarantee anything about the future. Results vary by symbol and timeframe; test on your own market with realistic costs before considering any live use. This is an educational tool, not financial advice. Стратегия
