3 Important Value CompositesCalculated on February 17, 2024. USDT 378 items, BTC 282 items, BINANCE
This is a watchlist, along with the most accurate computed values that I could achieve. It may be beneficial for those who want to change values from the "120x ticker screener (composite tickers)" indicator, which is one of the excellent indicators to bypass the limitation of the request. security() function that limits to only 40 requests. I've thought about this before but couldn't succeed, but someone finally did it. :)
--> 120x ticker screener (composite tickers)
Thank you once again for this idea.
You must look for this and change it.
t1 = 'symbol', n1 = Multiply , r1 = Pricescale(decimal)
Example of grouping: Group 1
BINANCE:ETHUSDT , BINANCE:FDUSDUSDT , BINANCE:BTCUSDT
2, 4, 2
13, 10
█ Note
• Tickers: For your watchlist, arrange them from left to right, pairing them in groups of 3.
• Pricescale: This represents the decimal length, arrange them from left to right, pairing them in groups of 3.
• Multiply: This involves multiplying the first 2 items in each pair of watchlists. Arrange them from left to right, pairing them in groups of 2.
* If you group items incorrectly, it may lead to inaccurate results.
* Please be advised that if one of the values in the "Pricescale"(decimal) trio changes, there may be a need to adjust those values accordingly to ensure correct digit separation. Otherwise, within the group, the numbers might appear peculiar.
Cari dalam skrip untuk "雅虎财经+上证指数2024年每天成交额"
TASC 2024.03 Rate of Directional Change█ OVERVIEW
This script implements the Rate of Directional Change (RODC) indicator introduced by Richard Poster in the "Taming The Effects Of Whipsaw" article featured in the March 2024 edition of TASC's Traders' Tips .
█ CONCEPTS
In his article, Richard Poster discusses an approach to potentially reduce false trend-following strategy entry signals due to whipsaws in forex data. The RODC indicator is central to this approach. The idea behind RODC is that one can characterize market whipsaw as alternating up and down ZigZag segments. By counting the number of up and down segments within a lookback window, the RODC indicator aims to identify if the window contains a significant whipsaw pattern:
RODC = 100 * Segments / Window Size (bars)
Larger RODC values suggest elevated whipsaw in the calculation window, while smaller values signify trending price activity.
█ CALCULATIONS
• For each price bar, the script iterates through the lookback window to identify up and down segments.
• If the price change between subsequent bars within the window is in the direction opposite to the current segment and exceeds the specified threshold , the calculation interprets the condition as a reversal point and the start of a new segment.
• The script uses the number of segments within the window to calculate RODC according to the above formula.
• Finally, the script applies a simple moving average to smoothen the RODC data.
Users can change the length of the lookback window , the threshold value, and the smoothing length in the "Inputs" tab of the script's settings.
TASC 2024.02 Price-Time Filtering█ OVERVIEW
This script implements a price-time trend filter proposed by Alfred François Tagher in the “Trend Identification By Price And Time Filtering” article from the February 2024 edition of TASC's Traders' Tips .
█ CONCEPTS
In his article, Alfred François Tagher proposed a rule set designed to minimize the impact of stochastic price movements, facilitating the identification of larger-scale trends. The rules are:
• If the most recent week's close exceeds the previous week's high, the trend is up.
• If the most recent week's close is below the previous week's low, the trend is down.
• The trend remains unchanged until one of the above conditions occurs.
Similar rules can also apply to monthly bars.
The author argues that this approach integrates characteristics of conventional price action and time dynamics filters, so he refers to it as price-time filtering .
█ CALCULATIONS
This script applies the above price-time filtering rules and offers multiple ways to view the results on a chart:
• In the "Oscillator" view mode, the script counts and displays the number of bars in the uptrend and downtrend.
• In the "Linebreak" view mode, the trend filter is presented in a format resembling a point-and-figure (P&F) chart , with the length of each bar corresponding to the high-low range of the respective trend.
• In both view modes, the script offers bar coloring of the main chart based on the identified trend.
TASC 2024.01 Gap Momentum System█ OVERVIEW
TASC's January 2024 edition of Traders' Tips features an article titled “Gap Momentum” by Perry J. Kaufman. The article discusses how a trader might create a momentum strategy based on opening gap data. This script implements the Gap Momentum system presented therein.
█ CONCEPTS
In the article, Perry J. Kaufman introduces Gap Momentum as a cumulative series constructed in the same way as On-Balance Volume (OBV) , but using gap openings (today’s open minus yesterday’s close).
To smoothen the resulting time series (i.e., obtain the " signal line "), the author applies a simple moving average . Subsequently, he proposes the following two trading rules for a long-only trading system:
• Enter a long position when the signal line is moving higher.
• Exit when the signal line is moving lower.
█ CALCULATIONS
The calculation of Gap Momentum involves the following steps:
1. Calculate the ratio of the sum of positive gaps over the past N days to the sum of negative gaps (absolute values) over the same time period.
2. Add the resulting gap ratio to the cumulative time series. This time series is the Gap Momentum.
3. Keep moving forward, as in an N-day moving average.
CM_VixFix_RSI_HMA200_TrailStop_vFinal📌 CM_VixFix_RSI_HMA200_TrailStop – vFinal | BTC 30-Minute Strategy (Long & Short)
This strategy combines volatility-based market shock detection (Williams Vix Fix), trend confirmation (HMA200), and momentum filtering (RSI) to generate high-probability trade entries. It is engineered for BTC/USDT on the 30-minute timeframe, with carefully tuned parameters through extensive backtesting.
🎯 Core Components:
WVF (Williams Vix Fix): Identifies volatility spikes, acting as a proxy for oversold conditions or panic drops.
RSI (Relative Strength Index): Generates directional momentum signals, with separate thresholds for long and short entries.
HMA200: Filters trades based on the prevailing market trend. Trades are only allowed in the direction of HMA slope and position.
ATR-Based Trailing Stop Engine: Activates after a minimum profit threshold is hit. Combines dynamic trailing logic with a Hard Stop (maximum loss limit) to mitigate risk.
⚠️ Short-Side Challenges & Solutions
During development, the short-side trades exhibited a lower win rate, a common behavior in crypto bull-biased markets. To address this, we implemented:
RSI trigger reduced to 20 to capture only high-momentum sell-offs.
Dual confirmation: RSI must also be below its EMA(21) and price below EMA(100).
MaxBars filter (10 candles): Prevents multiple short entries in tight ranges or low-volatility zones.
As a result:
Short trades now yield a Risk/Reward ratio above 3.4
Average short trade profit is ~3x the average loss, making short entries valuable despite lower hit rate.
📊 Performance Summary (Backtest: BTCUSDT, 30-Min, July 2024–July 2025)
Metric Long Short Overall
Total Trades 401 50 451
Win Rate 49.6% 30.0% 47.4%
Avg PnL 311 USDT 1,229 USDT 413 USDT
Risk/Reward (Avg K/L) 1.05 3.48 1.16
🚨 Disclaimer
This strategy is not a plug-and-play black box. While signals are statistically validated, we strongly recommend using this tool in conjunction with:
Volume and time-of-day filters
Fundamental/macro overlays (especially around Fed announcements or CPI data)
A broader risk management framework
Note: This strategy has been optimized exclusively for BTC/USDT on the 30-minute timeframe. If applied to other assets or timeframes, recalibration is necessary.
RSI-Adaptive T3 + Squeeze Momentum Strategy✅ Strategy Guide: RSI-Adaptive T3 + Squeeze Momentum Strategy
📌 Overview
The RSI-Adaptive T3 + Squeeze Momentum Strategy is a dynamic trend-following strategy based on an RSI-responsive T3 moving average and Squeeze Momentum detection .
It adapts in real-time to market volatility to enhance entry precision and optimize risk.
⚠️ This strategy is provided for educational and research purposes only.
Past performance does not guarantee future results.
🎯 Strategy Objectives
The main objective of this strategy is to catch the early phase of a trend and generate consistent entry signals.
Designed to be intuitive and accessible for traders from beginner to advanced levels.
✨ Key Features
RSI-Responsive T3: T3 length dynamically adjusts according to RSI values for adaptive trend detection
Squeeze Momentum: Combines Bollinger Bands and Keltner Channels to identify trend buildup phases
Visual Triggers: Entry signals are generated from T3 crossovers and momentum strength after squeeze release
📊 Trading Rules
Long Entry:
When T3 crosses upward, momentum is positive, and the squeeze has just been released.
Short Entry:
When T3 crosses downward, momentum is negative, and the squeeze has just been released.
Exit (Reversal):
When the opposite condition to the entry is triggered, the position is reversed.
💰 Risk Management Parameters
Pair & Timeframe: BTC/USD (30-minute chart)
Capital (simulated): $30,00
Order size: `$100` per trade (realistic, low-risk sizing)
Commission: 0.02%
Slippage: 2 pips
Risk per Trade: 5%
Number of Trades (backtest period): 181
📊 Performance Overview
Symbol: BTC/USD
Timeframe: 30-minute chart
Date Range: January 1, 2024 – July 3, 2025
Win Rate: 47.8%
Profit Factor: 2.01
Net Profit: 173.16 (units not specified)
Max Drawdown: 5.77% or 24.91 (0.79%)
⚙️ Indicator Parameters
Indicator Name: RSI-Adaptive T3 + Squeeze Momentum
RSI Length: 14
T3 Min Length: 5
T3 Max Length: 50
T3 Volume Factor: 0.7
BB Length: 27 (Multiplier: 2.0)
KC Length: 20 (Multiplier: 1.5, TrueRange enabled)
🖼 Visual Support
T3 slope direction, squeeze status, and momentum bars are visually plotted on the chart,
providing high clarity for quick trend analysis and execution.
🔧 Strategy Improvements & Uniqueness
Inspired by the RSI Adaptive T3 by ChartPrime and Squeeze Momentum Indicator by LazyBear ,
this strategy fuses both into a hybrid trend-reversal and momentum breakout detection system .
Compared to traditional trend-following methods, it excels at capturing early trend signals with greater sensitivity .
✅ Summary
The RSI-Adaptive T3 + Squeeze Momentum Strategy combines momentum detection with volatility-responsive risk management.
With a strong balance between visual clarity and practicality, it serves as a powerful tool for traders seeking high repeatability.
⚠️ This strategy is based on historical data and does not guarantee future profits.
Always use appropriate risk management when applying it.
VARNI-LINE-CHART//@version=5
indicator("VARNI-LINE-CHART",shorttitle = "VARNI-LINE-CHART", overlay=false)
// Input for Index and Expiry Date
spot_ = input.string("BANKNIFTY", title = "Spot Symbol", options = , group = "Index")
tooltip_day = "Enter the day of the expiry. Add 0 in front if the day is a single digit. For example: 05 instead of 5"
tooltip_month = "Enter the month of the expiry. Add 0 in front if the month is a single digit. For example: 06 instead of 6"
tooltip_year = "Enter the year of the expiry. Use the last two digits of the year. For example: 24 instead of 2024"
_day = input.string("13", title = "Expiry Day", tooltip = tooltip_day, group="Expiry Date")
_month = input.string("02", title = "Expiry Month", tooltip = tooltip_month, group="Expiry Date")
_year = input.string("25", title = "Expiry Year", tooltip = tooltip_year, group="Expiry Date")
// Input for Strikes
tooltip_ = "You can select any Strike, and choose to include both strikes or just one"
strike_ce = input.int(23500, "Call Strike", tooltip = tooltip_,step = 50, group = "Select Strike")
strike_pe = input.int(23500, "Put Strike", tooltip = tooltip_,step = 50, group = "Select Strike")
var string spot = na
if spot_ == "SENSEX"
spot := "BSX"
else if spot_ == "BANKEX"
spot := "BKX"
else
spot := spot_
// Option to include both strikes
strike_choice = input.string("Combined", title = "Select Strike", options = , group = "Select Strike")
// Generate symbols for Call and Put options
var string symbol_CE = spot + _year + _month + _day + "C" + str.tostring(strike_ce)
var string symbol_PE = spot + _year + _month + _day + "P" + str.tostring(strike_pe)
// Request security data for both Call and Put options
= request.security(symbol_CE, timeframe.period, )
= request.security(symbol_PE, timeframe.period, )
call_volume = request.security( symbol_CE, timeframe.period , volume )
put_volume = request.security( symbol_PE, timeframe.period , volume )
var float combined_open = 0
var float combined_high = 0
var float combined_low = 0
var float combined_close = 0
var float combined_vol = 0
// Calculate combined premium based on strike choice
if strike_choice == "Combined"
combined_open := call_open + put_open
combined_close := call_close + put_close
combined_high := math.max(combined_open, combined_close)
combined_low := math.min(combined_open, combined_close)
combined_vol := call_volume + put_volume
else if strike_choice == "Only Call"
combined_open := call_open
combined_close := call_close
combined_high := call_high
combined_low := call_low
combined_vol := call_volume
else
combined_open := put_open
combined_close := put_close
combined_high := put_high
combined_low := put_low
combined_vol := put_volume
// Plot combined premium as a line chart
plot(combined_close, title = "Combined Premium", color = combined_close > combined_open ? color.green : color.red, linewidth = 2)
// Indicator selection
use_ema_crossover = input.bool(false, title = "Use EMA Crossover", group = "Indicators")
use_supertrend = input.bool(false, title = "Use Supertrend", group = "Indicators")
use_vwap = input.bool(true, title = "Use VWAP", group = "Indicators")
use_rsi = input.bool(false, title = "Use RSI", group = "Indicators")
use_sma = input.bool(false, title = "Use SMA", group = "Indicators")
pine_supertrend_value(factor, atrPeriod) =>
src = combined_close
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or combined_close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or combined_close > prevUpperBand ? upperBand : prevUpperBand
int _direction = na
float superTrend = na
prevSuperTrend = superTrend
if na(atr )
_direction := 1
else if prevSuperTrend == prevUpperBand
_direction := combined_close > upperBand ? -1 : 1
else
_direction := combined_close < lowerBand ? 1 : -1
superTrend := _direction == -1 ? lowerBand : upperBand
superTrend
pine_supertrend_dir(factor, atrPeriod) =>
src = combined_close
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or combined_close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or combined_close > prevUpperBand ? upperBand : prevUpperBand
int _direction = na
float superTrend = na
prevSuperTrend = superTrend
if na(atr )
_direction := 1
else if prevSuperTrend == prevUpperBand
_direction := combined_close > upperBand ? -1 : 1
else
_direction := combined_close < lowerBand ? 1 : -1
superTrend := _direction == -1 ? lowerBand : upperBand
_direction
// Input for EMA lengths
fastLength = input.int(7, 'Fast EMA Length', group = "EMA")
slowLength = input.int(12, 'Slow EMA Length', group = "EMA")
// Input for SuperTrend
atrLength = input.int(7, 'ATR Length', group = "SuperTrend")
fac = input.float(2, 'Factor', group = "SuperTrend")
// Input for RSI
rsi_length = input.int(7, 'Length', group="RSI")
rsi_ob_level = input.int(80, 'Overbought', group="RSI")
rsi_os_level = input.int(20, 'Oversold', group="RSI")
// Input for SMA
sma_length = input.int(7, 'SMA Length', group = "SMA")
var float fast_ema = na
var float slow_ema = na
var float supertrend = na
var int direction = na
var float rsi_val = na
var float sma_val = na
var float sumPriceVolume = na
var float sumVolume = na
var float vwap = na
// Fast EMA
if use_ema_crossover
fast_ema := ta.ema(combined_close, fastLength)
slow_ema := ta.ema(combined_close, slowLength)
// Supertrend
if use_supertrend
supertrend := pine_supertrend_value( fac, atrLength)
direction := pine_supertrend_dir( fac, atrLength)
// VWAP
if use_vwap
if (dayofweek != dayofweek )
sumPriceVolume := 0.0
sumVolume := 0.0
vwap := 0.0
sumPriceVolume += combined_close * combined_vol
sumVolume += combined_vol
vwap := sumPriceVolume / sumVolume
// RSI
if use_rsi
rsi_val := ta.rsi(combined_close, rsi_length)
// SMA
if use_sma
sma_val := ta.sma(combined_close, sma_length)
plot(fast_ema, title='Fast EMA', color=color.blue, linewidth=2)
plot(slow_ema, title='Slow EMA', color=color.yellow, linewidth=2)
plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
plot(vwap, title='VWAP', color=color.purple, linewidth=2)
plot(sma_val, title='SMA', color=color.maroon, linewidth=2)
// Define buy and sell conditions based on selected indicators
var bool buy = false
var bool sell = false
var int buyC = 0
var int sellC = 0
if dayofweek != dayofweek
buyC := 0
sellC := 0
if use_ema_crossover
buy := ( ta.crossover(fast_ema, slow_ema) ) and buyC == 0
sell := ( ta.crossunder(fast_ema, slow_ema) ) and sellC == 0
if use_vwap
buy := ( buy ? buy and (combined_close > vwap and combined_close <= vwap ) : (combined_close > vwap and combined_close <= vwap )) and buyC == 0
sell := ( sell ? sell and (combined_close < vwap and combined_close >= vwap ) : (combined_close < vwap and combined_close >= vwap )) and sellC == 0
if use_rsi
buy := ( buy ? buy and ta.crossover(rsi_val, rsi_ob_level) : ta.crossover(rsi_val, rsi_ob_level) ) and buyC == 0
sell := ( sell ? sell and ta.crossunder(rsi_val, rsi_os_level) : ta.crossunder(rsi_val, rsi_os_level) ) and sellC == 0
if use_sma
buy := ( buy ? buy and ta.crossover(combined_close, sma_val) : ta.crossover(combined_close, sma_val) ) and buyC == 0
sell := ( sell ? sell and ta.crossunder(combined_close, sma_val) : ta.crossunder(combined_close, sma_val) ) and sellC == 0
if use_supertrend
buy := ( buy ? direction == -1 : direction == -1 and direction == 1 ) and buyC == 0
sell := ( sell ? direction == 1 : direction == 1 and direction == -1 ) and sellC == 0
if buy
buyC := 1
sellC := 0
if sell
sellC := 1
buyC := 0
// Plot buy and sell signals
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labeldown, location = location.top, color= color.green, textcolor = color.white, size = size.small)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labelup, location = location.bottom, color= color.red, textcolor = color.white, size = size.small)
// Alert conditions
alertcondition(buy, "Buy Alert", "Buy Signal")
alertcondition(sell, "Sell Alert", "Sell Signal")
📈 Smart Alert System — EMA/MA/Volume/SMC AlertsHere's a detailed description of your custom TradingView **Pine Script v6**:
---
### 📌 **Title**: Smart Alert System — Webhook Ready (with EMA, MA, Volume, and SMC)
This script is designed to **monitor price behavior**, detect important **technical analysis events**, and **send real-time alerts via webhook to a Telegram bot**.
---
## 🔧 SETTINGS
| Setting | Description |
| ----------------------- | ------------------------------------------------------------------------------ |
| `volumeSpikeMultiplier` | Multiplier to determine a volume spike compared to the 20-bar average volume |
| `testAlert` | If `true`, sends a test alert when the indicator is first applied to the chart |
---
## 🔍 COMPONENT BREAKDOWN
### 1. **EMA & MA Calculations**
These indicators are calculated and plotted on the chart:
* **EMAs**: 13, 25, 30, 200 — used for trend and touch detection
* **MAs**: 100, 300 — used for break and retest detection
```pinescript
ema_13 = ta.ema(close, 13)
ema_200 = ta.ema(close, 200)
ma_100 = ta.sma(close, 100)
```
---
### 2. **📈 Volume Spike Detection**
* A volume spike is identified when the current bar's volume is **2x (default)** greater than the 20-period average.
* A red triangle is plotted above such candles.
* A **JSON alert** is triggered.
```pinescript
volSpike = volume > avgVol * volumeSpikeMultiplier
```
---
### 3. **📊 EMA Touch Alerts**
* The script checks if the current close is:
* Within 0.1% of an EMA value **OR**
* Has crossed above/below it.
* If so, it sends an alert with the EMA name.
```pinescript
touch(val, crossed) =>
math.abs(close - val) / val < 0.001 or crossed
```
---
### 4. **📉 MA Break and Retest Alerts**
* A **break** is when price falls **below** a moving average.
* A **retest** is when price climbs **above** the same average after breaking below.
```pinescript
breakBelow(ma) => close > ma and close < ma
```
---
### 5. 🧠 **SMC Alerts (Break of Structure \ & Change of Character \ )**
These follow **Smart Money Concepts (SMC)**. The script identifies:
* **BOS**: New higher high in uptrend or lower low in downtrend
* **CHOCH**: Opposite of trend, e.g. lower low in uptrend or higher high in downtrend
```pinescript
bos = (high > high ) and (low > low ) and (low > low )
choch = (low < low ) and (high < high ) and (high < high )
```
---
### 6. 🧪 Dummy Test Alert (1-time fire)
* Sends a `"✅ Test Alert Fired"` to verify setup
* Executes **once only** after adding the indicator
```pinescript
var bool sentTest = false
if testAlert and not sentTest
```
---
### 7. 🚀 Alert Delivery (Webhook JSON)
All alerts are sent as a JSON payload that looks like this:
```json
{
"pair": "BTCUSD",
"event": "🔺 Volume Spike",
"timeframe": "15",
"timestamp": "2024-06-29T12:00:00Z",
"volume": "654000"
}
```
This format makes it compatible with your **Telegram webhook server**.
---
### 🔔 Alerts You Can Create in TradingView
* Set **Webhook URL** to your `https://xxxx.ngrok-free.app/tradingview-webhook`
* Use alert condition: `"Any alert()`" — because all logic is internal.
* Select **"Webhook URL"** and leave the message body blank.
---
### 🛠️ Use Cases
* Notify yourself on **EMA interaction**
* Detect **trend shifts or retests**
* Spot **volume-based market interest**
* Get real-time **BOS/CHOCH alerts** for Smart Money strategies
* Alert through **Telegram using your Node.js webhook server**
---
Would you like me to break down the full Pine Script block-by-block as well?
S4_IBS_Mean_Rev_3candleExitOverview:
This is a rules-based, mean reversion strategy designed to trade pullbacks using the Internal Bar Strength (IBS) indicator. The system looks for oversold conditions based on IBS, then enters long trades , holding for a maximum of 3 bars or until the trade becomes profitable.
The strategy includes:
✅ Strict entry rules based on IBS
✅ Hardcoded exit conditions for risk management
✅ A clean visual table summarizing key performance metrics
How It Works:
1. Internal Bar Strength (IBS) Setup:
The IBS is calculated using the previous bar’s price range:
IBS = (Previous Close - Previous Low) / (Previous High - Previous Low)
IBS values closer to 0 indicate price is near the bottom of the previous range, suggesting oversold conditions.
2. Entry Conditions:
IBS must be ≤ 0.25, signaling an oversold setup.
Trade entries are only allowed within a user-defined backtest window (default: 2024).
Only one trade at a time is permitted (long-only strategy).
3. Exit Conditions:
If the price closes higher than the entry price, the trade exits with a profit.
If the trade has been open for 3 bars without showing profit, the trade is forcefully exited.
All trades are closed automatically at the end of the backtest window if still open.
Additional Features:
📊 A real-time performance metrics table is displayed on the chart, showing:
- Total trades
- % of profitable trades
- Total P&L
- Profit Factor
- Max Drawdown
- Best/Worst trade performance
📈 Visual markers indicate trade entries (green triangle) and exits (red triangle) for easy chart interpretation.
Who Is This For?
This strategy is designed for:
✅ Traders exploring systematic mean reversion approaches
✅ Those who prefer strict, rules-based setups with no subjective decision-making
✅ Traders who want built-in performance tracking directly on the chart
Note: This strategy is provided for educational and research purposes. It is a backtested model and past performance does not guarantee future results. Users should paper trade and validate performance before considering real capital.
High Low Levels by JZCustom High Low Levels Indicator - features
Clearly plotted high and low levels for specific trading sessions. This indicator provides visual representations of key price levels during various trading periods. Below are the main features and benefits of this indicator:
1. Display high and low levels for each session
- previous day high/low: display the high and low from the previous day, giving you a better understanding of how the price moves compared to the prior day.
- asia, london, and custom sessions: track the high and low levels for the major trading sessions (asian and london) and two custom user-defined sessions.
2. Complete line and label customization
- custom line appearance: choose the color, line style (solid, dashed, dotted), and line thickness for each trading session. you can also decide if the lines should extend beyond the current price action.
- custom labels: define your own label texts for each custom session. this way, you can label the levels precisely and easily track price movements.
3. Define your own trading sessions
- add up to two custom sessions (custom and custom 2), which can be defined using precise start and end times (hour and minute).
- each custom session allows you to specify the label text for the high and low levels, enabling you to easily differentiate different parts of the day on the chart.
4. Clear and intuitive design
- grouped settings: all settings are grouped based on trading sessions, so you can easily customize every aspect of the visual representation.
- simple toggle on/off: you can easily enable or disable each line (previous day, asia, london, custom 1, custom 2). this allows you to keep your chart clean and focus only on the important levels you need at any moment.
5. Flexible time zones
- time zone settings: set the time zone (utc, europe/london, america/new_york, asia/tokyo) to properly align the timeframes for each level depending on the market you're focusing on.
6. Automatic cleanup of old lines and labels
- old levels removal: automatically remove old lines and labels to prevent clutter on your chart. this ensures that only current, relevant levels for each trading day or session are displayed.
7. Precise plotting and line extension
- accurate level markings: the indicator calculates the precise times when the high and low levels were reached and plots lines that visually represent these levels.
- line extension options: you have the option to extend the high/low lines beyond their point of calculation, which helps with identifying price action trends beyond the current period.
Dec 7, 2024
Release Notes
Changes and Improvements for Users:
1. Customizable Offset for Lines and Labels:
- A new input, `Line and Label Offset`, allows users to control how far the lines and their associated text labels extend. This ensures the labels and lines remain aligned and can be adjusted as needed.
2. Unified Offset Control:
- The same offset value is applied to all types of lines and labels (e.g., Previous Day High/Low, Asia High/Low, London High/Low, and custom sessions). Users can change this in one place to affect the entire script consistently.
3. Enhanced Flexibility:
- Users now have more control over the appearance and position of their lines and labels, making the indicator adaptable to different chart setups and personal preferences.
These updates aim to enhance user convenience and customization, ensuring a more tailored charting experience.
Real-Time Open Levels with Labels + Info TableReal-Time Multi-Timeframe Open Levels with Labels & Info Panel
Overview
This indicator displays real-time opening price levels across multiple timeframes (Monthly, Weekly, Daily, 4H) directly on your chart. It features:
• Dynamic horizontal lines extending through each timeframe period
• Customizable labels with text/colors
• Special 4H line treatment for the last hour (5-min charts only)
• Integrated information panel showing symbol, timeframe, and price changes
! (www.tradingview.com)
*Example showing multiple timeframe levels with labels and info panel*
---
Features & Configuration
1. Monthly Settings
! (www.tradingview.com)
Show Monthly: Toggle visibility of monthly opening price
Color: Semi-transparent blue (#2196F3 at 70% opacity)
Width: 2px line thickness
Style: Solid/Dotted/Dashed
Label: Display "M-Open" text with white text on blue background
2. Weekly Settings
! (www.tradingview.com)
Show Weekly: Toggle weekly opening price visibility
Color: Semi-transparent red (#FF5252 at 70% opacity)
Width: 1px thickness
Style: Dotted by default
Label: "W-Open" text in white on red background
3. Daily Settings
! (www.tradingview.com)
Show Daily: Toggle daily opening price
Color: Amber (#FFA000 at 70% opacity)
Width: 2px thickness
Style: Solid
Label: "D-Open" in white on orange background
---
4. 4-Hour Settings (5-Minute Charts Only)
Special Features for 5-Min Timeframe:
1. Standard 4H Line
• First 3 hours: Green (#4CAF50) dashed line
• Last hour: Bright red solid line (configurable)
• Vertical divider between 3rd/4th hours
2. Configuration Options
• Main 4H Line:
◦ Color/Width/Style for initial 3 hours
◦ Toggle label ("H4-Open") visibility and styling
• Final Hour Enhancement:
*Last Hour Line*
◦ Unique red color and line style
◦ Separate width (1px) and style (Solid)
*Divider Line*
◦ Vertical red dotted line marking last hour
◦ Adjustable position/width/transparency
! (www.tradingview.com)
*4H levels showing 3-hour segment and final hour treatment*
---
5. Info Panel Settings
Positioning:
• Anchor to any chart corner (Top/Bottom + Left/Right combinations)
• Three text sizes: Title (Huge), Change % (Large), Signature (Small)
Display Elements:
• Symbol: Show exchange prefix (e.g., "NASDAQ:")
• Timeframe: Current chart period (e.g., "5m")
• Change %: 24-hour price movement ▲/▼ percentage
• Custom Signature: Add text/username in footer
Styling:
• Semi-transparent white text (#ffffff77)
• Currency pair formatting (e.g., BTC/USD vs BTC-USD)
! (www.tradingview.com)
*Sample info panel with all elements enabled*
---
Usage Tips
1. Multi-Timeframe Context: Use levels to identify key daily/weekly support/resistance
2. 4H Trading: On 5-min charts, watch for price reactions near final hour transition
3. Customization:
• Match line colors to your chart theme
• Use different labels for clarity (e.g., "Weekly Open")
• Disable unused elements to reduce clutter
4. Divider Lines: Helps identify institutional trading periods (hour closes)
---
*Created using Pine Script v6. For optimal performance, use on charts <1H timeframe. ()*
Ehlers Ultimate Bands (UBANDS)UBANDS: ULTIMATE BANDS
🔍 OVERVIEW AND PURPOSE
Ultimate Bands, developed by John F. Ehlers, are a volatility-based channel indicator designed to provide a responsive and smooth representation of price boundaries with significantly reduced lag compared to traditional Bollinger Bands. Bollinger Bands typically use a Simple Moving Average for the centerline and standard deviations from it to establish the bands, both of which can increase lag. Ultimate Bands address this by employing Ehlers' Ultrasmooth Filter for the central moving average. The bands are then plotted based on the volatility of price around this ultrasmooth centerline.
The primary purpose of Ultimate Bands is to offer traders a clearer view of potential support and resistance levels that react quickly to price changes while filtering out excessive noise, aiming for nearly zero lag in the indicator band.
🧩 CORE CONCEPTS
Ultrasmooth Centerline: Employs the Ehlers Ultrasmooth Filter as the basis (centerline) for the bands, aiming for minimal lag and enhanced smoothing.
Volatility-Adaptive Width: The distance between the upper and lower bands is determined by a measure of price deviation from the ultrasmooth centerline. This causes the bands to widen during volatile periods and contract during calm periods.
Dynamic Support/Resistance: The bands serve as dynamic levels of potential support (lower band) and resistance (upper band).
🧮 CALCULATION AND MATHEMATICAL FOUNDATION
Ehlers' Original Concept for Deviation:
John Ehlers describes the deviation calculation as: "The deviation at each data sample is the difference between Smooth and the Close at that data point. The Standard Deviation (SD) is computed as the square root of the average of the squares of the individual deviations."
This describes calculating the Root Mean Square (RMS) of the residuals:
Smooth = UltrasmoothFilter(Source, Length)
Residuals = Source - Smooth
SumOfSquaredResiduals = Sum(Residuals ^2) for i over Length
MeanOfSquaredResiduals = SumOfSquaredResiduals / Length
SD_Ehlers = SquareRoot(MeanOfSquaredResiduals) (This is the RMS of residuals)
Pine Script Implementation's Deviation:
The provided Pine Script implementation calculates the statistical standard deviation of the residuals:
Smooth = UltrasmoothFilter(Source, Length) (referred to as _ehusf in the script)
Residuals = Source - Smooth
Mean_Residuals = Average(Residuals, Length)
Variance_Residuals = Average((Residuals - Mean_Residuals)^2, Length)
SD_Pine = SquareRoot(Variance_Residuals) (This is the statistical standard deviation of residuals)
Band Calculation (Common to both approaches, using their respective SD):
UpperBand = Smooth + (NumSDs × SD)
LowerBand = Smooth - (NumSDs × SD)
🔍 Technical Note: The Pine Script implementation uses a statistical standard deviation of the residuals (differences between price and the smooth average). Ehlers' original text implies an RMS of these residuals. While both measure dispersion, they will yield slightly different values. The Ultrasmooth Filter itself is a key component, designed for responsiveness.
📈 INTERPRETATION DETAILS
Reduced Lag: The primary advantage is the significant reduction in lag compared to standard Bollinger Bands, allowing for quicker reaction to price changes.
Volatility Indication: Widening bands indicate increasing market volatility, while narrowing bands suggest decreasing volatility.
Overbought/Oversold Conditions (Use with caution):
• Price touching or exceeding the Upper Band may suggest overbought conditions.
• Price touching or falling below the Lower Band may suggest oversold conditions.
Trend Identification:
• Price consistently "walking the band" (moving along the upper or lower band) can indicate a strong trend.
• The Middle Band (Ultrasmooth Filter) acts as a dynamic support/resistance level and indicates the short-term trend direction.
Comparison to Ultimate Channel: Ehlers notes that the Ultimate Band indicator does not differ from the Ultimate Channel indicator in any major fashion.
🛠️ USE AND APPLICATION
Ultimate Bands can be used similarly to how Keltner Channels or Bollinger Bands are used for interpreting price action, with the main difference being the reduced lag.
Example Trading Strategy (from John F. Ehlers):
Hold a position in the direction of the Ultimate Smoother (the centerline).
Exit that position when the price "pops" outside the channel or band in the opposite direction of the trade.
This is described as a trend-following strategy with an automatic following stop.
⚠️ LIMITATIONS AND CONSIDERATIONS
Lag (Minimized but Present): While significantly reduced, some minimal lag inherent to averaging processes will still exist. Increasing the Length parameter for smoother bands will moderately increase this lag.
Parameter Sensitivity: The Length and StdDev Multiplier settings are key to tuning the indicator for different assets and timeframes.
False Signals: As with any band indicator, false signals can occur, particularly in choppy or non-trending markets.
Not a Standalone System: Best used in conjunction with other forms of analysis for confirmation.
Deviation Calculation Nuance: Be aware of the difference in deviation calculation (statistical standard deviation vs. RMS of residuals) if comparing directly to Ehlers' original concept as described.
📚 REFERENCES
Ehlers, J. F. (2024). Article/Publication where "Code Listing 2" for Ultimate Bands is featured. (Specific source to be identified if known, e.g., "Stocks & Commodities Magazine, Vol. XX, No. YY").
Ehlers, J. F. (General). Various publications on advanced filtering and cycle analysis. (e.g., "Rocket Science for Traders", "Cycle Analytics for Traders").
OHLCVDataOHLCV Data Power Library
Multi-Timeframe Market Data with Mathematical Precision
📌 Overview
This Pine Script library provides structured OHLCV (Open, High, Low, Close, Volume) data across multiple timeframes using mathematically significant candle counts (powers of 3). Designed for technical analysts who work with fractal market patterns and need efficient access to higher timeframe data.
✨ Key Features
6 Timeframes: 5min, 1H, 4H, 6H, 1D, and 1W data
Power-of-3 Candle Counts: 3, 9, 27, 81, and 243 bars
Structured Data: Returns clean OHLCV objects with all price/volume components
Pine Script Optimized: Complies with all security() call restrictions
📊 Timeframe Functions
pinescript
f_get5M_3() // 3 candles of 5min data
f_get1H_27() // 27 candles of 1H data
f_get1D_81() // 81 candles of daily data
// ... and 27 other combinations
🚀 Usage Example
pinescript
import YourName/OHLCVData/1 as OHLCV
weeklyData = OHLCV.f_get1W_27() // Get 27 weekly candles
latestHigh = array.get(weeklyData, 0).high
plot(latestHigh, "Weekly High")
💡 Ideal For
Multi-timeframe analysis
Volume-profile studies
Fractal pattern detection
Higher timeframe confirmation
⚠️ Note
Replace "YourName" with your publishing username
All functions return arrays of OHLCV objects
Maximum lookback = 243 candles
📜 Version History
1.0 - Initial release (2024)
Stoch_RSI_ChartEnhanced Stochastic RSI Divergence Indicator with VWAP Filter for Charts
This custom indicator builds upon the classic Stochastic RSI to automatically detect both regular and hidden divergences. It’s designed to help traders spot potential market reversals or continuations using two methods for divergence detection (fractal‑ and pivot‑based) while offering optional VWAP filtering for confirmation.
Key Features
Stoch RSI Calculation
The indicator computes a smoothed Stoch RSI using configurable parameters for RSI length, stochastic length, and smoothing periods. An option to average the K and D lines provides a cleaner momentum view.
Divergence Detection via Fractals & Pivots
Fractal-Based Divergences:
Looks for 4-candle patterns to identify higher-highs or lower-lows in the price that are not confirmed by the oscillator, signaling potential reversals.
Pivot-Based Divergences:
Utilizes TradingView’s built-in pivot functions to find divergence conditions over adjustable pivot ranges.
Regular vs. Hidden Divergences:
Regular Divergence: Occurs when price makes a new extreme (higher high or lower low) while the Stoch RSI fails to follow suit.
Hidden Divergence: Indicates potential trend continuations when the oscillator diverges against the established price trend.
Optional VWAP Filtering
The script includes two optional VWAP filters that work as follows:
VWAP Filter on Regular Divergences:
Only confirms regular divergence signals if the current price satisfies the VWAP condition (e.g., price is above VWAP for bullish signals, below VWAP for bearish signals).
VWAP Filter on Hidden Divergences:
Similarly, hidden divergence signals are validated only when the price meets specific VWAP conditions, adding an extra layer of trend confirmation.
Customizable Alerts and Visual Labels
Easily configure divergence labels (“B” for bullish, “S” for bearish) and enable up to four alert conditions for real‑time notifications when a divergence occurs.
Credits & History:
Log RSI by @fskrypt
Divergence Detection originally by @RicardoSantos (with edits from @JustUncleL)
Further Edits by @NeoButane on August 8, 2018
Latest Edits by @FYMD on June 1, 2024
Bitcoin Polynomial Regression ModelThis is the main version of the script. Click here for the Oscillator part of the script.
💡Why this model was created:
One of the key issues with most existing models, including our own Bitcoin Log Growth Curve Model , is that they often fail to realistically account for diminishing returns. As a result, they may present overly optimistic bull cycle targets (hence, we introduced alternative settings in our previous Bitcoin Log Growth Curve Model).
This new model however, has been built from the ground up with a primary focus on incorporating the principle of diminishing returns. It directly responds to this concept, which has been briefly explored here .
📉The theory of diminishing returns:
This theory suggests that as each four-year market cycle unfolds, volatility gradually decreases, leading to more tempered price movements. It also implies that the price increase from one cycle peak to the next will decrease over time as the asset matures. The same pattern applies to cycle lows and the relationship between tops and bottoms. In essence, these price movements are interconnected and should generally follow a consistent pattern. We believe this model provides a more realistic outlook on bull and bear market cycles.
To better understand this theory, the relationships between cycle tops and bottoms are outlined below:https://www.tradingview.com/x/7Hldzsf2/
🔧Creation of the model:
For those interested in how this model was created, the process is explained here. Otherwise, feel free to skip this section.
This model is based on two separate cubic polynomial regression lines. One for the top price trend and another for the bottom. Both follow the general cubic polynomial function:
ax^3 +bx^2 + cx + d.
In this equation, x represents the weekly bar index minus an offset, while a, b, c, and d are determined through polynomial regression analysis. The input (x, y) values used for the polynomial regression analysis are as follows:
Top regression line (x, y) values:
113, 18.6
240, 1004
451, 19128
655, 65502
Bottom regression line (x, y) values:
103, 2.5
267, 211
471, 3193
676, 16255
The values above correspond to historical Bitcoin cycle tops and bottoms, where x is the weekly bar index and y is the weekly closing price of Bitcoin. The best fit is determined using metrics such as R-squared values, residual error analysis, and visual inspection. While the exact details of this evaluation are beyond the scope of this post, the following optimal parameters were found:
Top regression line parameter values:
a: 0.000202798
b: 0.0872922
c: -30.88805
d: 1827.14113
Bottom regression line parameter values:
a: 0.000138314
b: -0.0768236
c: 13.90555
d: -765.8892
📊Polynomial Regression Oscillator:
This publication also includes the oscillator version of the this model which is displayed at the bottom of the screen. The oscillator applies a logarithmic transformation to the price and the regression lines using the formula log10(x) .
The log-transformed price is then normalized using min-max normalization relative to the log-transformed top and bottom regression line with the formula:
normalized price = log(close) - log(bottom regression line) / log(top regression line) - log(bottom regression line)
This transformation results in a price value between 0 and 1 between both the regression lines. The Oscillator version can be found here.
🔍Interpretation of the Model:
In general, the red area represents a caution zone, as historically, the price has often been near its cycle market top within this range. On the other hand, the green area is considered an area of opportunity, as historically, it has corresponded to the market bottom.
The top regression line serves as a signal for the absolute market cycle peak, while the bottom regression line indicates the absolute market cycle bottom.
Additionally, this model provides a predicted range for Bitcoin's future price movements, which can be used to make extrapolated predictions. We will explore this further below.
🔮Future Predictions:
Finally, let's discuss what this model actually predicts for the potential upcoming market cycle top and the corresponding market cycle bottom. In our previous post here , a cycle interval analysis was performed to predict a likely time window for the next cycle top and bottom:
In the image, it is predicted that the next top-to-top cycle interval will be 208 weeks, which translates to November 3rd, 2025. It is also predicted that the bottom-to-top cycle interval will be 152 weeks, which corresponds to October 13th, 2025. On the macro level, these two dates align quite well. For our prediction, we take the average of these two dates: October 24th 2025. This will be our target date for the bull cycle top.
Now, let's do the same for the upcoming cycle bottom. The bottom-to-bottom cycle interval is predicted to be 205 weeks, which translates to October 19th, 2026, and the top-to-bottom cycle interval is predicted to be 259 weeks, which corresponds to October 26th, 2026. We then take the average of these two dates, predicting a bear cycle bottom date target of October 19th, 2026.
Now that we have our predicted top and bottom cycle date targets, we can simply reference these two dates to our model, giving us the Bitcoin top price prediction in the range of 152,000 in Q4 2025 and a subsequent bottom price prediction in the range of 46,500 in Q4 2026.
For those interested in understanding what this specifically means for the predicted diminishing return top and bottom cycle values, the image below displays these predicted values. The new values are highlighted in yellow:
And of course, keep in mind that these targets are just rough estimates. While we've done our best to estimate these targets through a data-driven approach, markets will always remain unpredictable in nature. What are your targets? Feel free to share them in the comment section below.
Bitcoin Polynomial Regression OscillatorThis is the oscillator version of the script. Click here for the other part of the script.
💡Why this model was created:
One of the key issues with most existing models, including our own Bitcoin Log Growth Curve Model , is that they often fail to realistically account for diminishing returns. As a result, they may present overly optimistic bull cycle targets (hence, we introduced alternative settings in our previous Bitcoin Log Growth Curve Model).
This new model however, has been built from the ground up with a primary focus on incorporating the principle of diminishing returns. It directly responds to this concept, which has been briefly explored here .
📉The theory of diminishing returns:
This theory suggests that as each four-year market cycle unfolds, volatility gradually decreases, leading to more tempered price movements. It also implies that the price increase from one cycle peak to the next will decrease over time as the asset matures. The same pattern applies to cycle lows and the relationship between tops and bottoms. In essence, these price movements are interconnected and should generally follow a consistent pattern. We believe this model provides a more realistic outlook on bull and bear market cycles.
To better understand this theory, the relationships between cycle tops and bottoms are outlined below:https://www.tradingview.com/x/7Hldzsf2/
🔧Creation of the model:
For those interested in how this model was created, the process is explained here. Otherwise, feel free to skip this section.
This model is based on two separate cubic polynomial regression lines. One for the top price trend and another for the bottom. Both follow the general cubic polynomial function:
ax^3 +bx^2 + cx + d.
In this equation, x represents the weekly bar index minus an offset, while a, b, c, and d are determined through polynomial regression analysis. The input (x, y) values used for the polynomial regression analysis are as follows:
Top regression line (x, y) values:
113, 18.6
240, 1004
451, 19128
655, 65502
Bottom regression line (x, y) values:
103, 2.5
267, 211
471, 3193
676, 16255
The values above correspond to historical Bitcoin cycle tops and bottoms, where x is the weekly bar index and y is the weekly closing price of Bitcoin. The best fit is determined using metrics such as R-squared values, residual error analysis, and visual inspection. While the exact details of this evaluation are beyond the scope of this post, the following optimal parameters were found:
Top regression line parameter values:
a: 0.000202798
b: 0.0872922
c: -30.88805
d: 1827.14113
Bottom regression line parameter values:
a: 0.000138314
b: -0.0768236
c: 13.90555
d: -765.8892
📊Polynomial Regression Oscillator:
This publication also includes the oscillator version of the this model which is displayed at the bottom of the screen. The oscillator applies a logarithmic transformation to the price and the regression lines using the formula log10(x) .
The log-transformed price is then normalized using min-max normalization relative to the log-transformed top and bottom regression line with the formula:
normalized price = log(close) - log(bottom regression line) / log(top regression line) - log(bottom regression line)
This transformation results in a price value between 0 and 1 between both the regression lines.
🔍Interpretation of the Model:
In general, the red area represents a caution zone, as historically, the price has often been near its cycle market top within this range. On the other hand, the green area is considered an area of opportunity, as historically, it has corresponded to the market bottom.
The top regression line serves as a signal for the absolute market cycle peak, while the bottom regression line indicates the absolute market cycle bottom.
Additionally, this model provides a predicted range for Bitcoin's future price movements, which can be used to make extrapolated predictions. We will explore this further below.
🔮Future Predictions:
Finally, let's discuss what this model actually predicts for the potential upcoming market cycle top and the corresponding market cycle bottom. In our previous post here , a cycle interval analysis was performed to predict a likely time window for the next cycle top and bottom:
In the image, it is predicted that the next top-to-top cycle interval will be 208 weeks, which translates to November 3rd, 2025. It is also predicted that the bottom-to-top cycle interval will be 152 weeks, which corresponds to October 13th, 2025. On the macro level, these two dates align quite well. For our prediction, we take the average of these two dates: October 24th 2025. This will be our target date for the bull cycle top.
Now, let's do the same for the upcoming cycle bottom. The bottom-to-bottom cycle interval is predicted to be 205 weeks, which translates to October 19th, 2026, and the top-to-bottom cycle interval is predicted to be 259 weeks, which corresponds to October 26th, 2026. We then take the average of these two dates, predicting a bear cycle bottom date target of October 19th, 2026.
Now that we have our predicted top and bottom cycle date targets, we can simply reference these two dates to our model, giving us the Bitcoin top price prediction in the range of 152,000 in Q4 2025 and a subsequent bottom price prediction in the range of 46,500 in Q4 2026.
For those interested in understanding what this specifically means for the predicted diminishing return top and bottom cycle values, the image below displays these predicted values. The new values are highlighted in yellow:
And of course, keep in mind that these targets are just rough estimates. While we've done our best to estimate these targets through a data-driven approach, markets will always remain unpredictable in nature. What are your targets? Feel free to share them in the comment section below.
[COG]S&P 500 Weekly Seasonality ProjectionS&P 500 Weekly Seasonality Projection
This indicator visualizes S&P 500 seasonality patterns based on historical weekly performance data. It projects price movements for up to 26 weeks ahead, highlighting key seasonal periods that have historically affected market performance.
Key Features:
Projects price movements based on historical S&P 500 weekly seasonality patterns (2005-2024)
Highlights six key seasonal periods: Jan-Feb Momentum, March Lows, April-May Strength, Summer Strength, September Dip, and Year-End Rally
Customizable forecast length from 1-26 weeks with quick timeframe selection buttons
Optional moving average smoothing for more gradual projections
Detailed statistics table showing projected price and percentage change
Seasonality mini-map showing the full annual pattern with current position
Customizable colors and visual elements
How to Use:
Apply to S&P 500 index or related instruments (daily timeframe or higher recommended)
Set your desired forecast length (1-26 weeks)
Monitor highlighted seasonal zones that have historically shown consistent patterns
Use the projection line as a general guideline for potential price movement
Settings:
Forecast length: Configure from 1-26 weeks or use quick select buttons (1M, 3M, 6M, 1Y)
Visual options: Customize colors, backgrounds, label sizes, and table position
Display options: Toggle statistics table, period highlights, labels, and mini-map
This indicator is designed as a visual guide to help identify potential seasonal tendencies in the S&P 500. Historical patterns are not guarantees of future performance, but understanding these seasonal biases can provide valuable context for your trading decisions.
Note: For optimal visualization, use on Daily timeframe or higher. Intraday timeframes will display a warning message.
Bitcoin Halving DatesBitcoin Halving Dates Indicator
This custom indicator automatically marks Bitcoin's key halving events by drawing vertical lines on your chart. It highlights the historical halving dates (2012, 2016, 2020) and includes an estimated date for the upcoming halving in 2024, making it easy to visualize significant supply events that can influence market trends.
Features:
Automated Markings: Displays vertical lines on the first bar of each halving day.
Customizable: Easily adjust halving dates and styling options to suit your analysis.
Built for Traders: Enhance your technical analysis by keeping track of pivotal market events.
Use this indicator to gain a visual edge by integrating critical Bitcoin halving events into your trading strategy. Happy Trading!
MM Labelled AVWAPTradingView provides a tool to show anchored VWAP plots on your screen, but there is no way to label the plots to add additional context to the level. Instead, users are forced to use the plot style (color, line style, line thickness, etc) to indicate what the plots are for and then they have to remember that meaning when looking at different charts. It also means that for key market-wide moments, users will need to add the plot for every symbol.
Now, for the first time on TradingView, you can create anchored VWAP plots with labels on them so you can understand the meaning behind the key moments you care about and don't need to remember what they mean by using styles like color or thickness. You can use this indicator to track key moments like the 2022 market bottom, or the Aug 9, 2024 "Carry Trade Unwind" bottom. The labelled AVWAP plots are visible on every chart by default. If you have an AVWAP moment that is only relevant to a small number of symbols, you can configure the indicator to only appear on those symbols.
TEMA OBOS Strategy PakunTEMA OBOS Strategy
Overview
This strategy combines a trend-following approach using the Triple Exponential Moving Average (TEMA) with Overbought/Oversold (OBOS) indicator filtering.
By utilizing TEMA crossovers to determine trend direction and OBOS as a filter, it aims to improve entry precision.
This strategy can be applied to markets such as Forex, Stocks, and Crypto, and is particularly designed for mid-term timeframes (5-minute to 1-hour charts).
Strategy Objectives
Identify trend direction using TEMA
Use OBOS to filter out overbought/oversold conditions
Implement ATR-based dynamic risk management
Key Features
1. Trend Analysis Using TEMA
Uses crossover of short-term EMA (ema3) and long-term EMA (ema4) to determine entries.
ema4 acts as the primary trend filter.
2. Overbought/Oversold (OBOS) Filtering
Long Entry Condition: up > down (bullish trend confirmed)
Short Entry Condition: up < down (bearish trend confirmed)
Reduces unnecessary trades by filtering extreme market conditions.
3. ATR-Based Take Profit (TP) & Stop Loss (SL)
Adjustable ATR multiplier for TP/SL
Default settings:
TP = ATR × 5
SL = ATR × 2
Fully customizable risk parameters.
4. Customizable Parameters
TEMA Length (for trend calculation)
OBOS Length (for overbought/oversold detection)
Take Profit Multiplier
Stop Loss Multiplier
EMA Display (Enable/Disable TEMA lines)
Bar Color Change (Enable/Disable candle coloring)
Trading Rules
Long Entry (Buy Entry)
ema3 crosses above ema4 (Golden Cross)
OBOS indicator confirms up > down (bullish trend)
Execute a buy position
Short Entry (Sell Entry)
ema3 crosses below ema4 (Death Cross)
OBOS indicator confirms up < down (bearish trend)
Execute a sell position
Take Profit (TP)
Entry Price + (ATR × TP Multiplier) (Default: 5)
Stop Loss (SL)
Entry Price - (ATR × SL Multiplier) (Default: 2)
TP/SL settings are fully customizable to fine-tune risk management.
Risk Management Parameters
This strategy emphasizes proper position sizing and risk control to balance risk and return.
Trading Parameters & Considerations
Initial Account Balance: $7,000 (adjustable)
Base Currency: USD
Order Size: 10,000 USD
Pyramiding: 1
Trading Fees: $0.94 per trade
Long Position Margin: 50%
Short Position Margin: 50%
Total Trades (M5 Timeframe): 128
Deep Test Results (2024/11/01 - 2025/02/24)BTCUSD-5M
Total P&L:+1638.20USD
Max equity drawdown:694.78USD
Total trades:128
Profitable trades:44.53
Profit factor:1.45
These settings aim to protect capital while maintaining a balanced risk-reward approach.
Visual Support
TEMA Lines (Three EMAs)
Trend direction is indicated by color changes (Blue/Orange)
ema3 (short-term) and ema4 (long-term) crossover signals potential entries
OBOS Histogram
Green → Strong buying pressure
Red → Strong selling pressure
Blue → Possible trend reversal
Entry & Exit Markers
Blue Arrow → Long Entry Signal
Red Arrow → Short Entry Signal
Take Profit / Stop Loss levels displayed
Strategy Improvements & Uniqueness
This strategy is based on indicators developed by "l_lonthoff" and "jdmonto0", but has been significantly optimized for better entry accuracy, visual clarity, and risk management.
Enhanced Trend Identification with TEMA
Detects early trend reversals using ema3 & ema4 crossover
Reduces market noise for a smoother trend-following approach
Improved OBOS Filtering
Prevents excessive trading
Reduces unnecessary risk exposure
Dynamic Risk Management with ATR-Based TP/SL
Not a fixed value → TP/SL adjusts to market volatility
Fully customizable ATR multiplier settings
(Default: TP = ATR × 5, SL = ATR × 2)
Summary
The TEMA + OBOS Strategy is a simple yet powerful trading method that integrates trend analysis and oscillators.
TEMA for trend identification
OBOS for noise reduction & overbought/oversold filtering
ATR-based TP/SL settings for dynamic risk management
Before using this strategy, ensure thorough backtesting and demo trading to fine-tune parameters according to your trading style.
[GYTS] FiltersToolkit LibraryFiltersToolkit Library
🌸 Part of GoemonYae Trading System (GYTS) 🌸
🌸 --------- 1. INTRODUCTION --------- 🌸
💮 What Does This Library Contain?
This library is a curated collection of high-performance digital signal processing (DSP) filters and auxiliary functions designed specifically for financial time series analysis. It includes a shortlist of our favourite and best performing filters — each rigorously tested and selected for their responsiveness, minimal lag and robustness in diverse market conditions. These tools form an integral part of the GoemonYae Trading System (GYTS), chosen for their unique characteristics in handling market data.
The library contains two main categories:
1. Smoothing filters (low-pass filters and moving averages) for e.g. denoising, trend following
2. Detrending tools (high-pass and band-pass filters, known as "oscillators") for e.g. mean reversion
This collection is finely tuned for practical trading applications and is therefore not meant to be exhaustive. However, will continue to expand as we discover and validate new filtering techniques. I welcome collaboration and suggestions for novel approaches.
🌸 ——— 2. ADDED VALUE ——— 🌸
💮 Unified syntax and comprehensive documentation
The FiltersToolkit Library brings together a wide array of valuable filters under a unified, intuitive syntax. Each function is thoroughly documented, with clear explanations and academic sources that underline the mathematical rigour behind the methods. This level of documentation not only facilitates integration into trading strategies but also helps underlying the underlying concepts and rationale.
💮 Optimised performance and readability
The code prioritizes computational efficiency while maintaining readability. Key optimizations include:
- Minimizing redundant calculations in recursive filters
- Smart coefficient caching
- Efficient state management
- Vectorized operations where applicable
💮 Enhanced functionality and flexibility
Some filters in this library introduce extended functionality beyond the original publications. For instance, the MESA Adaptive Moving Average (MAMA) and Ehlers’ Combined Bandpass Filter incorporate multiple variations found in the literature, thereby providing traders with flexible tools that can be fine-tuned to different market conditions.
🌸 ——— 3. THE FILTERS ——— 🌸
💮 Hilbert Transform Function
This function implements the Hilbert Transform as utilised by John Ehlers. It converts a real-valued time series into its analytic signal, enabling the extraction of instantaneous phase and frequency information—an essential step in adaptive filtering.
Source: John Ehlers - "Rocket Science for Traders" (2001), "TASC 2001 V. 19:9", "Cybernetic Analysis for Stocks and Futures" (2004)
💮 Homodyne Discriminator
By leveraging the Hilbert Transform, this function computes the dominant cycle period through a Homodyne Discriminator. It extracts the in-phase and quadrature components of the signal, facilitating a robust estimation of the underlying cycle characteristics.
Source: John Ehlers - "Rocket Science for Traders" (2001), "TASC 2001 V. 19:9", "Cybernetic Analysis for Stocks and Futures" (2004)
💮 MESA Adaptive Moving Average (MAMA)
An advanced dual-stage adaptive moving average, this function outputs both the MAMA and its companion FAMA. It combines adaptive alpha computation with elements from Kaufman’s Adaptive Moving Average (KAMA) to provide a responsive and reliable trend indicator.
Source: John Ehlers - "Rocket Science for Traders" (2001), "TASC 2001 V. 19:9", "Cybernetic Analysis for Stocks and Futures" (2004)
💮 BiQuad Filters
A family of second-order recursive filters offering exceptional control over frequency response:
- High-pass filter for detrending
- Low-pass filter for smooth trend following
- Band-pass filter for cycle isolation
The quality factor (Q) parameter allows fine-tuning of the resonance characteristics, making these filters highly adaptable to different market conditions.
Source: Robert Bristow-Johnson's Audio EQ Cookbook, implemented by @The_Peaceful_Lizard
💮 Relative Vigor Index (RVI)
This filter evaluates the strength of a trend by comparing the closing price to the trading range. Operating similarly to a band-pass filter, the RVI provides insights into market momentum and potential reversals.
Source: John Ehlers – “Cybernetic Analysis for Stocks and Futures” (2004)
💮 Cyber Cycle
The Cyber Cycle filter emphasises market cycles by smoothing out noise and highlighting the dominant cyclical behaviour. It is particularly useful for detecting trend reversals and cyclical patterns in the price data.
Source: John Ehlers – “Cybernetic Analysis for Stocks and Futures” (2004)
💮 Butterworth High Pass Filter
Inspired by the classical Butterworth design, this filter achieves a maximally flat magnitude response in the passband while effectively removing low-frequency trends. Its design minimises phase distortion, which is vital for accurate signal interpretation.
Source: John Ehlers – “Cybernetic Analysis for Stocks and Futures” (2004)
💮 2-Pole SuperSmoother
Employing a two-pole design, the SuperSmoother filter reduces high-frequency noise with minimal lag. It is engineered to preserve trend integrity while offering a smooth output even in noisy market conditions.
Source: John Ehlers – “Cybernetic Analysis for Stocks and Futures” (2004)
💮 3-Pole SuperSmoother
An extension of the 2-pole design, the 3-pole SuperSmoother further attenuates high-frequency noise. Its additional pole delivers enhanced smoothing at the cost of slightly increased lag.
Source: John Ehlers – “Cybernetic Analysis for Stocks and Futures” (2004)
💮 Adaptive Directional Volatility Moving Average (ADXVma)
This adaptive moving average adjusts its smoothing factor based on directional volatility. By combining true range and directional movement measurements, it remains exceptionally flat during ranging markets and responsive during directional moves.
Source: Various implementations across platforms, unified and optimized
💮 Ehlers Combined Bandpass Filter with Automated Gain Control (AGC)
This sophisticated filter merges a highpass pre-processing stage with a bandpass filter. An integrated Automated Gain Control normalises the output to a consistent range, while offering both regular and truncated recursive formulations to manage lag.
Source: John F. Ehlers – “Truncated Indicators” (2020), “Cycle Analytics for Traders” (2013)
💮 Voss Predictive Filter
A forward-looking filter that predicts future values of a band-limited signal in real time. By utilising multiple time-delayed feedback terms, it provides anticipatory coupling and delivers a short-term predictive signal.
Source: John Ehlers - "A Peek Into The Future" (TASC 2019-08)
💮 Adaptive Autonomous Recursive Moving Average (A2RMA)
This filter dynamically adjusts its smoothing through an adaptive mechanism based on an efficiency ratio and a dynamic threshold. A double application of an adaptive moving average ensures both responsiveness and stability in volatile and ranging markets alike. Very flat response when properly tuned.
Source: @alexgrover (2019)
💮 Ultimate Smoother (2-Pole)
The Ultimate Smoother filter is engineered to achieve near-zero lag in its passband by subtracting a high-pass response from an all-pass response. This creates a filter that maintains signal fidelity at low frequencies while effectively filtering higher frequencies at the expense of slight overshooting.
Source: John Ehlers - TASC 2024-04 "The Ultimate Smoother"
Note: This library is actively maintained and enhanced. Suggestions for additional filters or improvements are welcome through the usual channels. The source code contains a list of tested filters that did not make it into the curated collection.
Best Buffett Ratio w/ Std-Dev Offset + Conditional PlotSummary:
This script provides a visually clear way to track the so-called “Buffett Ratio,”
a popular market valuation gauge which compares the total US stock market cap
to the country’s GDP. In addition, it plots a “hardcoded” long-term trend line,
along with fixed standard-deviation bands (in log space), and uses background colors
to signal potentially overvalued or undervalued zones.
What Is the Buffett Ratio?
Often credited to Warren Buffett, the Buffett Ratio (or Buffett Indicator) measures:
(Total US Stock Market Capitalization) / (US GDP)
• A higher ratio typically means equities are more expensive relative to the size of the economy.
• A lower ratio suggests equities may be more attractively valued compared to GDP.
Historically, the ratio has tended to drift upward over many decades,
as the US economy and stock markets grow, but it still oscillates around some trend over time.
How to Use
1) Add to Chart:
- In TradingView, simply apply the indicator (it internally fetches CRSPTM1 & GDP data).
2) Tweak Inputs:
- Log Offset for 1σ: Adjust how wide the ±1σ/±2σ bands appear around the trend.
- Anchor Points: Edit startYear , endYear , startRatio , endRatio
if you want a different slope or different “fair value” anchors.
3) Interpretation:
- If the indicator is above +2σ (red line) , it’s historically “very expensive,”
often leading to lower future returns over the long term.
- If it’s below –2σ (green line) , it’s historically “deep undervaluation,”
often pointing to better future returns over time.
- The intermediate zones show degrees of mild over- or undervaluation.
How This Script Works
1) Buffett Ratio Calculation:
- The script requests data from TradingView’s built-in CRSPTM1 index (total US market cap).
- It also requests US GDP data via request.economic("US", "GDP") .
- If GDP data is missing, the ratio becomes na on that bar.
2) Hardcoded Trend Line:
- Rather than a rolling average, the script uses two “anchors” (e.g. 1950 → 0.30 ratio, 2024 → 1.25 ratio)
and solves for a single log-growth rate to produce a steady upward slope.
3) Fixed Standard Deviations in Log Space:
- The script takes the log of the trend line, then applies a fixed offset for ±1σ and ±2σ,
creating proportional bands that do not “expand/contract” from a rolling window.
4) Conditional Plotting:
- The script only begins plotting once the Buffett Ratio actually has data (around 2011).
5) Color-Coded Zones:
- Above +2σ: red background (historically very expensive)
- Between +1σ and +2σ: yellow background (moderately expensive)
- Between –1σ and +1σ: no background color (around normal)
- Between –2σ and –1σ: aqua background (moderately undervalued)
- Below –2σ: green background (historically deep undervaluation)
Final Notes
• Data Limitations: US GDP data and CRSPTM1 only go back so far, so this starts around 2011.
• Long-Term vs. Short-Term: Best viewed on monthly/quarterly charts and interpreted over years.
• Tuning: If you believe structural changes have shifted the ratio’s fair slope,
adjust the code’s anchors or log offsets.
Enjoy, and use responsibly!
Ehlers Maclaurin Ultimate Smoother [CT]Ehlers Maclaurin Ultimate Smoother
Introduction
The Ehlers Maclaurin Ultimate Smoother is an innovative enhancement of the classic Ehlers SuperSmoother. By leveraging advanced Maclaurin series approximations, this indicator offers superior market analysis and signal generation.
The indicator combines Ehlers' Ultimate Smoother with Maclaurin series approximations to create a more efficient and accurate smoothing mechanism:
Input price data passes through the initial smoothing phase
Maclaurin series approximates trigonometric functions
Enhanced high-pass filter removes market noise
Final smoothing phase produces the output signal
Why the Maclaurin Approach?
The Maclaurin series is a special form of the Taylor series, centered around 0. It provides an efficient way to approximate complex functions using polynomial terms. In this indicator, we use the Maclaurin approach to improve the sine and cosine functions, resulting in:
Faster Calculations: By using polynomial approximations, we significantly reduce computational complexity.
Improved Stability: The approximation provides a more stable numerical basis for calculations.
Preservation of Precision: Despite the approximation, we maintain the precision needed for price smoothing.
Calculations
The indicator employs several key mathematical components:
Maclaurin Series Approximation:
sin(x) ≈ x - x³/3! + x⁵/5! - x⁷/7! + x⁹/9!
cos(x) ≈ 1 - x²/2! + x⁴/4! - x⁶/6! + x⁸/8!
Smoothing Algorithm:
Uses exponential smoothing with optimized coefficients
Implements high-pass filtering for noise reduction
Applies dynamic weighting based on market conditions
Mathematical Foundation
Utilizes Maclaurin series for trigonometric approximation
Implements Ehlers' smoothing principles
Incorporates advanced filtering techniques
Technical Advantages
Signal Processing:
Lag Reduction: Faster signal detection with less delay.
Noise Filtration: Effective elimination of high-frequency noise.
Precision Enhancement: Preservation of critical price movements.
Adaptive Processing: Dynamic response to market volatility.
Visual Enhancements:
Smart color intensity mapping.
Real-time visualization of trend strength.
Adaptive opacity based on movement significance.
Implementation
Core Configuration:
Plot Type: Choose between the original and the Maclaurin enhanced version.
Length: Default set to 30, optimal for daily timeframes.
hpLength: Default set to 10 for enhanced noise reduction.
Advanced Parameters:
The indicator offers advanced control with:
Dual processing modes (Original/Maclaurin).
Dynamic color intensity system.
Customizable smoothing parameters.
Professional Analysis Tools:
Accurate trend reversal identification.
Advanced support/resistance detection.
Superior performance in volatile markets.
Technical Specifications
Maclaurin Series Implementation:
The indicator employs a 5-term Maclaurin series approximation for both sine and cosine, ensuring efficient and accurate computation.
Performance Metrics
Improved processing efficiency.
Reduced memory utilization.
Increased signal accuracy.
Licensing & Attribution
© 2024 Mupsje aka CasaTropical
Professional Credits
Original Ultimate and SuperSmoother concept: John F. Ehlers
Maclaurin enhancement: Casa Tropical (CT)
www.mathsisfun.com