ICT Killzones & Pivots [TFO] [FJK]Originally by tradeforopp I added the concept of Open Ranges.
ToDo:
- configure alerts
- add more box style options
Indicatori e strategie
(Mustang Algo) Stochastic RSI + Triple EMAStochastic RSI + Triple EMA (StochTEMA)
Overview
The Stochastic RSI + Triple EMA indicator combines the Stochastic RSI oscillator with a Triple Exponential Moving Average (TEMA) overlay to generate clear buy and sell signals on the price chart. By measuring RSI overbought/oversold conditions and confirming trend direction with TEMA, this tool helps traders identify high-probability entries and exits while filtering out noise in choppy markets.
Key Features
Stochastic RSI Calculation
Computes a standard RSI over a user-defined period (default 50).
Applies a Stochastic oscillator to the RSI values over a second user-defined period (default 50).
Smooths the %K line by taking an SMA over a third input (default 3), and %D is an SMA of %K over another input (default 3).
Defines oversold when both %K and %D are below 20, and overbought when both are above 80.
Triple EMA (TEMA)
Calculates three successive EMAs on the closing price with the same length (default 9).
Combines them using TEMA = 3×(EMA1 – EMA2) + EMA3, producing a fast-reacting trend line.
Bullish trend is identified when price > TEMA and TEMA is rising; bearish trend when price < TEMA and TEMA is falling; neutral/flat when TEMA change is minimal.
Signal Logic
Strong Buy: Previous bar’s Stoch RSI was oversold (both %K and %D < 20), %K crosses above %D, and TEMA is in a bullish trend.
Medium Buy: %K crosses above %D (without requiring oversold), TEMA is bullish, and previous %K < 50.
Weak Buy: Previous bar’s %K and %D were oversold, %K crosses above %D, TEMA is flat or bullish (not bearish).
Strong Sell: Previous bar’s Stoch RSI was overbought (both %K and %D > 80), %K crosses below %D, and TEMA is bearish.
Medium Sell: %K crosses below %D (without requiring overbought), TEMA is bearish, and previous %K > 50.
Weak Sell: Previous bar’s %K and %D were overbought, %K crosses below %D, TEMA is flat or bearish (not bullish).
Visual Elements on Chart
TEMA Line: Plotted in cyan (#00BCD4) with a medium-thick line for clear trend visualization.
Buy/Sell Markers:
BUY STRONG: Lime label below the candle
BUY MEDIUM: Green triangle below the candle
BUY WEAK: Semi-transparent green circle below the candle
SELL STRONG: Red label above the candle
SELL MEDIUM: Orange triangle above the candle
SELL WEAK: Semi-transparent orange circle above the candle
Candle & Background Coloring: When a strong buy or sell signal occurs, the candle body is tinted (semi-transparent lime/red) and the chart background briefly flashes light green (buy) or light red (sell).
Dynamic Support/Resistance:
On a strong buy signal, a green dot is plotted under that bar’s low as a temporary support marker.
On a strong sell signal, a red dot is plotted above that bar’s high as a temporary resistance marker.
Alerts
Strong Buy Alert: Triggered when Stoch RSI is oversold, %K crosses above %D, and TEMA is bullish.
Strong Sell Alert: Triggered when Stoch RSI is overbought, %K crosses below %D, and TEMA is bearish.
General Buy Alert: Triggered on any bullish crossover (%K > %D) when TEMA is not bearish.
General Sell Alert: Triggered on any bearish crossover (%K < %D) when TEMA is not bullish.
Inputs
Stochastic RSI Settings (group “Stochastic RSI”):
K (smoothK): Period length for smoothing the %K line (default 3, minimum 1)
D (smoothD): Period length for smoothing the %D line (default 3, minimum 1)
RSI Length (lengthRSI): Number of bars used for the RSI calculation (default 50, minimum 1)
Stochastic Length (lengthStoch): Number of bars for the Stochastic oscillator applied to RSI (default 50, minimum 1)
RSI Source (src): Price source for the RSI (default = close)
TEMA Settings (group “Triple EMA”):
TEMA Length (lengthTEMA): Number of bars used for each of the three EMAs (default 9, minimum 1)
How to Use
Add the Script
Copy and paste the indicator code into TradingView’s Pine Editor (version 6).
Save the script and add it to your chart as “Stochastic RSI + Triple EMA (StochTEMA).”
Adjust Inputs
Choose shorter lengths for lower timeframes (e.g., intraday scalping) and longer lengths for higher timeframes (e.g., swing trading).
Fine-tune the Stochastic RSI parameters (K, D, RSI Length, Stochastic Length) to suit the volatility of the instrument.
Modify TEMA Length if you prefer a faster or slower moving average response.
Interpret Signals
Primary Entries/Exits: Focus on “BUY STRONG” and “SELL STRONG” signals, as they require both oversold/overbought conditions and a confirming TEMA trend.
Confirmation Signals: Use “BUY MEDIUM”/“BUY WEAK” to confirm or add to an existing position when the market is trending. Similarly, “SELL MEDIUM”/“SELL WEAK” can be used to scale out or confirm bearish momentum.
Support/Resistance Dots: These help identify recent swing lows (green dots) and swing highs (red dots) that were tagged by strong signals—useful to place stop-loss or profit-target orders.
Set Alerts
Open the Alerts menu (bell icon) in TradingView, choose this script, and select the desired alert condition (e.g., “BUY Signal Strong”).
Configure notifications (popup, email, webhook) according to your trading workflow.
Notes & Best Practices
Filtering False Signals: By combining Stoch RSI crossovers with TEMA trend confirmation, most false breakouts during choppy price action are filtered out.
Timeframe Selection: This indicator works on all timeframes, but shorter timeframes may generate frequent signals—consider higher-timeframe confirmation when trading lower timeframes.
Risk Management: Always use proper position sizing and stop-loss placement. An “oversold” or “overbought” reading can remain extended for some time in strong trends.
Backtesting/Optimization: Before live trading, backtest different parameter combinations on historical data to find the optimal balance between sensitivity and reliability for your chosen instrument.
No Guarantee of Profits: As with any technical indicator, past performance does not guarantee future results. Use in conjunction with other forms of analysis (volume, price patterns, fundamentals).
Author: Your Name or Username
Version: 1.0 (Pine Script v6)
Published: June 2025
Feel free to customize input values and visual preferences. If you find bugs or have suggestions for improvements, open an issue or leave a comment below. Trade responsibly!
CODEX#33CODEX#33 is a dynamic EMA-based system designed to visualize trend strength, volatility, and key market zones. It includes:
5 customizable EMAs (13, 21, 50, 200, 800)
Optional labels with future offset to keep charts clean
An EMA 50-based volatility cloud using standard deviation
Full control over visibility, colors, and label display
Built for clean execution and easy visual tracking of momentum shifts across all timeframes.
Simplicity is key!
Patrick BTC Exponential ModelA test of an exp reversion model, WIP
BTC(t) = a × e^(r × t)
Where:
- BTC(t) = Bitcoin price at time t
- a = Anchor coefficient (fitted parameter)
- r = Growth rate per year (fitted parameter)
- t = Years since anchor date
- e = Euler's number (2.71828...)
Credit to @GallantCryptoYT (but based on, no implication of endorsement either way)
Percent Change of Range Candles - FullTHIS IS THE FINAL VERSION
Description of the Percent Change of Range Candles - Full Indicator
This indicator displays the percentage change relative to the price range (high-low) over a specified period and combines multiple timeframes to provide a more accurate view of market trends and momentum. The idea is to not rely solely on classic closing prices but also to consider the opening price, highest, and lowest values within the selected period, offering deeper insight into price movements.
What makes this indicator better than the previous two?
Combination of multiple timeframes and parameters — the indicator calculates not only one level of percentage change but also uses additional calculations for shorter periods (e.g., 25% of the main period length). This allows it to better track subtle changes and provide signals less prone to noise.
Visual representation with colors and horizontal levels — it clearly displays key percentage change levels and whether the current trend is positive or negative, making interpretation easier without additional analysis.
Candle visualization within the indicator (plotcandle) — unlike previous indicators that might display only lines, this one shows candles within the indicator window, allowing you to follow visual patterns that often add extra value.
Better adaptation to trend changes — the indicator dynamically adjusts input parameters depending on price direction (positive or negative change), making it more flexible and suitable for different market conditions.
How the indicator works
It first calculates the percentage change of the closing price relative to the high-low range over a chosen period (default 100 candles).
Then, it calculates the average change value from the previous five periods to smooth out sudden oscillations.
Additionally, it calculates values for a shorter period (25% of the total length), which are dynamically used as "high" or "low" values depending on the current trend (positive or negative).
Horizontal lines mark important percentage change levels (100%, 70%, 0%, -70%, -100%), serving as visual guides for trend strength and direction.
Candles inside the indicator further visualize the relationship between average and current values.
Purpose and application
This indicator is designed to track trend strength and market movements through percentage analysis of price ranges. It can be used for:
Detecting the start and end of trends,
Recognizing strong reversals or confirming trend continuation,
Complementary analysis alongside other technical indicators,
Facilitating decision-making in scalping and swing trading strategies.
What to watch out for
Like any indicator based on historical data, it does not guarantee success and should be used alongside other tools to confirm signals.
The length period (length) should be adjusted according to the market type and trading timeframe — longer periods provide more stable but slower signals, while shorter ones are more sensitive to noise.
Pay attention to the colors and levels on the indicator, as crossing horizontal lines may indicate potential trend reversals or strengthening.
Candles within the indicator window can help identify formations signaling entries or exits.
EMA Crossover + SuperTrend Retest//@version=5
indicator("EMA Crossover + SuperTrend Retest", overlay=true)
// Inputs for SuperTrend
atrLength = input.int(10, "ATR Length", minval=1)
Factor = input.float(3.0, "SuperTrend Multiplier", step=0.1)
// Calculate EMAs
ema13 = ta.ema(close, 13)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
// Calculate SuperTrend
= ta.supertrend(Factor, atrLength)
// Plot EMAs
plot(ema13, "EMA 13", color=color.new(#FF6D00, 0))
plot(ema50, "EMA 50", color=color.new(#2962FF, 0))
plot(ema200, "EMA 200", color=color.new(#00BFA5, 0))
// Plot SuperTrend
plot(supertrend, "SuperTrend",
color=direction == 1 ? color.rgb(230, 13, 13) : color.rgb(17, 255, 0),
linewidth=2)
// Trend Conditions
uptrendFilter = ema50 > ema200 and close > supertrend
downtrendFilter = ema50 < ema200 and close < supertrend
// Crossover Conditions with Trend Filter
bullishCross = ta.crossover(ema13, ema50) and uptrendFilter
bearishCross = ta.crossunder(ema13, ema50) and downtrendFilter
// Retest Conditions (Both EMAs and SuperTrend)
bullishRetest = bullishCross and
(low <= ema50) and
(low <= ema200) and
(low <= supertrend)
bearishRetest = bearishCross and
(high >= ema50) and
(high >= ema200) and
(high >= supertrend)
// Plot Signals
plotshape(bullishRetest, "Bullish Signal", shape.triangleup,
location.belowbar, color=color.green, size=size.small)
plotshape(bearishRetest, "Bearish Signal", shape.triangledown,
location.abovebar, color=color.red, size=size.small)
// Alert Conditions
alertcondition(bullishRetest, "Bullish Alert",
"EMA13↑50 + Retest 50/200/SuperTrend")
alertcondition(bearishRetest, "Bearish Alert",
"EMA13↓50 + Retest 50/200/SuperTrend")
Breakout Strategy with EMA & VolumeA breakout strategy combined with EMA and Volume data to give you the best results.
Indicator includes:
EMA 20 and EMA 50
Volume indicator
RSI (14)
Anti-SMT + FVG StrategieMade by Laila
4h gives 57% winrate!
Instead of trading based on an expected SMT divergence, you assume that the divergence will not continue. You combine this with a Fair Value Gap (FVG) that is touched by price as additional confirmation.
Anti-SMT Logic (False Divergence)
Short:
EURUSD makes a new high (candle 1)
DXY does not make a new low
Long:
EURUSD makes a new low (candle 1)
DXY does not make a new high
This looks like SMT divergence, but your expectation is: "There will be no SMT."
Fair Value Gap (FVG) Detection
Detects an unfilled gap between candle 1 and 3.
You only trade if the FVG is touched during:
🔹 Candle 1 (the false SMT candle) or
🔹 Candle 2 (the entry candle)
Extra Filters
Only go long if price is above the 50 EMA
Only go short if price is below the 50 EMA
Only trade between 08:00 and 18:00 UTC
Wait 10 candles cooldown between trades
Result:
You only trade when:
There is a possible SMT illusion
An FVG is touched
The setup aligns with trend, session, and timing
This gives you a rational, rare, but strong edge.
Pierre's H4 EMA/MA Compression Strategy (BTC)Pierre's logic and trading strategy from the X post and its related threads. The post focuses on Bitcoin (BTC) price action on a 4-hour (H4) chart, using Exponential Moving Averages (EMAs) and Moving Averages (MAs) to identify a potential "EMA/MA compression" scenario, which is a key part of his analysis.
Summary of Pierre's Logic
Pierre is analyzing Bitcoin's price movement on the H4 timeframe, focusing on a technical pattern he calls "EMA/MA compression." This concept is central to his analysis and involves the interaction of key moving averages (H4 100 MA, H4 200 EMA, and H4 300 MA) to predict price behavior. Here's the breakdown of his logic:
EMA/MA Compression Concept:
Pierre describes "EMA/MA compression" as a scenario where the price consolidates around key moving averages, leading to a tightening of volatility before a breakout or breakdown.
In this case, the H4 100 MA, H4 200 EMA, and H4 300 MA are the critical levels to watch. These moving averages act as dynamic support/resistance levels, and their behavior (break, hold, or flip) dictates the trend direction.
He notes that this compression often follows a cycle: EMA/MA compression → Trend → Gap Fills → Repeat. This cycle suggests that after a compression phase, the price tends to trend, fill any price gaps, and then return to another compression phase.
Key Levels and Conditions for a Bullish Scenario:
H4 100 MA: Must break or flip to the upside. A break above this level signals bullish momentum, while a failure to hold above it (a "flip") invalidates the bullish case.
H4 200 EMA: Acts as an "intermediary" level that must hold during pullbacks. If this level holds, it supports the bullish structure.
H4 300 MA: A critical support level. It must hold to keep the bullish scenario intact. If the price loses this level (and it flips to resistance), the bullish outlook is invalidated.
Pierre mentions that after the price breaks the H4 100 MA, it should aim to fill gaps between 109.5 and 110.5 (likely in thousands, so $109,500–$110,500). If the H4 200 EMA holds, the price might pull back to the H4 300 MA, where it could consolidate further before continuing the trend.
Invalidation Scenarios:
The bullish scenario is invalidated if:
The H4 100 MA is broken and flips to resistance (i.e., price closes below it after initially breaking above).
The H4 300 MA is lost and flips to resistance (i.e., price closes below it and fails to reclaim it).
Current Market Context:
Pierre notes a "nice bounce" in BTC's price, bringing it back into the compression zone. The price is currently fighting a key area on lower timeframes (LTF), likely referring to shorter timeframes like H1 or M15.
He mentions that all gaps have been filled for now (referencing the cycle of gap fills), which aligns with his expectation of reduced volatility as the price enters another compression phase.
Historical Context and Consistency:
Pierre has been tracking this scenario since the H4 100 MA break, as shared in his group @TheHavenCrypto
. He references notes from Monday (likely June 2, 2025, as the post is from June 6), indicating that his analysis has been consistent over the week.
In a follow-up post, he reflects on a recent trade where he took partial profits on the bounce but couldn’t fully capitalize on the move due to being on his phone and managing only a fraction of his intended position size near the H4 300 MA (for BTC) and H4 200 EMA (for ETH).
Pierre's Trading Strategy
Based on the post and its context, Pierre’s trading strategy revolves around the EMA/MA compression framework. Here’s how he approaches trades:
Setup Identification:
Pierre identifies setups using the H4 timeframe, focusing on the interaction of the H4 100 MA, H4 200 EMA, and H4 300 MA.
He looks for a "compression" phase where the price consolidates around these moving averages, signaling a potential breakout or breakdown.
In this case, the price breaking the H4 100 MA to the upside was his initial signal for a bullish setup.
Entry Points:
Pierre likely entered a long position (buy) near the H4 300 MA or H4 200 EMA during the recent bounce, as he mentions taking partial profits on the move.
He prefers entering after a pullback to these key levels (e.g., H4 200 EMA or H4 300 MA) as long as they hold as support. For example, in Thread 1 (Post 1930270942871118081), he shares a chart showing a long entry near the H4 300 MA with an upside target near 110,000–111,000.
Target Setting:
His primary target after the H4 100 MA break is to fill gaps between $109,500 and $110,500.
If the price reaches these levels and the H4 200 EMA holds, he expects a potential pullback to the H4 300 MA, followed by another leg up (as part of the trend phase in his cycle).
Risk Management:
Pierre sets clear invalidation levels:
A close below the H4 100 MA after breaking above it.
A close below the H4 300 MA with a failure to reclaim it.
He takes partial profits on bounces, as seen in his follow-up post where he mentions securing gains but not fully capitalizing on the move due to limited position size.
Position Sizing and Execution:
Pierre mentions being limited by trading from his phone, which restricted his position size. This suggests he typically scales into trades with a planned size but adjusts based on execution conditions.
He also notes going "AFK for the weekend" after taking profits, indicating a disciplined approach to stepping away from the market when not actively monitoring.
Cycle-Based Trading:
His strategy follows the cycle of EMA/MA compression → Trend → Gap Fills → Repeat. After the gaps are filled, he expects volatility to tighten (another compression phase), which could set up the next trade.
Key Takeaways for Traders
Focus on Key Levels: Pierre’s strategy hinges on the H4 100 MA, H4 200 EMA, and H4 300 MA. These levels are used to confirm trends, identify entries, and set invalidation points.
Patience for Compression: He waits for the price to enter a compression phase (tight consolidation around MAs) before expecting a breakout or breakdown.
Gap-Filling as a Target: Pierre uses price gaps (e.g., $109,500–$110,500) as targets, aligning with the market’s tendency to fill these gaps (as noted in the related web result from investing.com about CME gaps).
Risk Management: He has clear invalidation rules and takes partial profits to lock in gains while letting the trade play out.
Cycle Awareness: His trades are part of a broader cycle (compression → trend → gap fill → repeat), which helps him anticipate market behavior.
Additional Context from Related Threads
Thread 1 (June 4–June 6): Pierre’s earlier posts (e.g., Post 1930270942871118081) show historical examples of EMA/MA compression leading to trends and gap fills, reinforcing his current analysis. He also shares a chart with a potential upside target of $110,000–$111,000 if the H4 300 MA holds.
Thread 2 (June 3): Pierre mentions a Daily (D1) timeframe analysis where the D1 100 MA and D1 200 EMA align with range lows, suggesting a potential "wet dream swing long opportunity" if the price holds these levels. This indicates he’s also considering higher timeframes for confirmation.
Thread 3 (May 27): Pierre’s earlier analysis highlights similar concepts (e.g., H4 100 MA break, H4 200 EMA hold), showing consistency in his approach over time.
Conclusion
Pierre’s logic is rooted in technical analysis, specifically the interaction of moving averages on the H4 timeframe to identify "EMA/MA compression" setups. His strategy involves buying on pullbacks to key support levels (H4 200 EMA, H4 300 MA) after a breakout (H4 100 MA), targeting gap fills ($109,500–$110,500), and managing risk with clear invalidation levels. He follows a cyclical approach to trading, expecting periods of compression, trending, and gap-filling to repeat, which guides his entries, exits, and overall market outlook.
GER40 BIAS Forecast [ML-Based]🎯 Purpose:
This indicator provides a daily directional bias (LONG / SHORT / FLAT) for the German DAX40 index (GER40) using a statistically optimized scoring model, developed with 6 years of historical data and verified through machine learning analysis.
🧠 How the Score Works (ML-derived):
Each trading day receives a bias score (0–3) for both long and short setups, based on these 3 factors from the daily candle:
Condition Long Score Logic Short Score Logic
1. Candle Direction Close > Open → +1 Close < Open → +1
2. VWAP Slope VWAP > VWAP → +1 VWAP < VWAP → +1
3. Volatility Strength Range > SMA(20) → +1 Close < Yesterday's Low → +1 (Rejection)
➡️ A score of 2 or more triggers a Long or Short Bias for the day.
These scoring rules are derived from a machine learning model trained on 6 years of DAX data, identifying the most predictive features for directional follow-through.
📘 Bias Interpretation:
Score Result Daily Bias Background Color
Long Score ≥ 2 LONG Green
Short Score ≥ 2 SHORT Red
Both < 2 FLAT Gray
📍 Indicator Features:
🎨 Background coloring to visualize daily bias directly on intraday charts
🔢 Optional score labels (e.g. “Long: 2 | Short: 1”) per calendar day
📈 VWAP line plotted for additional intraday context
❌ Entry signals removed – this version focuses solely on forecasting directional bias
💡 Use Case:
Morning planning aid
Filtering for high-probability intraday setups
Combining with session-based entry systems
Premarket & Previous Day High/LowLines for Premarket High Low as well as Previous Day High and Low. Also adds Bollinger Bands. Colors the Bollinger Bands depending wether the Close is above or below PMH or PML
Babil34 Comparative Average PanelBabil34 Comparative Average Panel is an advanced moving averages dashboard that allows you to add and compare up to 5 EMAs, 5 DEMAs, and 5 SMAs simultaneously.
You can independently set the period, source, and timeframe for each average. With its colorful table and optional labels, you can easily observe the differences, trend changes, and crossovers between all averages at a glance.
It is suitable for both short-term and long-term strategies and lets you monitor multiple averages side by side.
Key Features:
Support for up to 5 independent EMAs, 5 DEMAs, and 5 SMAs
Multi-timeframe and multi-source selection
Clean, colorful table visualization
Toggleable labels and table for flexibility
Compatible with all markets and timeframes
Enhanced visual and technical analysis
This panel is specifically designed for traders who want to compare different types and periods of moving averages at a glance.
OBV + Momentum + DI+ Dashboard 📊 Script Description: OBV + Momentum + DI+ Dashboard
This custom TradingView indicator combines three powerful technical analysis tools—On-Balance Volume (OBV), Momentum (ROC), and Directional Movement Index (+DI)—into a single, easy-to-read dashboard.
🔍 Key Features:
✅ Buy & Sell Signals
Plots signals on the chart when multiple conditions align:
Buy Signal: Bullish candle + Rising OBV + Positive Momentum + Strong +DI
Sell Signal: Bearish candle + Falling OBV + Negative Momentum + Weak +DI
✅ Dashboard Panel (Top Center)
A real-time dashboard displays key market conditions:
Price Action (Bullish, Bearish, or Neutral)
OBV Trend (Rising, Falling, or Flat)
Momentum (Rising, Falling, or Flat)
+DI Strength (Strong, Weak, or Neutral)
✅ Visual Enhancements
Color-coded trends for quick interpretation.
Compact table view in the center top of the chart.
📈 Technical Indicators Used:
OBV (On-Balance Volume): Measures buying/selling pressure via volume.
Momentum (Rate of Change): Detects acceleration/deceleration in price movement.
+DI from DMI/ADX: Indicates the strength of the uptrend.
This tool is ideal for momentum traders, volume analysts, and those who prefer a confluence-based trading approach. Use it on any time frame or asset to help confirm entries and exits with greater confidence.
Psychological Levels + Buffer ZonesThis indicator automatically draws major (100-pip) and minor (50-pip) psychological levels on your Forex chart, along with optional buffer zones for smarter trade entries. Zones help you visually capture breakouts, retests, and fakeouts. Includes:
Major & minor psych levels
Adjustable buffer zones (±0.1%, etc.)
Customizable zone color & transparency
Optional ATR trailing lines for trend confirmation
Perfect for scalpers, breakout traders, and zone-based strategies.
Darren - Engulfing + MACD CrossDarren – Engulfing + MACD Cross
Overall Behavior
Identify an engulfing candle (bullish or bearish).
Wait up to windowBars bars for the corresponding MACD crossover (bullish engulfing → MACD cross up; bearish engulfing → MACD cross down).
If the crossover occurs within that window, trigger an entry (long or short) and close any opposite open trade.
Inputs
• macdFast (default 12): length of MACD fast EMA
• macdSlow (default 26): length of MACD slow EMA
• macdSignal (default 9): length of MACD signal line
• windowBars (default 3): maximum bars allowed between an engulfing candle and a MACD crossover
Indicators
• macdLine and signalLine are calculated using ta.macd(close, macdFast, macdSlow, macdSignal)
• macdHist = macdLine – signalLine, plotted as columns (green when ≥ 0, red when < 0)
Engulfing Pattern Detection
• Bullish engulfing (bullEngulfing) is true when the previous candle is bearish (close < open ), the current candle is bullish (close > open), and the current body fully engulfs the previous body (open < close and close > open ).
• Bearish engulfing (bearEngulfing) is the inverse: previous candle bullish, current candle bearish, and current body fully engulfs the prior body.
MACD Crossover Detection
• macdCrossUp is true when macdLine crosses above signalLine.
• macdCrossDown is true when macdLine crosses below signalLine.
Timing Logic
• barsSinceBull = ta.barssince(bullEngulfing) returns number of bars since the last bullish engulfing.
• barsSinceBear = ta.barssince(bearEngulfing) returns number of bars since the last bearish engulfing.
• longCondition occurs if a MACD cross up happens within windowBars bars of a bullish engulfing (barsSinceBull ≤ windowBars and macdCrossUp).
• shortCondition occurs if a MACD cross down happens within windowBars bars of a bearish engulfing (barsSinceBear ≤ windowBars and macdCrossDown).
Chart Markers
• “Bull” label below bar whenever bullEngulfing is true.
• “Bear” label above bar whenever bearEngulfing is true.
• Small “Up” ▲ below bar when macdCrossUp is true.
• Small “Down” ▼ above bar when macdCrossDown is true.
• Triangle ▲ below bar for Long Entry (longCondition).
• Triangle ▼ above bar for Short Entry (shortCondition).
Entry & Exit Rules
• On longCondition: enter “Long”, and close any existing “Short” position.
• On shortCondition: enter “Short”, and close any existing “Long” position.
Forex Session Levels + Dashboard (AEST)This is the only indicator you will EVER need for the breakthrough and retest strategy.
Follow me on IG for more trading tips!
@LiviuPircalabu10
Golden Key: Opening Channel DashboardGolden Key: Opening Channel Dashboard
Complementary to the original Golden Key – The Frequency
Upgrade of 10 Monday's 1H Avg Range + 30-Day Daily Range
This indicator provides a structured dashboard to monitor the opening channel range and related metrics on 15m and 5m charts. Built to work alongside the Golden Key methodology, it focuses on pip precision, average volatility, and SL sizing.
What It Does
Detects first 4 candles of the session:
15m chart → first 4 Monday candles (1 hour)
5m chart → first 4 candles of each day (20 minutes)
Calculates pip range of the opening move
Stores and averages the last 10 such ranges
Calculates daily range average over 10 or 30 days
Generates SL size based on your multiplier setting
Auto-adjusts for FX, JPY, and XAUUSD pip sizes
Displays all values in a clean table in the top-right
How to Use It
Add to a 15m or 5m chart
Compare the current opening range to the average
Use the daily average to assess broader volatility
Define SL size using the opening range x multiplier
Customize display colors per table row
About This Script
This is not a visual box-style indicator. It is designed to complement the original “Golden Key – The Frequency” by focusing on metric output. It is also an upgraded version of the earlier "10 Monday’s 1H Avg Range" script, now supporting multi-timeframe logic and additional customization.
Disclaimer
This is a technical analysis tool. It does not provide trading advice. Use it in combination with your own research and strategy.
EMA Pullback System 1:5 RRR [SL]EMA Trend Pullback System (1:5 RRR)
Summary:
This indicator is designed to identify high-probability pullback opportunities along the main trend, providing trade signals that target a high 1:5 Risk/Reward Ratio. It is a trend-following strategy built for patient traders who wait for optimal setups.
Strategy Logic:
The system is based on three Exponential Moving Averages (EMAs): 21, 50, and 200.
BUY Signal:
Trend (Uptrend): The price must be above the 200 EMA.
Pullback: The price must pull back into the "Dynamic Support Zone" between the 21 EMA and 50 EMA.
Confirmation: A strong Bullish Confirmation Candle (e.g., Bullish Engulfing) must form within this zone.
SELL Signal:
Trend (Downtrend): The price must be below the 200 EMA.
Pullback: The price must rally back into the "Dynamic Resistance Zone" between the 21 EMA and 50 EMA.
Confirmation: A strong Bearish Confirmation Candle (e.g., Bearish Engulfing) must form within this zone.
Key Features:
Clearly plots the 21, 50, and 200 EMAs on the chart.
Displays BUY and SELL labels when the rules are met.
Automatically calculates and plots Stop Loss (SL) and Take Profit (TP) levels for each signal.
The Risk/Reward Ratio for the Take Profit level is customizable in the settings (Default: 1:5).
How to Use:
Best suited for higher timeframes like H1 and H4.
It is crucial to wait for the signal candle to close before considering an entry.
While this is an automated tool, for best results, combine its signals with your own analysis of Price Action and Market Structure.
Disclaimer:
This is an educational tool and not financial advice. Trading involves substantial risk. Always use proper risk management. It is essential to backtest any strategy before deploying it with real capital.
Nifty Futures vs ATM Option Candle Mismatch//@version=5
indicator("Nifty Futures vs ATM Option Candle Mismatch", overlay=true)
// === Input symbols (modify these as needed) ===
niftySymbol = input.symbol("NSE:NIFTY1!", "Nifty Futures Symbol")
atmOptionSymbol = input.symbol("NSE:NIFTY24JUN22400CE", "ATM Option Symbol") // Replace with real ATM symbol dynamically
// === Get 5-min candles from both instruments ===
niftyClose = request.security(niftySymbol, "5", close)
niftyOpen = request.security(niftySymbol, "5", open)
optionClose = request.security(atmOptionSymbol, "5", close)
optionOpen = request.security(atmOptionSymbol, "5", open)
// === Determine candle color (green or red) ===
niftyGreen = niftyClose > niftyOpen
optionGreen = optionClose > optionOpen
// === Condition: Mismatch in candle direction ===
mismatch = (niftyGreen != optionGreen)
// === Plot an icon or background when mismatch occurs ===
plotshape(mismatch, title="Mismatch Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
bgcolor(mismatch ? color.new(color.red, 85) : na, title="Mismatch Background")
Volume Point of Control with Fib Based Profile🍀Description:
This indicator is a comprehensive volume profile analysis tool designed to identify key price levels based on trading activity within user-defined timeframes. It plots the Point of Control (POC), Value Area High (VAH), and Value Area Low (VAL), along with dynamically calculated Fibonacci levels derived from the developing period's range. It offers extensive customization for both historical and developing levels.
🍀Core Features:
Volume Profiling (POC, VAH, VAL):
Calculates and plots the POC (price level with the highest volume), VAH, and VAL for a selected timeframe (e.g., Daily, Weekly).
The Value Area percentage is configurable. 70% is common on normal volume profiles, but this script allows you to configure multiple % levels via the fib levels. I recommend using 2 versions of this indicator on a chart, one has Value Area at 1 (100% - high and low of lookback) and the second is a specified VA area (i.e. 70%) like in the chart snapshot above. See examples at the bottom.
Historical Levels:
Plots POC, VAH, and VAL from previous completed periods.
Optionally displays only "Unbroken" levels – historical levels that price has not yet revisited, which can act as stronger magnets or resistance/support.
The user can manage the number of historical lines displayed to prevent chart clutter.
Developing Levels:
Shows the POC, VAH, and VAL as they form in real-time during the current, incomplete period. This provides insight into intraday/intra-period value migration.
Dynamic Fibonacci Levels:
Calculates and plots Fibonacci retracement/extension levels based dynamically on the range between the developing POC and the developing VAH/VAL.
Offers 8 configurable % levels above and below POC that can be toggled on/off.
Visual Customization:
Extensive options for colors, line styles, and widths for all plotted levels.
Optional gradient fill for the Value Area that visualizes current price distance from POC - option to invert the colors as well.
Labels for developing levels and Fibonacci levels for easy identification.
🍀Characteristics:
Volume-Driven: Levels are derived from actual trading volume, reflecting areas of high participation and price agreement/disagreement.
Timeframe Specific: The results are entirely dependent on the chosen profile timeframe.
Dynamic & Static Elements: Developing levels and Fibs update live, while historical levels remain fixed once their period closes.
Lagging (Historical) & Potentially Leading: Historical levels are based on the past, but are often respected by future price action. Developing levels show current dynamics.
🍀How to Use It:
Identifying Support & Resistance: Historical and developing POCs, VAHs, and VALs are often key areas where price may react. Unbroken levels are particularly noteworthy.
Market Context & Sentiment: Trading above the POC suggests bullish strength/acceptance of higher prices, while trading below suggests bearishness/acceptance of lower prices.
Entry/Exit Zones: Interactions with these levels (rejections, breakouts, tests) can provide potential entry or exit signals, especially when confirming with other analysis methods.
Dynamic Targets: The Fibonacci levels calculated from the developing POC-VA range offer potential intraday/intra-period price targets or areas of interest.
Understanding Value Migration: Observing the movement of the developing POC/VAH/VAL throughout the period reveals where value is currently being established.
🍀Potential Drawbacks:
Input Sensitivity: The choice of timeframe, Value Area percentage, and volume resolution heavily influences the generated levels. Experimentation is needed for optimal settings per instrument/market. (I've found that Range Charts can provide very accurate volume levels on TV since the time element is removed. This helps to refine the accuracy of price levels with high volume.)
Volume Data Dependency: Requires accurate volume data. May be less reliable on instruments with sparse or questionable volume reporting.
Chart Clutter: Enabling all features simultaneously can make the chart busy. Utilize the line management inputs and toggle features as needed.
Not a Standalone Strategy: This indicator provides context and key levels. It should be used alongside other technical analysis tools and price action reading for robust decision-making.
Developing Level Fluctuation: Developing POC/VA/Fib levels can shift considerably, especially early in a new period, before settling down as more volume accumulates and time passes.
🍀Recommendations/Examples:
I recommend have this indicator on your chart twice, one has the VA set at 1 (100%) and has the fib levels plotted. The second has the VA set to 0.7 (70%) to highlight the defined VA.
Here is an example with 3 on a chart. VA of 100%, VA of 80%, and VA of 20%
NP Screener with Alerts For Nifty 50 [NITIN PADALE]//@version=6
indicator('NP Screener with Alerts For Nifty 50 ', overlay = true)
////////////
// INPUTS //
filter_enabled = input.bool(false, '', group = 'Filter', inline = 'Filter')
filter_column = input.string('Price', title = 'Column', options = , group = 'Filter', inline = 'Filter')
filter_from = input.float(-9999999, 'From', group = 'Filter', inline = 'Filter')
filter_to = input.float(9999999, 'To', group = 'Filter', inline = 'Filter')
// SMA
rsi_len = input.int(14, title = 'RSI Length', group = 'Indicators')
rsi_os = input.float(30, title = 'RSI Overbought', group = 'Indicators')
rsi_ob = input.float(70, title = 'RSI Oversold', group = 'Indicators')
// TSI
tsi_long_len = input.int(25, title = 'TSI Long Length', group = 'Indicators')
tsi_shrt_len = input.int(13, title = 'TSI Short Length', group = 'Indicators')
tsi_ob = input.float(30, title = 'TSI Overbought', group = 'Indicators')
tsi_os = input.float(-30, title = 'TSI Oversold', group = 'Indicators')
// ADX Params
adx_smooth = input.int(14, title = 'ADX Smoothing', group = 'Indicators')
adx_dilen = input.int(14, title = 'ADX DI Length', group = 'Indicators')
adx_level = input.float(40, title = 'ADX Level', group = 'Indicators')
// SuperTrend
sup_atr_len = input.int(10, 'Supertrend ATR Length', group = 'Indicators')
sup_factor = input.float(3.0, 'Supertrend Factor', group = 'Indicators')
/////////////
// SYMBOLS //
u01 = input.bool(true, title = '', group = 'Symbols', inline = 's01')
u02 = input.bool(true, title = '', group = 'Symbols', inline = 's02')
u03 = input.bool(true, title = '', group = 'Symbols', inline = 's03')
u04 = input.bool(true, title = '', group = 'Symbols', inline = 's04')
u05 = input.bool(true, title = '', group = 'Symbols', inline = 's05')
u06 = input.bool(true, title = '', group = 'Symbols', inline = 's06')
u07 = input.bool(true, title = '', group = 'Symbols', inline = 's07')
u08 = input.bool(true, title = '', group = 'Symbols', inline = 's08')
u09 = input.bool(true, title = '', group = 'Symbols', inline = 's09')
u10 = input.bool(true, title = '', group = 'Symbols', inline = 's10')
s01 = input.symbol('HDFCBANK', group = 'Symbols', inline = 's01')
s02 = input.symbol('ICICIBANK', group = 'Symbols', inline = 's02')
s03 = input.symbol('RELIANCE', group = 'Symbols', inline = 's03')
s04 = input.symbol('INFY', group = 'Symbols', inline = 's04')
s05 = input.symbol('BHARTIARTL', group = 'Symbols', inline = 's05')
s06 = input.symbol('LT', group = 'Symbols', inline = 's06')
s07 = input.symbol('ITC', group = 'Symbols', inline = 's07')
s08 = input.symbol('TCS', group = 'Symbols', inline = 's08')
s09 = input.symbol('AXISBANK', group = 'Symbols', inline = 's09')
s10 = input.symbol('SBIN', group = 'Symbols', inline = 's10')
//////////////////
// CALCULATIONS //
filt_col_id = switch filter_column
'Price' => 1
'RSI' => 2
'TSI' => 3
'ADX' => 4
'SuperTrend' => 5
=> 0
// Get only symbol
only_symbol(s) =>
array.get(str.split(s, ':'), 1)
id_symbol(s) =>
switch s
1 => only_symbol(s01)
2 => only_symbol(s02)
3 => only_symbol(s03)
4 => only_symbol(s04)
5 => only_symbol(s05)
6 => only_symbol(s06)
7 => only_symbol(s07)
8 => only_symbol(s08)
9 => only_symbol(s09)
10 => only_symbol(s10)
=> na
// for TSI
double_smooth(src, long, short) =>
fist_smooth = ta.ema(src, long)
ta.ema(fist_smooth, short)
// ADX
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : up > down and up > 0 ? up : 0
minusDM = na(down) ? na : down > up and down > 0 ? down : 0
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
adx_func(dilen, adxlen) =>
= dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
adx
screener_func() =>
// RSI
rsi = ta.rsi(close, rsi_len)
// TSI
pc = ta.change(close)
double_smoothed_pc = double_smooth(pc, tsi_long_len, tsi_shrt_len)
double_smoothed_abs_pc = double_smooth(math.abs(pc), tsi_long_len, tsi_shrt_len)
tsi = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
// ADX
adx = adx_func(adx_dilen, adx_smooth)
// Supertrend
= ta.supertrend(sup_factor, sup_atr_len)
// Set Up Matrix
screenerMtx = matrix.new(0, 6, na)
screenerFun(numSym, sym, flg) =>
= request.security(sym, timeframe.period, screener_func())
arr = array.from(numSym, cl, rsi, tsi, adx, sup)
if flg
matrix.add_row(screenerMtx, matrix.rows(screenerMtx), arr)
// Security call
screenerFun(01, s01, u01)
screenerFun(02, s02, u02)
screenerFun(03, s03, u03)
screenerFun(04, s04, u04)
screenerFun(05, s05, u05)
screenerFun(06, s06, u06)
screenerFun(07, s07, u07)
screenerFun(08, s08, u08)
screenerFun(09, s09, u09)
screenerFun(10, s10, u10)
///////////
// PLOTS //
var tbl = table.new(position.top_right, 6, 41, frame_color = #151715, frame_width = 1, border_width = 2, border_color = color.new(color.white, 100))
log.info(str.tostring(filt_col_id))
alert_msg = ''
if barstate.islast
table.clear(tbl, 0, 0, 5, 40)
table.cell(tbl, 0, 0, 'Symbol', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, 0, 'Price', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, 0, 'RSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, 0, 'TSI', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, 0, 'ADX', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, 0, 'Supertrend', text_halign = text.align_center, bgcolor = color.gray, text_color = color.white, text_size = size.small)
if matrix.rows(screenerMtx) > 0
for i = 0 to matrix.rows(screenerMtx) - 1 by 1
is_filt = not filter_enabled or matrix.get(screenerMtx, i, filt_col_id) >= filter_from and matrix.get(screenerMtx, i, filt_col_id) <= filter_to
if is_filt
if str.length(alert_msg) > 0
alert_msg := alert_msg + ','
alert_msg
alert_msg := alert_msg + id_symbol(matrix.get(screenerMtx, i, 0))
rsi_col = matrix.get(screenerMtx, i, 2) > rsi_ob ? color.red : matrix.get(screenerMtx, i, 2) < rsi_os ? color.green : #aaaaaa
tsi_col = matrix.get(screenerMtx, i, 3) > tsi_ob ? color.red : matrix.get(screenerMtx, i, 3) < tsi_os ? color.green : #aaaaaa
adx_col = matrix.get(screenerMtx, i, 4) > adx_level ? color.green : #aaaaaa
sup_text = matrix.get(screenerMtx, i, 5) > 0 ? 'Down' : 'Up'
sup_col = matrix.get(screenerMtx, i, 5) < 0 ? color.green : color.red
table.cell(tbl, 0, i + 1, id_symbol(matrix.get(screenerMtx, i, 0)), text_halign = text.align_left, bgcolor = color.gray, text_color = color.white, text_size = size.small)
table.cell(tbl, 1, i + 1, str.tostring(matrix.get(screenerMtx, i, 1)), text_halign = text.align_center, bgcolor = #aaaaaa, text_color = color.white, text_size = size.small)
table.cell(tbl, 2, i + 1, str.tostring(matrix.get(screenerMtx, i, 2), '#.##'), text_halign = text.align_center, bgcolor = rsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 3, i + 1, str.tostring(matrix.get(screenerMtx, i, 3), '#.##'), text_halign = text.align_center, bgcolor = tsi_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 4, i + 1, str.tostring(matrix.get(screenerMtx, i, 4), '#.##'), text_halign = text.align_center, bgcolor = adx_col, text_color = color.white, text_size = size.small)
table.cell(tbl, 5, i + 1, sup_text, text_halign = text.align_center, bgcolor = sup_col, text_color = color.white, text_size = size.small)
if str.length(alert_msg) > 0
alert(alert_msg, freq = alert.freq_once_per_bar_close)
AD BackGrand//@version=5
indicator("AD BackGrand", overlay=true)
// فقط برای XAUUSD اجرا بشه
isGold = syminfo.ticker == "XAUUSD"
// ⚙️ ورودیها
threshold = input.float(4.0, title="🟡 Volatility Threshold ($)", minval=0.1, step=0.1)
candleCount = input.int(3, title="🕒 Number of Candles to Check", minval=1, maxval=50)
// محاسبه مجموع نوسان کندلها (داینامیک)
totalVol = 0.0
for i = 0 to candleCount - 1
totalVol += high - low
// شرطها
isVolatile = isGold and (totalVol > threshold)
isCalm = isGold and (totalVol <= threshold)
// رنگ بکگراند
bgcolor(isVolatile ? color.new(color.green, 80) : na, title="High Volatility")
bgcolor(isCalm ? color.new(color.red, 85) : na, title="Low Volatility")
// نمایش مجموع نوسان (اختیاری)
plot(isGold ? totalVol : na, title="🔢 Total Volatility", color=color.orange)