Find Best Performing MA For Golden CrossHello!
This script calculates the performance of any asset following a golden cross of two moving averages of any length!
The calculated moving averages are: SMA, EMA, HMA, VWMA, WMA, LSMA, and ALMA
The best performing moving average for the selected data series is listed first, followed by a descending order.
The indicator works on any timeframe, any asset, and can even be used on indicators such as RSI, %b, %k, etc.
The Moving Average Length and Source Are Customizable!
The Moving Averages Can Be Plotted on Most Data Series, Such As:
Close, Open, Low, hlc3, RSI, %B, %K, Etc.
The Script Will Recalculate for the Timeframe (1m, 5m, D, etc.)!
The (XX Candles) Indicates the Average Number of
Sessions the Shorter Ma Remains Above the Longer Ma Following an Upside Cross!
The Percentages (XX.XX%) Indicate the Average
Percentage Price Gain/Loss Following a Golden Cross,
Until the Shorter Ma Crosses Back Under the Longer Ma!
In This Example I Am Using a 63 Session Length for the
Shorter Ma for All Listed Ma Types for Closing Prices, and a 196 Candle Length for the Longer Ma!
"MA Cross"に関するスクリプトを検索
How to avoid repainting when NOT using security()Even when your code does not use security() calls, repainting dynamics still come into play in the realtime bar. Script coders and users must understand them and, if they choose to avoid repainting, need to know how to do so. This script demonstrates three methods to avoid repainting when NOT using the security() function.
Note that repainting dynamics when not using security() usually only come into play in the realtime bar, as historical data is fixed and thus cannot cause repainting, except in situations related to stock splits or dividend adjustments.
For those who don’t want to read
Configure your alerts to trigger “Once Per Bar Close” and you’re done.
For those who want to understand
Put this indicator on a 1 minute or seconds chart with a live symbol. As price changes you will see four of this script’s MAs (all except the two orange ones) move in the realtime bar. You are seeing repainting in action. When the current realtime bar closes and becomes a historical bar, the lines on the historical bars will no longer move, as the bar’s OHLC values are fixed. Note that you may need to refresh your chart to see the correct historical OHLC values, as exchange feeds sometimes produce very slight variations between the end values of the realtime bar and those of the same bar once it becomes a historical bar.
Some traders do not use signals generated by a script but simply want to avoid seeing the lines plotted by their scripts move during the realtime bar. They are concerned with repainting of the lines .
Other traders use their scripts to evaluate conditions, which they use to either plot markers on the chart, trigger alerts, or both. They may not care about the script’s plotted lines repainting, but do not want their markers to appear/disappear on the chart, nor their alerts to trigger for a condition that becomes true during the realtime bar but is no longer true once it closes. Those traders are more concerned with repainting of signals .
For each of the three methods shown in this script’s code, comments explain if its lines, markers and alerts will repaint or not. Through the Settings/Inputs you will be able to control plotting of lines and markers corresponding to each method, as well as experiment with the option, for method 2, of disabling only the lines plotting in the realtime bar while still allowing the markers and alerts to be generated.
An unavoidable fact is that non-repainting lines, markers or alerts are always late compared to repainting ones. The good news is that how late they are will in many cases be insignificant, so that the added reliability of the information they provide will largely offset the disadvantages of waiting.
Method 1 illustrates the usual way of going about things in a script. Its gray lines and markers will always repaint but repainting of the alerts the marker conditions generate can be avoided by configuring alerts to trigger “Once Per Bar Close”. Because this gray marker repaints, you will occasionally see it appear/disappear during the realtime bar when the gray MAs cross/un-cross.
Method 2 plots the same MAs as method 1, but in green. The difference is that it delays its marker condition by one bar to ensure it does not repaint. Its lines will normally repaint but its markers will not, as they pop up after the condition has been confirmed on the bar preceding the realtime bar. Its markers appear at the beginning of the realtime bar and will never disappear. When using this method alerts can be configured to trigger “Once Per Bar” so they fire the moment the marker appears on the chart at the beginning of the realtime bar. Note that the delay incurred between methods 1 and 2 is merely the instant between the close of a realtime bar and the beginning of the next one—a delay measured in milliseconds. Method 2 also allows its lines to be hidden in the realtime bar with the corresponding option in the script’s Settings/Inputs . This will be useful to those wishing to eliminate unreliable lines from the realtime bar. Commented lines in method 2 provide for a 2b option, which is to delay the calculation of the MAs rather than the cross condition. It has the obvious inconvenient of plotting delayed MAs, but may come in handy in some situations.
Method 3 is not the best solution when using MAs because it uses the open of bars rather than their close to calculate the MAs. While this provides a way of avoiding repainting, it is not ideal in the case of MA calcs but may come in handy in other cases. The orange lines and markers of method 3 will not repaint because the value of open cannot change in the realtime bar. Because its markers do not repaint, alerts may be configured using “Once Per Bar”.
Spend some time playing with the different options and looking at how this indicator’s lines plot and behave when you refresh you chart. We hope everything you need to understand and prevent repainting when not using security() is there.
Look first. Then leap.
Moving Average Cross StrategySimply choose your moving averages and backtest shorting and longing the crossing of these MA's. Meant for dialing in MA crosses as part of a trading setup and not reason enough to take the trade. First script, work in progress.
Multi-MA CrossingDesigned/back-tested for daily BTC/USD closing price.
Your mileage may vary for other assets/time frames.
By default includes 13 EMA, 21 SMA, 49 EMA, 200 EMA.
Crosses of 13 / 49 EMA are for buy/sell signals.
13 EMA / 21 SMA cross-unders are for sell signals near local tops.
EMA periods are editable.
See text in the Pine Editor for additional notes on the indicators.
Combine with oscillators for more rapid identification of reversals.
Feel free to comment, would be happy to discuss.
Good luck! -JDH
Multi-MA CrossingDesigned/back-tested for daily BTC/USD closing price.
Your mileage may vary for other assets/time frames.
By default includes 13 EMA, 21 SMA, 49 EMA, 200 EMA.
Crosses of 13 / 49 EMA are for buy/sell signals.
13 EMA / 21 SMA cross-unders are for sell signals near local tops.
EMA periods are editable.
See text in the Pine Editor for additional notes on the indicators.
Combine with oscillators for more rapid identification of reversals.
Good luck! -JDH
Price Volume Rank [LazyBear]Price-Volume Rank, designed by Anthony J. Macek, compares the direction of the change in price (up or down) to the direction of the change in volume and assigns a number to that specific relationship. By quantifying price/volume interaction, P-V rank seeks to determine our position within a typical market cycle.
The various modes shown on the chart above or explained below. Also, read on for a little trick using the new Pine feature that you can use in your script.
How to read the PVR?
-------------------
The most desirable market condition occurs when both price and volume are moving up, that phenomenon is assigned a PVR of 1.
The next most desirable condition, when prices are still moving up but volume is diminishing, is given a PVR of 2. Although still technically healthy, this relationship between price and volume issues a warning that market momentum is weakening.
The worst-case scenario, seen when selling pressure is greatest with prices dropping and volume
increasing, is given PVR's weakest designation, 4.
Finally, even though prices are still moving down, volume begins to diminish as selling pressure abates. This price/volume relationship is assigned a PVR of 3, often alerting us to a potential buying opportunity ahead.
What do the modes mean?
----------------------
1) Histogram Mode: This plots PVR along with helpful ranges. Be careful when PVR is trending at turn-around points.
2) MA Crossover Mode: This plots a slow/fast MA of PVR. Default is 5/10 SMA. Buy is signalled when slow MA falls below fast MA. Sell is signalled when slow MA crosses up fast MA. There is a warning line at 2.5 that can be used for more confirmation.
3) Double Smoothed Crossover Mode: Same as MA crossover, but PVR is smoothed more. Warning line (2.5 level) is very useful in this mode. Use slow MA as the signal and fast MA of PVR for tracking the market.
Misc notes:
-----------
This won't work for Forex and other instruments for which TradingView doesn't expose volume. Thanks to the new Text rendering feature of PlotShape(), I can actually let users know of that :) Good use-case, eh? I will post a sample chart below in the comments.
Feel free to use any part of this code in your indicators.
More info:
--------
Stocks & Commodities V. 12:6 (235-239): Price-Volume Rank by Anthony J. Macek
Complete list of my indicators:
-----------------------------
docs.google.com
Multi-Condition Alert Builder⚡ Multi-Condition Alert Builder — Modular Alert Framework
The Multi-Condition Alert Builder is a powerful, code-free alert engine for TradingView. It allows traders to build complex multi-condition Buy/Sell alerts using simple dropdown menus — no Pine Script experience required.
Combine up to five separate conditions per side and trigger alerts based on your own custom logic.
🧠 How It Works
Each “Buy” and “Sell” side includes up to five configurable slots, where you can define:
Two data sources (indicators, price, or custom inputs)
A comparison or crossover condition
A static value (optional)
Once your slots are defined, the script combines these individual conditions according to your chosen mode:
Any – triggers when any enabled condition is true
All – same bar – triggers only when all enabled conditions occur on the same bar
All – within bars – allows conditions to complete within a user-defined lookback window
This gives traders fine-grained control to design powerful, adaptive alert logic directly in the chart — no coding required.
⚙️ Key Features
🧩 Up to 5 Buy and 5 Sell Slots – Fully customizable condition slots
🧠 Combine Logic Modes – Any / All / Within Bars flexibility
🔔 Custom Alerts – Generates separate Buy, Sell, or combined alert events
⏱️ Close-Bar Confirmation Option – Avoids premature signals on open candles
💡 Visual Signals – Plots arrows on chart for clear alert visualization
🔄 Indicator-Agnostic – Works with any sources or indicators available in your chart
🧮 Combine Logic Modes Explained
Mode Description
Any Triggers an alert if any active condition is met
All – same bar Requires all active slots to confirm on the same candle
All – within bars Conditions may complete within a set lookback window
🧭 Example Use Cases
Combine RSI, MACD, and MA crossovers for precision entries
Create alert triggers for momentum confluence setups
Build “stacked signal” logic (e.g., RSI < 30 and MACD crossover within 3 bars)
Quickly prototype and test multi-factor alert conditions
🧠 Usage Tip
Once your conditions are set, simply add TradingView alerts tied to:
“BUY↟” for long signals
“SELL↡” for short signals
“ANY ALERT” to trigger on either event
The Alert Builder becomes especially powerful when combined with your favorite custom indicators — enabling smart, automated alerts without extra coding.
⚡ In Short
Build. Combine. Alert.
The Multi-Condition Alert Builder gives you total flexibility to design complex alert logic — visually, intuitively, and efficiently — right on your chart.
Bull Market Support Band (20W SMA + 21W EMA)🟩 Bull Market Support Band (20W SMA + 21W EMA)
OVERVIEW
The Bull Market Support Band is a long-term trend indicator that combines the 20-week SMA and 21-week EMA.
When price is above the band → bullish trend.
When below → bearish trend.
When within → neutral or transition phase.
This v6 version adds full customization, dynamic coloring, event labels, candle coloring, and a configurable on-chart legend table with trend arrows.
HOW IT WORKS
Calculates the 20W SMA and 21W EMA from a user-selectable higher timeframe (weekly by default).
Plots both averages and shades the area between them to form the support band.
The fill and line colors change automatically based on the market phase:
🟩 Green = Bullish (price above)
🟥 Red = Bearish (price below)
⬜ Gray = Neutral (price within).
Labels appear only when the trend state changes.
Alerts trigger when price crosses the band or either moving average.
Optional candle coloring applies the same bull/bear/neutral logic to price bars.
A convenience legend table displays current 20W SMA and 21W EMA values, along with slope arrows (^, v, =).
INCLUDED FEATURES
Configurable calculation timeframe.
Automatic band fill and line coloring.
Optional candle coloring overlay.
Compact or detailed regime-change labels.
ATR-based label offset and spacing control.
Customizable legend table with background color.
Horizontal or vertical legend layout.
Custom arrow characters (ASCII or Unicode).
Built-in alerts for band and MA crosses.
Optimized for higher-timeframe accuracy using request.security().
USAGE TIPS
Keep the default weekly setting for macro trend context.
On lower chart timeframes, use the band as higher-level support/resistance.
Combine with momentum or volume indicators (RSI, MACD, OBV) for confirmation.
Adjust ATR multiplier to move labels further from price candles.
Increase “Min bars between labels” to reduce visual clutter.
Disable auto-coloring if you prefer a static color theme.
Toggle compact legend or switch between horizontal/vertical layouts for best fit.
INTERPRETATION GUIDE
🟩 Bullish: Price above the band → trend continuation likely.
⬜ Neutral: Price within the band → consolidation or potential reversal zone.
🟥 Bearish: Price below the band → downtrend continuation or distribution.
Sustained closes above or below the band typically align with major market cycle shifts.
NOTES
Uses request.security() for higher-timeframe precision — accurate even on smaller charts.
The legend table is screen-anchored and remains fixed as you pan or zoom.
Plots and labels are price-anchored and move with candles.
Lightweight and efficient for all markets and intervals.
CREDITS
Original concept: The Bull Market Support Band (popularized in crypto analysis).
Enhanced Pine Script v6 version: Ricco .
Modernized for clarity, flexibility, and multi-timeframe accuracy.
SUMMARY
A modern, customizable Bull Market Support Band indicator highlighting long-term market regimes with clean visuals, color logic, and convenience features.
Designed for traders seeking macro clarity, minimal clutter, and professional presentation.
TradeScope: MA Reversion • RVOL • Trendlines • GAPs • TableTradeScope is an all-in-one technical analysis suite that brings together price action, momentum, volume dynamics, and trend structure into one cohesive and fully customizable indicator.
An advanced, modular trading suite that combines moving averages, reversion signals, RSI/CCI momentum, relative volume, gap detection, trendline analysis, and dynamic tables — all within one powerful dashboard.
Perfect for swing traders, intraday traders, and analysts who want to read price strength, volume context, and market structure in real time.
⚙️ Core Components & Inputs
🧮 Moving Average Settings
Moving Average Type & Length:
Choose between SMA or EMA and set your preferred period for smoother or more reactive trend tracking.
Multi-MA Plotting:
Up to 8 customizable moving averages (each with independent type, color, and length).
Includes a “window filter” to show only the last X bars, reducing chart clutter.
MA Reversion Engine:
Detects when price has extended too far from its moving average.
Reversion Lookback: Number of bars analyzed to determine historical extremes.
Reversion Threshold: Sensitivity multiplier—lower = more frequent signals, higher = stricter triggers.
🔄 Trend Settings
Short-Term & Long-Term Trend Lookbacks:
Uses linear regression to detect the slope and direction of the short- and long-term trend.
Results are displayed in the live table with color-coded bias:
🟩 Bullish | 🟥 Bearish
📈 Momentum Indicators
RSI (Relative Strength Index):
Adjustable period; displays the current RSI value, overbought (>70) / oversold (<30) zones, and trending direction.
CCI (Commodity Channel Index):
Customizable length with color-coded bias:
🟩 Oversold (< -100), 🟥 Overbought (> 100).
Tooltip shows whether the CCI is trending up or down.
📊 Volume Analysis
Relative Volume (RVOL):
Estimates end-of-day projected volume using intraday progress and compares it against the 20-day average.
Displays whether today’s volume is expected to exceed yesterday’s, and highlights color by strength.
Volume Trend (Short & Long Lookbacks):
Visual cues for whether current volume is above or below short-term and long-term averages.
Estimated Full-Day Volume & Multiplier:
Converts raw volume into “X” multiples (e.g., 2.3X average) for quick interpretation.
🕳️ Gap Detection
Automatically identifies and plots bullish and bearish price gaps within a defined lookback period.
Gap Lookback: Defines how far back to search for gaps.
Gap Line Width / Visibility: Controls the thickness and display of gap lines on chart.
Displays the closest open gap in the live table, including its distance from current price (%).
🔍 ATR & Volatility
14-day ATR (% of price):
Automatically converts the Average True Range into a percent, providing quick volatility context:
🟩 Low (<3%) | 🟨 Moderate (3–5%) | 🟥 High (>5%)
💬 Candlestick Pattern Recognition
Auto-detects popular reversal and continuation patterns such as:
Bullish/Bearish Engulfing
Hammer / Hanging Man
Shooting Star / Inverted Hammer
Doji / Harami / Kicking / Marubozu / Morning Star
Each pattern is shown with contextual color coding in the table.
🧱 Pivot Points & Support/Resistance
Optional Pivot High / Pivot Low Labels
Adjustable left/right bar lengths for pivot detection
Theme-aware text and label color options
Automatically drawn diagonal trendlines for both support and resistance
Adjustable line style, color, and thickness
Detects and tracks touches for reliability
Includes breakout alerts (with optional volume confirmation)
🚨 Alerts
MA Cross Alerts:
Triggers when price crosses the fast or slow moving average within a tolerance band (default ±0.3%).
Diagonal Breakout Alerts:
Detects and alerts when price breaks diagonal trendlines.
Volume-Confirmed Alerts:
Filters breakouts where volume exceeds 1.5× the 20-bar average.
🧾 Live Market Table
A fully dynamic table displayed on-chart, customizable via input toggles:
Choose which rows to show (e.g., RSI, ATR, RVOL, Gaps, CCI, Trend, MA info, Diff, Low→Close%).
Choose table position (top-right, bottom-left, etc.) and text size.
Theme selection: Light or Dark
Conditional background colors for instant visual interpretation:
🟩 Bullish or Oversold
🟥 Bearish or Overbought
🟨 Neutral / Moderate
🎯 Practical Uses
✅ Identify confluence setups combining MA reversion, volume expansion, and RSI/CCI extremes.
✅ Track trend bias and gap proximity directly in your dashboard.
✅ Monitor relative volume behavior for intraday strength confirmation.
✅ Automate MA cross or breakout alerts to stay ahead of key price action.
🧠 Ideal For
Swing traders seeking confluence-based setups
Intraday traders monitoring multi-factor bias
Analysts looking for compact market health dashboards
💡 Summary
TradeScope is designed as a single-pane-of-glass market view — combining momentum, trend, volume, structure, and reversion into one clear visual system.
Fully customizable. Fully dynamic.
Use it to see what others miss — clarity, confluence, and confidence in every trade.
CNS - Multi-Timeframe Bollinger Band OscillatorMy hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
I’ve been having good results setting the “Bollinger Band MA Length” in the Input tab to between 5 and 10. You can use the standard 20 period, but your results will not be as granular.
This indicator has proven very good at finding local tops and bottoms by combining data from multiple timeframes. Use BB timeframes that are lower than the timeframe you are viewing in your price pane.
The default settings work best on the weekly timeframe, but can be adjusted for most timeframes including intraday.
Be cognizant that the indicator, like other oscillators, does occasionally produce divergences at tops and bottoms.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Multi-Timeframe Bollinger BandsMy hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
I’ve been having good results setting the “Bollinger Band MA Length” in the Input tab to between 5 and 10. You can use the standard 20 period, but your results will not be as granular.
This indicator has proven very good at finding local tops and bottoms by combining data from multiple timeframes. Use timeframes that are lower than the timeframe you are viewing in your price pane. Be cognizant that the indicator, like other oscillators, does occasionally produce divergences at tops and bottoms.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Multi-Timeframe Bollinger Band PositionBeta version.
My hope is to optimize the settings for this indicator and reintroduce it as a "strategy" with suggested position entry and exit points shown in the price pane.
Any feedback is appreciated.
Overview
This indicator is an oscillator that measures the normalized position of the price relative to Bollinger Bands across multiple timeframes. It takes the price's position within the Bollinger Bands (calculated on different timeframes) and averages those positions to create a single value that oscillates between 0 and 1. This value is then plotted as the oscillator, with reference lines and colored regions to help interpret the price's relative strength or weakness.
How It Works
Bollinger Band Calculation:
The indicator uses a custom function f_getBBPosition() to calculate the position of the price within Bollinger Bands for a given timeframe.
Price Position Normalization:
For each timeframe, the function normalizes the price's position between the upper and lower Bollinger Bands.
It calculates three positions based on the high, low, and close prices of the requested timeframe:
pos_high = (High - Lower Band) / (Upper Band - Lower Band)
pos_low = (Low - Lower Band) / (Upper Band - Lower Band)
pos_close = (Close - Lower Band) / (Upper Band - Lower Band)
If the upper band is not greater than the lower band or if the data is invalid (e.g., na), it defaults to 0.5 (the midline).
The average of these three positions (avg_pos) represents the normalized position for that timeframe, ranging from 0 (at the lower band) to 1 (at the upper band).
Multi-Timeframe Averaging:
The indicator fetches Bollinger Band data from four customizable timeframes (default: 30min, 60min, 240min, daily) using request.security() with lookahead=barmerge.lookahead_on to get the latest available data.
It calculates the normalized position (pos1, pos2, pos3, pos4) for each timeframe using f_getBBPosition().
These four positions are then averaged to produce the final avg_position:avg_position = (pos1 + pos2 + pos3 + pos4) / 4
This average is the oscillator value, which is plotted and typically oscillates between 0 and 1.
Moving Averages:
Two optional moving averages (MA1 and MA2) of the avg_position can be enabled, calculated using simple moving averages (ta.sma) with customizable lengths (default: 5 and 10).
These can be potentially used for MA crossover strategies.
What Is Being Averaged?
The oscillator (avg_position) is the average of the normalized price positions within the Bollinger Bands across the four selected timeframes. Specifically:It averages the avg_pos values (pos1, pos2, pos3, pos4) calculated for each timeframe.
Each avg_pos is itself an average of the normalized positions of the high, low, and close prices relative to the Bollinger Bands for that timeframe.
This multi-timeframe averaging smooths out short-term fluctuations and provides a broader perspective on the price's position within the volatility bands.
Interpretation:
0.0 The price is at or below the lower Bollinger Band across all timeframes (indicating potential oversold conditions).
0.15: A customizable level (green band) which can be used for exiting short positions or entering long positions.
0.5: The midline, where the price is at the average of the Bollinger Bands (neutral zone).
0.85: A customizable level (orange band) which can be used for exiting long positions or entering short positions.
1.0: The price is at or above the upper Bollinger Band across all timeframes (indicating potential overbought conditions).
The colored regions and moving averages (if enabled) help identify trends or crossovers for trading signals.
Example:
If the 30min timeframe shows the close at the upper band (position = 1.0), the 60min at the midline (position = 0.5), the 240min at the lower band (position = 0.0), and the daily at the upper band (position = 1.0), the avg_position would be:(1.0 + 0.5 + 0.0 + 1.0) / 4 = 0.625
This value (0.625) would plot in the orange region (between 0.85 and 0.5), suggesting the price is relatively strong but not at an extreme.
Notes:
The use of lookahead=barmerge.lookahead_on ensures the indicator uses the latest available data, making it more real-time, though its effectiveness depends on the chart timeframe and TradingView's data feed.
The indicator’s sensitivity can be adjusted by changing bb_length ("Bollinger Band MA Length" in the Input tab), bb_mult ("Bollinger Band Standard Deviation," also in the Input tab), or the selected timeframes.
Razor Precision — Buy/SellRazor Precision Stock Action Indicator
The Razor Precision indicator is an advanced, multi-layered market analysis tool designed for traders who demand accuracy and alignment across multiple timeframes. It combines price action, moving average crossovers, volume confirmation, swing structure mapping, and indicator confluence (RSI, MACD, ATR, OBV) to generate actionable buy/sell strength ratings.
Key Features:
Price Action Detection: Identifies higher highs/lows (uptrend) and lower highs/lows (downtrend).
MA Crossover Momentum: Monitors 50/200 moving average crossovers to detect trend shifts.
Volume Surge Analysis: Confirms breakouts or pullbacks with significant volume spikes.
Swing Structure Tracking: Maps internal/external breaks to align with Smart Money Concepts.
Indicator Confluence: Aggregates signals from RSI, MACD, ATR, and OBV for precision confirmation.
Multi-Timeframe Alignment: Compares trends across 15m, 1H, 4H, and Daily charts for stacked or conflicting signals.
Strength Levels: Signals range from SELL, STRONG SELL, ULTRA STRONG SELL to BUY, STRONG BUY, ULTRA STRONG BUY.
Dynamic Table Display: Updates every 5 minutes or when overall action changes, showing per-timeframe analysis and the aggregated decision.
Ideal for swing traders, scalpers, and intraday momentum players who want high-confidence trade direction filtered through multiple technical layers.
TrendMaster Pro 2.3 with Alerts
Hello friends,
A member of the community approached me and asked me how to write an indicator that would achieve a particular set of goals involving comprehensive trend analysis, risk management, and session-based trading controls. Here is one example method of how to create such a system:
Core Strategy Components
Multi-Moving Average System - Uses configurable MA types (EMA, SMA, SMMA) with short-term (9) and long-term (21) periods for primary signal generation through crossovers
Higher Timeframe Trend Filter - Optional trend confirmation using a separate MA (default 50-period) to ensure trades align with broader market direction
Band Power Indicator - Dynamic high/low bands calculated using different MA types to identify price channels and volatility zones
Advanced Signal Filtering
Bollinger Bands Volatility Filter - Prevents trading during low-volatility ranging markets by requiring sufficient band width
RSI Momentum Filter - Uses customizable thresholds (55 for longs, 45 for shorts) to confirm momentum direction
MACD Trend Confirmation - Ensures MACD line position relative to signal line aligns with trade direction
Stochastic Oscillator - Adds momentum confirmation with overbought/oversold levels
ADX Strength Filter - Only allows trades when trend strength exceeds 25 threshold
Session-Based Trading Management
Four Trading Sessions - Asia (18:00-00:00), London (00:00-08:00), NY AM (08:00-13:00), NY PM (13:00-18:00)
Individual Session Limits - Separate maximum trade counts for each session (default 5 per session)
Automatic Session Closure - All positions close at specified market close time
Risk Management Features
Multiple Stop Loss Options - Percentage-based, MA cross, or band-based SL methods
Risk/Reward Ratio - Configurable TP levels based on SL distance (default 1:2)
Auto-Risk Calculation - Dynamic position sizing based on dollar risk limits ($150-$250 range)
Daily Limits - Stop trading after reaching specified TP or SL counts per day
Support & Resistance System
Multiple Pivot Types - Traditional, Fibonacci, Woodie, Classic, DM, and Camarilla calculations
Flexible Timeframes - Auto-adjusting or manual timeframe selection for S/R levels
Historical Levels - Configurable number of past S/R levels to display
Visual Customization - Individual color and display settings for each S/R level
Additional Features
Alert System - Customizable buy/sell alert messages with once-per-bar frequency
Visual Trade Management - Color-coded entry, SL, and TP levels with fill areas
Session Highlighting - Optional background colors for different trading sessions
Comprehensive Filtering - All signals must pass through multiple confirmation layers before execution
This approach demonstrates how to build a professional-grade trading system that combines multiple technical analysis methods with robust risk management and session-based controls, suitable for algorithmic trading across different market sessions.
Good luck and stay safe!
MARibbonMARibbon インジケーターについて
この「MARibbon」は、3本の移動平均線(MA1、MA2、MA3)を描画し、特にMA2とMA3の関係性に注目して、背景色でトレンドの強弱や転換のサインを視覚的に分かりやすく表示するインジケーターです。
主な特徴
3種類の移動平均線を表示可能
MA1(白色、期間40、太さ2)
MA2(水色、期間200、太さ4)
MA3(ピンク色、期間800、太さ4)
各MAの期間・種類(SMA、EMA、WMA、RMA)・タイムフレームは自由に設定可能。
MA2とMA3の関係性に応じて、チャート背景に色付きのリボン(帯)を表示。
背景リボンの意味
MA2 > MA3(ゴールデンクロス状況)
→ 背景を薄い緑色にして、上昇トレンドの可能性を示唆。
MA3 > MA2(デッドクロス状況)
→ 背景を薄い赤色にして、下降トレンドの可能性を示唆。
それ以外(等しい場合など)は背景色なし(透明)で表示。
入力可能な設定
各移動平均線の期間
各移動平均線の種類(SMA、EMA、WMA、RMA)
各移動平均線のタイムフレーム(デフォルトはチャートと同じ)
使い方
任意の銘柄・時間足のチャートにインジケーターを適用。
必要に応じて、3本の移動平均の期間・種類・時間足を調整。
MA2とMA3の位置関係によって、チャート背景の色が変わり、トレンドの強弱を直感的に把握可能。
MARibbon is a custom indicator that plots three moving averages (MA1, MA2, MA3) and visually fills the space between MA2 and MA3 with color bands to indicate trend strength and direction.
Each MA supports custom type (SMA / EMA / WMA / RMA), length, and timeframe.
A green band appears when MA2 is above MA3.
A red band appears when MA3 is above MA2.
This clean and minimal design helps traders easily visualize overlapping trends and potential crossovers.
💡 Use Cases:
Visually confirm confluence of long- and short-term trends
Identify ribbon-like zones of trend strength
Support for MA cross strategy analysis
Negroni Opening Range StrategyStrategy Summary:
This tool can be used to help identify breakouts from a range during a time-zone of your choosing. It plots a pre-market range, an opening range, it also includes moving average levels that can be used as confluence, as well as plotting previous day SESSION highs and lows.
There are several options on how you wish to close out the trades, all described in more detail below.
Back-testing Inputs:
You define your timezone.
You define how many trades to open on any given day.
You decide to go: long only, short only, or long & short (CAREFUL: "Long & Short" can open trades that effectively closes-out existing ones, for better AND worse!)
You define between which times the strategy will open trades.
You define when it closes any open trades (preventing overnight trades, or leaving trades open into US data times!!).
This hopefully helps make back-testing reflect YOUR trading hours.
NOTE: Renko or Heikin-Ashi charts
For ALL strategies, don’t use Renko or Heikin-Ashi charts unless you know EXACTLY the implications.
Specific to my strategy, using a renko chart can make this 85-90% profitable (I wish it was!!) Although they can be useful, renko charts don’t always capture real wicks, so the renko chart may show your trade up-only but your broker (who is not using renko!!) will have likely stopped you out on a wick somewhere along the line.
NOTE: TradingView ‘Deep backtesting’
For ALL strategies, be cynical of all backtesting (e.g. repainting issues etc) as well as ‘Deep backtesting’ results.
Specific to this strategy, the default settings here SHOULD BE OK, but unfortunately at the time of writing, we can’t see on the chart what exactly ‘deep backtesting’ is calculating. In the past I have noted a number of trades that were not closed at the end of the day, despite my ‘end of day’ trade closing being enabled, so there were big winners and losers that would not have materialized otherwise. As I say, this seems ok at these settings but just always be cynical!!
Opening Range Inputs
You define a pre-market range (example: 08:00 - 09:00).
You define an opening range (example: 09:00 - 09:30).
The strategy will give an update at the close of the opening range to let you know if the opening range has broken out the pre-market range (OR Breakout), or if it has remained inside (OR Inside). The label appears at the end of the opening range NOT at the bar that ‘broke-out’.
This is just a visual cue for you, it has no bearing on what the strategy will do.
The strategy default will trade off the pre-market range, but you can untick this if you prefer to trade off the opening range.
Opening Trades:
Strategy goes long when the bar (CLOSE) crosses-over the ‘pre-market’ high (not the ‘opening range’ high); and the time is within your trading session, and you have not maxed out your number of trades for the day!
Strategy goes short when the bar (CLOSE) crosses-under the ‘pre-market’ low (not the ‘opening range low); and the time is within your trading session, and you have not maxed out your number of trades for the day!
Remember, you can untick this if you prefer to trade off the opening range instead.
NOTES:
Using momentum indicators can help (RSI and MACD): especially to trade range plays in failed breakouts, when momentum shifts… but the strategy won’t do this for you!
Using an anchored vwap at the session open can also provide nice confluence, as well as take-profit levels at the upper/lower of 3x standard deviation.
CLOSING TRADES:
You have 6 take-profit (TP) options:
1) Full TP: uses ATR Multiplier - Full TP at the ATR parameters as defined in inputs.
2) Take Partial profits: ATR Multiplier - Takes partial profits based on parameters as defined in inputs (i.e close 40% of original trade at TP1, close another 40% of original trade at TP2, then the remainder at Full TP as set in option 1.).
3) Full TP: Trailing Stop - Applies a Trailing Stop at the number of points, as defined in inputs.
4) Full TP: MA cross - Takes profit when price crosses ‘Trend MA’ as defined in inputs.
5) Scalp: Points - closes at a set number of points, as defined in inputs.
6) Full TP: PMKT Multiplier - places a SL at opposite pre-market Hi/Low (we go long at a break-out of the pre-market high, 50% would place a SL at the pre-market range mid-point; 100% would place a SL at the pre-market low)'. This takes profit at the input set in option 1).
Bitcoin Pi Cycle Top Indicator - Daily Timeframe Only1 Day Timeframe Only
The Bitcoin Pi Cycle Top Indicator has garnered attention for its historical effectiveness in identifying the timing of Bitcoin's market cycle peaks with remarkable precision, typically within a margin of 3 days.
It utilizes a specific combination of moving averages—the 111-day moving average and a 2x multiple of the 350-day moving average—to signal potential tops in the Bitcoin market.
The 111-day moving average (MA): This shorter-term MA is chosen to reflect more recent price action and trends within the Bitcoin market.
The 350-day moving average (MA) multiplied by 2: This longer-term MA is adjusted to capture broader market trends and cycles over an extended period.
The key premise behind the Bitcoin Pi Cycle Top Indicator is that a potential market top for Bitcoin can be signaled when the 111-day MA crosses above the 350-day MA (which has been doubled). Historically, this crossover event has shown a remarkable correlation with the peaks of Bitcoin's price cycles, making it a tool of interest for traders and investors aiming to anticipate significant market shifts.
#Bitcoin
Actieve Inversiones EMABBOL by EDOHEN
EMABBOL includes these indicators:
- triple emas (9,21,50)
- Bollinger Bands
- Also includes buying or selling signals
The following strategy is based on ema crosses and bollinger ma crosses, the Bollinger band gives us the target we could expect from our trades, using the upper and lower bands.
Trading criteria
Buy : Price crosses over the triple emas and also crosses under the Bollinger band ema. Looking for 3:1 PnL
Sell : Price crosses under the triple emas and also crosses under the Bollinger band ema. Looking for 3:1 PnL
Stop Loss Tips : set the SL above the crosses if Selling, below the crosses if buying
Take Profit Tips : set the TP below the Bollinger's lower Band band if Selling, or above the Bollinger's upper Band band if Buying
Fibonacci Muti-MA RibbonWelcome some, welcome small.... This is CryptoFilio, your dark knight in the crypto light - shining down my infinite wisdom upon this wasteland we call the "markets". It's me and you against the machine... so rage, rage, rage against the dying of the night!
DESCRIPTION
This indicator exemplifies the beauty of the sacred Fibonacci sequence.... used by flowers and seashells and the intrepid day trader. Each color in the ribbon represents an MA of a specific FIB lookback period. This naturally makes the ribbon front weighted, giving recent price action greater importance than older price action. The undulating curls of the ribbon allow a trader to see key convergences and divergences. The ribbon often narrows before a major price movement.
The background is lightly colored to indicate when one average of MA's crosses the other average (1+2+3+4+5) crosses (6+7+8+9+10). Like a standard MA cross, but a little more sophisticated.
The most visually pleasing is SMMA-RMA, but the more effective in anticipating the market is EMA and HMA.
USAGE
Visualizing convergence and divergence as the ribbon widens with sudden price movement and narrows during consolidation
Visualizing general trends as the flipping over of the ribbon represents a general trend change
Setting possible entry and exit points through the width and direction of the ribbon
VARIATIONS
You can select many types of MA's, such as SMA,EMA,HMA,VWMA... and a couple of others. The most effective seem to be EMA,HMA, and VWMA
SUGGESTIONS
Let me know if you'd like some other features added to this indicator, such as additional MA's or something else. I can also customize it for a specific application.
[e2] Drawing Library :: Horizontal Ray█ OVERVIEW
Library "e2hray"
A drawing library that contains the hray() function, which draws a horizontal ray/s with an initial point determined by a specified condition. It plots a ray until it reached the price. The function let you control the visibility of historical levels and setup the alerts.
█ HORIZONTAL RAY FUNCTION
hray(condition, level, color, extend, hist_lines, alert_message, alert_delay, style, hist_style, width, hist_width)
Parameters:
condition : Boolean condition that defines the initial point of a ray
level : Ray price level.
color : Ray color.
extend : (optional) Default value true, current ray levels extend to the right, if false - up to the current bar.
hist_lines : (optional) Default value true, shows historical ray levels that were revisited, default is dashed lines. To avoid alert problems set to 'false' before creating alerts.
alert_message : (optional) Default value string(na), if declared, enables alerts that fire when price revisits a line, using the text specified
alert_delay : (optional) Default value int(0), number of bars to validate the level. Alerts won't trigger if the ray is broken during the 'delay'.
style : (optional) Default value 'line.style_solid'. Ray line style.
hist_style : (optional) Default value 'line.style_dashed'. Historical ray line style.
width : (optional) Default value int(1), ray width in pixels.
hist_width : (optional) Default value int(1), historical ray width in pixels.
Returns: void
█ EXAMPLES
• Example 1. Single horizontal ray from the dynamic input.
//@version=5
indicator("hray() example :: Dynamic input ray", overlay = true)
import e2e4mfck/e2hray/1 as e2draw
inputTime = input.time(timestamp("20 Jul 2021 00:00 +0300"), "Date", confirm = true)
inputPrice = input.price(54, 'Price Level', confirm = true)
e2draw.hray(time == inputTime, inputPrice, color.blue, alert_message = 'Ray level re-test!')
var label mark = label.new(inputTime, inputPrice, 'Selected point to start the ray', xloc.bar_time)
• Example 2. Multiple horizontal rays on the moving averages cross.
//@version=5
indicator("hray() example :: MA Cross", overlay = true)
import e2e4mfck/e2hray/1 as e2draw
float sma1 = ta.sma(close, 20)
float sma2 = ta.sma(close, 50)
bullishCross = ta.crossover( sma1, sma2)
bearishCross = ta.crossunder(sma1, sma2)
plot(sma1, 'sma1', color.purple)
plot(sma2, 'sma2', color.blue)
// 1a. We can use 2 function calls to distinguish long and short sides.
e2draw.hray(bullishCross, sma1, color.green, alert_message = 'Bullish Cross Level Broken!', alert_delay = 10)
e2draw.hray(bearishCross, sma2, color.red, alert_message = 'Bearish Cross Level Broken!', alert_delay = 10)
// 1b. Or a single call for both.
// e2draw.hray(bullishCross or bearishCross, sma1, bullishCross ? color.green : color.red)
• Example 3. Horizontal ray at the all time highs with an alert.
//@version=5
indicator("hray() example :: ATH", overlay = true)
import e2e4mfck/e2hray/1 as e2draw
var float ath = 0, ath := math.max(high, ath)
bool newAth = ta.change(ath)
e2draw.hray(nz(newAth ), high , color.orange, alert_message = 'All Time Highs Tested!', alert_delay = 10)
Instrument-Z (3Commas Bot)Instrument-Z is what I am currently using as my 3Commas Bot.
It allows you to customize signals from 3 indicators; Crossing MA's, Stochastic RSI, and WaveTrend.
Better yet, it allows you to setup these signals separately depending on whether the Trend MA is going up or down.
So there are 2 sets of inputs for everything, Uptrend inputs and Downtrend inputs.
I have realized that we can't expect a strategy to work the same way in an uptrend vs downtrend, so the inputs should be separated too.
In my testing, separating increased the net profit by 60% on average.
You can select whether you are trading Long or Short.
You can choose your stop loss and take profit levels as well as trade expiration.
You can choose if you only want to trade with the trend (making the opposing signals irrelevant).
The trend is based on the Trend MA.
This script is specifically for cryptocurrencies.
I've noticed that MA crosses on other asset classes are unreliable because the fluctuations are not strong enough to push the MA's across each other in a meaningful way.
If you want to use this as a 3Commas Bot, then you will have to copy the code of the strategy and paste it into your own personal script.
Then you have to change the alert messages at the bottom of the script.
Make sure to change your alert message from this;
{"message_type": "bot", "bot_id": 0000000, "email_token": "0b000a0a-0aa0-00aa-0aa0-000a00000a0a", "delay_seconds": 0}
To this;
{\n\"message_type\": \"bot\",\n\"bot_id\": 0000000,\n\"email_token\": \"0a000a0a-0aa0-00aa-0aa0-000a00000a0a\",\n\"delay_seconds\": 0\n}
With \n after each new line and \ before each quotation.
In the Alert setup, select "alert() function calls only".
This indicator is like a middle ground of complexity between the Juicy Trend indicator and the Instrument-A indicator.
And because it does not feature my neural network project, I have made it open script.
Enjoy!
EMA CrossColor coded Fast & Slow Moving Averages. Cross printed at MA cross. MA color changes when price moves above / below MA.
Trend Quality cross [LM]Hi Guys,
I would like to introduce you Trend quality cross indicator. The idea orginallybcomes from @kruskakli and his indicator "Trend Quality" so shout-out to him
I have modified the indicator to display just binary option buy/sell and display diff percentage from previous cross. Also there is a difference that I have double smoothed tq indicator results to give less false signals.
and also added for the same reason like in my other indicator vpci ma cross base line and conversion line from ichimoku.
Any suggestions are welcomed






















