Benford's Law Actual [Tagstrading]Benford’s Law Chart — First Digit Analysis of Percentage Price Drops
This script visualizes the distribution of the leading digit in the percentage change of price drops, and compares it to the theoretical distribution expected by Benford’s Law.
It helps traders, analysts, and quants to detect anomalies, unnatural behavior, or price manipulation in any asset or timeframe.
How to Use
Add to any chart or symbol (stocks, crypto, FX, etc.) and select the timeframe you wish to analyze.
Set the “Number of Bars to Analyze” input (default: 500) to control the length of the historical window.
The chart will display, for the latest window:
A blue line: the actual leading-digit distribution for percentage price changes between bars.
A red line: the expected distribution per Benford’s Law.
Labels below and above: digit markers and the expected (theoretical) percentages.
Summary panel on the right: frequency counts and actual vs. theoretical % for each digit.
Interpretation:
If your actual (blue) curve or digit counts are significantly different from the red Benford’s Law curve, it could indicate unnatural price action, fraud, bot activity, or structural anomalies.
Why is this useful for TradingView?
Financial forensics: Benford’s Law is a classic tool for detecting data manipulation and fraud in accounting. On charts, it can reveal if price movements are statistically “natural.”
Transparency and confidence: Helps communities audit markets, brokers, or exchanges for irregularities.
Adaptable: Works on any market, any timeframe.
What makes this script unique?
Focuses on % price changes, not raw prices.
This provides a fair comparison across assets, symbols, and timeframes.
Measures only the direction and magnitude of drops/rises — more suitable for detecting manipulation in active markets.
Clear and customizable visualization:
The Benford line, actual data, and summary are all visible and readable in one glance.
Optimized for speed and clarity (runs efficiently on all major charts).
How is it different from stg44’s Benford’s Law script?
This script analyzes the leading digit of percentage price changes (i.e., how much the price drops or rises in %),
while the original by stg44 analyzes the leading digit of price itself.
Results are less sensitive to price scale and more comparable across volatile and non-volatile assets.
The summary panel clearly shows ( ) for actual and for Benford theoretical values.
Full code is commented and open for the community.
Credits and Inspiration
This script was inspired by “Benford’s Law” by stg44:
Thanks to the TradingView community for sharing powerful visual ideas.
—
By tags trading
Cerca negli script per "如何用wind搜索股票的发行价和份数"
HSI1! First 30m Candle Strategy (15m Chart)## HSI1! First 30-Minute Candle Breakout Strategy (15m Chart) — Description
### Overview
This strategy is designed for trading **Hang Seng Index (HSI) Futures** on a 15-minute chart. It uses the price range established during the first 30 minutes of the Hong Kong main session (09:15–09:44:59) to define key breakout levels for a systematic trade entry each day.
### How the Strategy Works
#### 1. Reference Candle Period
- **Aggregation Window:** The strategy monitors the first two 15-minute bars of the session (09:15:00–09:44:59 HKT).
- **Range Capture:** It records the highest and lowest prices (the "reference high/low") during this window.
#### 2. Trade Setup
- After the 09:45 bar completes, the reference range is locked in.
- Throughout the rest of the trading day (within session hours), the strategy looks for breakouts beyond the reference range.
#### 3. Entry Rules
- **Long Entry (Buy):**
- Triggered if price rises to or above the reference high.
- Only entered if the user's settings permit "Buy Only" or "Both".
- **Short Entry (Sell):**
- Triggered if price falls to or below the reference low.
- Only entered if the user's settings permit "Sell Only" or "Both".
- **Single trade per day:**
- Once any trade executes, no additional trades are opened until the next session.
#### 4. Exit Rules
- **Take Profit (TP):**
- Target profit is set to a distance equal to the initial range added above the long entry (or subtracted below the short entry).
- Example: For a 100-point range, a long trade targets entry + 100 points.
- **Stop Loss (SL):**
- Longs are stopped out if price falls back to the session's reference low; shorts are stopped out if price rallies to the reference high.
#### 5. Session Control
- Active only within the regular day session (09:15–12:00 and 13:00–16:00 HKT).
- Trade tracking resets each new trading day.
#### 6. Trade Direction Manual Setting
- A user input allows restriction to "Buy Only", "Sell Only" or "Both" directions, providing discretion over daily bias.
### Example Workflow
| Step | Action |
|---------------------------|-------------------------------------------------------------------------|
| 09:15–09:44 | Aggregate first two 15m candles; record daily high/low |
| After 09:45 | Wait for a breakout (price crossing either the high or the low) |
| Long trade triggered | Enter at the reference high, target is "high + range", SL is at the low |
| Short trade triggered | Enter at the reference low, target is "low - range", SL at the high |
| Trade management | No more trades for the day, regardless of further breakouts |
| End of session (if open) | Trades may be closed per further logic or left to strategy to handle |
### Key Features and Benefits
- **Discipline:** Only one trade per day, minimizing overtrading.
- **Clarity:** Transparent entry/exit rules; no discretionary execution.
- **Flexibility:** User can bias system to buy-only, sell-only, or allow both, depending on trend or personal view.
- **Simple Risk Control:** Pre-defined stop loss and profit target for every trade.
- **Works best in:** Trending, breakout-prone markets with a history of impulsive moves early in the session.
This strategy is ideal for systematic traders looking to capture the Hang Seng's early session momentum, with robust rule-based management and minimal intervention.
Gold ORB Strategy (15-min Range, 5-min Entry)The Gold ORB (Opening Range Breakout) Strategy is designed for day traders looking to capitalize on the price action in the early part of the trading day, specifically using a 15-minute range for identifying the opening range and a 5-minute timeframe for breakout entries. The strategy trades the Gold market (XAU/USD) during the New York session.
Opening Range: The strategy defines the Opening Range (ORB) between 9:30 AM EST and 9:45 AM EST using the highest and lowest points during this 15-minute window.
Breakout Entries: The strategy enters trades when the price breaks above the ORB high for a long position or below the ORB low for a short position. It waits for a 5-minute candle close outside the range before entering a trade.
Stop Loss and Take Profit: The stop loss is placed at 50% of the ORB range, and the take profit is set at twice the ORB range (1:2 risk-reward ratio).
Time Window: The strategy only executes trades before 12:00 PM EST, avoiding late-day market fluctuations and consolidations.
Quantitative Breakout Bands (AIBitcoinTrend)Quantitative Breakout Bands (AIBitcoinTrend) is an advanced indicator designed to adapt to dynamic market conditions by utilizing a Kalman filter for real-time data analysis and trend detection. This innovative tool empowers traders to identify price breakouts, evaluate trends, and refine their trading strategies with precision.
👽 What Are Quantitative Breakout Bands, and Why Are They Unique?
Quantitative Breakout Bands combine advanced filtering techniques (Kalman Filters) with statistical measures such as mean absolute error (MAE) to create adaptive price bands. These bands adjust to market conditions dynamically, providing insights into volatility, trend strength, and breakout opportunities.
What sets this indicator apart is its ability to incorporate both position (price) and velocity (rate of price change) into its calculations, making it highly responsive yet smooth. This dual consideration ensures traders get reliable signals without excessive lag or noise.
👽 The Math Behind the Indicator
👾 Kalman Filter Estimation:
At the core of the indicator is the Kalman Filter, a recursive algorithm used to predict the next state of a system based on past observations. It incorporates two primary elements:
State Prediction: The indicator predicts future price (position) and velocity based on previous values.
Error Covariance Adjustment: The process and measurement noise parameters refine the prediction's accuracy by balancing smoothness and responsiveness.
👾 Breakout Bands Calculation:
The breakout bands are derived from the mean absolute error (MAE) of price deviations relative to the filtered trendline:
float upperBand = kalmanPrice + bandMultiplier * mae
float lowerBand = kalmanPrice - bandMultiplier * mae
The multiplier allows traders to adjust the sensitivity of the bands to market volatility.
👾 Slope-Based Trend Detection:
A weighted slope calculation measures the gradient of the filtered price over a configurable window. This slope determines whether the market is trending bullish, bearish, or neutral.
👾 Trailing Stop Mechanism:
The trailing stop employs the Average True Range (ATR) to calculate dynamic stop levels. This ensures positions are protected during volatile moves while minimizing premature exits.
👽 How It Adapts to Price Movements
Dynamic Noise Calibration: By adjusting process and measurement noise inputs, the indicator balances smoothness (to reduce noise) with responsiveness (to adapt to sharp price changes).
Trend Responsiveness: The Kalman Filter ensures that trend changes are quickly identified, while the slope calculation adds confirmation.
Volatility Sensitivity: The MAE-based bands expand and contract in response to changes in market volatility, making them ideal for breakout detection.
👽 How Traders Can Use the Indicator
👾 Breakout Detection:
Bullish Breakouts: When the price moves above the upper band, it signals a potential upward breakout.
Bearish Breakouts: When the price moves below the lower band, it signals a potential downward breakout.
The trailing stop feature offers a dynamic way to lock in profits or minimize losses during trending moves.
👾 Trend Confirmation:
The color-coded Kalman line and slope provide visual cues:
Bullish Trend: Positive slope, green line.
Bearish Trend: Negative slope, red line.
👽 Why It’s Useful for Traders
Dynamic and Adaptive: The indicator adjusts to changing market conditions, ensuring relevance across timeframes and asset classes.
Noise Reduction: The Kalman Filter smooths price data, eliminating false signals caused by short-term noise.
Comprehensive Insights: By combining breakout detection, trend analysis, and risk management, it offers a holistic trading tool.
👽 Indicator Settings
Process Noise (Position & Velocity): Adjusts filter responsiveness to price changes.
Measurement Noise: Defines expected price noise for smoother trend detection.
Slope Window: Configures the lookback for slope calculation.
Lookback Period for MAE: Defines the sensitivity of the bands to volatility.
Band Multiplier: Controls the band width.
ATR Multiplier: Adjusts the sensitivity of the trailing stop.
Line Width: Customizes the appearance of the trailing stop line.
Disclaimer: This indicator is designed for educational purposes and does not constitute financial advice. Please consult a qualified financial advisor before making investment decisions.
Bollinger Bands Enhanced StrategyOverview
The common practice of using Bollinger bands is to use it for building mean reversion or squeeze momentum strategies. In the current script Bollinger Bands Enhanced Strategy we are trying to combine the strengths of both strategies types. It utilizes Bollinger Bands indicator to buy the local dip and activates trailing profit system after reaching the user given number of Average True Ranges (ATR). Also it uses 200 period EMA to filter trades only in the direction of a trend. Strategy can execute only long trades.
Unique Features
Trailing Profit System: Strategy uses user given number of ATR to activate trailing take profit. If price has already reached the trailing profit activation level, scrip will close long trade if price closes below Bollinger Bands middle line.
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Major Trend Filter: Strategy utilizes 100 period EMA to take trades only in the direction of a trend.
Flexible Risk Management: Users can choose number of ATR as a stop loss (by default = 1.75) for trades. This is flexible approach because ATR is recalculated on every candle, therefore stop-loss readjusted to the current volatility.
Methodology
First of all, script checks if currently price is above the 200-period exponential moving average EMA. EMA is used to establish the current trend. Script will take long trades on if this filtering system showing us the uptrend. Then the strategy executes the long trade if candle’s low below the lower Bollinger band. To calculate the middle Bollinger line, we use the standard 20-period simple moving average (SMA), lower band is calculated by the substruction from middle line the standard deviation multiplied by user given value (by default = 2).
When long trade executed, script places stop-loss at the price level below the entry price by user defined number of ATR (by default = 1.75). This stop-loss level recalculates at every candle while trade is open according to the current candle ATR value. Also strategy set the trailing profit activation level at the price above the position average price by user given number of ATR (by default = 2.25). It is also recalculated every candle according to ATR value. When price hit this level script plotted the triangle with the label “Strong Uptrend” and start trail the price at the middle Bollinger line. It also started to be plotted as a green line.
When price close below this trailing level script closes the long trade and search for the next trade opportunity.
Risk Management
The strategy employs a combined and flexible approach to risk management:
It allows positions to ride the trend as long as the price continues to move favorably, aiming to capture significant price movements. It features a user-defined ATR stop loss parameter to mitigate risks based on individual risk tolerance. By default, this stop-loss is set to a 1.75*ATR drop from the entry point, but it can be adjusted according to the trader's preferences.
There is no fixed take profit, but strategy allows user to define user the ATR trailing profit activation parameter. By default, this stop-loss is set to a 2.25*ATR growth from the entry point, but it can be adjusted according to the trader's preferences.
Justification of Methodology
This strategy leverages Bollinger bangs indicator to open long trades in the local dips. If price reached the lower band there is a high probability of bounce. Here is an issue: during the strong downtrend price can constantly goes down without any significant correction. That’s why we decided to use 200-period EMA as a trend filter to increase the probability of opening long trades during major uptrend only.
Usually, Bollinger Bands indicator is using for mean reversion or breakout strategies. Both of them have the disadvantages. The mean reversion buys the dip, but closes on the return to some mean value. Therefore, it usually misses the major trend moves. The breakout strategies usually have the issue with too high buy price because to have the breakout confirmation price shall break some price level. Therefore, in such strategies traders need to set the large stop-loss, which decreases potential reward to risk ratio.
In this strategy we are trying to combine the best features of both types of strategies. Script utilizes ate ATR to setup the stop-loss and trailing profit activation levels. ATR takes into account the current volatility. Therefore, when we setup stop-loss with the user-given number of ATR we increase the probability to decrease the number of false stop outs. The trailing profit concept is trying to add the beat feature from breakout strategies and increase probability to stay in trade while uptrend is developing. When price hit the trailing profit activation level, script started to trail the price with middle line if Bollinger bands indicator. Only when candle closes below the middle line script closes the long trade.
Backtest Results
Operating window: Date range of backtests is 2020.10.01 - 2024.07.01. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 30%
Maximum Single Position Loss: -9.78%
Maximum Single Profit: +25.62%
Net Profit: +6778.11 USDT (+67.78%)
Total Trades: 111 (48.65% win rate)
Profit Factor: 2.065
Maximum Accumulated Loss: 853.56 USDT (-6.60%)
Average Profit per Trade: 61.06 USDT (+1.62%)
Average Trade Duration: 76 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
Fractal Breakout Trend Following StrategyOverview
The Fractal Breakout Trend Following Strategy is a trend-following system which utilizes the Willams Fractals and Alligator to execute the long trades on the fractal's breakouts which have a high probability to be the new uptrend phase beginning. This system also uses the normalized Average True Range indicator to filter trades after a large moves, because it's more likely to see the trend continuation after a consolidation period. Strategy can execute only long trades.
Unique Features
Trend and volatility filtering system: Strategy uses Williams Alligator to filter the counter-trend fractals breakouts and normalized Average True Range to avoid the trades after large moves, when volatility is high
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Flexible Risk Management: Users can choose the stop-loss percent (by default = 3%) for trades, but strategy also has the dynamic stop-loss level using down fractals.
Methodology
The strategy places stop order at the last valid fractal breakout level. Validity of this fractal is defined by the Williams Alligator indicator. If at the moment of time when price breaking the last fractal price is higher than Alligator's teeth line (8 period SMA shifted 5 bars in the future) this is a valid breakout. Moreover strategy has the additional volatility filtering system using normalized ATR. It calculates the average normalized ATR for last user-defined number of bars and if this value lower than the user-defined threshold value the long trade is executed.
When trade is opened, script places the stop loss at the price higher of two levels: user defined stop-loss from the position entry price or down fractal validation level. The down fractal is valid with the rule, opposite as the up fractal validation. Price shall break to the downside the last down fractal below the Willians Alligator's teeth line.
Strategy has no fixed take profit. Exit level changes with the down fractal validation level. If price is in strong uptrend trade is going to be active until last down fractal is not valid. Strategy closes trade when price hits the down fractal validation level.
Risk Management
The strategy employs a combined approach to risk management:
It allows positions to ride the trend as long as the price continues to move favorably, aiming to capture significant price movements. It features a user-defined stop-loss parameter to mitigate risks based on individual risk tolerance. By default, this stop-loss is set to a 3% drop from the entry point, but it can be adjusted according to the trader's preferences.
Justification of Methodology
This strategy leverages Williams Fractals to open long trade when price has broken the key resistance level to the upside. This resistance level is the last up fractal and is shall be broken above the Williams Alligator's teeth line to be qualified as the valid breakout according to this strategy. The Alligator filtering increases the probability to avoid the false breakouts against the current trend.
Moreover strategy has an additional filter using Average True Range(ATR) indicator. If average value of ATR for the last user-defined number of bars is lower than user-defined threshold strategy can open the long trade according to open trade condition above. The logic here is following: we want to open trades after period of price consolidation inside the range because before and after a big move price is more likely to be in sideways, but we need a trend move to have a profit.
Another one important feature is how the exit condition is defined. On the one hand, strategy has the user-defined stop-loss (3% below the entry price by default). It's made to give users the opportunity to restrict their losses according to their risk-tolerance. On the other hand, strategy utilizes the dynamic exit level which is defined by down fractal activation. If we assume the breaking up fractal is the beginning of the uptrend, breaking down fractal can be the start of downtrend phase. We don't want to be in long trade if there is a high probability of reversal to the downside. This approach helps to not keep open trade if trend is not developing and hold it if price continues going up.
Backtest Results
Operating window: Date range of backtests is 2023.01.01 - 2024.05.01. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 30%
Maximum Single Position Loss: -3.19%
Maximum Single Profit: +24.97%
Net Profit: +3036.90 USDT (+30.37%)
Total Trades: 83 (28.92% win rate)
Profit Factor: 1.953
Maximum Accumulated Loss: 963.98 USDT (-8.29%)
Average Profit per Trade: 36.59 USDT (+1.12%)
Average Trade Duration: 72 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h and higher time frames and the BTC/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
Momentum ProfileProfile market behavior in horizontal zones
Profile Sidebar
Buckets pointing rightward indicate upward security movement in the lookahead window at that level, and buckets pointing leftward indicate downward movement in the lookahead window.
Green profile buckets indicate the security's behavior following an uptrend in the lookbehind window. Conversely, Red profile buckets show security's behavior following a downtrend in the lookbehind window. Yellow profile buckets show behavior following sideways movement.
Buckets length corelates with the amount of movement measured in that direction at that level.
Inputs
Length determines how many bars back are considered for the calculation. On most securities, this can be increased to just above 4000 without issues.
Rows determines the number of buckets that the securities range is divided into.
You can increase or decrease the threshold for which moves are considered sideways with the sideways_filter input: higher means more moves are considered sideways.
The lookbehind input determines the lookbehind window. Specifically, how many bars back are considered when determining whether a data point is considered green (uptrend), red (downtrend), or yellow (no significant trend).
The lookahead input determines how many bars after the current bar are considered when determining the length and direction of each bucket (leftward for downward moves, rightward for upward moves).
Profile_width and Profile_spacing are cosmetic choices.
Intrabar support is not current supported.
Region Highlighting
Regions highlighted green saw an upward move in the lookahead window for both lookbehind downtrends and uptrends. In other words, both red and green profile buckets pointed rightward.
Regions highlighted red saw a downward move in the lookahead window both for lookbehind downtrends and uptrends.
Regions highlighted brown indicate a reversal region: uptrends were followed by downtrends, and vice versa. These regions often indicate a chop range or sometimes support/resistance levels. On the profile, this means that green buckets pointed left, and red buckets pointed right.
Regions highlighted purple indicate that whatever direction the security was moving, it continued that way. On the profile, this means that green buckets pointed right, and red buckets pointed left in that region.
Ichimoku Clouds Strategy Long and ShortOverview:
The Ichimoku Clouds Strategy leverages the Ichimoku Kinko Hyo technique to offer traders a range of innovative features, enhancing market analysis and trading efficiency. This strategy is distinct in its combination of standard methodology and advanced customization, making it suitable for both novice and experienced traders.
Unique Features:
Enhanced Interpretation: The strategy introduces weak, neutral, and strong bullish/bearish signals, enabling detailed interpretation of the Ichimoku cloud and direct chart plotting.
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Dual Trading Modes: Long and Short modes are available, allowing alignment with market trends.
Flexible Risk Management: Offers three styles in each mode, combining fixed risk management with dynamic indicator states for versatile trade management.
Indicator Line Plotting: Enables plotting of Ichimoku indicator lines on the chart for visual decision-making support.
Methodology:
The strategy utilizes the standard Ichimoku Kinko Hyo model, interpreting indicator values with settings adjustable through a user-friendly menu. This approach is enhanced by TradingView's built-in strategy tester for customization and market selection.
Risk Management:
Our approach to risk management is dynamic and indicator-centric. With data from the last year, we focus on dynamic indicator states interpretations to mitigate manual setting causing human factor biases. Users still have the option to set a fixed stop loss and/or take profit per position using the corresponding parameters in settings, aligning with their risk tolerance.
Backtest Results:
Operating window: Date range of backtests is 2023.01.01 - 2024.01.04. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Maximum Single Position Loss: -6.29%
Maximum Single Profit: 22.32%
Net Profit: +10 901.95 USDT (+109.02%)
Total Trades: 119 (51.26% profitability)
Profit Factor: 1.775
Maximum Accumulated Loss: 4 185.37 USDT (-22.87%)
Average Profit per Trade: 91.67 USDT (+0.7%)
Average Trade Duration: 56 hours
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters. Backtest is calculated using deep backtest option in TradingView built-in strategy tester
How to Use:
Add the script to favorites for easy access.
Apply to the desired chart and timeframe (optimal performance observed on the 1H chart, ForEx or cryptocurrency top-10 coins with quote asset USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
Opening Range Gaps [TFO]This indicator displays Opening Range Gaps with an adjustable time window. Its intention is to capture the discrepancy between the close price of previous and new Real Trading Hours (RTH) sessions, i.e. yesterday's close compared to today's open. A gap will be drawn from this area with a solid line denoting its midpoint, and dashed lines denoting the upper and lower quartiles of its range. Its color is determined by whether the new session open price is above or below the previous session close.
The Gap Session parameter allows users to define the specific time window for which to capture the "gap" in price. Using U.S. index futures as an example, we can use 16:00 - 09:30 (EST) to capture the discrepancy between the previous day's close price and the current day's open price. However, this parameter is left as adjustable for users that may want to observe different markets or simply experiment with different time windows.
Show Session Delineations will draw vertical timestamps denoting the start and end times of the provided Gap Session. Track Start Price serves as a visual aid to track the initial price of the Gap Session until its end price is validated, for easy visual verification of a gap's upper and lower bounds. With both options turned off, the indicator will only display the gap boxes and lines, as shown here:
Extend Boxes will draw all gaps with an indefinite extension to the right. This can get messy with a large number of boxes, which is why we have a Keep Last parameter to limit how many sessions' drawings should be stored. Any drawings that were made beyond this number of sessions in the past will automatically be deleted.
The Timeframe Limit will dictate that the indicator as a whole will only draw objects on timeframes less than or equal to this timeframe, determined by the user. In some cases this may help users avoid resolution errors which may arise from using timeframes that are too large for a given session. For example, if a user wanted to track a Gap Session of 16:15-09:30, the Timeframe Limit should be set to 15 minutes because the close price at 16:15 cannot be observed on a 30 minute chart (or greater).
Fibonacci ClustersI was reading about Fibonacci Clusters on investopedia (www.investopedia.com) and couldn't find a script for it on tradingveiw. Apparently some people use it successfully but I found it a little chaotic. This script will mark the retracements in a window's length, and you can set this for six windows. This script isn't very pretty because it doesn't seem obviously useful and pinescript has far too many deficiencies to fully flesh this idea out. I was able to make more sense out of larger windowing times (500-4000 periods), than shorter ones (25-333). Try it out, see what it shows you. Happy trading
Markov + Monte Carlo Simulation with EVMarkov Monte Carlo Projection (MMCP) – A Probabilistic Approach to Price Forecasting
Introduction: A New Approach to Price Projection
The Markov Monte Carlo Projection (MMCP) is an advanced stochastic forecasting tool that models potential future price paths using a combination of Markov Chain transition probabilities and Monte Carlo simulations. Unlike traditional technical indicators that rely on fixed formulas, MMCP employs probability distributions and simulated price movement paths to estimate future price behavior dynamically.
This indicator is designed to adapt to changing market conditions and provides traders with a probabilistic framework rather than a fixed forecast. By incorporating volatility modeling, MMCP enables traders to size projections proportionally to recent price action, making it an adaptive and flexible forecasting tool.
Mathematical Foundations
Markov Chains: Modeling Probability of Price Movements
A Markov Chain is a stochastic process where the probability of transitioning to the next state depends only on the current state and not on past states (i.e., it is memoryless).
For price movement, MMCP analyzes the past N bars (set by the lookback window) to determine the transition probabilities of price moving up, down, or remaining the same based on past behavior:
Pup=Number of Up MovesTotal Moves
Pup=Total MovesNumber of Up Moves
Pdown=Number of Down MovesTotal Moves
Pdown=Total MovesNumber of Down Moves
Psame=1−(Pup+Pdown)
Psame=1−(Pup+Pdown)
These probabilities guide how future price movements are simulated, ensuring that projections reflect historical price behavior tendencies.
Monte Carlo Simulations: Generating Possible Futures
Monte Carlo simulations involve running many random trials to estimate possible outcomes. Each trial simulates a future price path by:
Randomly selecting a direction based on the Markov probabilities Pup,Pdown,PsamePup,Pdown,Psame.
Determining the magnitude of the price movement using a normally distributed volatility model.
Iterating this process across multiple forecast bars to simulate a range of potential price paths.
This process does not predict a single outcome, but rather generates a probability-weighted range of future price possibilities.
Volatility Modeling: Scaling Movements Proportionally
Why We Use Standard Deviation (σσ)
Price movement is inherently volatile, and the magnitude of price shifts must be scaled relative to recent volatility. MMCP calculates rolling price returns and then derives the standard deviation of those returns:
σ=stdev(price returns,lookback)
σ=stdev(price returns,lookback)
The Volatility Multiplier allows users to adjust the impact of this volatility on projected movements. This makes the indicator adaptive to different asset price ranges.
Key User Adjustments
1. Volatility Multiplier – Tuning Projections for Different Assets
The scale of the Volatility Multiplier must be tuned for each asset because it is relative to the magnitude of price action. For example:
Low-priced assets (e.g., $2.50 stocks) → A multiplier of 0.1 works best.
Mid-priced assets (e.g., $250 stocks) → A multiplier of 3 works best.
High-priced assets (e.g., Bitcoin) → A multiplier of 1000 works best.
🔹 If projections seem too extreme, decrease the multiplier.
🔹 If projections seem too flat, increase the multiplier.
The Volatility Multiplier can also be fine-tuned to make the projected signal proportionate to the immediately preceding price action.
2. Expected Value (EV) Path – Analyzing Aggregate Future Probabilities
The EV Line is a computed average of all simulated paths, giving traders an expected mean trajectory.
If you find that the EV Line is not visible, try increasing the volatility multiplier to make it more pronounced.
3. Projection Inversion – Enhancing Analysis with Paired Indicators
A unique feature of MMCP is the projection inversion toggle, designed to allow traders to run multiple instances of the indicator in tandem.
When one instance is set to normal projection and another to inverted projection, traders can pair them together using identical settings (except inversion). This setup allows for a mirrored probability perspective and enhances visualizing volatility dynamics.
Additionally, traders can use multiple sets of paired indicators, each with a different lookback window, to build a multi-layered, probability-driven market visualization. This dynamic approach provides an evolving structure of probable price movement in different time frames, offering deeper insights into potential market conditions.
How MMCP Works in Real-Time
Each new bar triggers a fresh Monte Carlo simulation, meaning that projections organically evolve with the market. This ensures that MMCP is always responding to current conditions, rather than applying static assumptions.
How to Use MMCP in Trading
✔ Identifying Potential Reversal & Continuation Zones
If most Monte Carlo paths project upward, bullish momentum is likely.
If most Monte Carlo paths project downward, bearish momentum is likely.
The Expected Value (EV) Line can help confirm the most probable trajectory.
✔ Analyzing Market Sentiment in Real Time
Use multiple instances of MMCP with different lookback windows to capture short-term vs. long-term sentiment.
Enable projection inversion to analyze potential mirrored moves.
✔ Fine-Tuning MMCP for Your Strategy
Adjust the Volatility Multiplier to match the price scale of your asset.
Increase the number of simulations to improve statistical robustness.
Use shorter lookback windows for more responsive predictions, or longer windows for more stable forecasts.
Why MMCP is a Game-Changer
✅ Dynamic & Probabilistic – Unlike fixed indicators, MMCP adapts in real-time.
✅ Fully Stochastic – MMCP embraces uncertainty using Markov models & Monte Carlo simulations.
✅ Customizable for Any Asset – Adjust the Volatility Multiplier for small or large price movements.
✅ Live Updates – The projection organically evolves with every new price bar.
✅ Multi-Perspective Analysis – Traders can run paired normal and inverted projections for deeper insights.
By tuning Volatility Multiplier, Lookback Window, and Projection Inversion, traders can customize MMCP to fit their strategy.
Final Thoughts
The Markov Monte Carlo Projection (MMCP) is not about making absolute predictions—it is about understanding probability distributions in price action.
By leveraging Monte Carlo simulations, Markov transition probabilities, and dynamic volatility modeling, MMCP gives traders a powerful probability-based edge in forecasting potential price movement.
Volume Forecasting [LuxAlgo]The Volume Forecasting indicator provides a forecast of volume by capturing and extrapolating periodic fluctuations. Historical forecasts are also provided to compare the method against volume at time t .
This script will not work on tickers that do not have volume data.
🔶 SETTINGS
Median Memory: Number of days used to compute the median and first/third quartiles.
Forecast Window: Number of bars forecasted in the future.
Auto Forecast Window: Set the forecast window so that the forecast length completes an interval.
🔶 USAGE
The periodic nature of volume on certain securities allows users to more easily forecast using historical volume. The forecast can highlight intervals where volume tends to be more important, that is where most trading activity takes place.
More pronounced periodicity will tend to return more accurate forecasts.
The historical forecast can also highlight intervals where high/low volume is not expected.
The interquartile range is also highlighted, giving an area where we can expect the volume to lie.
🔶 DETAILS
This forecasting method is similar to the time series decomposition method used to obtain the seasonal component.
We first segment the chart over equidistant intervals. Each interval is delimited by a change in the daily timeframe.
To forecast volume at time t+1 we see where the current bar lies in the interval, if the bar is the 78th in interval then the forecast on the next bar is made by taking the median of the 79th bar over N intervals, where N is the median memory.
This method ensures capturing the periodic fluctuation of volume.
Bill Williams SystemBill Williams System combine all indicators of Mr. Bill Williams into one window with detail below:
1. Top of window:
Display Fractals with shape triangle down is bottom fractal and shape triangle up is top fractal
2. Bottom of window:
Display Alligator Trend Flat with trend defined as below:
* Up trend: Lips value shift 3 bars greater than Teeth value shift 5 bars. And Teeth value shift 5 bars greater than Jaws value shift 8 bars. By default up trend is green square.
* Down trend: Lips value shift 3 bars less than Teeth value shift 5 bars. And Teeth value shift 5 bars less than Jaws value shift 8 bars. By default down trend is red square.
* Choppy: not up trend and not down trend. By default choppy is gray square.
3. Moving around zero line
* Awesome Oscillator is circles.
* Accelerator Oscillator is columns.
* Gator Oscillator is area.
FlowStateTrader FlowState Trader - Advanced Time-Filtered Strategy
## Overview
FlowState Trader is a sophisticated algorithmic trading strategy that combines precision entry signals with intelligent time-based filtering and adaptive risk management. Built for traders seeking to achieve their optimal performance state, FlowState identifies high-probability trading opportunities within user-defined time windows while employing dynamic trailing stops and partial position management.
## Core Strategy Philosophy
FlowState Trader operates on the principle that peak trading performance occurs when three elements align: **Focus** (precise entry signals), **Flow** (optimal time windows), and **State** (intelligent position management). This strategy excels at finding reversal opportunities at key support and resistance levels while filtering out suboptimal trading periods to keep traders in their optimal flow state.
## Key Features
### 🎯 Focus Entry System
**Support/Resistance Zone Trading**:
- Dynamic identification of key price levels using configurable lookback periods
- Entry signals triggered when price interacts with these critical zones
- Volume confirmation ensures genuine breakout/reversal momentum
- Trend filter alignment prevents counter-trend disasters
**Entry Conditions**:
- **Long Signals**: Price closes above support buffer, touches support level, with above-average volume
- **Short Signals**: Price closes below resistance buffer, touches resistance level, with above-average volume
- Optional trend filter using EMA or SMA for directional bias confirmation
### ⏰ FlowState Time Filtering System
**Comprehensive Time Controls**:
- **12-Hour Format Trading Windows**: User-friendly AM/PM time selection
- **Multi-Timezone Support**: UTC, EST, PST, CST with automatic conversion
- **Day-of-Week Filtering**: Trade only weekdays, weekends, or both
- **Lunch Hour Avoidance**: Automatically skips low-volume lunch periods (12-1 PM)
- **Visual Time Indicators**: Background coloring shows active/inactive trading periods
**Smart Time Features**:
- Handles overnight trading sessions seamlessly
- Prevents trades during historically poor performance periods
- Customizable trading hours for different market sessions
- Real-time trading window status in dashboard
### 🛡️ Adaptive Risk Management
**Multi-Level Take Profit System**:
- **TP1**: First profit target with optional partial position closure
- **TP2**: Final profit target for remaining position
- **Flexible Scaling**: Choose number of contracts to close at each level
**Dynamic Trailing Stop Technology**:
- **Three Operating Modes**:
- **Conservative**: Earlier activation, tighter trailing (protect profits)
- **Balanced**: Optimal risk/reward balance (recommended)
- **Aggressive**: Later activation, wider trailing (let winners run)
- **ATR-Based Calculations**: Adapts to current market volatility
- **Automatic Activation**: Engages when position reaches profitability threshold
### 📊 Intelligent Position Sizing
**Contract-Based Management**:
- Configurable entry quantity (1-1000 contracts)
- Partial close quantities for profit-taking
- Clear position tracking and P&L monitoring
- Real-time position status updates
### 🎨 Professional Visualization
**Enhanced Chart Elements**:
- **Entry Zone Highlighting**: Clear visual identification of trading opportunities
- **Dynamic Risk/Reward Lines**: Real-time TP and SL levels with price labels
- **Trailing Stop Visualization**: Live tracking of adaptive stop levels
- **Support/Resistance Lines**: Key level identification
- **Time Window Background**: Visual confirmation of active trading periods
**Dual Dashboard System**:
- **Strategy Dashboard**: Real-time position info, settings status, and current levels
- **Performance Scorecard**: Live P&L tracking, win rates, and trade statistics
- **Customizable Sizing**: Small, Medium, or Large display options
### ⚙️ Comprehensive Customization
**Core Strategy Settings**:
- **Lookback Period**: Support/resistance calculation period (5-100 bars)
- **ATR Configuration**: Period and multipliers for stops/targets
- **Reward-to-Risk Ratios**: Customizable profit target calculations
- **Trend Filter Options**: EMA/SMA selection with adjustable periods
**Time Filter Controls**:
- **Trading Hours**: Start/end times in 12-hour format
- **Timezone Selection**: Four major timezone options
- **Day Restrictions**: Weekend-only, weekday-only, or unrestricted
- **Session Management**: Lunch hour avoidance and custom periods
**Risk Management Options**:
- **Trailing Stop Modes**: Conservative/Balanced/Aggressive presets
- **Partial Close Settings**: Enable/disable with custom quantities
- **Alert System**: Comprehensive notifications for all trade events
### 📈 Performance Tracking
**Real-Time Metrics**:
- Net profit/loss calculation
- Win rate percentage
- Profit factor analysis
- Maximum drawdown tracking
- Total trade count and breakdown
- Current position P&L
**Trade Analytics**:
- Winner/loser ratio tracking
- Real-time performance scorecard
- Strategy effectiveness monitoring
- Risk-adjusted return metrics
### 🔔 Alert System
**Comprehensive Notifications**:
- Entry signal alerts with price and quantity
- Take profit level hits (TP1 and TP2)
- Stop loss activations
- Trailing stop engagements
- Position closure notifications
## Strategy Logic Deep Dive
### Entry Signal Generation
The strategy identifies high-probability reversal points by combining multiple confirmation factors:
1. **Price Action**: Looks for price interaction with key support/resistance levels
2. **Volume Confirmation**: Ensures sufficient market interest and liquidity
3. **Trend Alignment**: Optional filter prevents counter-trend positions
4. **Time Validation**: Only trades during user-defined optimal periods
5. **Zone Analysis**: Entry occurs within calculated buffer zones around key levels
### Risk Management Philosophy
FlowState Trader employs a three-tier risk management approach:
1. **Initial Protection**: ATR-based stop losses set at strategy entry
2. **Profit Preservation**: Trailing stops activate once position becomes profitable
3. **Scaled Exit**: Partial profit-taking allows for both security and potential
### Time-Based Edge
The time filtering system recognizes that not all trading hours are equal:
- Avoids low-volume, high-spread periods
- Focuses on optimal liquidity windows
- Prevents trading during news events (lunch hours)
- Allows customization for different market sessions
## Best Practices and Optimization
### Recommended Settings
**For Scalping (1-5 minute charts)**:
- Lookback Period: 10-20
- ATR Period: 14
- Trailing Stop: Conservative mode
- Time Filter: Major session hours only
**For Day Trading (15-60 minute charts)**:
- Lookback Period: 20-30
- ATR Period: 14-21
- Trailing Stop: Balanced mode
- Time Filter: Extended trading hours
**For Swing Trading (4H+ charts)**:
- Lookback Period: 30-50
- ATR Period: 21+
- Trailing Stop: Aggressive mode
- Time Filter: Disabled or very broad
### Market Compatibility
- **Forex**: Excellent for major pairs during active sessions
- **Stocks**: Ideal for liquid stocks during market hours
- **Futures**: Perfect for index and commodity futures
- **Crypto**: Effective on major cryptocurrencies (24/7 capability)
### Risk Considerations
- **Market Conditions**: Performance varies with volatility regimes
- **Timeframe Selection**: Lower timeframes require tighter risk management
- **Position Sizing**: Never risk more than 1-2% of account per trade
- **Backtesting**: Always test on historical data before live implementation
## Educational Value
FlowState serves as an excellent learning tool for:
- Understanding support/resistance trading
- Learning proper time-based filtering
- Mastering trailing stop techniques
- Developing systematic trading approaches
- Risk management best practices
## Disclaimer
This strategy is for educational and informational purposes only. Past performance does not guarantee future results. Trading involves substantial risk of loss and is not suitable for all investors. Users should thoroughly backtest the strategy and understand all risks before live trading. Always use proper position sizing and never risk more than you can afford to lose.
---
*FlowState Trader represents the evolution of systematic trading - combining classical technical analysis with modern risk management and intelligent time filtering to help traders achieve their optimal performance state through systematic, disciplined execution.*
OHLCVRangeXThe OHLCVRange library provides modular range-building utilities for Pine Script v6 based on custom conditions like time, price, volatility, volume, and pattern detection. Each function updates a persistent range (OHLCVRange) passed in from the calling script, based on live streaming candles.
This library is designed to support dynamic windowing over incoming OHLCV bars, with all persistent state handled externally (in the indicator or strategy). The library merely acts as a filter and updater, appending or clearing candles according to custom logic.
📦
export type OHLCVRange
OHLCV.OHLCV candles // Sliding window of candles
The OHLCVRange is a simple container holding an array of OHLCV.OHLCV structures.
This structure should be declared in the indicator using var to ensure persistence across candles.
🧩 Range Updater Functions
Each function follows this pattern:
export updateXxxRange(OHLCVRange r, OHLCV.OHLCV current, ...)
r is the range to update.
current is the latest OHLCV candle (typically from your indicator).
Additional parameters control the behavior of the range filter.
🔁 Function List
1. Fixed Lookback Range
export updateFixedRange(OHLCVRange r, OHLCV.OHLCV current, int barsBack)
Keeps only the last barsBack candles.
Sliding window based purely on number of bars.
2. Session Time Range
export updateSessionRange(OHLCVRange r, OHLCV.OHLCV current, int minuteStart, int minuteEnd)
Keeps candles within the [minuteStart, minuteEnd) intraday session.
Clears the range once out of session bounds.
3. Price Zone Range
export updatePriceZoneRange(OHLCVRange r, OHLCV.OHLCV current, float minP, float maxP)
Retains candles within the vertical price zone .
Clears when a candle exits the zone.
4. Consolidation Range
export updateConsolidationRange(OHLCVRange r, OHLCV.OHLCV current, float thresh)
Stores candles as long as the candle range (high - low) is less than or equal to thresh.
Clears on volatility breakout.
5. Volume Spike Range
export updateVolumeSpikeRange(OHLCVRange r, OHLCV.OHLCV current, float avgVol, float mult, int surround)
Triggers a new range when a volume spike ≥ avgVol * mult occurs.
Adds candles around the spike (total surround * 2 + 1).
Can be used to zoom in around anomalies.
6. Engulfing Pattern Range
export updateEngulfingRange(OHLCVRange r, OHLCV.OHLCV current, int windowAround)
Detects bullish or bearish engulfing candles.
Stores 2 * windowAround + 1 candles centered around the pattern.
Clears if no valid engulfing pattern is found.
7. HTF-Aligned Range
export updateHTFAlignedRange(OHLCVRange r, OHLCV.OHLCV current, OHLCV.OHLCV prevHtf)
Used when aligning lower timeframe candles to higher timeframe bars.
Clears and restarts the range on HTF bar transition (compare prevHtf.bar_index with current).
Requires external management of HTF candle state.
💡 Usage Notes
All OHLCVRange instances should be declared as var in the indicator to preserve state:
var OHLCVRange sessionRange = OHLCVRange.new()
sessionRange := OHLCVRange.updateSessionRange(sessionRange, current, 540, 900)
All OHLCV data should come from the OHLCVData library (v15 or later):
import userId/OHLCVData/15 as OHLCV
OHLCV.OHLCV current = OHLCV.getCurrentChartOHLCV()
This library does not use var internally to enforce clean separation of logic and persistence.
📅 Planned Enhancements
Fib zone ranges: capture candles within custom Fibonacci levels.
Custom event ranges: combine multiple filters (e.g., pattern + volume spike).
Trend-based ranges: windowing based on moving average or trend breaks.
Clustering Volatility (ATR-ADR-ChaikinVol) [Sam SDF-Solutions]The Clustering Volatility indicator is designed to evaluate market volatility by combining three widely used measures: Average True Range (ATR), Average Daily Range (ADR), and the Chaikin Oscillator.
Each indicator is normalized using one of the available methods (MinMax, Rank, or Z-score) to create a unified metric called the Score. This Score is further smoothed with an Exponential Moving Average (EMA) to reduce noise and provide a clearer view of market conditions.
Key Features:
Multi-Indicator Integration: Combines ATR, ADR, and the Chaikin Oscillator into a single Score that reflects overall market volatility.
Flexible Normalization: (Supports three normalization methods)
MinMax: Scales values between the observed minimum and maximum.
Rank: Normalizes based on the relative rank within a moving window.
Z-score: Standardizes values using mean and standard deviation.
Dynamic Window Selection: Offers an automatic window selection option based on a specified lookback period, or a fixed window size can be used.
Customizable Weights: Allows the user to assign individual weights to ATR, ADR, and the Chaikin Oscillator. Optionally, weights can be normalized to sum to 1.
Score Smoothing: Applies an EMA to the computed Score to smooth out short-term fluctuations and reduce market noise.
Cluster Visualization: Divides the smoothed Score into a number of clusters, each represented by a distinct color. These colors can be applied to the price bars (if enabled) for an immediate visual indication of the current volatility regime.
How It Works:
Input & Window Setup: Users set parameters for indicator periods, normalization methods, weights, and window size. The indicator can automatically determine the analysis window based on the number of lookback days.
Calculation of Metrics: The indicator computes the ATR, ADR (as the average of bar ranges), and the Chaikin Oscillator (based on the difference between short and long EMAs of the Accumulation/Distribution line).
Normalization & Scoring: Each indicator’s value is normalized and then weighted to form a raw Score. This raw Score is scaled to a range using statistics from the chosen window.
Smoothing & Clustering: The raw Score is smoothed using an EMA. The resulting smoothed Score is then multiplied by the number of clusters to assign a cluster index, which is used to choose a color for visual signals.
Visualization: The smoothed Score is plotted on the chart with a color that changes based on its value (e.g., lime for low, red for high, yellow for intermediate values). Optionally, the price bars are colored according to the assigned cluster.
_____________
This indicator is ideal for traders seeking a quick and clear assessment of market volatility. By integrating multiple volatility measures into one comprehensive Score, it simplifies analysis and aids in making more informed trading decisions.
For more detailed instructions, please refer to the guide here:
Weighted Fourier Transform: Spectral Gating & Main Frequency🙏🏻 This drop has 2 purposes:
1) to inform every1 who'd ever see it that Weighted Fourier Tranform does exist, while being available nowhere online, not even in papers, yet there's nothing incredibly complicated about it, and it can/should be used in certain cases;
2) to show TradingView users how they can use it now in dem endevours, to show em what spectral filtering is, and what can they do with all of it in diy mode.
... so we gonna have 2 sections in the description
Section 1: Weighted Fourier Transform
It's quite easy to include weights in Fourier analysis: you just premultiply each datapoint by its corresponding weight -> feed to direct Fourier Transform, and then divide by weights after inverse Fourier transform. Alternatevely, in direct transform you just multiply contributions of each data point to the real and imaginary parts of the Fourier transform by corresponding weights (in accumulation phase), and in inverse transform you divide by weights instead during the accumulation phase. Everything else stays the same just like in non-weighted version.
If you're from the first target group let's say, you prolly know a thing or deux about how to code & about Fourier Transform, so you can just check lines of code to see the implementation of Weighted Discrete version of Fourier Transform, and port it to to any technology you desire. Pine Script is a developing technology that is incredibly comfortable in use for quant-related tasks and anything involving time series in general. While also using Python for research and C++ for development, every time I can do what I want in Pine Script, I reach for it and never touch matlab, python, R, or anything else.
Weighted version allows you to explicetly include order/time information into the operation, which is essential with every time series, although not widely used in mainstream just as many other obvious and right things. If you think deeply, you'll understand that you can apply a usual non-weighted Fourier to any 2d+ data you can (even if none of these dimensions represent time), because this is a geometric tool in essence. By applying linearly decaying weights inside Fourier transform, you're explicetly saying, "one of these dimensions is Time, and weights represent the order". And obviously you can combine multiple weightings, eg time and another characteristic of each datum, allows you to include another non-spatial dimension in your model.
By doing that, on properly processed (not only stationary but Also centered around zero data), you can get some interesting results that you won't be able to recreate without weights:
^^ A sine wave, centered around zero, period of 16. Gray line made by: DWFT (direct weighted Fourier transform) -> spectral gating -> IWFT (inverse weighted Fourier transform) -> plotting the last value of gated reconstructed data, all applied to expanding window. Look how precisely it follows the original data (the sine wave) with no lag at all. This can't be done by using non-weighted version of Fourier transform.
^^ spectral filtering applied to the whole dataset, calculated on the latest data update
And you should never forget about Fast Fourier Transform, tho it needs recursion...
Section 2: About use cases for quant trading, about this particular implementaion in Pine Script 6 (currently the latest version as of Friday 13, December 2k24).
Given the current state of things, we have certain limits on matrix size on TradingView (and we need big dope matrixes to calculate polynomial regression -> detrend & center our data before Fourier), and recursion is not yet available in Pine Script, so the script works on short datasets only, and requires some time.
A note on detrending. For quality results, Fourier Transform should be applied to not only stationary but also centered around zero data. The rightest way to do detrending of time series
is to fit Cumulative Weighted Moving Polynomial Regression (known as WLSMA in some narrow circles xD) and calculate the deltas between datapoint at time t and this wonderful fit at time t. That's exactly what you see on the main chart of script description: notice the distances between chart and WLSMA, now look lower and see how it matches the distances between zero and purple line in WFT study. Using residuals of one regression fit of the whole dataset makes less sense in time series context, we break some 'time' and order rules in a way, tho not many understand/cares abouit it in mainstream quant industry.
Two ways of using the script:
Spectral Gating aka Spectral filtering. Frequency domain filtering is quite responsive and for a greater computational cost does not introduce a lag the way it works with time-domain filtering. Works this way: direct Fourier transform your data to get frequency & phase info -> compute power spectrum out of it -> zero out all dem freqs that ain't hit your threshold -> inverse Fourier tranform what's left -> repeat at each datapoint plotting the very first value of reconstructed array*. With this you can watch for zero crossings to make appropriate trading decisions.
^^ plot Freq pass to use the script this way, use Level setting to control the intensity of gating. These 3 only available values: -1, 0 and 1, are the general & natural ones.
* if you turn on labels in script's style settings, you see the gray dots perfectly fitting your data. They get recalculated (for the whole dataset) at each update. You call it repainting, this is for analytical & aesthetic purposes. Included for demonstration only.
Finding main/dominant frequency & period. You can use it to set up Length for your other studies, and for analytical purposes simply to understand the periodicity of your data.
^^ plot main frequency/main period to use the script this way. On the screenshot, you can see the script applied to sine wave of period 16, notice how many datapoints it took the algo to figure out the signal's period quite good in expanding window mode
Now what's the next step? You can try applying signal windowing techniques to make it all less data-driven but your ego-driven, make a weighted periodogram or autocorrelogram (check Wiener-Khinchin Theorem ), and maybe whole shiny spectrogram?
... you decide, choice is yours,
The butterfly reflect the doors ...
∞
Points of InterestIndicator for displaying a timed, intraday Range of Price as a Point of Interest (POI) that you may want to track when trading as a potential magnet for price. Quite often you will see Price return to prior days price range before continuing to move. This enables you to track specific portions of a Days Trading session to see what has been revisited and what has not yet been re traded to.
The range is tracked for each trading day between the times that you specify in the Inputs ‘POI Time’ parameter You can also set the Time zone of the Range.
It will mark the Range High and Low for the timed range with lines that can be optionally extended and can be customised in terms of colour, style and width.
It will also Plot a line showing the Equilibrium of the range which is 50% from the High to the Low point of price during the time window that you specified in the ‘POI Time’ Parameter. This can also be customised in terms of visibility, colour, style and width.
You can control an optional Label for the POI Equilibrium Line to include a combination of a user defined prefix, the Date that the POI Equilibrium Line’s range is from and the Price Level of the Equilibrium Line. The colour and size of the label is also configurable
This indicator will also track when a POI Equilibrium Line has been traded to or ‘Tapped’. The tracking can be started after a configurable number of minutes have elapsed from the end of the POI Time window. This can also be customised in terms of visibility, colour, style, extended toggle and width.
Optionally Taps of the POI Equilibrium Level can be counted as valid during specific time windows or session of the day - for example only count taps during New York Morning Trading session.
The indicator uses Lower Time Frame data to compute the Range and 50% / Equilibrium Level so will work accurately on Chart Timeframes up to and including Daily with The POI Time specified down to a Minute resolution.
j trader ModelAn indicator designed to trade indices using the jtrader model and ICT concepts.
jtrader Model:
Below are the key points to trade this model:
Power of 3 is the key element of this model.
Accumulation during pre NY open.NY Open represents 9:30am opening of NY Stock Exchange.
Manipulation(JUDA) immediately after NY open. Juda is a manipulated move by the indices after the session open.
Distribution as a reversal with BOS ,Heatmap preferably during Macros. Distribution is market phase where it moves towards its original expansion during macros. Macros are 20 minute time windows where indices give moves with strong force. Heatmap represent kis point of interests for the trade.
Indicator Features:
Creates a complete window of trading with key elements needed to trade The jtrader Model.
Identify and marks key points of interests (POIs).
Identify and highlights key swing points of Sessions, Days, Weeks, True open etc.
Highlights the NY Open.
Highlights the Macros.
Indicator Settings:
Enable/Disable any POI marking.
Adjust session time ranges.
Adjust enabling of model poi marking time window.
Choose color of choice for highlighting the POI.
Enable/Disable Macros.
This indicator will gradually updated with new features to trade the jtrader model. Your feedback will help us improve and enhance this indicator.
Gaussian Moving Average (GA)The Gaussian moving average (GA) is a technical analysis tool that is used to smooth out price data and identify trends. It is similar to a simple moving average (SMA), but instead of using equal weights for each value in the calculation, it uses a Gaussian distribution to assign weights. This means that the values at the edges of the calculation window have lower weights and are given less importance in the moving average calculation, while the values at the center of the window have higher weights and are given more importance. This helps to reduce the impact of noisy or outlying data points on the moving average and make it more responsive to changes in the underlying trend.
To calculate the GA, the script first defines the standard deviation of the Gaussian distribution. This is a measure of how spread out the values in the distribution are and can be adjusted to change the shape of the curve. The default value in the script is set to one quarter of the length of the calculation window, which gives a bell-shaped curve with a peak at the center of the window.
Next, the script generates an array of indices from 1 to the length of the calculation window. This is used to calculate the weights for each value in the moving average calculation. The weights are calculated using the Gaussian distribution, with the indices as the input values and the standard deviation as a parameter. This produces a set of weights that are highest at the center of the window and decrease towards the edges.
Finally, the script calculates the weighted sum of the values in the calculation window using the weights. This is divided by the sum of the weights to give the moving average value. The resulting moving average is smoother and more responsive to changes in the underlying trend than a simple moving average, making it a useful tool for technical analysis.
Overall, this script is useful for analyzing financial data and identifying trends in the data. By using the Gaussian moving average, the script can smooth out fluctuations in the data and make trends more apparent, which can help traders make more informed decisions.
WaveTrend 3D█ OVERVIEW
WaveTrend 3D (WT3D) is a novel implementation of the famous WaveTrend (WT) indicator and has been completely redesigned from the ground up to address some of the inherent shortcomings associated with the traditional WT algorithm.
█ BACKGROUND
The WaveTrend (WT) indicator has become a widely popular tool for traders in recent years. WT was first ported to PineScript in 2014 by the user @LazyBear, and since then, it has ascended to become one of the Top 5 most popular scripts on TradingView.
The WT algorithm appears to have origins in a lesser-known proprietary algorithm called Trading Channel Index (TCI), created by AIQ Systems in 1986 as an integral part of their commercial software suite, TradingExpert Pro. The software’s reference manual states that “TCI identifies changes in price direction” and is “an adaptation of Donald R. Lambert’s Commodity Channel Index (CCI)”, which was introduced to the world six years earlier in 1980. Interestingly, a vestige of this early beginning can still be seen in the source code of LazyBear’s script, where the final EMA calculation is stored in an intermediate variable called “tci” in the code.
█ IMPLEMENTATION DETAILS
WaveTrend 3D is an alternative implementation of WaveTrend that directly addresses some of the known shortcomings of the indicator, including its unbounded extremes, susceptibility to whipsaw, and lack of insight into other timeframes.
In the canonical WT approach, an exponential moving average (EMA) for a given lookback window is used to assess the variability between price and two other EMAs relative to a second lookback window. Since the difference between the average price and its associated EMA is essentially unbounded, an arbitrary scaling factor of 0.015 is typically applied as a crude form of rescaling but still fails to capture 20-30% of values between the range of -100 to 100. Additionally, the trigger signal for the final EMA (i.e., TCI) crossover-based oscillator is a four-bar simple moving average (SMA), which further contributes to the net lag accumulated by the consecutive EMA calculations in the previous steps.
The core idea behind WT3D is to replace the EMA-based crossover system with modern Digital Signal Processing techniques. By assuming that price action adheres approximately to a Gaussian distribution, it is possible to sidestep the scaling nightmare associated with unbounded price differentials of the original WaveTrend method by focusing instead on the alteration of the underlying Probability Distribution Function (PDF) of the input series. Furthermore, using a signal processing filter such as a Butterworth Filter, we can eliminate the need for consecutive exponential moving averages along with the associated lag they bring.
Ideally, it is convenient to have the resulting probability distribution oscillate between the values of -1 and 1, with the zero line serving as a median. With this objective in mind, it is possible to borrow a common technique from the field of Machine Learning that uses a sigmoid-like activation function to transform our data set of interest. One such function is the hyperbolic tangent function (tanh), which is often used as an activation function in the hidden layers of neural networks due to its unique property of ensuring the values stay between -1 and 1. By taking the first-order derivative of our input series and normalizing it using the quadratic mean, the tanh function performs a high-quality redistribution of the input signal into the desired range of -1 to 1. Finally, using a dual-pole filter such as the Butterworth Filter popularized by John Ehlers, excessive market noise can be filtered out, leaving behind a crisp moving average with minimal lag.
Furthermore, WT3D expands upon the original functionality of WT by providing:
First-class support for multi-timeframe (MTF) analysis
Kernel-based regression for trend reversal confirmation
Various options for signal smoothing and transformation
A unique mode for visualizing an input series as a symmetrical, three-dimensional waveform useful for pattern identification and cycle-related analysis
█ SETTINGS
This is a summary of the settings used in the script listed in roughly the order in which they appear. By default, all default colors are from Google's TensorFlow framework and are considered to be colorblind safe.
Source: The input series. Usually, it is the close or average price, but it can be any series.
Use Mirror: Whether to display a mirror image of the source series; for visualizing the series as a 3D waveform similar to a soundwave.
Use EMA: Whether to use an exponential moving average of the input series.
EMA Length: The length of the exponential moving average.
Use COG: Whether to use the center of gravity of the input series.
COG Length: The length of the center of gravity.
Speed to Emphasize: The target speed to emphasize.
Width: The width of the emphasized line.
Display Kernel Moving Average: Whether to display the kernel moving average of the signal. Like PCA, an unsupervised Machine Learning technique whereby neighboring vectors are projected onto the Principal Component.
Display Kernel Signal: Whether to display the kernel estimator for the emphasized line. Like the Kernel MA, it can show underlying shifts in bias within a more significant trend by the colors reflected on the ribbon itself.
Show Oscillator Lines: Whether to show the oscillator lines.
Offset: The offset of the emphasized oscillator plots.
Fast Length: The length scale factor for the fast oscillator.
Fast Smoothing: The smoothing scale factor for the fast oscillator.
Normal Length: The length scale factor for the normal oscillator.
Normal Smoothing: The smoothing scale factor for the normal frequency.
Slow Length: The length scale factor for the slow oscillator.
Slow Smoothing: The smoothing scale factor for the slow frequency.
Divergence Threshold: The number of bars for the divergence to be considered significant.
Trigger Wave Percent Size: How big the current wave should be relative to the previous wave.
Background Area Transparency Factor: Transparency factor for the background area.
Foreground Area Transparency Factor: Transparency factor for the foreground area.
Background Line Transparency Factor: Transparency factor for the background line.
Foreground Line Transparency Factor: Transparency factor for the foreground line.
Custom Transparency: Transparency of the custom colors.
Total Gradient Steps: The maximum amount of steps supported for a gradient calculation is 256.
Fast Bullish Color: The color of the fast bullish line.
Normal Bullish Color: The color of the normal bullish line.
Slow Bullish Color: The color of the slow bullish line.
Fast Bearish Color: The color of the fast bearish line.
Normal Bearish Color: The color of the normal bearish line.
Slow Bearish Color: The color of the slow bearish line.
Bullish Divergence Signals: The color of the bullish divergence signals.
Bearish Divergence Signals: The color of the bearish divergence signals.
█ ACKNOWLEDGEMENTS
@LazyBear - For authoring the original WaveTrend port on TradingView
@PineCoders - For the beautiful color gradient framework used in this indicator
@veryfid - For the inspiration of using mirrored signals for cycle analysis and using multiple lookback windows as proxies for other timeframes
Singular and Cumulative Volume Delta (SVD+CVD)This a Volume Delta indicator with Cumulative Volume Delta.
I have been studying Volume Delta and CVD trading strategies and indicator styles.
This implementation was developed to test a basic trailing window / oscillator approach.
Script has been republished as public and searchable.
Changelog from private era follows.
Jun 9 (2022)
Release Notes:
Added option to use EMA/SMA based cumulation. This will not scale well with singular data, so default view is still SUM.
Jun 9 (2022)
Release Notes:
Outdated comment correction.
Jun 9 (2022)
Release Notes:
Added default option to normalilze visual scale of MA cumulation types. The averaging creates a singular value sized results, instead of a range-sums. This multiples that candle result by the range length to get a range-sum sized result.
Added option to scale the cumulation size relative to the volume size. 1-to-1 scaling creates singular deltas that can be hard to see with all options on. This allows you to beef them up for visual or weighting purposes.
Jun 15 (2022)
Release Notes: * Added break even level for current delta. Tells where current delta must land for cumulative delta to stay flat.
* Added comparison of historical cumulative levels to current level. The historical levels are the initial values going into current accumulation window.
* Changed title of indicator to be more generic, clear, and searchable.
Jun 15 (2022)
Release Notes: * Added option to have the cumulation cutoff line AFTER or OVER the end of the cumulation window. This change is to ensure the indicator clearly documents it's behavior and avoids confusion on this / last cumulation window semantics.
* Bugfix: Initial levels were pulled from cumulation line which was AFTER end of window. This has been changed to the initial values INSIDE the cumulation window.
* Code cleanup.
June 17th (2022)
Release Notes: Marked as beta because TV confirmed they no longer allow private scripts to be changed to public. (Despite lingering documentation that says otherwise.
June 17th (2022)
Re-published as public.
Rescaled RangeRescaled Range is an implementation of the fractal rescaled ranges developed by Harold Edwin Hurst and Benoit Mandlebrot.
Settings include:
“Window Size” - the number of time periods in a window over which price changes are analyzed. This will generally correspond to your trading horizon and defaults to 15.
“Number of Windows” - the number of “Window Size” intervals to average the rescaled range value over. By looking at a number of such periods, the study captures potential volatility that may have occurred in the recent past. This should be set long enough to capture the current trend (defaults to 63), but not so long to include volatility regimes no longer in play.
Each window in the average is offset by 1 time period from the the others - like a moving average.
This study plots two lines - “Rescaled Range High” which indicates overbought conditions when the price moves above it and “Rescaled Range Low” which indicates oversold conditions when the price moves below it.
This study builds upon the bridge range work of Joe Catanzaro (joecat808) and Caleb Sandfort (calebsandfort). Bridge ranges are used to position the rescaled range with respect to the closing price.
Note: Your time series must have (Window Size + Number of Windows) or more periods of data to complete this study. For example, using the defaults, your time series should have (15+63) = 78 periods or more of data.