Sequentially Filtered Moving AverageThe previously proposed sequential filter aimed to filter variations lower than a certain period, this allowed to remove noisy variations and retain only the closing price values that occurred after a consecutive up/down, however because of the noisy nature of the closing price large filtering was impossible, in order to tackle to this problem the same indicator using a simple moving average as input is proposed, this allow for smoother results.
We will see that the proposed indicator can provide an alternative moving average that could be used as slow moving average in crossover systems.
The Indicator
The length parameter as the same function as the one described in the sequential filter post, however here length also control the period of the moving average used input, in short larger values of length will return a smoother but less reactive output.
In blue the moving average with length = 200, and in red the moving average with length = 50.
It is interesting to see how the moving average remain flat during ranging/flat market periods
Unfortunately like the sequential filter the sequentially filtered moving average (SFMA) is not affected by large short term variations such as gaps or short term volatile events. This is because of the nature of the sequential filter to ignore movements amplitude and only focus on the variation period.
Moving Average Crossover System
The SFMA is equal to a simple moving average of period length when a consecutive up/down sequence of size length has occurred, else the SFMA is equal to its precedent value, therefore we could expect less crosses between a fast moving average and the SFMA as slow moving average.
We can see on the figure above that the fast moving average of period 50 (in green) cross more with the slow moving average of period 200 (in red) than with the SFMA of period 200 (in blue).
Crosses can occur at the same time as with the classical slow moving average (in red) or a bit later.
Conclusion
A new moving average based on the recently proposed sequential filter has been proposed, it can be seen that under a moving average crossover system the proposed moving average seems to be more effective at producing less crosses without necessarily doing it with an excessive lag, in fact the moving average has either lag (length-1)/2 or lag length .
In the future it could be interesting to provide an hybrid alternative that take into account volatility as well as variations period.
Thanks for reading !
在脚本中搜索"200元+股票大盘"
Multicolor Bollinger Bands - Market PhasesHi everyone
Hope you're all doing well 😘
Today I feel gracious and decided to give to the community. And giving not only an indicator but also a trading method
This trading method shows how a convergence based on moving averages is tremendous
Multicolour Bollinger Bands indicator that indicates market phases.
It plots on the price chart, thanks to different color zones between the bands, a breakdown of the different phases that the price operates during a trend.
The different zones are identified as follows:
- red color zone: trend is bearish, price is below the 200 periods moving average
- orange color zone: price operate a technical rebound below the 200 periods moving average
- yellow color zone: (phase 1 which indicate a new bearish cycle)
- light green zone: (phase 2 which indicate a new bullish cycle)
- dark green zone: trend is bullish, price is above the 200 periods moving average
- grey color zone: calm phase of price
- dark blue color zone: price is consolidating in either bullish or bearish trend
- light blue zones: price will revert to a new opposite trend (either long or short new trend)
By identifying clearly the different market phases with the multicolor Bollinger bands, the market entries by either a the beginning of a new trend or just after a rebound or a consolidating phase is easier to spot on.
Trade well and trade safe
Dave
EMA - Baby WhaleThis script will show you the 8, 13, 21, 55, 100 and 200 EMA .
You can change the colors yourself if you want.
You can use the EMA to define the trend.
A good strategy that traders use is a 55 EMA crossover.
This means that when the 8, 13 and 21 all cross the 55 EMA you place a buy or sell order.
You close your position when the same thing happens on the other side.
Another great way that traders use these EMA's is to spot a Golden or Death cross.
When the 55 and 200 EMA cross and the 200 becomes support it means we're in a uptrend and vice versa.
If you want access, just send a message please.
Much love from Baby Whale!!
🙏❤️🐳
BTC 1D Alerts V1This script contains a variety of key indicator for bitcoin all-in-one and they can be activated individually in the menu. These are meant to be used on the 1D chart for Bitcoin.
1457 Day Moving Average: the bottom of the bitcoin price and arguably the rock bottom price target.
Ichimoku Cloud: a common useful indicator for bitcoin support and resistance.
350ma fibs (21 8 5 3 2 and 1.6) : Signify the tops of each logarthmic rise in bitcoin price. They are generally curving higher over the long term. For halvening #3, the predicted market crash would be after hitting the 350ma x3 fib. Also the 350 ma / 111 ma cross signifies bull market top within about 3 days as well. Using the combination of the 350ma fibs and the 350/111 crosses, reasonably identify when market top is about to occur.
50,120,200 ma: Common moving averages that bitcoin retests during bull market runs. Also, the 50/200 golden and death crosses.
1D EMA Superguppy Ribbons: green = bull market, gray is indeterminate, red = bear market. Very high specificity indicator of bull runs, especially for bitcoin. You can change to 3D candle for even more specificity for a bull market start. Use the 1W for even more specificity. 1D Superguppy is recommended for decisionmaking.
1W EMA21: a very good moving average programmed to be shown on both the daily and weekly candle time. Bitcoin commonly corrects to this repeatedly during past bull runs. Acts as support during bull run and resistance during a bear market.
Steps to identifying a bull market:
1. 50/200 golden cross
2. 1D EMA superguppy green
3. 3D EMA superguppy green (if you prefer more certainty than step 2).
4. Hitting the 1W EMA21 and bouncing off during the bull run signifies corrections.
Once a bull market is identified,
Additional recommended buying and selling techniques:
Indicators:
- Fiblines - to determine retracements from peaks (such as all time high or recent highs)
- Stochastic RSI - 1d, 3d, and 1W SRSI are great time to buy, especially the 1W SRSI which comes much less frequently.
- volumen consolidado - for multi exchange volumes compiled into a single line. I prefer buying on the lowest volume days which generally coincide with dips.
- MACD - somewhat dubious utility but many algorithms are programmed to buy or sell based on this.
Check out the Alerts for golden crosses and 350ma Fib crosses which are invaluable for long term buying planning.
I left this open source so that all the formulas can be understood and verified. Much of it hacked together from other sources but all indicators that are fundamental to bitcoin. I apologize in advance for not attributing all the articles and references... but then again I am making no money off of this anyway.
Ultimate Moving Average Package (17 MA's)Included is the:
VWAP
Current time frame 10 EMA
Current time frame 20 EMA
Current time frame 50 EMA
Current time frame 10 SMA
Current time frame 20 SMA
Current time frame 50 SMA
Daily 10 EMA
Daily 20 EMA
Daily 50 EMA
Daily 50 SMA
Daily 100 SMA
Daily 200 SMA
Weekly 100 SMA
Weekly 200 SMA
Monthly 100 SMA
Monthly 200 SMA
All Daily/Weekly/Monthly MA's can be seen on intraday charts. Current time frame MA's change depending on your time frame. Obviously you dont need all 17 on your chart but you can pick the ones you like and disable the rest.
Fischy Bands (multiple periods)Just a quick way to have multiple periods. Coded at (14,50,100,200,400,600,800). Feel free to tweak it. Default is all on, obviously not as usable! Try just using 14, and 50.
This was generated with javascript for easy templating.
Source:
```
const periods = ;
const generate = (period) => {
const template = `
= bandFor(${period})
plot(b${period}, color=colorFor(${period}, b${period}), linewidth=${periods.indexOf(period)+1}, title="BB ${period} Basis", transp=show${period}TransparencyLine)
pb${period}Upper = plot(b${period}Upper, color=colorFor(${period}, b${period}), linewidth=${periods.indexOf(period)+1}, title="BB ${period} Upper", transp=show${period}TransparencyLine)
pb${period}Lower = plot(b${period}Lower, color=colorFor(${period}, b${period}), linewidth=${periods.indexOf(period)+1}, title="BB ${period} Lower", transp=show${period}TransparencyLine)
fill(pb${period}Upper, pb${period}Lower, color=colorFor(${period}, b${period}), transp=show${period}TransparencyFill)`
console.log(template);
}
console.log(`//@version=4
study(shorttitle="Fischy BB", title="Fischy Bands", overlay=true)
stdm = input(1.25, title="stdev")
bandFor(length) =>
src = hlc3
mult = stdm
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
`);
periods.forEach(e => console.log(`show${e} = input(title="Show ${e}?", type=input.bool, defval=true)`));
periods.forEach(e => console.log(`show${e}TransparencyLine = show${e} ? 20 : 100`));
periods.forEach(e => console.log(`show${e}TransparencyFill = show${e} ? 80 : 100`));
console.log('\n');
console.log(`colorFor(period, series) =>
c = period == 14 ? color.white :
period == 50 ? color.aqua :
period == 100 ? color.orange :
period == 200 ? color.purple :
period == 400 ? color.lime :
period == 600 ? color.yellow :
period == 800 ? color.orange :
color.black
c
`);
periods.forEach(e => generate(e))
```
MACD/EMA Long StrategyThis incredibly simple strategy uses a combination of the 20 EMA and bullish/bearish MACD crosses as a low risk method of getting in and out of markets.
Depending on whether the market is above or below the 200 SMA, the script determines if the market is in bullish or bearish territory. Above the 200 SMA, the script will ignore the 20 EMA as a buy condition and buy solely on the confirmation of a bullish MACD cross upon the close of a candle. In this bullish market, the script will only enable the sell condition if both the MACD is bearish AND a close below the 20 EMA occurs. This is to reduce the chances of the script selling prematurely in the event of a bearish MACD cross, if the market is still in overall bullish territory.
When the market is below the 200 SMA, the confirmation occurs in the opposite direction. The buy condition will only be met if both the MACD is bullish AND a close above the 20 EMA occurs. However, the sell condition ignores the 20 EMA and will sell solely on the confirmation of a bearish MACD cross upon the close of the candle.
This strategy can be used in both bullish and bearish markets. This conservative strategy will slightly underperform in a bull market, with the sell condition occasionally being met and then potentially buying back higher. However, it will successfully get you out of a turning market and automatically switch into a more 'risk-off' mentality during a bear market. This strategy is not recommended for sideways markets, as trading around the 20 EMA coupled with a relatively flat MACD profile can cause the strategy to buy the peaks and sell troughs easily.
market phases - JDThis indicator shows the relation of price against different period ma's.
When put in daily Timeframe it gives the 1400 Day (= 200 Weekly) and the 200 ,100 an 50 Daily.
The lines show the 200,100 and 50 ma in relation to the 1400 ma.
JD.
#NotTradingAdvice #DYOR
Trend Lines and MoreMulti-Indicator consisting of several useful indicators in a single package.
TREND LINES
-By default the 20 SMA and 50 SMA are shown.
-Use "MOVING AVERAGE TYPE" to select SMA, EMA, Double-EMA, Triple-EMA, or Hull.
-Use "50 MA TREND COLOR" to have the 50 turn green/red for uptrend/downtrend.
-Use "DAILY SOURCE ONLY" to always show daily averages regardless of timeframe.
-Use "SHOW LONG MA" to also include 100, 150, and 200 moving averages.
-Use "SHOW MARKERS" to show a small colored marker identifying which line is which.
OTHER INDICATORS
-You can show Bollinger Bands and Parabolic SAR.
-You can highlight key reversal times (9:50-10:10 and 14:40-15:00).
-You can show price offset markers, where was the price "n" periods ago.
That last one is useful to show the level of prices which are about to "fall off" the moving average
and be replaced with current price. So for example, if current price is significantly below the
200-days-ago price, you can gauge the difficulty for the 200 MA to start climbing again.
Falling Knives Jagged SpikesThe purpose of this script is to trade with the trend, trade trend continuation, and counter-trend trades.
Uptrend is price above 200 ema: Background is green and the bar colors are normal
Downtrend is price below 200 ema: Background is red and the bar colors are normal
Counter-trend to uptrend--Bar colors are white and the background is purple
counter-trend to downtrend--Bar colors are black and the background is aqua.
How to use:
Uptrend (green background): Only go long
Downtrend (red background): only go short
Counter-trend to uptrend/downtrend (white bars/black bars): Take counter-trend trade when price is a substantial distance from the 200 EMA. Best if there was a divergence with an oscillator. A lot of times these are just deep pullbacks or rallies.
trend continuation: In uptrend, after falling knives, and trend continues up (background turns to green) look to buy, you are getting a great price on the asset. Same for downtrend.
Keep in mind that nothing is perfect, and to of-course test everything.
Best of luck in all you do. Get money.
3 EMAS strategy to define trendsBasic script that allows you to have 3 scripts all in one EMA (exponential moving averages). They are useful to know the general trends of your chart: current long-term trend, short-term (or immediately) and general.
1 ° EMA 36 serves to define or mark action of the market trend price.
At the moment of crossing EMA 36 with EMA 200 upwards it indicates continuation to level 2 ...
2 ° EMA 200 serves as support or resistance according to the case, confirms continuation of trend in medium or long term when crossing with EMA 500, upward trend probability level 3 confirmed. As the case may be, cross up or down.
3 ° EMA 500 serves as support or resistance of the price action.
EMAS 200 and 500 give you a probability of Starting Area ...
Confirming with support or resistance.
Complementation with Stochastics ..
MACD
Note: Remember that "exponential" means that these indicators give more weight to the most recent data, making them more reactive to price changes (react faster to changes in recent prices than simple moving averages)
GROWINGS CRYPTOTRADERS
Mayer Multiple @ Current PriceThough this script is by me, the original idea comes from a podcast I heard where Trace Mayer talks about how he does crypto valuation. It is based on current price against the 200 day moving average. This indicator script will simply plot that value as a label overlayed on your trading view chart. Best long term results occur when acquiring BTC when the multiple is 2.4 or less. For more info, google "mayer multiple" This script/indicator is strictly for educational purposes. It is not exclusive to bitcoin.
To get the best look out of your charts I make the following changes.
1.Apply the indicator to your chart.
2. In the tools palette of trading view, when looking at a chart, click "Show Objects Tree" the icon displayed above the trash can.
In the objects tree panel, click the preferences icon for "Mayer Multiple @ Current Price"
Switch "scale" to "scale Left"
3. Then for your chart preferences (right click on chart background and select "Properties", and be sure the following are checked on the "Scales" tab
Left Axis
Right Axis
Indicator Last Value
Indicator Labels
Screenshots are not allowed in this view, so I can't post screenshots, but the view above is what it should look like when you are done.
For anyone who wants to see the code, here is the code of the script:
Use at will, and at your own risk.
//@version=3
// Created By Timothy Luce, inspired by Trace Mayer's 200 Day SMA cryptocurrency valuation method
study("Mayer Multiple @ Current Price", overlay=true)
currentPrice = close
currentDay = security(tickerid, "D", sma(close, 200))
mayerMultiple = currentPrice/currentDay
plot(mayerMultiple, color=#00ffaa, transp=100)
If you want to change the color, change this line: #00ffaa
Multiple Moving AveragesThis is really simple. But useful for me as I don't have a paid account. No-pro users can only use 3 indicators at once and because I rely heavily on simple moving averages it can be a real pain.
This one indicator features:
20 MA
50 MA
100 MA
200 MA
which I find are the most useful overall. The 20 and 50 over all time frame but in particular < 1 day, the 100 and 200 at > 4 hr time frames. In general I don't use the 100 MA that much. The daily 200 MA is a critical support for many assets like stocks and cryptos. I'm by no means a pro and if you are learning I recommend becoming familiar with moving averages right at the beginning.
If you want to deactivate some of the lines, you can do it via the indicator's settings icon.
Yuthavithi Kana with S/R StrategyI have got the idea from this page iwongsakorn.com and wrote my own kana scalper. This strategy draws 3 200 ATR level along side with the sma. It uses 200 ema as trend. Once the price approaches the 20 ema. it will place orders according to trend and take profit and stop loss quickly using the 200 ATR lines.
This is a quick scalper strategy with winrate over 50%
EMA + Volume + RSI Buy/Sell Signals//@version=5
indicator("EMA + Volume + RSI Buy/Sell Signals", overlay=true)
// === Inputs ===
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
rsi = ta.rsi(close, 14)
// === Conditions ===
// Price % change from yesterday
priceChange = (close - close ) / close * 100
// Volume condition
volCondition = volume > 1.5 * volume
// RSI
rsiOverbought = rsi > 70
rsiOversold = rsi < 30
// Price move conditions
priceUp5 = priceChange > 5
priceDown5 = priceChange < -5
// === Buy & Sell Conditions ===
buySignal = close > ema20 and close > ema50 and close > ema200 and priceUp5 and volCondition and rsiOversold
sellSignal = close < ema20 and close < ema50 and close < ema200 and priceDown5 and volCondition and rsiOverbought
// === Plot EMAs ===
plot(ema20, color=color.yellow, title="EMA 20")
plot(ema50, color=color.blue, title="EMA 50")
plot(ema200, color=color.red, title="EMA 200")
// === Plot Signals on Chart ===
plotshape(buySignal, title="BUY Signal", style=shape.labelup, color=color.green, text="BUY", location=location.belowbar, size=size.normal)
plotshape(sellSignal, title="SELL Signal", style=shape.labeldown, color=color.red, text="SELL", location=location.abovebar, size=size.normal)
// === Background Highlight for Visuals ===
bgcolor(buySignal ? color.new(color.green, 85) : na)
bgcolor(sellSignal ? color.new(color.red, 85) : na)
AI Agent PRIMEFLOW v1AI Agent PRIMEFLOW v1 — Trend + Breakout + Smart Stops
*By AI Agent Community*
## Overview
PRIMEFLOW v1 is a clean, rules-based signal tool that fires only when **trend + regime + market structure** align.
It combines a **baseline trend**, a **volatility regime filter** (ATR z-score), and **Donchian breakouts**, with **ATR bands** and **Chandelier-style stops** for risk control. Optional **HTF confirmation** keeps entries in sync with higher-timeframe bias.
> Built from public trading concepts (EMA/KAMA/HMA baselines, Donchian breakout, ATR trailing). No proprietary code used.
---
## What it does (3-Layer Confirmation)
1. **Trend** – EMA50/200 relationship + user-selectable baseline (EMA/HMA/KAMA).
2. **Regime** – ATR% z-score filter reduces chop; “Conservative/Balanced/Aggressive” modes adjust threshold.
3. **Structure** – Donchian breakout confirms momentum beyond recent range.
Only when all three align do BUY/SELL labels appear. ATR bands and dynamic stops are plotted for exits and trailing.
---
## Signals & Risk
* **Long**: Trend up (EMA50>EMA200), regime trending, price crosses above baseline **and** breaks the prior Donchian high.
* **Short**: Mirror conditions to the downside.
* **Stops**: Auto-plotted **Long/Short Stop** (ATR-based, Chandelier-style).
* **Targets**: Consider 1.5–2× ATR or ATR bands; keep a runner with trailing stop.
---
## Inputs (key)
* **Signal Mode**: Conservative / Balanced / Aggressive (regime threshold).
* **Use Heikin Ashi Source** (optional smoothing).
* **Structure Lookback (Donchian)**.
* **Volatility Lookback** (for ATR z-score).
* **Baseline Type & Length**: EMA / HMA / KAMA.
* **Trend Filter EMAs**: Fast (default 50) vs Slow (default 200).
* **HTF Confirmation**: set a higher TF (blank = off).
* **ATR Length & Multiplier** (bands & stops).
* **Style toggles**: Bands, regime background, labels.
---
## Recommended Presets
**XAUUSD – M15 (scalping/intraday)**
* Mode: *Balanced* · Baseline: *EMA 50* · Donchian: *20* · ATR: *10 × 2.5* · HTF: *H1*.
**XAUUSD – H1 (intraday)**
* Baseline: *KAMA 50* · Donchian: *25* · ATR: *14 × 2.5* · HTF: *H4*.
**BTCUSDT – H1 (crypto)**
* Baseline: *EMA 100* · Donchian: *30* · ATR: *14 × 2.0* · HTF: *H4* · Mode: *Conservative* in chop.
---
## Alerts (ready)
Create alerts **Once Per Bar Close**:
* **PRIMEFLOW Long** – long entry condition met.
* **PRIMEFLOW Short** – short entry condition met.
* **Trail Flip (Long)** – long trailing stop flips (exit/trim).
* **Trail Flip (Short)** – short trailing stop flips.
Tip: Route alerts to your bot/Telegram/WA webhook. Include placeholders (e.g., `{{ticker}} | {{interval}} | {{close}} | LONG/SHORT | SL: {{plot("Long Stop")}}`).
---
## Best Practices
* Avoid taking breakouts that are **>1.5× ATR** away from baseline (overextended).
* Re-enter on pullbacks while trend & regime remain valid.
* Around high-impact news (NFP/FOMC), wait 15–30 minutes after release.
* Use **HTF 4×** your chart TF (e.g., M15→H1, H1→H4).
---
## Who it’s for
Swing/scalp traders who want higher-quality trend entries with **built-in structure confirmation** and **clear risk lines**, especially on **XAUUSD** and **BTC**.
---
## Notes
* This is an **indicator** (not a strategy). A strategy/backtest version can be provided.
* Educational purposes only. Not financial advice. Trading involves risk.
**Tags:** trend, breakout, ATR, Donchian, chandelier stop, regime filter, XAUUSD, BTC, scalping, intraday, multi-timeframe, heikin ashi
**Changelog**
v1.0 – Initial release: 3-Layer Confirmation, ATR bands/stops, HTF bias, 4 alerts.
CCI PKTELUGUTRADERThe Commodity Channel Index (CCI) is a momentum oscillator that helps traders identify potential buy and sell opportunities by measuring how far the price of a security deviates from its average price over a specific period. It’s widely used for spotting new trends, overbought and oversold conditions, and possible price reversals in various financial markets.
Description of CCI
The CCI calculates the difference between the current price and its historical average price, normalized by mean deviation. Unlike indicators such as RSI, the CCI is an unbounded oscillator, meaning its values can go above +100 or below -100, providing broader insights into momentum shifts in prices.
The formula for CCI is:
CCI
=
Typical Price
−
SMA of Typical Price
0.015
×
Mean Deviation
CCI=
0.015×Mean Deviation
Typical Price−SMA of Typical Price
where:
Typical Price = (High + Low + Close) / 3
SMA is the Simple Moving Average of the Typical Price over the chosen period
Mean Deviation is the average deviation from the SMA.
Buy and Sell Signals
A buy signal is typically generated when the CCI moves above +100, indicating the start of a strong uptrend.
A sell signal occurs when the CCI drops below -100, signaling a strong downtrend.
Many traders close their buy positions when the CCI falls back below +100 and close their sell positions when it rises above -100, or use price action confirmation to validate signals.
Values above +100 suggest overbought conditions, while below -100 indicate oversold; extreme values (like +200 or -200) suggest even stronger momentum.
CCI divergences (price moves not confirmed by the indicator) may indicate potential reversals.
Summary Table: CCI Signals
CCI Level Market Condition Potential Action
Above +100 Overbought/Uptrend Consider Buying
Below -100 Oversold/Downtrend Consider Selling
Back between -100 and +100 Neutral/Indecision Exit or Wait
The CCI is best used alongside other technical indicators for confirmation, as it can generate false signals during sideways markets.
References:
Guide to Commodity Channel Index
What Is CCI?
CCI Trading Strategies
CCI: Technical Indicator
Commodity channel index
Adaptive HMA SignalsAdaptive HMA Signals
This indicator pairs nicely with the Contrarian 100 MA and can be located here:
Overview
The "Adaptive HMA Signals" indicator is a sophisticated technical analysis tool designed for traders aiming to capture trend changes with precision. By leveraging Hull Moving Averages (HMAs) that adapt dynamically to market conditions (volatility or volume), this indicator generates actionable buy and sell signals based on price interactions with adaptive HMAs and slope analysis. Optimized for daily charts, it is highly customizable and suitable for trading forex, stocks, cryptocurrencies, or other assets. The indicator is ideal for swing traders and trend followers seeking to time entries and exits effectively.
How It Works
The indicator uses two adaptive HMAs—a primary HMA and a minor HMA—whose periods adjust dynamically based on user-selected market conditions (volatility via ATR or volume via RSI). It calculates the slope of the primary HMA to identify trend strength and generates exit signals when the price crosses the minor HMA under specific slope conditions. Signals are plotted as circles above or below the price, with inverted colors (white for buy, blue for sell) to enhance visibility on any chart background.
Key Components
Adaptive HMAs: Two HMAs (primary and minor) with dynamic periods that adjust based on volatility (ATR-based) or volume (RSI-based) conditions. Periods range between user-defined minimum and maximum values, adapting by a fixed percentage (3.141%).
Slope Analysis: Calculates the slope of the primary HMA over a 34-bar period to gauge trend direction and strength, normalized using market range data.
Signal Logic: Generates buy signals (white circles) when the price falls below the minor HMA with a flat or declining slope (indicating a potential trend reversal) and sell signals (blue circles) when the price rises above the minor HMA with a flat or rising slope.
Signal Visualization: Plots signals at an offset based on ATR for clarity, using semi-transparent colors to avoid chart clutter.
Mathematical Concepts
Dynamic Period Adjustment:
Primary HMA period adjusts between minLength (default: 144) and maxLength (default: 200).
Minor HMA period adjusts between minorMin (default: 55) and minorMax (default: 89).
Periods decrease by 3.141% under high volatility/volume and increase otherwise.
HMA Calculation:
Uses the Hull Moving Average formula: WMA(2 * WMA(src, length/2) - WMA(src, length), sqrt(length)).
Provides a smoother, faster-responding moving average compared to traditional MAs.
Slope Calculation:
Computes the slope of the primary HMA using a 34-bar period, normalized by the market range (highest high - lowest low over 34 bars).
Slope angle is converted to degrees using arccosine for intuitive trend strength interpretation.
Signal Conditions:
Buy: Slope ≥ 17° (flat or rising), price < minor HMA, low volatility/volume.
Sell: Slope ≤ -17° (flat or declining), price > minor HMA, low volatility/volume.
Signals are triggered only on confirmed bars to avoid repainting.
Entry and Exit Rules
Buy Signal (White Circle): Triggered when the price crosses below the minor HMA, the slope of the primary HMA is flat or rising (≥17°), and volatility/volume is low. The signal appears as a white circle above the price bar, offset by 0.72 * ATR(5).
Sell Signal (Blue Circle): Triggered when the price crosses above the minor HMA, the slope of the primary HMA is flat or declining (≤-17°), and volatility/volume is low. The signal appears as a blue circle below the price bar, offset by 0.72 * ATR(5).
Exit Rules: Exit a buy position on a sell signal and vice versa. Combine with other tools (e.g., support/resistance, RSI) for additional confirmation. Always apply proper risk management.
Recommended Usage
The "Adaptive HMA Signals" indicator is optimized for daily charts but can be adapted to other timeframes (e.g., 1H, 4H) with adjustments to period lengths. It performs best in trending or range-bound markets with clear reversal points. Traders should:
Backtest the indicator on their chosen asset and timeframe to validate signal reliability.
Combine with other technical tools (e.g., trendlines, Fibonacci retracements) for stronger trade setups.
Adjust minLength, maxLength, minorMin, and minorMax based on market volatility and timeframe.
Use the Charger input to toggle between volatility (ATR) and volume (RSI) adaptation for optimal performance in specific market conditions.
Customization Options
Source: Choose the price source (default: close).
Show Signals: Toggle visibility of buy/sell signals (default: true).
Charger: Select adaptation trigger—Volatility (ATR-based) or Volume (RSI-based) (default: Volatility).
Main HMA Periods: Set minimum (default: 144) and maximum (default: 200) periods for the primary HMA.
Minor HMA Periods: Set minimum (default: 55) and maximum (default: 89) periods for the minor HMA.
Slope Period: Fixed at 34 bars for slope calculation, adjustable via code if needed.
Why Use This Indicator?
The "Adaptive HMA Signals" indicator combines the responsiveness of HMAs with dynamic adaptation to market conditions, offering a robust tool for identifying trend reversals. Its clear visual signals, customizable periods, and adaptive logic make it versatile for various markets and trading styles. Whether you’re a beginner or an experienced trader, this indicator enhances your ability to time entries and exits with precision.
Tips for Users
Test the indicator thoroughly on your chosen market and timeframe to optimize settings (e.g., adjust period lengths for non-daily charts).
Use in conjunction with price action or other indicators (e.g., RSI, MACD) for stronger trade confirmation.
Monitor volatility/volume conditions to ensure the Charger setting aligns with market dynamics.
Ensure your chart timeframe aligns with the selected period lengths for accurate signal generation.
Apply strict risk management to protect against false signals in choppy markets.
Happy trading with the Adaptive HMA Signals indicator! Share your feedback and strategies in the TradingView community!
EMA Crossover Strategy (15m)50 and 200 ema crossing when leaving anchor. when 50 and 200 crosses will give you direction of where market is going. wait for a pull back and take trade. sl on highest or lowest point of apex tp open . when you see multiple equal ( low or High) get put of trade.
EMAs Personalizáveis (até 5)📘 Indicator Explanation – Customizable EMAs (up to 5)
This indicator was developed in Pine Script v6 to make it easier to visualize multiple Exponential Moving Averages (EMAs) on a single chart.
🔑 Main features:
Supports up to 5 different EMAs.
Ability to enable or disable each EMA individually.
Fully customizable period for each EMA.
Flexible color selection for better visual organization.
Adjustable line thickness to highlight the most relevant levels.
📌 How to use:
Open the indicator settings.
Select which EMAs you want to display (from 1 to 5).
Define the period (e.g., 20, 50, 100, 200, etc.).
Choose a color for each EMA.
Observe price behavior relative to the EMAs to identify:
Trends → price above long EMAs indicates bullish strength.
Reversals → EMA crossovers may signal a change in direction.
Dynamic support and resistance → EMAs often act as reaction zones for price.
💡 Practical example:
Short EMA (20) → shows short-term movement.
Mid-term EMA (50 or 100) → confirms trend direction.
Long EMA (200 or 500) → indicates the overall market trend.
👉 This indicator is flexible and can be used for scalping, swing trading, or position trading, depending on the chosen periods.
MACD-V MomentumThe MACD-V (Moving Average Convergence Divergence – Volatility Normalized) is an award-winning momentum indicator created by Alex Spiroglou, CFTe, DipTA (ATAA). It improves on the traditional MACD by normalizing momentum with volatility, solving several well-known limitations of classic indicators:
✅ Time stability – readings are consistent across history
✅ Cross-market comparability – works equally on stocks, crypto, forex, and commodities
✅ Objective momentum framework – universal thresholds at +150 / -150, +50 / -50
✅ Cleaner signals – reduces false signals in ranges and lag in high momentum
By dividing the MACD spread by ATR, the indicator expresses momentum in volatility units, allowing meaningful comparison across timeframes and markets.
MACD-V defines seven objective momentum states:
Risk (Oversold): below -150
Rebounding: -150 to +50 and above signal
Rallying: +50 to +150 and above signal
Risk (Overbought): above +150
Retracing: above -50 and below signal
Reversing: -150 to -50 and below signal
Ranging: between -50 and +50 for N bars
Optional background tints highlight the active regime (Bull above 200-MA, Bear below 200-MA).
Rare extremes (e.g., MACD-V < -100 in a bull regime) are tagged for additional context.
Use Cases
Identify and track momentum lifecycles across any market
Spot rare extremes for potential reversal opportunities
Filter out low-momentum whipsaws in ranging conditions
Compare momentum strength across multiple symbols
Support systematic and rule-based strategy development
3MA/EMA Alerts指标名称(中文/英文)
中文名:多均线趋势指标(带上穿与金叉提醒)
英文名:Multi MA/EMA Trend Indicator (with Price & Golden Cross Alerts)
指标功能介绍(中文)
多均线趋势指标(带上穿与金叉提醒) 是一个可自定义的均线工具,适用于趋势分析和交易信号提醒。
核心功能:
多均线显示
默认显示 EMA20,EMA80/200 可选择显示
每条均线可独立选择 EMA 或 SMA
自定义颜色和线宽
价格上穿均线提醒
当价格向上突破任意开启的均线时触发提醒
可用于捕捉短线趋势启动点
金叉提醒
当短期均线向上穿过中长期均线时触发提醒
可用于捕捉潜在的趋势反转或加速
中文 UI
参数和提醒信息均为中文,便于快速理解和使用
适用场景
趋势确认
趋势反转捕捉
短线入场和长期持仓参考
Indicator Description (English)
Multi MA/EMA Trend Indicator (with Price & Golden Cross Alerts) is a customizable moving average tool for trend analysis and trading alerts.
Key Features:
Multiple Moving Averages
Default display: EMA20; EMA80/200 optional
Each MA can be set as EMA or SMA individually
Customizable colors and line widths
Price Cross Alerts
Alerts when price crosses above any active MA
Helps identify short-term trend initiation points
Golden Cross Alerts
Alerts when a short-term MA crosses above a mid/long-term MA
Useful for detecting trend acceleration or reversal signals
User-Friendly Interface
Parameters and alerts are labeled in Chinese (can be translated)
Applications
Trend confirmation
Trend reversal detection
Short-term entries and long-term position guidance
Trend Speed Analyzer + alerts//@version=6
indicator('Trend Speed Analyzer + alerts', overlay = false)
//~~}
// ~~ Tooltips {
string t1 = 'Maximum Length: This parameter sets the upper limit for the number of bars considered in the dynamic moving average. A higher value smooths out the trend line, making it less reactive to minor fluctuations but slower to adapt to sudden price movements. Use higher values for long-term trend analysis and lower values for faster-moving markets.'
string t2 = 'Accelerator Multiplier: Adjusts the responsiveness of the dynamic moving average to price changes. A larger value makes the trend more reactive but can introduce noise in choppy markets. Lower values create a smoother trend but may lag behind rapid price movements. This is particularly useful in volatile markets where precise sensitivity is needed.'
string t5 = 'Enable Candles: When enabled, the candlesticks on the chart will be color-coded based on the calculated trend speed. This provides a visual representation of momentum, making it easier to spot shifts in market dynamics. Disable this if you prefer the standard candlestick colors.'
string t6 = 'Collection Period: Defines the number of bars used to normalize trend speed values. A higher value includes a broader historical range, smoothing out the speed calculation. Lower values make the speed analysis more sensitive to recent price changes, ideal for short-term trading.'
string t7 = 'Enable Table: Activates a statistical table that provides an overview of key metrics, such as average wave height, maximum wave height, dominance, and wave ratios. Useful for traders who want numerical insights to complement visual trend analysis.'
string t8 = 'Lookback Period: Determines how many historical bars are used for calculating bullish and bearish wave data. A longer lookback period provides a more comprehensive view of market trends but may dilute sensitivity to recent market conditions. Shorter periods focus on recent data.'
string t9 = 'Start Date: Sets the starting point for all calculations. This allows you to analyze data only from a specific date onward, which is useful for isolating trends within a certain period or avoiding historical noise.'
string t10 = 'Timer Option: Select between using a custom start date or starting from the first available bar on the chart. The \'Custom\' option works with the Start Date setting, while \'From start\' includes all available data.'
// Tooltips for Table Cells
string tt1 = 'Average Wave: Shows the average size of bullish or bearish waves during the lookback period. Use this to assess overall market strength. Larger values indicate stronger trends, and comparing bullish vs bearish averages can reveal market bias. For instance, a higher bullish average suggests a stronger uptrend.'
string tt2 = 'Max Wave: Displays the largest bullish or bearish wave during the lookback period. Use this to identify peak market momentum. A significantly higher bullish or bearish max wave indicates where the market may have shown extreme trend strength in that direction.'
string tt3 = 'Current Wave Ratio (Average): Compares the current wave\'s size to the average wave size for both bullish and bearish trends. A value above 1 indicates the current wave is stronger than the historical average, which may signal increased market momentum. Use this to evaluate if the current move is significant compared to past trends.'
string tt4 = 'Current Wave Ratio (Max): Compares the current wave\'s size to the maximum wave size for both bullish and bearish trends. A value above 1 suggests the current wave is setting new highs in strength, which could indicate a breakout or strong momentum in the trend direction.'
string tt5 = 'Dominance (Average): The net difference between the average bullish and bearish wave sizes. Positive values suggest bullish dominance over time, while negative values indicate bearish dominance. Use this to determine which side (bulls or bears) has had consistent control of the market over the lookback period.'
string tt6 = 'Dominance (Max): The net difference between the largest bullish and bearish wave sizes. Positive values suggest bulls have dominated with stronger individual waves, while negative values indicate bears have produced stronger waves. Use this to gauge the most significant power shifts in the market.'
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
max_length = input.int(50, minval = 1, title = 'Maximum Length', group = 'Dynamic Moving Average', tooltip = t1)
accel_multiplier = input.float(5.0, minval = 0.0, step = 1.1, title = 'Accelerator Multiplier', group = 'Dynamic Moving Average', tooltip = t2)
tbl_ = input.bool(true, title = 'Enable Table', group = 'Wave Analysis', tooltip = t7)
lookback_period = input.int(100, minval = 1, step = 1, title = 'Lookback Period', group = 'Wave Analysis', tooltip = t8)
candle = input.bool(true, title = 'Enable Candles', group = 'Trend Visualization', tooltip = t5)
collen = input.int(100, step = 10, minval = 5, title = 'Collection Period', group = 'Trend Visualization', tooltip = t6)
up_col = input.color(color.lime, title = 'Dynamic Trend', group = 'Trend Visualization', inline = 'Trend')
dn_col = input.color(color.red, title = '', group = 'Trend Visualization', inline = 'Trend')
up_hist_col = input.color(#82ffc3, title = 'Trend Speed Up', group = 'Trend Visualization', inline = 'up')
up_hist_col_ = input.color(color.lime, title = '', group = 'Trend Visualization', inline = 'up')
dn_hist_col = input.color(color.red, title = 'Trend Speed Dn', group = 'Trend Visualization', inline = 'dn')
dn_hist_col_ = input.color(#f78c8c, title = '', group = 'Trend Visualization', inline = 'dn')
start = input.time(timestamp('1 Jan 2020 00:00 +0000'), title = 'Start Date', group = 'Time Settings', tooltip = t9, inline = 'startdate')
timer = input.string('From start', title = 'Timer Option', options = , group = 'Time Settings', tooltip = t10, inline = 'startdate')
// ~~ Dynamic Average {
counts_diff = close
max_abs_counts_diff = ta.highest(math.abs(counts_diff), 200)
counts_diff_norm = (counts_diff + max_abs_counts_diff) / (2 * max_abs_counts_diff)
dyn_length = 5 + counts_diff_norm * (max_length - 5)
// ~~ Function to compute the accelerator factor with normalization of delta_counts_diff {
calc_accel_factor(float counts_diff, float prev_counts_diff) =>
delta_counts_diff = math.abs(counts_diff - prev_counts_diff)
float max_delta_counts_diff = ta.highest(delta_counts_diff, 200)
max_delta_counts_diff := max_delta_counts_diff == 0 ? 1 : max_delta_counts_diff
float accel_factor = delta_counts_diff / max_delta_counts_diff
accel_factor
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Function to adjust alpha using the accelerator factor {
adjust_alpha(float dyn_length, float accel_factor, float accel_multiplier) =>
alpha_base = 2 / (dyn_length + 1)
alpha = alpha_base * (1 + accel_factor * accel_multiplier)
alpha := math.min(1, alpha)
alpha
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Accelerator Factor
accel_factor = calc_accel_factor(counts_diff, nz(counts_diff ))
alpha = adjust_alpha(dyn_length, accel_factor, accel_multiplier)
// ~~ Compute dynamic Ema
var float dyn_ema = na
dyn_ema := na(dyn_ema ) ? close : alpha * close + (1 - alpha) * dyn_ema
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Trend Speed {
trend = dyn_ema
bullsrc = close
bearsrc = close
type TrendData
array change
array t
StartTime() =>
time > start
var bullish = TrendData.new(array.new(), array.new())
var bearish = TrendData.new(array.new(), array.new())
var x1 = int(na)
var y1 = float(na)
var pos = 0
var speed = 0.0
c = ta.rma(close, 10)
o = ta.rma(open, 10)
// ~~ First value {
if na(x1) and StartTime() or na(x1) and timer == 'From start'
x1 := bar_index
y1 := o
y1
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Trend direction {
if StartTime() or timer == 'From start'
if bullsrc > trend and bullsrc <= trend
bearish.change.unshift(ta.lowest(speed, bar_index - x1))
bearish.t.unshift(bar_index - x1)
x1 := bar_index
y1 := bullsrc
pos := 1
speed := c - o
speed
if bearsrc < trend and bearsrc >= trend
bullish.change.unshift(ta.highest(speed, bar_index - x1))
bullish.t.unshift(bar_index - x1)
x1 := bar_index
y1 := bearsrc
pos := -1
speed := c - o
speed
speed := speed + c - o
speedGradient = color.from_gradient(speed, ta.min(-speed / 3), ta.max(speed / 3), color.red, color.lime)
trendspeed = ta.hma(speed, 5)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Plots {
rma_dyn_ema(x, p) =>
average = ta.rma(dyn_ema , p)
average
colour = ta.wma(close, 2) > dyn_ema ? up_col : dn_col
fillColor = rma_dyn_ema(0, 5) > rma_dyn_ema(1, 5) ? color.new(up_col, 70) : color.new(dn_col, 70)
p1 = plot(dyn_ema, color = colour, linewidth = 2, title = 'Dynamic Trend', force_overlay = true)
p2 = plot(ta.rma(hl2, 50), display = display.none, editable = false, force_overlay = true)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
min_speed = ta.lowest(speed, collen)
max_speed = ta.highest(speed, collen)
normalized_speed = (speed - min_speed) / (max_speed - min_speed)
speedGradient1 = speed < 0 ? color.from_gradient(normalized_speed, 0.0, 0.5, dn_hist_col, dn_hist_col_) : color.from_gradient(normalized_speed, 0.5, 1.0, up_hist_col, up_hist_col_)
plot(StartTime() or timer == 'From start' ? trendspeed : na, title = 'Trend Speed', color = speedGradient1, style = plot.style_columns)
plotcandle(open, high, low, close, color = candle ? speedGradient1 : na, wickcolor = candle ? speedGradient1 : na, bordercolor = candle ? speedGradient1 : na, force_overlay = true)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// ~~ Table {
if barstate.islast and tbl_
bullish_recent = bullish.change.slice(0, math.min(lookback_period, bullish.change.size()))
bearish_recent = bearish.change.slice(0, math.min(lookback_period, bearish.change.size()))
bull_max = bullish_recent.max()
bear_max = bearish_recent.min()
bull_avg = bullish_recent.avg()
bear_avg = bearish_recent.avg()
wave_size_ratio_avg = bull_avg / math.abs(bear_avg)
wave_size_text_avg = str.tostring(math.round(wave_size_ratio_avg, 2)) + 'x'
wave_size_color_avg = wave_size_ratio_avg > 0 ? color.lime : color.red
wave_size_ratio_max = bull_max / math.abs(bear_max)
wave_size_text_max = str.tostring(math.round(wave_size_ratio_max, 2)) + 'x'
wave_size_color_max = wave_size_ratio_max > 0 ? color.lime : color.red
dominance_avg_value = bull_avg - math.abs(bear_avg)
dominance_avg_text = dominance_avg_value > 0 ? 'Bullish +' + str.tostring(math.round(wave_size_ratio_avg, 2)) + 'x' : 'Bearish -' + str.tostring(math.round(1 / wave_size_ratio_avg, 2)) + 'x'
dominance_avg_color = dominance_avg_value > 0 ? color.lime : color.red
dominance_max_value = bull_max - math.abs(bear_max)
dominance_max_text = dominance_max_value > 0 ? 'Bullish +' + str.tostring(math.round(wave_size_ratio_max, 2)) + 'x' : 'Bearish -' + str.tostring(math.round(1 / wave_size_ratio_max, 2)) + 'x'
dominance_max_color = dominance_max_value > 0 ? color.lime : color.red
current_wave = speed
current_wave_color = current_wave > 0 ? color.lime : color.red
current_ratio_avg = current_wave > 0 ? current_wave / bull_avg : current_wave / math.abs(bear_avg)
current_ratio_max = current_wave > 0 ? current_wave / bull_max : current_wave / math.abs(bear_max)
current_text_avg = str.tostring(math.round(current_ratio_avg, 2)) + 'x'
current_text_max = str.tostring(math.round(current_ratio_max, 2)) + 'x'
current_color_avg = current_ratio_avg > 0 ? color.lime : color.red
current_color_max = current_ratio_max > 0 ? color.lime : color.red
var tbl = table.new(position.top_right, 3, 3, force_overlay = true)
table.cell(tbl, 0, 0, '', text_color = chart.fg_color, tooltip = '')
table.cell(tbl, 0, 1, 'Average Wave', text_color = chart.fg_color, tooltip = tt1)
table.cell(tbl, 0, 2, 'Max Wave', text_color = chart.fg_color, tooltip = tt2)
table.cell(tbl, 1, 0, 'Current Wave Ratio', text_color = chart.fg_color, tooltip = '')
table.cell(tbl, 1, 1, current_text_avg, text_color = current_color_avg, tooltip = tt3)
table.cell(tbl, 1, 2, current_text_max, text_color = current_color_max, tooltip = tt4)
table.cell(tbl, 2, 0, 'Dominance', text_color = chart.fg_color, tooltip = '')
table.cell(tbl, 2, 1, dominance_avg_text, text_color = dominance_avg_color, tooltip = tt5)
table.cell(tbl, 2, 2, dominance_max_text, text_color = dominance_max_color, tooltip = tt6)
// ─────────────────────────────────────────────────────────────
// MTF BUY/SELL alerts: 10m & 1H agreement (no logic changes)
isGreen = ta.wma(close, 2) > dyn_ema
tf_fast = input.timeframe("10", "Fast TF (Buy/Sell check)", group = "MTF Alerts")
tf_slow = input.timeframe("60", "Slow TF (Buy/Sell check)", group = "MTF Alerts")
confirm_on_close = input.bool(true, "Confirm on bar close", group = "MTF Alerts")
green_fast = request.security(syminfo.tickerid, tf_fast, isGreen, lookahead = barmerge.lookahead_off)
green_slow = request.security(syminfo.tickerid, tf_slow, isGreen, lookahead = barmerge.lookahead_off)
buyCond = green_fast and green_slow
sellCond = not green_fast and not green_slow
triggerOK = confirm_on_close ? barstate.isconfirmed : true
// Single BUY / SELL alerts (messages unchanged)
alertcondition(buyCond and triggerOK, title = "MTF BUY (10m & 1H GREEN)", message = "{{ticker}} | TF={{interval}} | Dynamic line")
alertcondition(sellCond and triggerOK, title = "MTF SELL (10m & 1H RED)", message = "{{ticker}} | TF={{interval}} | Dynamic line")
// ─────────────────────────────────────────────────────────────
// NEW: 10m status repeated EVERY MINUTE (no logic changes)
// ─────────────────────────────────────────────────────────────
// 1-minute pulse: true once per closed 1m bar
m1_pulse = request.security(syminfo.tickerid, "1", barstate.isconfirmed, lookahead = barmerge.lookahead_off)
// Repeat ONLY the 10-minute status every minute
status10_green = green_fast
status10_red = not green_fast
alertcondition(status10_green and m1_pulse, title = "10m Status GREEN — repeat each minute", message = "{{ticker}} | TF=10 | Dynamic line — GREEN")
alertcondition(status10_red and m1_pulse, title = "10m Status RED — repeat each minute", message = "{{ticker}} | TF=10 | Dynamic line — RED")
how do the trend speed anlaysis work