Trend Filter (2-pole) [BigBeluga]Trend Filter (2-pole)
The Trend Filter (2-pole) is an advanced trend-following indicator based on a two-pole filter, which smooths out market noise while effectively highlighting trends and their strength. It incorporates color gradients and support/resistance dots to enhance trend visualization and decision-making for traders.
SP500:
🔵What is a Two-Pole Filter?
A two-pole filter is a digital signal processing technique widely used in electronics, control systems, and time series data analysis to smooth data and reduce noise.
//@function Two-pole filter
//@param src (series float) Source data (e.g., price)
//@param length (float) Length of the filter (higher value means smoother output)
//@param damping (float) Damping factor for the filter
//@returns (series float) Filtered value
method two_pole_filter(float src, int length, float damping) =>
// Calculate filter coefficients
float omega = 2.0 * math.pi / length
float alpha = damping * omega
float beta = math.pow(omega, 2)
// Initialize the filter variables
var float f1 = na
var float f2 = na
// Update the filter
f1 := nz(f1 ) + alpha * (src - nz(f1 ))
f2 := nz(f2 ) + beta * (f1 - nz(f2 ))
f2
It operates using two cascaded smoothing stages (poles), allowing for a more refined and responsive output compared to simple moving averages or other basic filters.
Two-pole filters are particularly valued for their ability to maintain smooth transitions while reducing lag, making them ideal for applications where precision and responsiveness are critical.
In trading, this filter helps detect trends by smoothing price data while preserving significant directional changes.
🔵Key Features of the Indicator:
Gradient-Colored Trend Filter Line: The main filter line dynamically changes color based on trend strength and direction:
- Green: Strong uptrend.
- Red: Strong downtrend.
- Yellow: Indicates a transition phase, signaling potential trend shifts.
Support and Resistance Dots with Signals:
- Dots are plotted below the filter line during uptrends and above it during downtrends.
- These dots represent consecutive rising or falling conditions of the filter line, which traders can set in the settings (e.g., the number of consecutive rises or falls required).
- The dots often act as dynamic support or resistance levels, providing valuable guidance during trends.
- Trend Signals:
Customizable Sensitivity: The indicator allows traders to adjust the filter length, damping factor, and the threshold for rising/falling conditions, enabling it to adapt to different trading styles and timeframes.
Bar Color Option: The indicator can optionally color bars to match the gradient of the filter line, enhancing visual clarity of trends directly on the price chart.
🔵How It Works:
The Trend Filter (2-pole) smooths price data using a two-pole filter, which reduces noise and highlights the underlying trend.
The gradient coloring of the filter line helps traders visually assess the strength and direction of trends.
Rising and falling conditions of the filter line are tracked, and dots are plotted when consecutive conditions meet the threshold, acting as potential support or resistance levels during trends.
The yellow transition color signals periods of indecision, helping traders anticipate potential reversals or consolidations.
🔵Use Cases:
Identify and follow strong uptrends and downtrends with gradient-based visual cues.
Use the yellow transition color to anticipate trend shifts or consolidation zones.
Leverage the plotted dots as dynamic support and resistance levels to refine entry and exit strategies.
Combine with other indicators for confirmation of trends and reversals.
This indicator is perfect for traders who want a visually intuitive and highly customizable tool to spot trends, gauge their strength, and make informed trading decisions.
אינדיקטורים ואסטרטגיות
buy sel StrategyGöstergenin Amacı
Bu gösterge:
Alım ve satım sinyalleri üretmek için MACD ve Bollinger Bantları kombinasyonunu kullanır.
Sinyalleri grafik üzerinde göstermek için oklar (yukarı ve aşağı) çizer.
Önemli sinyal durumlarında kullanıcıyı uyarmak için uyarı mekanizması içerir.
2. Kullanılan Teknik Göstergeler
A) MACD (Moving Average Convergence Divergence)
MACD, iki üstel hareketli ortalama arasındaki farkı ölçer:
Hızlı MACD Periyodu: Kısa dönem EMA (varsayılan: 12).
Yavaş MACD Periyodu: Uzun dönem EMA (varsayılan: 26).
Sinyal MACD Periyodu: MACD hattının yumuşatılmış versiyonu (varsayılan: 9).
Koşullar:
Alım Sinyali: MACD hattı, sinyal hattını yukarı yönde keser (ta.crossover fonksiyonu).
Satım Sinyali: MACD hattı, sinyal hattını aşağı yönde keser (ta.crossunder fonksiyonu).
B) Bollinger Bantları
Bollinger Bantları, fiyatın oynaklığını (volatilite) ölçmek için kullanılır:
Orta Bant: Fiyatın hareketli ortalamasıdır (varsayılan: 20 periyotluk SMA).
Üst Bant: Orta banda, standart sapmanın belirli bir katı eklenir (varsayılan: 2.0).
Alt Bant: Orta bandan, standart sapmanın belirli bir katı çıkarılır (varsayılan: 2.0).
3. Göstergenin İşlevselliği
A) Alım Koşulu (buy_condition):
pinescript
Kopyala
Düzenle
buy_condition = ta.crossover(macd_line, signal_line) and close > bb_lower
Al sinyali, şu iki şart sağlandığında tetiklenir:
MACD hattı, sinyal hattını yukarı yönde keserse (pozitif momentum).
Fiyat, Bollinger Bantları'nın alt bandının üzerine çıkarsa (fiyatın potansiyel dipten yukarı dönüşü).
B) Satım Koşulu (sell_condition):
pinescript
Kopyala
Düzenle
sell_condition = ta.crossunder(macd_line, signal_line) and close < bb_upper
Sat sinyali, şu iki şart sağlandığında tetiklenir:
MACD hattı, sinyal hattını aşağı yönde keserse (negatif momentum).
Fiyat, Bollinger Bantları'nın üst bandının altına düşerse (fiyatın potansiyel zirveden dönüşü).
4. Grafik Üzerindeki Gösterim
A) Bollinger Bantları:
Üst Bant (kırmızı çizgi).
Alt Bant (yeşil çizgi).
Orta Bant (turuncu çizgi).
B) Alım ve Satım Sinyalleri:
Oklar:
Yeşil ok (yukarı): Alım sinyali.
Kırmızı ok (aşağı): Satım sinyali.
C) Plotlama:
plotarrow fonksiyonu, yukarı ve aşağı sinyalleri oklarla grafik üzerinde gösterir:
pinescript
Kopyala
Düzenle
plotarrow(buy_condition ? 1 : sell_condition ? -1 : na, colorup=color.green, colordown=color.red, offset=-1)
5. Uyarılar
Uyarılar, sinyallerle kullanıcıyı bilgilendirir:
Alım Sinyali Uyarısı:
Mesaj: "MACD ve fiyat, Bollinger Bandı'nın alt sınırının üzerine çıktı."
Satım Sinyali Uyarısı:
Mesaj: "MACD ve fiyat, Bollinger Bandı'nın üst sınırının altına indi."
6. Kodun Avantajları
Kombinasyon Stratejisi: MACD ve Bollinger Bantları’nın birleşimi daha doğruluklu sinyaller üretebilir.
Basit ve Görsel: Grafik üzerinde sinyaller net bir şekilde belirtilmiştir.
Uyarı Mekanizması: Otomatik olarak işlem yapmak veya uyarı almak isteyen kullanıcılar için uygundur.
7. Dezavantajlar
Lag (Gecikme): Hem MACD hem de Bollinger Bantları gecikmeli göstergelerdir, bu da sinyalin gecikmesine neden olabilir.
Trend Filtreleme Eksikliği: Yanlış sinyalleri azaltmak için trend yönünü doğrulayan ek bir filtre (ör. EMA 200) faydalı olabilir.
8. Geliştirme Önerileri
Trend Filtresi: Yanlış sinyalleri azaltmak için EMA (200) gibi bir trend filtresi eklenebilir.
Fazla Sinyallerin Azaltılması: RSI gibi bir gösterge ile daha fazla doğrulama katmanı eklenebilir.
Zaman Aralığı Testi: Bu strateji en iyi 15 dakika, 1 saat veya 1 günlük zaman aralıklarında test edilerek optimize edilebilir.
Bu kod, daha sofistike stratejiler oluşturmak için güçlü bir başlangıç noktasıdır. Doğru parametre ayarlarıyla etkili bir ticaret aracı haline gelebilir.
my all in one INDICATORTake on the role of one Daimyo, the clan leader, and use military engagements, economics and diplomacy to achieve the ultimate goal: re-unite Japan under his supreme command and become the new Shogun – the undisputed ruler of a pacified nation.
Advanced Swing High/Low Trend Lines# Advanced Swing High/Low Trend Lines Indicator
## Features:
### Dynamic Trend Lines
This indicator dynamically identifies swing highs and swing lows based on the user-defined `Swing Length`. It then connects these points to create trend lines that visualize the market's direction and key support/resistance levels.
### Customizable Settings
- **Swing Length**: Define the sensitivity for detecting swing highs and lows.
- **Points Required to Draw Trend**: Specify the minimum number of swing highs or lows required to establish a valid trend line.
- **Show Old Trends**: Toggle the visibility of previous trend lines to focus on the current market structure.
- **Line Appearance**: Customize the color, style (`solid`, `dotted`, `dashed`), and width of both trend and support lines.
### Trend Break Detection
- Automatically detects and highlights when the price breaks above a high trend line or below a low trend line.
- The broken trend line changes its color to indicate a trend break, helping traders quickly identify significant market shifts.
### Continuous Updates
- As new swing highs or lows are detected, the indicator updates existing trend lines or creates new ones, ensuring relevance in dynamic market conditions.
- Trend lines extend into the future, projecting potential areas of interest for traders.
## Benefits:
1. **Enhanced Market Visualization**:
- Provides a clear view of market trends, swing points, and potential reversal zones.
2. **Trend Reversal Alerts**:
- Identifies and visually emphasizes trend breaks, enabling proactive trading decisions.
3. **Fully Customizable**:
- Adjust settings to suit your trading style and strategy, ensuring compatibility with various markets and timeframes.
4. **Real-Time Adaptation**:
- Automatically adapts to changing market conditions, maintaining accuracy and relevance.
## Use Cases:
- **Trend Following**: Identify and trade in the direction of established trends.
- **Breakout Trading**: Spot trend breaks and capitalize on momentum shifts.
- **Support and Resistance Analysis**: Use trend lines to identify key levels where price may react.
This indicator is an essential tool for traders seeking to combine technical precision with visual clarity in their analysis.
Trendilo ARTrendilo AR is a custom trading indicator designed to identify market trends using advanced techniques such as the Arnaud Legoux Moving Average (ALMA), volume confirmations, and dynamic volatility bands. This indicator provides a clear visualization of trends, including significant changes and custom alerts.
Review of Indicators Used
1. ALMA
Description:
ALMA is a moving average that applies an advanced filter to smooth price data, reducing noise and focusing on actual trends.
Usage in the Indicator:
Used to calculate the smoothed percentage price change and determine trend direction. Customizable parameters include:
- Length: Defines the number of bars to consider.
- Offset: Adjusts sensitivity toward recent prices.
- Sigma: Controls the degree of smoothing.
Advantages:
- Reduced lag in trend detection.
- Resistance to market noise.
2. ATR
Description:
ATR measures the market’s average volatility by considering the range between high and low prices over a given period.
Usage in the Indicator:
ATR is used to calculate "dynamic smoothing", adjusting the indicator’s sensitivity based on current market volatility.
Advantages:
- Adapts to high or low volatility conditions.
- Helps define dynamic support and resistance levels.
3. SMA
Description:
SMA calculates the average of prices or volume over a specific time period.
Usage in the Indicator:
Used to calculate the volume moving average (Volume SMA) to confirm whether the current volume supports the detected trend.
Advantages:
- Easy to understand and calculate.
- Provides volume-based trend confirmation.
4. RMS Bands
Description:
RMS Bands calculate the standard deviation of percentage price changes, creating upper and lower levels that act as overbought and oversold indicators.
Usage in the Indicator:
- Define the range within which the market is considered neutral.
- Crosses above or below the bands indicate trend changes.
Advantages:
- Visual identification of strong trends.
- Helps filter false signals.
Colors and Visuals Used in the Indicator
1. ALMA Line
Colors:
- Green: Indicates a confirmed uptrend (with sufficient volume).
- Red: Indicates a confirmed downtrend (with sufficient volume).
- Gray: Indicates a neutral phase or insufficient volume to confirm a trend.
2. RMS Bands
- Upper and Lower Lines:
- Purple (with transparency): These lines represent the RMS bands (upper and lower) and
adjust opacity based on trend strength.
- Stronger trends result in less transparency (more solid colors).
3. Highlighted Background (Strong Trends)
- Color:
- Light Green (transparent): Highlights a strong trend when the smoothed percentage change (ALMA) exceeds 1.5 times the RMS.
4. Horizontal Lines
- Baseline (0):
- Dark Gray: Serves as a central reference to identify the directionality of percentage changes.
- Additional Line (0.1):
- Blue: A customizable line to mark user-defined key levels.
5. Bar Colors
- Bar Colors:
- Green: When the price is in a confirmed uptrend.
- Red: When the price is in a confirmed downtrend.
- No color: When there is insufficient volume or no clear trend.
How to Use the Indicator
1. Initial Setup
1. Add the Indicator to Your Chart: Copy the code into the Pine Editor on TradingView and apply it to your chart.
2. Customize Parameters: Adjust values based on your trading strategy:
- Smoothing: Controls the level of smoothing for percentage changes.
- Lookback Length: Defines the observation period for calculations.
- Band Multiplier: Adjusts the width of RMS bands.
2. Signal Interpretation
1. Indicator Colors:
- Green: Confirmed uptrend.
- Red: Confirmed downtrend.
- Gray: No clear trend or insufficient volume.
2. RMS Bands:
- If the ALMA line (smoothed percentage change) crosses above the upper RMS band, it signals a potential uptrend.
- If it crosses below the lower RMS band, it signals a potential downtrend.
3. Volume Confirmation:
- The indicator's color activates only if the current volume exceeds the Volume SMA.
3. Alerts and Decisions
1. Trend Change Alerts:
- The indicator automatically triggers alerts when an uptrend or downtrend is detected.
- Configure these alerts to receive real-time notifications.
2. Strong Trend Signals:
- When the magnitude of the percentage change exceeds 1.5 times the RMS, the chart background highlights the strong trend.
4. Trading Strategies
1. Buy:
- Enter long positions when:
- The indicator turns green.
- Volume confirms the trend.
- Consider placing a stop-loss just below the lower RMS band.
2. Sell:
- Enter short positions when:
- The indicator turns red.
- Volume confirms the trend.
- Consider placing a stop-loss just above the upper RMS band.
3. Neutral:
- Avoid trading when the indicator is gray, as no clear trend or insufficient volume is present.
Disclaimer: As this is my first published indicator, please use it with caution. Feedback is highly appreciated to improve its performance.
Happy Trading!
Signals from Pawel Signals from Pawel is a trend-following indicator that generates buy and sell signals aligned with the prevailing trend, highlighting the principle: "Trend is your friend." Signals are triggered after a trend change is confirmed, using EMA crossovers (100 and 200 periods) as key indicators. When EMAs are widely separated, it indicates stronger trends with higher profit potential. Conversely, as EMAs converge, the trend weakens, increasing the likelihood of smaller gains or stop-loss triggers. For best results, prioritize signals shortly after a trend reversal, when EMA separation is more pronounced.
This indicator is optimized for the 5-minute timeframe on XAU/USD but may also be effective for other currency pairs and timeframes.
흑트1 시그널(BW1 signal)
This indicator is inspired by 흑백트레이더 and generates buy/sell signals based on EMA and MACD with certain conditions. It includes the following features:
1. Base Long/Short Signal:
* Long Signal: The price must be above the 200 EMA, and a MACD Golden Cross occurs below the zero line.
* Short Signal: The price must be below the 200 EMA, and a MACD Death Cross occurs above the zero line.
2. Filtering Features:
* Day Candle Bias: Filters signals based on the daily candle direction.
* Multi-Timeframe Validation: Supports higher timeframe EMA alignment checks (e.g., 15m, 30m, 1h, 4h) for trend confirmation.
* Stochastic RSI (StoRSI): Confirms entry points using overbought(def. 80)/oversold(def. 20) zones with a designated time frame(def. 30m).
* ATR Volatility Check: Ensures signals occur within acceptable ATR-based price divergence levels to manage risk in volatile conditions.
* Note that base filters are optimized with 5m timeframe.
3. Alerts:
* Configures custom alerts for buy/sell detection in real-time.
한국어 설명 (Korean Description)
이 지표는 흑백트레이더님의 EMA200과 MACD 골든 크로스를 활용한 흑트1 기법을 바탕으로 개발되었습니다. 주요 기능은 다음과 같습니다:
1. 기본 롱/숏 신호:
* 롱 신호: 가격이 200 EMA 위에 있어야 하며, MACD가 제로선 아래에서 골든 크로스가 발생해야 합니다.
* 숏 신호: 가격이 200 EMA 아래에 있어야 하며, MACD가 제로선 위에서 데드 크로스가 발생해야 합니다.
2. 필터링 기능:
* 일봉 필터: 일봉의 양봉/음봉 방향에 따라 신호를 필터링.
* 멀티 타임프레임 확인: 상위 타임프레임(15분, 30분, 1시간, 4시간)의 EMA 정배열/역배열 확인.
* 스토캐스틱 RSI (StoRSI): 지정된 타임프렘임(기본값 30m) 에서 과매수(기본값 80)/과매도(기본값 20) 구간에서 진입 지점을 확인.
* ATR 변동성 체크: ATR 기반 가격 괴리 수준 내에서 신호가 발생하도록 하여 높은 변동성에서 리스크를 줄임.
* 필터 기본 설정은 5분 시간프레임에 최적화되었습니다.
3. 알림:
* 매수/매도 신호 감지 시 실시간 알림 설정 가능.
[blackat] L2 Bull and Bear Heaven LineOVERVIEW
The L2 Bull and Bear Heaven Line script is a custom indicator designed to visualize trend directions using Exponential Moving Average (EMA)-based lines and generate trade signals based on crossovers between those lines. It also incorporates an RSI-like feature to provide additional insight into overbought and oversold conditions.
FEATURES
Utilizes two EMAs: a longer-term "Heaven Line" (default 60 bars) and a shorter-term "Trading Line" (default 30 bars).
Generates buy/sell signals based on crossovers between the "Trading Line" and "Heaven Line".
Identifies potential turning points in the market, indicating shifts from bullish to bearish or vice versa.
Includes an "Operation Line" similar to RSI, aiding in detecting overbought/oversold levels.
HOW TO USE
Add the script to your TradingView chart.
Observe the crossovers between the "Trading Line" and "Heaven Line":
Buy signal when the "Trading Line" crosses above the "Heaven Line".
Sell signal when the "Trading Line" crosses below the "Heaven Line".
Monitor the "Operation Line" for additional confirmation:
Secondary sell signal when the "Operation Line" drops below 90% and there is downward price action.
Complementary buy signal when the "Operation Line" rises above 10% and there is upward price action.
Consider the identified trend direction and potential turning points to make informed trading decisions.
LIMITATIONS
The effectiveness of the signals depends on the chosen time frame and specific market conditions.
False signals may occur due to volatile price movements or rapid changes in market sentiment.
NOTES
This script combines traditional technical analysis tools like EMAs with an RSI-like approach to enhance decision-making processes. Users should backtest the strategy under various market scenarios before implementing it in live trading.
THANKS
Special thanks to the contributors whose work inspired parts of this script.
Volume profile [Signals] - By Leviathan [Mindyourbuisness]Market Sessions and Volume Profile with Sweep Signals - Based on Leviathan's Volume Profile
This indicator is an enhanced version of Leviathan's Volume Profile indicator, adding session-based value area analysis and sweep detection signals. It combines volume profile analysis with market structure concepts to identify potential reversal opportunities.
Features
- Session-based volume profiles (Daily, Weekly, Monthly, Quarterly, Yearly)
- Forex sessions support (Tokyo, London, New York)
- Value Area analysis with POC, VAH, and VAL levels
- Extended level visualization for the last completed session
- Sweep detection signals for key value area levels
Sweep Signals Explanation
The indicator detects two types of sweeps at VAH, VAL, and POC levels:
Bearish Sweeps (Red Triangle Down)
Conditions:
- Price makes a high above the level (VAH/VAL/POC)
- Closes below the level
- Closes below the previous candle's low
- Previous candle must be bullish
Trading Implication: Suggests a failed breakout and potential reversal to the downside. These sweeps often indicate stop-loss hunting above key levels followed by institutional selling.
Bullish Sweeps (Green Triangle Up)
Conditions:
- Price makes a low below the level (VAH/VAL/POC)
- Closes above the level
- Closes above the previous candle's high
- Previous candle must be bearish
Trading Implication: Suggests a failed breakdown and potential reversal to the upside. These sweeps often indicate stop-loss hunting below key levels followed by institutional buying.
Trading Guidelines
1. Use sweep signals in conjunction with the overall trend
2. Look for additional confirmation like:
- Volume surge during the sweep
- Price action patterns
- Support/resistance levels
3. Consider the session's volatility and time of day
4. More reliable signals often occur at VAH and VAL levels
5. POC sweeps might indicate stronger reversals due to their significance as fair value levels
Notes
- The indicator works best on higher timeframes (1H and above)
- Sweep signals are more reliable during active market hours
- Consider using multiple timeframe analysis for better confirmation
- Past performance is not indicative of future results
Credits: Original Volume Profile indicator by Leviathan
[Elite Algo Modded]// ALERT READY ON TELEGRAM ==> t.me
//@version=5
indicator(" ", overlay=true, max_lines_count=500, max_labels_count=500, max_boxes_count=350)
// FUNCTIONS
// Close to Close Volatility
f_coc(x, period, sqrtAnnual) =>
mean = ta.sma(x, period)
s = array.new_float(0)
for i = 0 to period - 1 by 1
array.push(s, math.pow(x - mean, 2))
sqrtAnnual * math.sqrt(array.sum(s) / (period - 1))
//
// Parkinson Volatility
f_park(period, sqrtAnnual) =>
var LOG2 = math.log(2)
powLogHighLow = math.pow(math.log(high / low), 2)
sqrtAnnual * math.sqrt(1.0 / period * math.sum(1.0 / (4.0 * LOG2) * powLogHighLow, period))
// Garman Klass Volatility
f_gk(period, sqrtAnnual) =>
var LOG2 = math.log(2)
var SQRT_1_PERIOD = math.sqrt(1 / period)
powLogHighLow = math.pow(math.log(high / low), 2)
powLogCloseOpen = math.pow(math.log(close / open), 2)
tmp = 0.5 * powLogHighLow - (2.0 * LOG2 - 1.0) * powLogCloseOpen
sqrtAnnual * math.sqrt(math.sum(tmp, period)) * SQRT_1_PERIOD
// Rogers Satchell Volatility
f_rsv(period, sqrtAnnual) =>
tmp = math.log(high / close) * math.log(high / open) + math.log(low / close) * math.log(low / open)
sqrtAnnual * math.sqrt(math.sum(tmp, period) / period)
// Garman Klass Yang Zhang Extension Volatility
f_gkyz(period, sqrtAnnual) =>
var LOG2 = math.log(2)
var SQRT_1_PERIOD = math.sqrt(1 / period)
powLogHighLow = math.pow(math.log(high / low), 2)
powLogCloseOpen = math.pow(math.log(close / open), 2)
lastClose = nz(close , close)
powLogOpenClose1 = math.pow(math.log(open / lastClose), 2)
tmp = powLogOpenClose1 + 0.5 * powLogHighLow - (2.0 * LOG2 - 1.0) * powLogCloseOpen
sqrtAnnual * math.sqrt(math.sum(tmp, period)) * SQRT_1_PERIOD
// Yang Zhang Volatility
f_yz(a, period, sqrtAnnual) =>
o = math.log(open) - math.log(nz(close , close))
u = math.log(high) - math.log(open)
d = math.log(low) - math.log(open)
c = math.log(close) - math.log(open)
nMinusOne = period - 1
avgo = ta.sma(o, period)
avgc = ta.sma(c, period)
so = array.new_float(0)
sc = array.new_float(0)
for i = 0 to period - 1 by 1
array.push(so, math.pow(o - avgo, 2))
array.push(sc, math.pow(c - avgc, 2))
sumo = array.sum(so)
sumc = array.sum(sc)
Vo = sumo / nMinusOne
Vc = sumc / nMinusOne
Vrs = math.sum(u * (u - c) + d * (d - c), period) / period
k = (a - 1.0) / (a + (period + 1.0) / nMinusOne)
sqrtAnnual * math.sqrt(Vo + k * Vc + (1.0 - k) * Vrs)
// Exponentially Weighted Volatility
f_ewma(source, period, sqrtAnnual) =>
var lambda = (period - 1) / (period + 1)
squared = math.pow(source, 2)
float v = na
v := lambda * nz(v , squared) + (1.0 - lambda) * squared
sqrtAnnual * math.sqrt(v)
// Mean Absolute Deviation (Adjusted)
f_mad(source, period, sqrtAnnual) =>
var SQRT_HALF_PI = math.sqrt(math.asin(1))
mean = ta.sma(source, period)
S = array.new_float(0)
for i = 0 to period - 1 by 1
array.push(S, math.abs(source - mean))
sumS = array.sum(S)
sqrtAnnual * (sumS / period) * SQRT_HALF_PI
// Median Absolute Deviation
f_mead(source, period, sqrtAnnual) =>
median = ta.percentile_nearest_rank(source, period, 50)
E = 0.0
for i = 0 to period - 1 by 1
E += math.abs(source - median)
E
sqrtAnnual * math.sqrt(2) * (E / period)
//Rescale Function
f_rescale(_src, _size) =>
math.max(0, math.min(_size, int(_src / 100 * _size)))
// label Panel Function
_label(T, color_PnL) =>
label PnL_Label = na
label.delete(PnL_Label )
PnL_Label := label.new(time, 0, text=T, color=color_PnL, textcolor=color.white, size=size.normal, style=label.style_label_left, xloc=xloc.bar_time, textalign=text.align_left)
label.set_x(PnL_Label, label.get_x(PnL_Label) + math.round(ta.change(time) * 3))
// Round Function
Round(src, digits) =>
p = math.pow(10, digits)
math.round(math.abs(src) * p) / p * math.sign(src)
//Options for Inputs
ON = 'On'
OFF = 'Off'
CTC = 'Close to Close'
PKS = 'Parkinson'
GK = 'Garman Klass'
RS = 'Rogers Satchell'
GKYZ = 'Garman Klass Yang Zhang Extension'
YZ = 'Yang Zhang'
EWMA = 'EWMA'
MAD = 'Mean Absolute Deviation'
MAAD = 'Median Absolute Deviation'
L = 'Line'
SL = 'StepLine'
Ar = 'Area'
CL = 'Columns'
// Settings
H = EWMA
period = 10
Annual = 365
a = 1.34
Plen = 365
Pco = ON
sma = ON
malen = 55
bsg = OFF
stl = CL
lT = 3
i_invert = OFF
bg = OFF
sp = OFF
// bgcolor(bg ? color.new(#000000, 20) : na, title='Dark Background', transp=90)
var sqrtAnnual = math.sqrt(Annual) * 100
logr = math.log(close / close )
// Historical Volatiity Models
Hv = if H == CTC
f_coc(logr, period, sqrtAnnual)
else if H == PKS
f_park(period, sqrtAnnual)
else if H == RS
f_rsv(period, sqrtAnnual)
else if H == GK
f_gk(period, sqrtAnnual)
else if H == GKYZ
f_gkyz(period, sqrtAnnual)
else if H == EWMA
f_ewma(logr, period, sqrtAnnual)
else if H == YZ
f_yz(a, period, sqrtAnnual)
else if H == MAD
f_mad(logr, period, sqrtAnnual)
else
// H == "Median Absolute Deviation"
f_mead(logr, period, sqrtAnnual)
pstyle = stl == L ? plot.style_linebr : stl == SL ? plot.style_stepline : stl == Ar ? plot.style_area : stl == CL ? plot.style_columns : plot.style_line
//Hv Stats
avgHV = ta.sma(Hv, malen)
HVP = ta.percentrank(Hv, Plen)
NearZero = HVP < 1.5 ? 1 : 0
HV50 = ta.percentile_nearest_rank(Hv, Plen, 50)
// // Text Functions
// texthv() =>
// ' HV: ' + str.tostring(Round(Hv, 2))
// textphv() =>
// 'HV 50áµ—Ê° Percentile: ' + str.tostring(Round(HV50, 2))
// texthvp() =>
// 'HV Percentile: ' + str.tostring(Round(HVP, 2)) + 'áµ—Ê°'
// // Coloring
// var c_ = array.new_color(na)
// if barstate.isfirst
// array.push(c_, #0effff)
// array.push(c_, #00fdf6)
// array.push(c_, #00fbee)
// array.push(c_, #00f9e4)
// array.push(c_, #00f6db)
// array.push(c_, #00f4d1)
// array.push(c_, #13f1c6)
// array.push(c_, #24efbc)
// array.push(c_, #31ecb1)
// array.push(c_, #3ce9a6)
// array.push(c_, #47e69b)
// array.push(c_, #51e390)
// array.push(c_, #5adf85)
// array.push(c_, #62dc7a)
// array.push(c_, #6ad96e)
// array.push(c_, #72d563)
// array.push(c_, #7ad157)
// array.push(c_, #81cd4b)
// array.push(c_, #88ca3f)
// array.push(c_, #8fc532)
// array.push(c_, #96c123)
// array.push(c_, #9cbd0e)
// array.push(c_, #a3b800)
// array.push(c_, #a9b300)
// array.push(c_, #b0ae00)
// array.push(c_, #b6a900)
// array.push(c_, #bca300)
// array.push(c_, #c29e00)
// array.push(c_, #c29e00)
// array.push(c_, #c89800)
// array.push(c_, #ce9100)
// array.push(c_, #d48b00)
// array.push(c_, #da8400)
// array.push(c_, #df7c00)
// array.push(c_, #e57400)
// array.push(c_, #ea6c00)
// array.push(c_, #ef6200)
// array.push(c_, #f35800)
// array.push(c_, #f74c00)
// array.push(c_, #fb3e00)
// array.push(c_, #ff2d00)
// if i_invert
// array.reverse(c_)
// var sizeOf = array.size(c_) - 1
// colorHV = Pco ? array.get(c_, f_rescale(HVP, sizeOf)) : color.aqua
// Plots
// plot(Hv, 'HV', color=colorHV, linewidth=lT, style=plot.style_line)
// plot(sma ? avgHV : na, 'sma', color=color.new(#FFFFFF, 25), linewidth=2)
//bgcolor(Hv > avgHV ? color.lime : na)
// if sp
// _label(H + texthv() + ' ' + textphv() + ' ' + texthvp() + ' ', #000000c0)
// col2 = HVP >= 1 ? color.yellow : HVP <= 1 and HVP >= 0.5 ? color.orange : HVP <= 0.5 ? #8D0000 : color.silver
// // bgcolor(bsg and NearZero ? col2 : na, transp=50)
//Custrom MAS
maa = avgHV / 100 * 140
mab = avgHV / 100 * 180
mac = avgHV / 100 * 240
mad = avgHV / 100 * 60
mae = avgHV / 100 * 20
// Auto Sensivity Volatility Band Settings
float volatility = 0.0
if Hv < maa and Hv > avgHV // ilk band ust
volatility := 3.15
else if Hv < mab and Hv > maa // ikinci band ust
volatility := 3.5
else if Hv < mac and Hv > mab // ucuncu band ust
volatility := 3.6
else if Hv > mac // volatilite en ust degerde
volatility := 4
else if Hv < maa and Hv > mad // altdaki ilk band
volatility := 3
else if Hv < mad and Hv > mae // altdaki ikinci band
volatility := 2.85
else if Hv < mae // volatilite butun bandlarin anltinda
volatility := 3
//plot(volatility,color = color.red)
// plot(maa, 'maa', color=color.new(color.aqua, 25))
// plot(mab, 'mab', color=color.new(color.aqua, 25))
// plot(mac, 'mac', color=color.new(color.aqua, 25))
// plot(mad, 'mad', color=color.new(color.aqua, 25))
// plot(mae, 'mae', color=color.new(color.aqua, 25))
//-------------- Elite Algo v22 | elitesignals.com -----------------//
// Get user input
enableDashboard = input(true, "Enable Dashboard", group="DASHBOARD SETTINGS")
locationDashboard = input.string("Middle right", "Location", , group="DASHBOARD SETTINGS")
sizeDashboard = input.string("Tiny", "Size", , group="DASHBOARD SETTINGS")
colorBackground = input(#2A2E39, "Bg color", group="DASHBOARD SETTINGS")
colorFrame = input(#2A2E39, "Frame color", group="DASHBOARD SETTINGS")
colorBorder = input(#363A45, "Border color", group="DASHBOARD SETTINGS")
showSignals = input(true, "Show signals", group="BUY AND SELL SIGNALS SETTINGS")
strategy = input.string("Normal", "Strategy", , group="BUY AND SELL SIGNALS SETTINGS")
sensitivity11 = input.float(defval=1.8, title="Sensitivity", minval=1, maxval=20, group = 'Signals')
sensitivity = sensitivity11
auto_button = input.bool(defval = true , title = "Auto Sensitivity", group = 'Signals')
consSignalsFilter = input(false, "Consolidation signals filter", group="BUY AND SELL SIGNALS SETTINGS")
smartSignalsOnly = input(false, "Smart signals only", group="BUY AND SELL SIGNALS SETTINGS")
candleColors = input(false, "Candle colors", group="BUY AND SELL SIGNALS SETTINGS")
momentumCandles = input(false, "Momentum candles", group="BUY AND SELL SIGNALS SETTINGS")
highVolSignals = input(false, "High volume signals only", group="BUY AND SELL SIGNALS SETTINGS")
enableTrailingSL = input(false, "Enable trailing stop-loss", group="RISK MANAGEMENT SETTINGS")
usePercSL = input(false, "% Trailing sl", inline="2", group="RISK MANAGEMENT SETTINGS")
percTrailingSL = input.float(1, "", 0, step=0.1, inline="2", group="RISK MANAGEMENT SETTINGS")
enableSwings = input(false, "Enable Swing High's & Swing's Low's", inline="3", group="RISK MANAGEMENT SETTINGS")
periodSwings = input.int(10, "", 2, inline="3", group="RISK MANAGEMENT SETTINGS")
enableTpSlAreas = input(false, "Enable take profit/stop-loss areas", group="RISK MANAGEMENT SETTINGS")
useTP1 = input(true, "", inline="4", group="RISK MANAGEMENT SETTINGS")
multTP1 = input.float(1, "TP 1", 0, inline="4", group="RISK MANAGEMENT SETTINGS")
useTP2 = input(true, "", inline="5", group="RISK MANAGEMENT SETTINGS")
multTP2 = input.float(2, "TP 2", 0, inline="5", group="RISK MANAGEMENT SETTINGS")
useTP3 = input(true, "", inline="6", group="RISK MANAGEMENT SETTINGS")
multTP3 = input.float(3, "TP 3", 0, inline="6", group="RISK MANAGEMENT SETTINGS")
tpLabels = input(true, "Take profit labels", group="RISK MANAGEMENT SETTINGS")
showTrendCloud = input(true, "Show Trend cloud", group="TREND CLOUD SETTINGS")
periodTrendCloud = input.string("New", "Trend cloud period", , group="TREND CLOUD SETTINGS")
signalsTrendCloud = input(false, "Trend only signals", group="TREND CLOUD SETTINGS")
fastTrendCloud = input(false, "Fast trend cloud", group="TREND CLOUD SETTINGS")
fastTrendCloudLen = input.int(55, "Fast trend cloud", 2, group="TREND CLOUD SETTINGS")
enableAutoTrend = input(false, "Enable Auto Trendlines", group="AUTO TRENDLINES SETTINGS")
srcTrendChannel = input(close, "Trend channel source", group="AUTO TRENDLINES SETTINGS")
lenTrendChannel = input.int(200, "Trend channel loopback", 2, group="AUTO TRENDLINES SETTINGS")
enableSR = input(false, "Enable support and resistance", group="AUTO SUPPORT AND RESISTANCE SETTINGS")
lineSrStyle = input.string("Dashed", "Line Style", , group="AUTO SUPPORT AND RESISTANCE SETTINGS")
lineSrWidth = input.int(2, "Line Width", 1, 4, group="AUTO SUPPORT AND RESISTANCE SETTINGS")
showCons = input(false, "Consolidation Zones", group="CONSOLIDATION ZONES")
lbPeriod = input.int(10, "Loopback Period", 2, 50, group="CONSOLIDATION ZONES")
lenCons = input.int(5, "Min Consolidation Length", 2, 20, group="CONSOLIDATION ZONES")
paintCons = input(true, "Paint Consolidation Area", group="CONSOLIDATION ZONES")
colorZone = input(color.new(color.blue, 70), "Zone Color", group="CONSOLIDATION ZONES")
box_ob = input.bool(false, "Toggle Order Block", group="ORDER BLOCK")
box_hide_gray = input.bool(false, "Hide gray boxes", group="ORDER BLOCK")
bos_type = input.string("High and Low", "MSB trigger", , group="ORDER BLOCK")
box_sv = input.bool(true, "Plot demand boxes", group="ORDER BLOCK")
box_test_delay = input.int(3, "Delay to count test of demand box", 1, group="ORDER BLOCK")
box_fill_delay = input.int(3, "Delay to count fill of demand box", 1, group="ORDER BLOCK")
box_test_sv = input.bool(true, "Dim tested demand boxes", group="ORDER BLOCK")
box_stop_sv = input.bool(true, "Stop plotting filled demand boxes", group="ORDER BLOCK")
eliteVP = input(false, "Elite volume profile", group="ELITE VOLUME PROFILE")
colorBorderVP = input(color.new(color.black, 80), "Border color", group="ELITE VOLUME PROFILE")
colorBuyVP = input(#7F1623, "Buy volume", group="ELITE VOLUME PROFILE")
colorSellVP = input(#00DD00, "Sell volume", group="ELITE VOLUME PROFILE")
offset = input.int(2, "Offset", 2, 20, group="ELITE VOLUME PROFILE")
lookback = input.int(100, "Lookback", 14, 10000, group="ELITE VOLUME PROFILE")
levelNum = input.int(100, "Number of levels", 10, 1000, group="ELITE VOLUME PROFILE")
levelWidth = input.int(50, "Level width", 2, 100, group="ELITE VOLUME PROFILE")
if auto_button == false
sensitivity
else if auto_button == true
sensitivity := volatility
// Functions
f_chartTfInMinutes() =>
float _resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1. / 60 :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 60. * 24 :
timeframe.isweekly ? 60. * 24 * 7 :
timeframe.ismonthly ? 60. * 24 * 30.4375 : na)
atr(len) =>
tr = ta.tr
atr = 0.0
atr := nz(atr + (tr - atr ) / len, tr)
supertrend(src, factor, len) =>
atr = ta.atr(len)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or close < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend
if prevSuperTrend == prevUpperBand
direction := close > upperBand ? 1 : -1
else
direction := close < lowerBand ? -1 : 1
superTrend := direction == 1 ? lowerBand : direction == -1 ? upperBand : na
dchannel(len)=>
hh = ta.highest(len)
ll = ta.lowest (len)
trend = 0
trend := close > hh ? 1 : close < ll ? -1 : nz(trend )
trendScalper(show, len1, len2, len3, colorBull, colorBear, colorBarBull, colorBarBear) =>
avgOC = math.avg(open, close)
ha_o = 0.0, ha_o := na(ha_o ) ? avgOC : (ha_o + ohlc4 ) / 2
ema1 = ta.ema(ha_o, len1), ema2 = ta.ema(ha_o, len2), ema3 = ta.ema(ha_o, len3)
ris1 = ema1 > ema1 , ris2 = ema2 > ema2 , ris3 = ema3 > ema3
fal1 = ema1 < ema1 , fal2 = ema2 < ema2 , fal3 = ema3 < ema3
colorEma1 = ris1 ? colorBull : fal1 ? colorBear : na, colorEma2 = ris2 ? colorBull : fal2 ? colorBear : na, colorEma3 = ris3 ? colorBull : fal3 ? colorBear : na
fillEma1 = avgOC > ema1 ? colorBull : avgOC < ema1 ? colorBear : na, fillEma2 = ema1 > ema2 ? colorBull : ema1 < ema2 ? colorBear : na, fillEma3 = ema2 > ema3 ? colorBull : ema2 < ema3 ? colorBear : na
colorBar = close < ema1 and close < ema2 ? colorBarBear : colorBarBull
candlesMom() =>
= ta.macd(close, 12, 26, 9)
(macd > 0 and macd > macd ) or (macd < 0 and macd < macd )
trailingSL(buy, sell, factor, len, usePerc, perc) =>
atr = atr(len)
upperBand = high + (usePerc ? high * (perc / 100) : factor * atr)
lowerBand = low - (usePerc ? low * (perc / 100) : factor * atr)
prevLowerBand = nz(lowerBand )
prevUpperBand = nz(upperBand )
lowerBand := lowerBand > prevLowerBand or buy ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or sell ? upperBand : prevUpperBand
int direction = na
float stop = na
prevSuperTrend = stop
if prevSuperTrend == prevUpperBand
direction := buy ? 1 : -1
else
direction := sell ? -1 : 1
stop := direction == 1 ? lowerBand : direction == -1 ? upperBand : na
add_to_zz(zz, val, bi) =>
array.unshift(zz, bi)
array.unshift(zz, val)
if array.size(zz) > 12
array.pop(zz)
update_zz(zz, val, bi, dir) =>
if array.size(zz) == 0
add_to_zz(zz, val, bi)
else
if dir == 1 and val > array.get(zz, 0) or dir == -1 and val < array.get(zz, 0)
array.set(zz, 0, val)
array.set(zz, 1, bi)
0
float ph = ta.pivothigh(high, 10, 10)
float pl = ta.pivotlow (low , 10, 10)
LSRstyle = lineSrStyle == "Dashed" ? line.style_dashed : lineSrStyle == "Solid" ? line.style_solid : line.style_dotted
prdhighest = ta.highest(300)
prdlowest = ta.lowest (300)
cwidth = (prdhighest - prdlowest) * 10 / 100
var pivotvals = array.new_float(0)
if ph or pl
array.unshift(pivotvals, ph ? ph : pl)
if array.size(pivotvals) > 20
array.pop(pivotvals)
get_sr_vals(ind) =>
float lo = array.get(pivotvals, ind)
float hi = lo
int numpp = 0
for y = 0 to array.size(pivotvals) - 1 by 1
float cpp = array.get(pivotvals, y)
float wdth = cpp <= lo ? hi - cpp : cpp - lo
if wdth <= cwidth
lo := cpp <= lo ? cpp : lo
hi := cpp > lo ? cpp : hi
numpp += 1
numpp
var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)
find_loc(strength) =>
ret = array.size(sr_strength)
for i = ret > 0 ? array.size(sr_strength) - 1 : na to 0 by 1
if strength <= array.get(sr_strength, i)
break
ret := i
ret
ret
check_sr(hi, lo, strength) =>
ret = true
for i = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
if strength >= array.get(sr_strength, i)
array.remove(sr_strength, i)
array.remove(sr_up_level, i)
array.remove(sr_dn_level, i)
ret
else
ret := false
ret
break
ret
// Get components
rsi = ta.rsi(close, 14)
vosc = ta.obv - ta.ema(ta.obv, 20)
bs = ta.ema(nz(math.abs((open - close) / (high - low) * 100)), 3)
ema = ta.ema(close, 200)
emaBull = close > ema
equal_tf(res) => str.tonumber(res) == f_chartTfInMinutes()
higher_tf(res) => str.tonumber(res) > f_chartTfInMinutes()
too_small_tf(res) => (timeframe.isweekly and res=="1") or (timeframe.ismonthly and str.tonumber(res) < 10)
securityNoRep(sym, res, src) =>
bool bull = na
bull := equal_tf(res) ? src : bull
bull := higher_tf(res) ? request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on) : bull
bull_array = request.security_lower_tf(syminfo.tickerid, higher_tf(res) ? str.tostring(f_chartTfInMinutes()) : too_small_tf(res) ? (timeframe.isweekly ? "3" : "10") : res, src)
if array.size(bull_array) > 1 and not equal_tf(res) and not higher_tf(res)
bull := array.pop(bull_array)
array.clear(bull_array)
bull
TF1Bull = securityNoRep(syminfo.tickerid, "1" , emaBull)
TF3Bull = securityNoRep(syminfo.tickerid, "3" , emaBull)
TF5Bull = securityNoRep(syminfo.tickerid, "5" , emaBull)
TF10Bull = securityNoRep(syminfo.tickerid, "10" , emaBull)
TF15Bull = securityNoRep(syminfo.tickerid, "15" , emaBull)
TF30Bull = securityNoRep(syminfo.tickerid, "30" , emaBull)
TF60Bull = securityNoRep(syminfo.tickerid, "60" , emaBull)
TF120Bull = securityNoRep(syminfo.tickerid, "120" , emaBull)
TF240Bull = securityNoRep(syminfo.tickerid, "240" , emaBull)
TF720Bull = securityNoRep(syminfo.tickerid, "720" , emaBull)
TFDBull = securityNoRep(syminfo.tickerid, "1440", emaBull)
ema150 = ta.ema(close, 150)
ema250 = ta.ema(close, 250)
hma55 = ta.hma(close, 55 )
= ta.macd(close, 12, 26, 9)
supertrend = supertrend(ohlc4, sensitivity, 10)
maintrend = dchannel(30)
confBull = (ta.crossover (close, supertrend) or (ta.crossover (close, supertrend) and maintrend < 0)) and macd > 0 and macd > macd and ema150 > ema250 and hma55 > hma55 and maintrend > 0
confBear = (ta.crossunder(close, supertrend) or (ta.crossunder(close, supertrend) and maintrend > 0)) and macd < 0 and macd < macd and ema150 < ema250 and hma55 < hma55 and maintrend < 0
trendcloud = supertrend(ohlc4, periodTrendCloud == "Long term" ? 7 : 4, 10)
hma = fastTrendCloud ? ta.hma(close, fastTrendCloudLen) : na
none = close > 0
= ta.dmi(14, 14)
consFilter = adx > 20
smartFilter = ta.ema(close, 200)
volFilter = (ta.ema(volume, 25) - ta.ema(volume, 26)) / ta.ema(volume, 26) > 0
trendFilter = trendcloud
bull = (strategy == "Normal" ? ta.crossover (close, supertrend) : confBull and not confBull ) and strategy != "Trend scalper" and (smartSignalsOnly ? close > smartFilter : none) and (consSignalsFilter ? consFilter : none) and (highVolSignals ? volFilter : none) and (signalsTrendCloud ? (periodTrendCloud == "New" ? ema150 > ema250 : close > trendFilter) : none)
bear = (strategy == "Normal" ? ta.crossunder(close, supertrend) : confBear and not confBear ) and strategy != "Trend scalper" and (smartSignalsOnly ? close < smartFilter : none) and (consSignalsFilter ? consFilter : none) and (highVolSignals ? volFilter : none) and (signalsTrendCloud ? (periodTrendCloud == "New" ? ema150 < ema250 : close < trendFilter) : none)
countBull = ta.barssince(bull)
countBear = ta.barssince(bear)
trigger = nz(countBull, bar_index) < nz(countBear, bar_index) ? 1 : 0
= trendScalper(strategy == "Trend scalper" ? true : false, 5, 9, 21, color.green, color.red, #00DD00, #DD0000)
trailingStop = trailingSL(bull, bear, 2.2, 14, usePercSL, percTrailingSL)
float _ph = ta.highestbars(high, periodSwings) == 0 ? high : na
float _pl = ta.lowestbars (low, periodSwings) == 0 ? low : na
var _dir = 0, dir_ = _pl and na(_ph) ? -1 : _dir, _dir := _ph and na(_pl) ? 1 : dir_, dirChg = ta.change(_dir)
var zz = array.new_float(0), zzOld = array.copy(zz)
float zzLive = _ph or _pl ? (dirChg ? add_to_zz(zz, _dir == 1 ? _ph : _pl, bar_index) : update_zz(zz, _dir == 1 ? _ph : _pl, bar_index, _dir)) : na
aA = ta.wma(srcTrendChannel, lenTrendChannel), b = ta.sma(srcTrendChannel, lenTrendChannel)
A = 4 * b - 3 * aA, B = 3 * aA - 2 * b
m = (A - B) / (lenTrendChannel - 1)
d = 0., for i = 0 to lenTrendChannel - 1 by 1
l = B + m * i
d += math.pow(srcTrendChannel - l, 2)
rmse = math.sqrt(d / (lenTrendChannel - 1)) * 2
float hb_ = ta.highestbars(lbPeriod) == 0 ? high : na
float lb_ = ta.lowestbars (lbPeriod) == 0 ? low : na
var int dir = 0
float zz_ = na
float pp = na
var int consCnt = 0
var float condHi = na
var float condLo = na
float H_ = ta.highest(lenCons)
float L_ = ta.lowest (lenCons)
var line lineUp = na
var line lineDn = na
bool breakUp = false
bool breakDn = false
var float pvh1_price = array.new_float(1000, na)
var int pvh1_time = array.new_int (1000, na)
var float pvl1_price = array.new_float(1000, na)
var int pvl1_time = array.new_int (1000, na)
var float pvh2_price = array.new_float(1000, na)
var int pvh2_time = array.new_int (1000, na)
var float pvl2_price = array.new_float(1000, na)
var int pvl2_time = array.new_int (1000, na)
var float htcmrll_price = na
var int htcmrll_time = na
var float ltcmrhh_price = na
var int ltcmrhh_time = na
var box long_boxes = array.new_box()
var box short_boxes = array.new_box()
var float temp_pv_0 = na
var float temp_pv_1 = na
var float temp_pv_2 = na
bool pvh = high < high and high > high
bool pvl = low > low and low < low
int pv1_time = bar_index
float pv1_high = high
float pv1_low = low
float trigger_high = bos_type == "High and Low" ? high : math.max(open, close)
float trigger_low = bos_type == "High and Low" ? low : math.min(open, close)
rangeHigh = ta.highest(high, lookback)
rangeLow = ta.lowest(low, lookback)
rangeHeight = rangeHigh - rangeLow
histogramHeight = rangeHeight / levelNum
histogramLowList = array.new_float(levelNum, na)
histogramHighList = array.new_float(levelNum, na)
histogramBuyVolumeList = array.new_float(levelNum, 0.0)
histogramSellVolumeList = array.new_float(levelNum, 0.0)
var buyBars = array.new_box(365, na)
for i = 0 to 364
box.delete(array.get(buyBars, i))
var sellBars = array.new_box(365, na)
for i = 0 to 364
box.delete(array.get(sellBars, i))
// Colors
green = #00DD00, green50 = color.new(green, 50), green20 = color.new(green, 80)
red = #DD0000, red50 = color.new(red, 50), red20 = color.new(red, 80)
silver = #B2B5BE, silver50 = color.new(silver, 50), silver20 = color.new(silver, 80)
// Plots
atrBand = usePercSL ? (trigger ? low : high) * (percTrailingSL / 100) : ta.atr(14) * 2.2
atrStop = trigger ? low - atrBand : high + atrBand
lastTrade(src) => ta.valuewhen(bull or bear, src, 0)
entry_y = lastTrade(close)
stop_y = lastTrade(atrStop)
tp1_y = (entry_y-lastTrade(atrStop))*multTP1 + entry_y
tp2_y = (entry_y-lastTrade(atrStop))*multTP2 + entry_y
tp3_y = (entry_y-lastTrade(atrStop))*multTP3 + entry_y
labelTpSl(cond, y, txt, color) =>
label labelTpSl = enableTpSlAreas and cond ? label.new(bar_index + 1, y, txt, xloc.bar_index, yloc.price, color, label.style_label_left, color.white, size.normal) : na
label.delete(labelTpSl )
labelTpSl(none, entry_y, "Entry : " + str.tostring(math.round_to_mintick(entry_y)), color.orange)
labelTpSl(none, stop_y , "Stop loss : " + str.tostring(math.round_to_mintick(atrStop)), color.red)
labelTpSl(useTP1 and multTP1 != 0, tp1_y, "TP 1 : " + str.tostring(math.round_to_mintick(tp1_y)), color.green)
labelTpSl(useTP2 and multTP2 != 0, tp2_y, "TP 2 : " + str.tostring(math.round_to_mintick(tp2_y)), color.green)
labelTpSl(useTP3 and multTP3 != 0, tp3_y, "TP 3 : " + str.tostring(math.round_to_mintick(tp3_y)), color.green)
lineTpSl(cond, y, color, style) =>
line lineTpSl = enableTpSlAreas and cond ? line.new(bar_index - (trigger ? countBull : countBear), y, bar_index + 1, y, xloc.bar_index, extend.none, color, style) : na
line.delete(lineTpSl )
lineTpSl(none, entry_y, color.orange, line.style_dashed)
lineTpSl(none, stop_y , color.red , line.style_solid )
lineTpSl(useTP1 and multTP1 != 0, tp1_y, color.green, line.style_dotted)
lineTpSl(useTP2 and multTP2 != 0, tp2_y, color.green, line.style_dotted)
lineTpSl(useTP3 and multTP3 != 0, tp3_y, color.green, line.style_dotted)
var dashboard_loc = locationDashboard == "Top right" ? position.top_right : locationDashboard == "Top left" ? position.top_left : locationDashboard == "Middle right" ? position.middle_right : locationDashboard == "Middle left" ? position.middle_left : locationDashboard == "Bottom right" ? position.bottom_right : position.bottom_left
var dashboard_size = sizeDashboard == "Tiny" ? size.tiny : sizeDashboard == "Small" ? size.small : size.normal
var dashboard = table.new(dashboard_loc, 2, 20, colorBackground, colorFrame, 3, colorBorder, 3)
dashboard_cell(column, row, txt) => table.cell(dashboard, column, row, txt, 0, 0, color.white, text_size=dashboard_size)
dashboard_cell_bg(column, row, col) => table.cell_set_bgcolor(dashboard, column, row, col)
if barstate.islast and enableDashboard
dashboard_cell(0, 0 , "Current strategy")
dashboard_cell(0, 1 , "Current sensitivity")
dashboard_cell(0, 2 , "Current Position")
dashboard_cell(0, 3 , "Current trend")
dashboard_cell(0, 4 , "Trend strength")
dashboard_cell(0, 5 , "Volume")
dashboard_cell(0, 6 , "Volatility")
dashboard_cell(0, 7 , "Momentum")
dashboard_cell(0, 8 , "Timeframe trends📊"), table.merge_cells(dashboard, 0, 8, 1, 8)
dashboard_cell(0, 9 , "1 min")
dashboard_cell(0, 10, "3 min")
dashboard_cell(0, 11, "5 min")
dashboard_cell(0, 12, "10 min")
dashboard_cell(0, 13, "15 min")
dashboard_cell(0, 14, "30 min")
dashboard_cell(0, 15, "1 Hour")
dashboard_cell(0, 16, "2 Hour")
dashboard_cell(0, 17, "4 Hour")
dashboard_cell(0, 18, "12 Hour")
dashboard_cell(0, 19, "Daily")
dashboard_cell(1, 0 , strategy)
dashboard_cell(1, 1 , str.tostring(sensitivity))
dashboard_cell(1, 2 , strategy != "Trend scalper" ? (trigger ? "Buy" : "Sell") : ""), dashboard_cell_bg(1, 2, strategy != "Trend scalper" ? (trigger ? color.green : color.red) : colorBackground)
dashboard_cell(1, 3 , emaBull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 3, emaBull ? color.green : color.red)
dashboard_cell(1, 4 , str.tostring(bs, "0.0") + " %")
dashboard_cell(1, 5 , vosc > 0 ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 5, vosc > 0 ? color.green : color.red)
dashboard_cell(1, 6 , adx > 20 ? "Trending 🚀" : "Ranging ⚠️"), dashboard_cell_bg(1, 6, adx > 20 ? color.green : color.orange)
dashboard_cell(1, 7 , rsi > 50 ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 7, rsi > 50 ? color.green : color.red)
dashboard_cell(1, 9 , TF1Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 9 , TF1Bull ? color.green : color.red)
dashboard_cell(1, 10, TF3Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 10, TF3Bull ? color.green : color.red)
dashboard_cell(1, 11, TF5Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 11, TF5Bull ? color.green : color.red)
dashboard_cell(1, 12, TF10Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 12, TF10Bull ? color.green : color.red)
dashboard_cell(1, 13, TF15Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 13, TF15Bull ? color.green : color.red)
dashboard_cell(1, 14, TF30Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 14, TF30Bull ? color.green : color.red)
dashboard_cell(1, 15, TF60Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 15, TF60Bull ? color.green : color.red)
dashboard_cell(1, 16, TF120Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 16, TF120Bull ? color.green : color.red)
dashboard_cell(1, 17, TF240Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 17, TF240Bull ? color.green : color.red)
dashboard_cell(1, 18, TF720Bull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 18, TF720Bull ? color.green : color.red)
dashboard_cell(1, 19, TFDBull ? "Bullish" : "Bearish"), dashboard_cell_bg(1, 19, TFDBull ? color.green : color.red)
l(css, k) =>
line lr = enableAutoTrend ? line.new(bar_index - lenTrendChannel + 1, A + k, bar_index, B + k, extend=extend.right, color=css) : na
line.delete(lr )
l(color.blue, rmse), l(color.blue, 0), l(color.blue, -rmse)
//
//======================================
Multi-Timeframe Trend and Market StructureThis indicator can be used to write on your graph the trend direction on 15m, 1h, 4h , daily timeframes
[LeonidasCrypto]Volume Force IndexVolume Force Index (VFI)
Overview
The Volume Force Index (VFI) is a technical indicator that measures the balance between buying and selling pressure in the market by analyzing volume patterns. It helps traders identify potential trend reversals and confirm trend strength.
What It Measures
Buying vs. selling volume pressure
Market momentum
Potential overbought/oversold conditions
Volume trend strength
How to Read the Indicator
Main Components:
Main Line (Green/Red)
Green: Buying pressure is dominant
Red: Selling pressure is dominant
The steeper the slope, the stronger the pressure
Signal Line (Yellow)
Fast EMA that helps identify trend changes
Acts as an early warning system for potential reversals
Dynamic Bands (Red/Green lines)
Adapt to market volatility
Help identify extreme conditions
Based on actual market volatility rather than fixed levels
Signals to Watch
Trend Direction:
Rising oscillator = Increasing buying pressure
Falling oscillator = Increasing selling pressure
Signal Line Crossovers:
Main line crosses above signal line = Potential bullish signal
Main line crosses below signal line = Potential bearish signal
Band Touches:
Touching upper band = Possible buying exhaustion
Touching lower band = Possible selling exhaustion
Color Changes:
Green to Red = Shift to selling pressure
Red to Green = Shift to buying pressure
Best Practices
When to Use:
Trend confirmation
Identifying potential reversals
Volume analysis
Market strength assessment
Tips:
Use in conjunction with price action
Look for divergences with price
More reliable on higher timeframes
Consider market context
Default Settings:
MA Period: 14 (volume calculation)
Smooth Length: 3 (noise reduction)
EMA Period: 4 (signal line)
Volatility Period: 20 (band calculation)
Volatility Multiplier: 1.5 (band width)
Best Markets to Apply
Any market with reliable volume data
Summary
The VFI is a powerful tool that combines volume analysis with trend identification. Its adaptive nature makes it suitable for various market conditions, but it should be used as part of a complete trading strategy, not in isolation.
GOLDEN BOY - REVERSÃO Desenvolvido por Alex Reis
- Indicador de Reversão.
- Confluência com a tendência
- Bandas TMA
Tipo de Grafico : Range
Tempo do Gráfico: 10R/ 30R / 50R / 100R
Ativo : Mercado Futuros , GOLD , Forex
OBS: Configurar de acordo com sua estratégia.
MadTrendXOThis Pine Script™ code combines multiple trading strategies and indicators into a single script on TradingView. Here's a breakdown of what it does:
### Key Components:
1. **MadTrend Indicator**:
- This part calculates the **Median Absolute Deviation (MAD)** to measure volatility and uses it to create dynamic trend lines (upper and lower bounds) around the median price. Signals are generated when the price crosses these bounds, indicating potential trends (long or short).
**Inputs for MadTrend**:
- `Source`: Defines the price data (open, close, high, etc.) used for calculations.
- `Median Length`: The length used for calculating the median in MAD.
- `MAD Multiplier`: Multiplier for the MAD value, adjusting the sensitivity.
**Plots**:
- The script plots the median, upper and lower bounds, and colors the bars based on the trend direction (green for up and red for down).
2. **Trader XO MACRO**:
- The **Exponential Moving Average (EMA)** strategy is included, using two EMAs (fast and slow) to identify buy and sell signals based on crossovers.
**Inputs for Trader XO**:
- The script allows customization of fast and slow EMAs and the option to show both or just the consolidated EMA (average of the two).
**Alerts**:
- Alerts are set for bullish and bearish EMA crossovers.
3. **Stochastic RSI**:
- This part of the script uses the **Stochastic RSI** (Relative Strength Index) to generate signals when certain levels are crossed (overbought, oversold).
**Inputs for Stochastic RSI**:
- RSI Length, Stochastic Length, and smoothing factors for the K and D lines.
- There are customizable levels for overbought and oversold conditions.
**Alerts**:
- Alerts are triggered for crossovers of the K and D lines, as well as when the K line moves above the overbought level or below the oversold level.
### Alerts:
- The script has several alert conditions set up:
- For **long** and **short signals** based on MadTrend and EMA crossovers.
- For **risk-on** and **risk-off** conditions.
- For **Stochastic RSI crossovers** and overbought/oversold alerts.
### Backtesting:
- The code also contains backtest capabilities where performance can be evaluated over a defined date range. The script tracks metrics such as total equity, buy & hold performance, and trade statistics like the number of wins and losses.
### Visuals:
- The chart shows signals on the price with green and red bars, along with buy and sell markers.
- For backtesting, the equity line is plotted alongside the strategy's performance versus a buy-and-hold strategy.
Let me know if you'd like further clarification on any specific part or if you'd like to modify the script!
Support and Resistance with Buy/Sell Signals**Support and Resistance with Buy/Sell Signals**
Support and resistance are key concepts in technical analysis used to identify price levels at which an asset tends to reverse or pause in its trend. These levels are pivotal for traders to anticipate potential entry (buy) or exit (sell) opportunities.
### **Support**
Support is a price level where a downward trend tends to pause or reverse due to an increase in buying interest. It acts as a "floor" for the price. Traders consider this level as an area to look for **buy signals**.
#### **Buy Signals near Support**:
1. **Bounce Confirmation**: When the price touches the support level and rebounds upward, confirming the strength of the support.
2. **Bullish Candlestick Patterns**: Patterns like hammers or engulfing candles forming at support levels suggest buying opportunities.
3. **Volume Increase**: A spike in trading volume at the support level often reinforces the likelihood of a reversal.
---
### **Resistance**
Resistance is a price level where an upward trend tends to pause or reverse due to an increase in selling pressure. It acts as a "ceiling" for the price. Traders consider this level as an area to look for **sell signals**.
#### **Sell Signals near Resistance**:
1. **Price Rejection**: When the price reaches the resistance level and fails to break above it, moving downward instead.
2. **Bearish Candlestick Patterns**: Patterns like shooting stars or bearish engulfing candles at resistance levels signal selling opportunities.
3. **Divergences**: If the price forms higher highs near resistance while an indicator (e.g., RSI) shows lower highs, it suggests weakening momentum.
---
### **Dynamic Indicators for Support and Resistance**
1. **Moving Averages**: Commonly used as dynamic support/resistance, especially the 50, 100, and 200-period moving averages.
2. **Fibonacci Retracements**: Highlight potential support and resistance levels based on mathematical ratios.
3. **Pivot Points**: Daily, weekly, or monthly pivot levels offer reliable zones for support and resistance.
---
### **Combining Buy/Sell Signals with Indicators**
To enhance accuracy, traders combine support and resistance levels with additional indicators such as:
- **RSI (Relative Strength Index)**: To confirm overbought (sell) or oversold (buy) conditions.
- **MACD (Moving Average Convergence Divergence)**: For momentum and trend reversals at key levels.
- **Volume Analysis**: To validate the strength of price movements near support or resistance.
By using support and resistance levels with these signals, traders can develop a structured approach to identifying high-probability trade setups.
Trend Strength Signals Multi timeframeThis indicator is a companion to the Trend Strength Signals Multi timeframe array, it shows possibly exhausted price levels from which traders are likely to take part of their profits and close positions. The purpose of this script is to estimate market peaks and dips based on how far the price is overextended.
XAUUSD STRATGEY BUY AND SELL SIGNALSThis indicator primarily focuses on the concepts of Overbought and Oversold conditions, serving as a tool for short-term trading strategies. It provides modest yet reliable signals for traders. The fundamental operation of the indicator is outlined as follows:
For purchasing, the indicator monitors the asset for an Oversold condition as indicated by the Relative Strength Index (RSI). Subsequently, a buy signal is generated when the price chart crosses the lower boundary of the Envelope indicator from below to above.
Conversely, for selling, the indicator observes the asset for an Overbought condition according to the RSI. A sell signal is triggered when the price chart crosses the upper boundary of the Envelope indicator from above to below.
The underlying principle is the alignment between the price movement and the RSI readings.
The optimal settings I have developed are as follows:
- Time frame: 15 minutes
- Overbought threshold: 80
- Oversold threshold: 25
- RSI Length: 8
This approach can be applied across various financial instruments, but it is essential to establish clear profit and loss limits.
Phlixe_Horizontal_Round_Number_LevelsCreates horizontal lines at significant levels
Order of magnitude for line intervals is adjustable to make this indicator versatile across price ranges of all sizes in forex, futures, cfds.
Signals from Pawel 2A trend based on four exponential moving averages. Signals displayed when two EMAs start to converge may give weak results or even none, potentially triggering a stop loss. Try to open positions right after the trend changes and when the EMA lines are far apart. The indicator was tested on XAU/USD on a 5-minute timeframe, but it will work on all timeframes and other pairs. Good luck ;-)
Fibonacci Retracement Dynamic with RSI TickerCe script de retracement de Fibonacci dynamique trace les niveaux de Fibonacci en temps réel sur le graphique, en se basant sur les derniers hauts et bas du marché. Il met à jour ces niveaux au fur et à mesure de l'évolution des prix. Les niveaux de Fibonacci calculés incluent : 0%, 23.6%, 38.2%, 50%, 61.8%, 78.6%, et 100%, chacun étant configurable avec des couleurs personnalisées.
Le script permet également de suivre la valeur du RSI en temps réel. Le label RSI est affiché en haut à droite du graphique, mettant à jour la valeur du RSI à chaque barre.
Caractéristiques principales :
Calcul des niveaux de Fibonacci sur les derniers hauts et bas détectés.
Affichage dynamique des niveaux de Fibonacci en temps réel, avec des couleurs personnalisables.
Mise à jour du RSI à chaque barre avec un label RSI positionné à droite du graphique.
Ce script est idéal pour les traders qui utilisent les retracements de Fibonacci pour repérer les zones de support et de résistance clés, tout en surveillant en temps réel la force du marché via le RSI.
This dynamic Fibonacci retracement script plots Fibonacci levels in real-time on the chart, based on the latest market highs and lows. It updates these levels as the price evolves. The calculated Fibonacci levels include: 0%, 23.6%, 38.2%, 50%, 61.8%, 78.6%, and 100%, each configurable with custom colors.
The script also allows you to track the real-time RSI value. The RSI label is displayed at the top right of the chart, updating the RSI value at each bar.
Key Features:
Fibonacci levels calculated based on the latest detected highs and lows.
Dynamic display of Fibonacci levels in real-time with customizable colors.
RSI updated at each bar with an RSI label positioned at the right side of the chart.
This script is ideal for traders using Fibonacci retracements to identify key support and resistance areas while simultaneously monitoring market strength in real-time with the RSI.
Fibonacci TsunamiFibonacci Moving Averages (FMAs) are a technical analysis tool used in financial markets to help identify trends and potential reversal points. They combine the concept of moving averages with Fibonacci retracement levels, which are widely used in technical analysis to predict possible support and resistance levels based on the Fibonacci sequence.
Key Concepts:
Moving Averages (MA): A moving average is a mathematical calculation that smooths out past price data to create a trend-following indicator. It helps to identify the direction of the trend and reduce market noise.
Fibonacci Sequence: This is a series of numbers where each number is the sum of the two preceding ones. In technical analysis, Fibonacci retracement levels (like 23.6%, 38.2%, 50%, 61.8%, and 100%) are often used to identify potential support and resistance levels.
How Fibonacci Moving Averages Work:
Fibonacci Moving Averages are calculated by applying Fibonacci ratios to the standard moving average calculation. The most common Fibonacci ratios used in FMAs are 34, 55, 89, 144, and 233. These numbers are significant because they are part of the Fibonacci sequence and are believed to represent key points of support and resistance in financial markets.
For example:
A 34-period Fibonacci moving average would be calculated using the last 34 data points.
A 55-period Fibonacci moving average would be calculated using the last 55 data points.
Other Fibonacci periods, such as 89 and 144, could also be used depending on the trader's preferences.
How Traders Use Fibonacci Moving Averages:
Trend Identification: Traders use FMAs to help identify the direction of the trend. When the price is above a Fibonacci moving average, it suggests that the market is in an uptrend. Conversely, when the price is below the moving average, it may indicate a downtrend.
Support and Resistance Levels: The Fibonacci moving averages themselves can act as dynamic support and resistance levels. For instance, if the price is approaching a Fibonacci moving average from below, it may encounter resistance. If the price is approaching from above, it may find support.
Crossovers: Similar to other moving averages, Fibonacci moving averages are often used in conjunction with one another. A crossover of a shorter-term FMA (e.g., 34-period) above a longer-term FMA (e.g., 233-period) can indicate a bullish signal, while the opposite crossover may signal a bearish trend.
Combining with Other Indicators: Many traders use FMAs in conjunction with other technical analysis tools, like the relative strength index (RSI) or MACD, to confirm signals and enhance decision-making.
Example:
If a trader is using the 34-period and 55-period Fibonacci moving averages, a bullish crossover would occur when the 34-period FMA crosses above the 55-period FMA. This is often considered a buy signal.
If the price is approaching the 89-period Fibonacci moving average after an uptrend, the 89-period level may act as resistance and could be used to set a target price.
RV- ProTime Dynamic Trend AnalyzerRV-ProTime Dynamic Trend Analyzer is a state-of-the-art trading indicator meticulously designed to provide unparalleled insights across all timeframes. It combines essential tools for trend, momentum, and key level analysis, making it a one-stop solution for traders. The core feature, Dynamic Multi-Timeframe Supertrend, sets this indicator apart, complemented by additional tools for comprehensive market analysis. Here’s everything this indicator offers:
Key Features:
1. Dynamic Multi-Timeframe Supertrend (Core Feature)
Daily, Weekly, Monthly, and Yearly Supertrends are plotted directly on the chart, providing precise trend direction across multiple timeframes.
Lower timeframe Supertrends are automatically hidden on higher timeframe charts (e.g., Weekly and Monthly ) to reduce clutter and maintain precision, ensuring a clean and actionable view.
These Supertrends help identify major trend reversals, pullbacks, and continuation zones, empowering traders to make informed decisions regardless of the trading horizon.
Whether you’re scalping on intraday charts or strategizing long-term trades, this feature ensures you always have the right trend perspective at your fingertips.
2. Quarterly and Yearly Earnings Table
A built-in table to display Quarterly and Yearly Earnings, allowing traders to incorporate fundamental analysis into their strategies effortlessly.
Provides quick insights into the financial health and performance of stocks, helping traders align with strong-performing assets.
3. RSI & MACD Multi-Timeframe Table
Visualize RSI and MACD values across multiple timeframes, including 1-minute, 5-minute, 15-minute, 1-hour, Daily, Weekly, and Monthly.
This table helps detect overbought/oversold zones and shifts in momentum, offering a robust foundation for entry and exit strategies.
4. Exponential Moving Averages (EMAs)
Includes four customizable EMAs to support moving average crossovers, trend identification, and dynamic support/resistance levels.
Ideal for traders seeking to refine their entries and exits based on trend-following strategies.
5. Fibonacci Pivots
Features two sets of Fibonacci-based Pivot Points for higher and lower timeframes.
These pivots act as critical support and resistance zones, aiding traders in identifying key price levels for potential reversals or breakouts.
6. Auto 52-Week and All-Time High/Low Levels
Automatically plots 52-week highs/lows and all-time highs/lows, with visually distinct candle coloring for added clarity.
Provides immediate identification of stocks reaching pivotal breakout or reversal zones, making it invaluable for trend-following and breakout strategies.
7. User-Friendly Customization
All features are toggleable, allowing traders to customize the indicator based on their unique trading preferences and strategies.
Why This Indicator Stands Out:
The RV-ProTime Dynamic Trend Analyzer isn’t just another indicator—it’s a comprehensive trend detection and market analysis system. The Daily, Weekly, Monthly Supertrends serve as its backbone, offering unmatched flexibility and adaptability for traders across all timeframes. These Supertrends allow traders to:
Identify and align with the prevailing trend at any level.
Avoid conflicting signals by dynamically hiding lower timeframe trends on higher timeframe charts.
Gain an edge in both short-term and long-term trading strategies by providing a consistent view of market direction.
Whether you’re an intraday scalper, swing trader, or position trader, this indicator adapts to your needs, combining the power of trend-following tools with fundamental and technical insights.
Unlock the ultimate trading experience with the RV-ProTime Dynamic Trend Analyzer: backtest the indicator, take trades with the best risk-reward setups, and trade with a stop-loss aligned with your strategy to achieve consistent success!