Fractal Trend Anticipator (FTA)How to Use FTA
Purpose:
FTA is designed to detect when a consolidating (or choppy) market—with a high choppiness index—is poised to break into a trend as indicated by an RSI crossover.
Signals:
Bullish Breakout: When the Choppiness Index is above your set threshold and the RSI crosses upward over 50, a bullish arrow (triangle up) appears below the bar.
Bearish Breakout: Conversely, when the RSI crosses downward from above 50 under high choppiness, a bearish arrow (triangle down) appears above the bar.
Trading Insight:
In crypto markets, when price is range-bound, a sudden release of momentum can be captured early by FTA. Use these signals as early alerts to join moves as they begin—whether you plan to ride a short-term spike or a medium-term trend.
Feel free to adjust the and parameters to suit your trading style and asset volatility. Enjoy trading with your updated Fractal Trend Anticipator!
Cari dalam skrip untuk "break"
Schwarzman Custom ORB with Box DisplayIndicator Overview
The Schwarzman Custom ORB (Opening Range Breakout) Indicator is a fully self-developed script designed for traders who utilize opening range breakout strategies. This indicator allows users to customize their ORB settings, apply them to historical price data, and visually connect multiple ORBs to analyze past performance. The goal is to provide traders with a tool to backtest and refine their breakout strategies based on historical ORB data.
How the Indicator Works
1️⃣ User-Defined ORB Settings
• The user selects a custom start time (hour and minute) for the ORB.
• The user defines a duration (e.g., 15 minutes, 30 minutes, etc.) for the ORB period.
• A timezone offset is included to adjust for different market sessions.
2️⃣ ORB High and Low Calculation
• The script records the highest and lowest prices within the selected ORB time window.
• The recorded values remain static after the ORB period ends, ensuring accurate range plotting.
3️⃣ Historical ORB Visualization
• Instead of only showing a single ORB for the current session, this indicator connects multiple ORBs across past data.
• This allows traders to visually analyze previous breakout performance.
• The plotted ORBs remain fixed and do not repaint, ensuring an accurate backtesting experience.
4️⃣ Stepline Visualization & Range Filling
• The high and low ORB levels are displayed using stepline plots to maintain clear horizontal levels.
• A shaded box is applied between the ORB high and low for better visualization.
Use Cases & Strategy Application
📌 Backtesting Historical ORBs – See how past ORBs performed under different market conditions.
📌 Custom ORB Settings – Adjust the start time and duration for different trading sessions.
📌 Multi-ORB Analysis – Connect ORBs over multiple trading days to study trends and breakouts.
📌 Breakout Strategy Optimization – Use the historical ORB connections to refine entry and exit points.
This indicator is particularly useful for day traders, scalpers, and breakout traders looking for a data-driven approach to trading.
Indicator Development & Transparency Statement
As a trader, I have tested various ORB (Opening Range Breakout) indicators available in the TradingView community. Through these experiences, I aimed to develop a version that best fits my own trading needs and strategy.
This script is a self-developed ORB tool, created from scratch while drawing inspiration from the concept of opening range breakouts, which is widely used in trading. Since I initially coded in Pine Script v4, I used ChatGPT to help refine and migrate the script to Pine Script v6 to ensure compatibility with the latest TradingView features. However, the core logic, structure, and customization were entirely designed and implemented based on my own approach.
I am making this indicator public not to violate any TradingView guidelines but to share my work with the trading community and provide a tool that can help others analyze ORB-based strategies. If there are any compliance concerns, I am open to adjusting the script accordingly, but I want to clarify that this is not a copy of any existing ORB script—it is a custom-built indicator tailored to my own trading preferences.
I appreciate the opportunity to contribute to the community and would welcome any specific feedback from TradingView regarding rule compliance.
Best regards,
Janko S. (Schwarzman)
Appeal to TradingView
Dear TradingView Team,
This script is 100% self-developed and does not copy or replicate any third-party code. It is a customized ORB tool designed for traders who wish to backtest and analyze opening range breakout strategies over multiple sessions. We kindly request specific clarification regarding which exact line(s) of code violate TradingView’s guidelines. If there are any compliance concerns, we are happy to adjust the script accordingly.
Please let us know the precise rules or community guidelines that were violated so we can make the necessary modifications.
🚀 Summary
✔ Fully Custom & Self-Developed – No copied or third-party code.
✔ Innovative Feature – Connects past ORBs for strategy backtesting.
✔ Transparent & Compliant – Requesting exact details on any potential rule violations.
Market Structure HH, HL, LH and LLMarket Structure Indicator (HH, HL, LH, LL) – Explanation and Usage
Overview:
This indicator is designed to detect and visualize market structure shifts by identifying Higher Highs (HH), Higher Lows (HL), Lower Highs (LH), and Lower Lows (LL). It plots a ZigZag structure to mark trend changes, helping traders analyze price swings and market direction.
Indicator Logic:
The indicator operates based on ZigZag swing points to define trend shifts and structure changes.
Identifying Market Swings:
It finds local highs and lows using the ZigZag Length (zigzag_len), which defines how many bars back to check for a new swing high/low.
If the current high is the highest over zigzag_len periods, it marks it as a swing high.
If the current low is the lowest over zigzag_len periods, it marks it as a swing low.
Determining Market Structure:
Uptrend: Higher Highs (HH) & Higher Lows (HL)
Downtrend: Lower Lows (LL) & Lower Highs (LH)
The script continuously tracks the last two highs (h0, h1) and last two lows (l0, l1) to classify the current market structure.
Visual Elements:
ZigZag Line (Optional): Connects major swing highs and lows for trend visualization.
Labels (HH, HL, LH, LL):
HH (Higher High) – Price is making new highs → Uptrend Continuation.
HL (Higher Low) – Price forms a higher bottom → Uptrend Confirmation.
LL (Lower Low) – Price is making new lows → Downtrend Continuation.
LH (Lower High) – Price forms a lower top → Downtrend Confirmation.
Breakout Confirmation with Fibonacci Factor (Optional)
The indicator includes an option to confirm breakouts using the fib_factor, which ensures price moves beyond a certain retracement level.
How to Use This Indicator in Trading:
1. Identifying Trends & Trend Reversals
Uptrend: Look for a sequence of HH and HL.
Downtrend: Look for a sequence of LL and LH.
Trend Reversal: If price transitions from HH-HL to LH-LL, it signals a shift from an uptrend to a downtrend (and vice versa).
2. Confirming Entry & Exit Points
Buy Entry (Long Position)
Enter after a Higher Low (HL) is confirmed in an uptrend.
Combine with support zones or moving averages for confirmation.
Sell Entry (Short Position)
Enter after a Lower High (LH) is confirmed in a downtrend.
Combine with resistance zones or moving averages for confirmation.
Exit Strategy
Exit long trades when price fails to make a HH and forms an LH instead.
Exit short trades when price fails to make a LL and forms an HL instead.
3. Spotting Breakouts & Order Blocks
The Fib Factor setting allows traders to filter false breakouts by confirming price movement beyond a retracement threshold.
Potential Order Blocks can be identified by looking at the last major swing point before a breakout.
Benefits of This Indicator for Traders
✅ Trend Identification: Helps traders quickly determine if the market is in an uptrend or downtrend.
✅ Clear Market Structure Labels: Easily visualizes Higher Highs, Higher Lows, Lower Highs, and Lower Lows.
✅ Avoids Noise: The ZigZag algorithm removes small fluctuations and focuses on significant market movements.
✅ Assists with Entry & Exit Decisions: Provides objective signals for trend continuation or reversals.
✅ Works in All Markets: Useful for stocks, forex, crypto, and futures trading.
Would you like me to add additional features like Order Blocks, Breakout Confirmation, or Alerts to improve this indicator? 🚀
EBL - Enigma BOS Logic: A Comprehensive Multi-Timeframe Trend anThe EBL (Enigma BOS Logic) script is designed for traders seeking an advanced and versatile tool for identifying market trends, breakouts, and critical price levels. This indicator leverages multi-timeframe analysis, trend filtering, and customizable guidance line settings to provide an all-in-one solution for informed trading decisions.
What Does EBL Do?
EBL identifies critical breakout levels (BOS - Break of Structure) on up to three selected timeframes and dynamically plots them as horizontal guidance lines. It combines these levels with trend analysis and user-defined filters to show only the most relevant data. The script offers flexibility to adapt to different trading styles, whether you're a scalper, day trader, or swing trader.
Key Features:
Multi-Timeframe Analysis:
Users can select three distinct timeframes (e.g., 4H, 30m, 15m).
Execution timeframe (e.g., 1m or 5m) overlays the lines from the selected higher timeframes for real-time precision.
Customizable Guidance Lines:
Define line length (horizontal bars) and choose whether lines extend to the current price.
Individual color settings for bullish and bearish lines.
Trend Detection Filter:
Automatically determines the overall market trend based on the 50-period SMA on each selected timeframe.
Displays only bullish lines during uptrends and bearish lines during downtrends.
Time-Limited Display:
Option to show only lines from the last three days, reducing clutter and focusing on recent price action.
Alerts:
Trigger alerts when price breaks above or below critical levels on any selected timeframe.
Users can choose to receive alerts only for specific timeframes.
How Does It Work?
Break of Structure (BOS):
The script captures key high and low levels on each selected timeframe.
Levels are dynamically updated as the market evolves.
Trend Filtering:
Trend direction is determined for each timeframe based on whether the close is above or below its 50-period SMA.
The overall trend combines signals from all three timeframes, providing a balanced and holistic view of the market.
User Control:
Customize everything: timeframes, colors, line behavior, and alert conditions.
Adjust filters to focus on your preferred time horizon (e.g., last 3 days).
How to Use:
Select up to three timeframes based on your trading strategy (e.g., 4H for macro view, 30m for intermediate trends, and 15m for precision).
Enable or disable the trend filter to control whether lines reflect the market's directional bias.
Configure alerts for breakout levels that align with your strategy.
Use the execution timeframe to see how higher timeframe levels interact with real-time price action.
Who Is It For?
This indicator is ideal for:
Trend Traders who want a clear view of directional bias across multiple timeframes.
Breakout Traders who need to identify key resistance and support levels dynamically.
Scalpers and Day Traders who require real-time precision by overlaying higher timeframe levels on lower execution timeframes.
Underlying Concepts:
Break of Structure (BOS): Highlights significant market pivot points, essential for identifying breakout opportunities.
Multi-Timeframe Confluence: Combines insights from various timeframes to create a balanced understanding of price behavior.
Trend Filtering: Ensures clarity by only displaying levels that align with the overall market direction.
EBL - Enigma BOS Logic is not just another breakout indicator. It is a comprehensive tool that combines multi-timeframe analysis, trend detection, and user-centric customization to empower traders with actionable insights. Whether you're analyzing macro trends or executing precision trades, EBL adapts to your strategy and provides clarity in the chaos of the market.
Dynamic Range Finder [The_lurker]هو أداة تهدف إلى تحديد نطاق السعر الديناميكي بناءً على التقلبات ومتوسط الأسعار . حيث يتم التعرف على مناطق التوحيد السعري (Consolidation) ويعطي إشارات شراء وبيع عند اختراق أو كسر هذا النطاق .
// يفضل استخدام المؤشر على اطار 4 ساعات واكثر //
مميزات المؤشر :
1- اكتشاف النطاق السعري الديناميكي
- يقوم المؤشر بحساب متوسط السعر خلال فترة محددة ومقارنة الإغلاقات الحديثة بمدى تقلب الأسعار (ATR) لمعرفة ما إذا كان السعر يتحرك داخل نطاق معين.
2- تحديد الاختراقات Breakout Signals
- عند اختراق السعر الحد العلوي للنطاق، يظهر المؤشر إشارة شراء (BUY).
- عند كسر السعر الحد السفلي للنطاق، يظهر المؤشر إشارة بيع (SELL).
3- دعم أنماط متعددة للمتوسطات المتحركة
- يسمح للمستخدمين باختيار نوع المتوسط المتحرك (SMA، EMA، WMA) المستخدم في حساب متوسط السعر.
4- إعدادات مخصصة للفلترة بحجم التداول (اختياري)
- فلترة حجم التداول هي ميزة اختيارية في المؤشر تسمح بتصفية إشارات الشراء والبيع بناءً على قوة الحجم المتداول مما يعزز دقة الإشارات عن طريق التأكد من أن الاختراقات السعرية مدعومة بحجم تداول قوي
5- تصميم مرن مع تخصيص للألوان والأنماط
- يمكن للمستخدمين تغيير ألوان النطاق وإشارات البيع والشراء حسب رغبتهم.
6- تنبيهات آلية عند حدوث كسر أو اختراق
- يتضمن تنبيهات (Alerts) عند حدوث إشارة بيع أو شراء.
كيف يعمل المؤشر؟
* يتم حساب متوسط السعر خلال الفترة المحددة (rangePeriod).
* يتم حساب التقلب السعري (ATR) ومضاعفته بمعامل النطاق (rangeMultiplier).
* يتم رسم مستطيل يعبر عن النطاق السعري بين (متوسط السعر ± التقلب).
* إذا تجاوز السعر الحد العلوي → إشارة شراء (BUY).
* إذا كسر السعر الحد السفلي → إشارة بيع (SELL).
* يمكن تصفية الإشارات باستخدام حجم التداول (اختياري).
1.0 → الحجم الحالي يجب أن يكون على الأقل مساويًا للمتوسط.
1.2 → الحجم الحالي يجب أن يكون أعلى من المتوسط بنسبة 20%.
1.5 → الحجم الحالي يجب أن يكون أعلى من المتوسط بنسبة 50%.
تنويه:
المؤشر هو أداة مساعدة فقط ويجب استخدامه مع التحليل الفني والأساسي لتحقيق أفضل النتائج.
إخلاء المسؤولية
لا يُقصد بالمعلومات والمنشورات أن تكون، أو تشكل، أي نصيحة مالية أو استثمارية أو تجارية أو أنواع أخرى من النصائح أو التوصيات المقدمة أو المعتمدة من TradingView.
It is a tool that aims to determine the dynamic price range based on fluctuations and average prices. Consolidation areas are identified and buy and sell signals are given when this range is breached or broken.
// It is preferable to use the indicator on a 4-hour frame or more //
Features of the indicator:
1- Detecting the dynamic price range
- The indicator calculates the average price over a specific period and compares recent closings with the price volatility range (ATR) to see if the price is moving within a specific range.
2- Identifying Breakout Signals
- When the price breaks the upper limit of the range, the indicator shows a buy signal (BUY).
- When the price breaks the lower limit of the range, the indicator shows a sell signal (SELL).
3- Support for multiple moving average patterns
- Allows users to choose the type of moving average (SMA, EMA, WMA) used to calculate the average price.
4- Custom settings for filtering by trading volume (optional)
- Trading volume filtering is an optional feature in the indicator that allows filtering buy and sell signals based on the strength of the trading volume, which enhances the accuracy of the signals by ensuring that price breakouts are supported by strong trading volume
5- Flexible design with customization of colors and patterns
- Users can change the colors of the range and buy and sell signals as they wish.
6- Automatic alerts when a breakout or breakout occurs
- Includes alerts when a buy or sell signal occurs.
How does the indicator work?
* The average price is calculated over the specified period (rangePeriod).
* The price volatility (ATR) is calculated and multiplied by the range factor (rangeMultiplier).
* A rectangle is drawn that represents the price range between (average price ± volatility).
* If the price exceeds the upper bound → a buy signal (BUY).
* If the price breaks the lower bound → a sell signal (SELL).
* Signals can be filtered using trading volume (optional).
1.0 → Current volume should be at least equal to the average.
1.2 → Current volume should be 20% above the average.
1.5 → Current volume should be 50% above the average.
Disclaimer:
The indicator is an auxiliary tool only and should be used in conjunction with technical and fundamental analysis to achieve the best results.
Disclaimer
The information and posts are not intended to be, or constitute, any financial, investment, trading or other types of advice or recommendations provided or endorsed by TradingView.
Trend Lines by Pivots (Enhanced)### **📌 Detailed Explanation of the TradingView Indicator Code**
This **Pine Script v5** indicator automatically **detects trend lines** based on pivot highs and pivot lows. It helps traders visualize **support and resistance levels** using dynamic trend lines.
---
## **🔹 How the Indicator Works**
The indicator identifies **key pivot points** in price action and then **draws trend lines** connecting them. It works as follows:
1. **Detects Pivot Highs and Lows**:
- A **pivot high** is a local maximum where the price is higher than surrounding bars.
- A **pivot low** is a local minimum where the price is lower than surrounding bars.
2. **Stores the Last Two Pivot Points**:
- The script remembers the last **two pivot highs** and **two pivot lows**.
- These points are used to **draw resistance and support lines** dynamically.
3. **Plots Resistance and Support Lines**:
- The script continuously **updates** and **extends** the trend lines to the right as new pivots are found.
- **Red Line (Resistance):** Connects the last two pivot highs.
- **Green Line (Support):** Connects the last two pivot lows.
---
## **🔹 Code Breakdown**
### **1️⃣ Inputs for User Customization**
```pinescript
leftLen = input.int(2, "Left Pivot Length")
rightLen = input.int(2, "Right Pivot Length")
highLineColor = input.color(color.red, "Resistance Line Color")
lowLineColor = input.color(color.green, "Support Line Color")
```
- **leftLen & rightLen:** Define how many bars on the left and right should be used to confirm a pivot.
- **highLineColor:** Sets the color of the resistance trend line (default: **red**).
- **lowLineColor:** Sets the color of the support trend line (default: **green**).
---
### **2️⃣ Detect Pivot Highs & Lows**
```pinescript
pivotHigh = ta.pivothigh(leftLen, rightLen)
pivotLow = ta.pivotlow(leftLen, rightLen)
```
- `ta.pivothigh(leftLen, rightLen)`: Detects a **pivot high** if it's the highest price in a certain range.
- `ta.pivotlow(leftLen, rightLen)`: Detects a **pivot low** if it's the lowest price in a certain range.
---
### **3️⃣ Store the Last Two Pivot Points**
#### **🔺 Storing Resistance (Pivot Highs)**
```pinescript
var float lastPivotHigh1 = na
var int lastPivotHighIndex1 = na
var float lastPivotHigh2 = na
var int lastPivotHighIndex2 = na
```
- These variables store **the last two pivot highs** and their **bar indices** (position on the chart).
#### **🔻 Storing Support (Pivot Lows)**
```pinescript
var float lastPivotLow1 = na
var int lastPivotLowIndex1 = na
var float lastPivotLow2 = na
var int lastPivotLowIndex2 = na
```
- These variables store **the last two pivot lows** and their **bar indices**.
---
### **4️⃣ Update Pivot Points When New Ones Are Found**
#### **Updating Resistance (Pivot Highs)**
```pinescript
if not na(pivotHigh)
lastPivotHigh2 := lastPivotHigh1
lastPivotHighIndex2 := lastPivotHighIndex1
lastPivotHigh1 := pivotHigh
lastPivotHighIndex1 := bar_index - rightLen
```
- If a new **pivot high** is found:
- The **previous pivot** becomes `lastPivotHigh2`.
- The **new pivot** becomes `lastPivotHigh1`.
- The index (`bar_index - rightLen`) marks where the pivot occurred.
#### **Updating Support (Pivot Lows)**
```pinescript
if not na(pivotLow)
lastPivotLow2 := lastPivotLow1
lastPivotLowIndex2 := lastPivotLowIndex1
lastPivotLow1 := pivotLow
lastPivotLowIndex1 := bar_index - rightLen
```
- Similar to pivot highs, this section updates **pivot lows** dynamically.
---
### **5️⃣ Create and Update Trend Lines**
#### **🔺 Drawing the Resistance Line**
```pinescript
var line highLine = na
if not na(lastPivotHigh2) and not na(lastPivotHigh1)
if na(highLine)
highLine := line.new(lastPivotHighIndex2, lastPivotHigh2, lastPivotHighIndex1, lastPivotHigh1, color=highLineColor, extend=extend.right)
else
line.set_xy1(highLine, lastPivotHighIndex2, lastPivotHigh2)
line.set_xy2(highLine, lastPivotHighIndex1, lastPivotHigh1)
line.set_color(highLine, highLineColor)
```
- If **two pivot highs** exist:
- **First time:** Creates a new **resistance line** connecting them.
- **Updates dynamically:** Adjusts the line when a new pivot appears.
#### **🔻 Drawing the Support Line**
```pinescript
var line lowLine = na
if not na(lastPivotLow2) and not na(lastPivotLow1)
if na(lowLine)
lowLine := line.new(lastPivotLowIndex2, lastPivotLow2, lastPivotLowIndex1, lastPivotLow1, color=lowLineColor, extend=extend.right)
else
line.set_xy1(lowLine, lastPivotLowIndex2, lastPivotLow2)
line.set_xy2(lowLine, lastPivotLowIndex1, lastPivotLow1)
line.set_color(lowLine, lowLineColor)
```
- Same logic applies for **support levels**, creating or updating a **green trend line**.
---
## **🔹 How to Use This Indicator**
1. **Apply the script in TradingView**:
- Open **Pine Script Editor** → Paste the code → Click **"Add to Chart"**.
2. **Interpret the Lines**:
- **Red line (Resistance):** Price may struggle to break above it.
- **Green line (Support):** Price may bounce off it.
3. **Trading Strategy**:
- **Breakout Strategy:**
- If the price **breaks resistance**, expect a bullish move.
- If the price **breaks support**, expect a bearish move.
- **Reversal Trading:**
- Look for **bounces off support/resistance** for potential reversals.
---
## **🔹 Key Features of This Indicator**
✅ **Automatically detects pivot highs and lows.**
✅ **Draws real-time trend lines for support and resistance.**
✅ **Updates dynamically with new price action.**
✅ **Customizable settings for pivot sensitivity and colors.**
This indicator is useful for **trend traders, breakout traders, and support/resistance traders**. 🚀
Let me know if you need **further improvements or additional features!** 😊
Optimized Dynamic SupertrendDetailed Explanation of the Optimized Dynamic Supertrend Script
This Supertrend script is designed to dynamically adapt to different market conditions using ATR expansion, volume confirmation, and trend filtering. Below is a step-by-step breakdown of how it works and its functions.
1 ATR-Based Supertrend Calculation
📌 Key Purpose:
The script calculates an adaptive ATR-based Supertrend line, which acts as a dynamic support or resistance level for trend direction.
📌 How it Works:
ATR (Average True Range) is used to measure market volatility.
A dynamic ATR multiplier is applied based on price standard deviation (instead of a fixed value).
The Supertrend is calculated as:
Upper Band: SMA(close, ATR length) + (ATR Multiplier * ATR Value)
Lower Band: SMA(close, ATR length) - (ATR Multiplier * ATR Value)
The Supertrend flips when price crosses and holds beyond the Supertrend line.
🔹 Dynamic Adjustment:
Instead of using a fixed ATR multiplier, the script adjusts it using:
pinescript
Copy
Edit
dynamicFactor = ta.stdev(close, atrLength) / ta.sma(close, atrLength)
atrMultiplier = input(1.5, title="Base ATR Multiplier") * dynamicFactor
High volatility → Wider Supertrend bands (to avoid false signals).
Low volatility → Tighter Supertrend bands (for faster detection).
2 Trend Detection Logic
📌 Key Purpose:
Determines if the market is in a bullish or bearish trend based on price action.
Uses volume sensitivity and ATR expansion to reduce false signals.
📌 How it Works:
pinescript
Copy
Edit
var float supertrend = na
supertrend := close > nz(supertrend , lowerBand) ? lowerBand : upperBand
The Supertrend value updates dynamically.
If price is above the Supertrend line, the trend is bullish (green).
If price is below the Supertrend line, the trend is bearish (red).
3 Volume Sensitivity Confirmation
📌 Key Purpose:
Avoid false trend flips by confirming with volume (approximated using a CVD proxy).
📌 How it Works:
pinescript
Copy
Edit
priceChange = close - close
volumeWeightedTrend = priceChange * volume // Approximate CVD Behavior
trendConfirmed = volumeWeightedTrend > 0 ? close > supertrend : close < supertrend
Positive price change + High volume → Confirms bullish momentum.
Negative price change + High volume → Confirms bearish momentum.
If there’s low volume, the trend change is ignored to avoid false breakouts.
4 Noise Reduction (Final Trend Confirmation)
📌 Key Purpose:
Filter out weak or choppy price movements using ATR expansion.
📌 How it Works:
pinescript
Copy
Edit
trendUp = trendConfirmed and ta.atr(atrLength) > ta.atr(atrLength)
trendDown = not trendUp
Trend only flips when confirmed by volume + ATR expansion.
If ATR is not expanding, the script ignores weak price movements.
This ensures Supertrend signals align with strong market moves.
5 Can This Be Used on All Timeframes?
✅ YES! This Supertrend is adaptive, meaning it adjusts dynamically based on:
Volatility: Uses ATR expansion to adjust for different market conditions.
Timeframe Sensitivity: Works on any timeframe (1M, 5M, 15M, 1H, 4H, 1D, 1W).
Market Structure: Confirms trend flips using volume & price movement strength.
🚀 Best Timeframes for Trading:
For Scalping (1M - 15M) → Quick execution, best with order flow confirmation.
For Swing Trading (1H - 4H - 1D) → Stronger trend signals, reduced noise.
For High Timeframes (3D - 1W) → Identifies major market shifts.
🔥 Advantages & Disadvantages in Your Trading Setup
✅ Advantages:
✔ Fully Dynamic & Adaptive → Adjusts to different timeframes & volatility.
✔ Reduces False Signals → Uses ATR expansion & volume confirmation.
✔ Precise Trend Reversals → Labels LONG & SHORT entries clearly.
✔ Works on Any Market → Crypto, Forex, Stocks, Commodities.
✔ No Extra Indicators → Pure Supertrend-based (fits your setup).
❌ Disadvantages:
⚠ Lagging Indicator → ATR & volume confirmation add slight delay.
⚠ Needs High Volume to Confirm → Weak volume → no trend flip.
⚠ Choppy Market = Late Entries → Sideways movement can cause delays.
🚀 Final Thoughts:
It’s fully dynamic & adaptive (unlike traditional static Supertrends).
No extra indicators → Uses only Supertrend logic
Refines entry points using volume & ATR confirmation (removes noise).
This ensures you get high-probability trend signals while filtering out weak breakouts! 🎯
One Trading Setup for Life ICT [TradingFinder] Sweep Session FVG🔵 Introduction
ICT One Trading Setup for Life is a trading strategy based on liquidity and market structure shifts, utilizing the PM Session Sweep to determine price direction. In this strategy, the market first forms a price range during the PM Session (from 13:30 to 16:00 EST), which includes the highest high (PM Session High) and lowest low (PM Session Low).
In the next session, the price first touches one of these levels to trigger a Liquidity Hunt before confirming its trend by breaking the Change in State of Delivery (CISD) Level. After this confirmation, the price retraces toward a Fair Value Gap (FVG) or Order Block (OB), which serve as the best entry points in alignment with liquidity.
In financial markets, liquidity is the primary driver of price movement, and major market participants such as institutional investors and banks are constantly seeking liquidity at key levels. This process, known as Liquidity Hunt or Liquidity Sweep, occurs when the price reaches an area with a high concentration of orders, absorbs liquidity, and then reverses direction.
In this setup, the PM Session range acts as a trading framework, where its highs and lows function as key liquidity zones that influence the next session’s price movement. After the New York market opens at 9:30 EST, the price initially breaks one of these levels to capture liquidity.
However, for a trend shift to be confirmed, the CISD Level must be broken.
Once the CISD Level is breached, the price retraces toward an FVG or OB, which serve as optimal trade entry points.
Bullish Setup :
Bearish Setup :
🔵 How to Use
In this strategy, the PM Session range is first identified, which includes the highest high (PM Session High) and lowest low (PM Session Low) between 13:30 and 16:00 EST. In the following session, the price touches one of these levels for a Liquidity Hunt, followed by a break of the Change in State of Delivery (CISD) Level. The price then retraces toward a Fair Value Gap (FVG) or Order Block (OB), creating a trading opportunity.
This process can occur in two scenarios : bearish and bullish setups.
🟣 Bullish Setup
In a bullish scenario, the PM Session High and PM Session Low are identified. In the following session, the price first breaks the PM Session Low, absorbing liquidity. This process results in a Fake Breakout to the downside, misleading retail traders into taking short positions.
After the Liquidity Hunt, the CISD Level is broken, confirming a trend reversal. The price then retraces toward an FVG or OB, offering an optimal long entry opportunity.
The initial take-profit target is the PM Session High, but if higher timeframe liquidity levels exist, extended targets can be set.
The stop-loss should be placed below the Fake Breakout low or the first candle of the FVG.
🟣 Bearish Setup
In a bearish scenario, the market first defines its PM Session High and PM Session Low. In the next session, the price initially breaks the PM Session High, triggering a Liquidity Hunt. This movement often causes a Fake Breakout, misleading retail traders into taking incorrect positions.
After absorbing liquidity, the CISD Level breaks, indicating a shift in market structure. The price then retraces toward an FVG or OB, offering the best short entry opportunity.
The initial take-profit target is the PM Session Low, but if additional liquidity exists on higher timeframes, lower targets can be considered.
The stop-loss should be placed above the Fake Breakout high or the first candle of the FVG.
🔵 Setting
CISD Bar Back Check : The Bar Back Check option enables traders to specify the number of past candles checked for identifying the CISD Level, enhancing CISD Level accuracy on the chart.
Order Block Validity : The number of candles that determine the validity of an Order Block.
FVG Validity : The duration for which a Fair Value Gap remains valid.
CISD Level Validity : The duration for which a CISD Level remains valid after being broken.
New York PM Session : Defines the PM Session range from 13:30 to 16:00 EST.
New York AM Session : Defines the AM Session range from 9:30 to 16:00 EST.
Refine Order Block : Enables finer adjustments to Order Block levels for more accurate price responses.
Mitigation Level OB : Allows users to set specific reaction points within an Order Block, including: Proximal: Closest level to the current price. 50% OB: Midpoint of the Order Block. Distal: Farthest level from the current price.
FVG Filter : The Judas Swing indicator includes a filter for Fair Value Gap (FVG), allowing different filtering based on FVG width: FVG Filter Type: Can be set to "Very Aggressive," "Aggressive," "Defensive," or "Very Defensive." Higher defensiveness narrows the FVG width, focusing on narrower gaps.
Mitigation Level FVG : Like the Order Block, you can set price reaction levels for FVG with options such as Proximal, 50% OB, and Distal.
Demand Order Block : Enables or disables bullish Order Block.
Supply Order Block : Enables or disables bearish Order Blocks.
Demand FVG : Enables or disables bullish FVG.
Supply FVG : Enables or disables bearish FVGs.
Show All CISD : Enables or disables the display of all CISD Levels.
Show High CISD : Enables or disables high CISD levels.
Show Low CISD : Enables or disables low CISD levels.
🔵 Conclusion
The ICT One Trading Setup for Life is a liquidity-based strategy that leverages market structure shifts and precise entry points to identify high-probability trade opportunities. By focusing on PM Session High and PM Session Low, this setup first captures liquidity at these levels and then confirms trend shifts with a break of the Change in State of Delivery (CISD) Level.
Entering a trade after a retracement to an FVG or OB allows traders to position themselves at optimal liquidity levels, ensuring high reward-to-risk trades. When used in conjunction with higher timeframe bias, order flow, and liquidity analysis, this strategy can become one of the most effective trading methods within the ICT Concept framework.
Successful execution of this setup requires risk management, patience, and a deep understanding of liquidity dynamics. Traders can enhance their confidence in this strategy by conducting extensive backtesting and analyzing past market data to optimize their approach for different assets.
Dynamic Median EMA | QuantEdgeBIntroducing Dynamic Median EMA by QuantEdgeB
Dynamic Median EMA | QuantEdgeB is an adaptive moving average indicator that blends median filtering, a volatility-based dynamic EMA, and customizable filtering techniques to create a responsive yet stable trend detection system. By incorporating Standard Deviation (SD) or ATR bands, this indicator dynamically adjusts to market conditions, making it a powerful tool for both traders and investors.
Key Features:
1. Dynamic EMA with Efficiency Ratio 🟣
- Adjusts smoothing based on market conditions, ensuring optimal responsiveness to price changes.
- Uses an efficiency ratio to dynamically modify the smoothing factor, making it highly adaptive.
2. Median-Based vs. Traditional EMA Source 📊
- Users can choose between a Median-based smoothing method (default: ✅ enabled ) or a traditional price source.
- The median filter provides better noise reduction in choppy markets.
3. Volatility-Based Filtering with Custom Bands 🎯
- Two filtering methods:
a. Standard Deviation (SD) Bands 📏 (default ✅) – Expands and contracts based on
historical deviation.
b. ATR Bands 📈 – Uses Average True Range (ATR) to adjust dynamic thresholds.
- The user can toggle between SD and ATR filtering, depending on market behavior.
4. Customizable Signal Generation ✅❌
- Long Signal: Triggered when the price closes above the selected upper filter band .
- Short Signal: Triggered when the price closes below the lower filter band .
- Dynamically adjusts based on the filtering method (SD or ATR).
5. Enhanced Visuals & Customization🎨
- Multiple color modes available (Default, Solar, Warm, Cool, Classic, X).
- Gradient filter bands provide a clearer view of volatility expansion/contraction.
- Candlestick coloring for instant visual confirmation of bullish/bearish conditions.
________
How It Works:
- Source Selection : Users can choose to use the median of price action or a traditional price feed as the base input for the Dynamic EMA.
- Dynamic EMA Calculation : The indicator applies a volatility-adjusted smoothing algorithm based on the efficiency ratio, ensuring that price trends are detected quickly in volatile markets and smoothly in stable ones.
- Filtering Mechanism : 🎯 Use can chose between two filtering options. Standard deviation to dynamically adjust based on market deviations or ATR Bands to determine trend strength through volatility expansions
- Signal Generation :
1. Bullish (🔵) is triggered when price crosses above the upper band.
2. Bearish (🔴) is generated when price drops below the lower band.
- The filtering method (SD/ATR) determines how the bands expand/contract, allowing for better trade adaptability.
________
Use Cases:
✅ For Trend Trading & Breakouts:
- Use SD bands (default setting) to capture trend breakouts and avoid premature entries.
- SD bands expand during high volatility, helping confirm strong breakouts, and contract during low volatility, helping confirm earlier trend exit.
- Consider increasing Dynamic EMA length (default 8) for longer-term trend detection.
✅ For Smoother Trend Filtering:
- Enable ATR bands for a more stable and gradual trend filter.
- ATR bands help reduce noise in choppy conditions while maintaining responsiveness to volatility.
- This setting is useful for traders looking to ride trends with fewer false exits.
✅ For Volatility Awareness:
- Watch the expansion and contraction of the filter bands:
- Wide SD bands = High volatility, breakout potential.
- Tight SD bands = Consolidation, potential trend exhaustion.
- ATR bands provide steadier adjustments, making them ideal for traders who prefer
smoother trend confirmation.
________
Customization Options:
- Source Selection 🟢 (Default: Median filtering enabled ✅)
- Dynamic EMA Length ⏳ (Default: 8 )
- Filtering Method🎯 (SD Bands ✅ by default, toggle ATR if needed)
- Standard Deviation Length 📏 (Default: 30 )
- ATR Length 📈 (Default: 14, ATR multiplier 1.3)
- SD Bands Weights:📌
- Default settings (Upper = 1.035, Lower = 1.02) are optimized for daily charts.
- For lower timeframes (e.g., hourly charts), consider using lighter weights such as Upper =
1.024 / Lower = 1.008 to better capture price movements.
- The optimal SD Band weights depend on the asset's volatility, so adjust accordingly to align
with market conditions.
- Multiple Color Themes 🎨 (Default, Solar, Warm, Cool, Classic, X)
________
Conclusion
The Dynamic Median EMA | QuantEdgeB is a powerful trend-following & filtering indicator designed to adapt dynamically to market conditions. By combining a volatility-responsive EMA, custom filter bands, and signal-based candlestick coloring, this tool provides clear and reliable trade signals across different market environments. 🚀📈
🔹 Disclaimer: Past performance is not indicative of future results. No trading indicator can guarantee success in financial markets.
🔹 Strategic Consideration: As always, backtesting and strategic adjustments are essential to fully optimize this indicator for real-world trading. Traders should consider risk management practices and adapt settings to their specific market conditions and trading style.
Wave Trend -V2Wave Trend -V2 is here to give you a serious edge.
This upgraded version of the popular LazyBear script takes wave trend analysis to the next level.
Here's the deal:
Multi-Timeframe Analysis: Beyond Short-Term Noise:
Novice traders often focus solely on the current timeframe (let's say, the 5-minute chart).
Wave Trend -V2 breaks free from this limitation by analyzing price action across multiple timeframes (1-minute to 1-week).
---This holistic view helps you:
Identify larger trends: Are we in a bullish uptrend on the daily chart, even if the hourly chart is showing some short-term weakness? Wave Trend -V2 helps you see the bigger picture.
Avoid false breakouts: Short-term price spikes can create false signals. By looking at higher timeframes, you can filter out these "noise" and focus on sustainable trends.
---Pressure Analysis: Gauging Market Strength:
Wave Trend -V2 goes beyond simple trend identification.
It incorporates "pressure" analysis to gauge the strength and direction of the current market trend.
This helps you:
Enter trades with confidence: When the trend is strong and the pressure is high, you can enter trades with greater conviction.
Minimize risk: If the pressure is waning or conflicting signals arise, you can avoid entering trades or adjust your risk parameters accordingly.
Impact Point Analysis: Predicting Future Price Moves:
Wave Trend -V2 analyzes the price impact of the last four wave trend crossovers.
Let's say the last impact point was "X", the previous one "X-1", the one before that "X-2", and so on.
The indicator calculates the average price movement between these points using the following simplified formula:
Average Impact = (X - X-1) + (X-1 - X-2) + (X-2 - X-3) / 3
This average provides a valuable estimate of the potential price movement of the next crossover.
Multiple Take Profit Levels: Setting Strategic Targets:
Wave Trend -V2 offers three dynamic take profit levels (TP1, TP2, TP3).
TP1: Based on the estimated average impact.
TP2: Twice the estimated average impact.
TP3: Three times the estimated average impact.
This allows you to set your profit targets strategically, maximizing potential gains while managing risk effectively.
Why don't use the Estmated impact point to stop the trade?
In order to eliminated the WHIPSAW effect! There is no other way...
Wave Trend -V2 is designed for traders who seek a deeper understanding of trend dynamics and desire a more sophisticated approach to trading. By combining multi-timeframe analysis, pressure assessment, and advanced impact point calculations, this indicator empowers you to make more informed trading decisions and potentially improve your trading outcomes.
The indicator work best with combination of other trend type indicators.
Please dont forget that indicators are not miracle medicines , it cannot give you exact results , market was always volative , use at your own discretion.
Price Move DetectorThe Price Move Detector is a powerful technical analysis tool that automatically detects and highlights significant price movements over a user-defined time frame. This indicator allows traders to quickly identify instances where an asset has experienced a large price change, making it easier to spot potential trading opportunities.
Key Features
Customizable Parameters: Adjust the percentage change and time period (bars or sessions) to define what qualifies as a "significant" price move.
Automatic Highlighting: The indicator overlays a background highlight on the chart whenever the price moves by the specified percentage within the chosen time period.
Flexible Time Frame: Use this indicator across various timeframes and adjust the settings to suit your trading strategy, such as detecting 100% price moves over 20 sessions.
Ideal for Historical Analysis: Perfect for backtesting and screening for past price surges, helping traders spot explosive price action and market trends.
Use Cases
Spot Potential Breakouts: Use the detector to identify stocks or assets that have made significant moves, potentially signaling the start of a breakout or new trend.
Quickly Identify Major Market Moves: Scan historical data to pinpoint times when an asset experienced substantial price changes, providing insight into past performance and future potential.
How to Use
Customize the Settings
Percentage Threshold: Set the minimum percentage increase (e.g., 50%, 100%) that qualifies as a significant move. You can experiment with different percentages to suit your analysis.
Time Period (Bars): Define the lookback period (in bars/sessions) over which the price move should be measured. For example, set it to 20 bars for a one-month time frame on a daily chart.
Analyze the Highlights
Whenever the price increases by the defined percentage over the set period, the indicator will highlight that section of the chart with a background color.
The highlighted sections will make it easy to identify historical periods of large price movements, which can be useful for spotting trends, potential breakouts, or other market behaviors.
Adjust the Parameters for Your Strategy
You can fine-tune the settings to detect smaller or larger price moves depending on your trading goals.
The indicator is flexible enough for use on different timeframes and assets, providing valuable insights across various markets.
Volume Comparison with Buyer/Seller PressureTHIS indicator is well-structured and provides a comprehensive way to analyze volume alongside buyer and seller pressure. This indicator helps traders analyze volume dynamics in the stock or cryptocurrency market while simultaneously assessing buyer and seller pressure. Its use case revolves around identifying strong buying or selling activity, neutral conditions, and volume trends over different time periods. Below is a breakdown of how to use this indicator:
This Pine Script indicator helps traders analyze volume dynamics in the stock or cryptocurrency market while simultaneously assessing buyer and seller pressure. Its use case revolves around identifying strong buying or selling activity, neutral conditions, and volume trends over different time periods. Below is a breakdown of how to use this indicator:
Key Features and Use Case
Volume-Based Insights:
Displays daily volume and compares it to the 3-day, 5-day, 10-day, and 20-day moving averages of volume. Helps traders identify days with unusual volume spikes relative to historical averages, signaling potential reversals or breakouts.
Buyer and Seller Pressure:
Measures buyer pressure: how much the closing price dominates the trading range of the day.
Measures seller pressure: how much the opening price dominates the trading range of the day.
Highlights areas where buying or selling pressure is particularly strong (≥ 0.75).
Background Signals:
Green Background: Strong buyer pressure (indicative of potential upward momentum).
Red Background: Strong seller pressure (indicative of potential downward momentum).
Gray Background: Neutral market conditions (neither buying nor selling dominance).
Alerts:
Alerts traders when:
Strong buying signals are detected.
Strong selling signals are detected.
The market is neutral, with neither buyers nor sellers in control.
Decision-Making Aid:
Combines volume analysis with price action (buyer/seller pressure) to help traders identify:
Potential breakout opportunities.
Reversal points.
Neutral zones where a trader might avoid trading due to indecision in the market.
How to Use It in Trading:------->
Add the Indicator:
Apply this Indicator to your Trading View chart to start visualizing the buyer/seller pressure and volume averages.
Interpret Volume Trends:
Look for days when daily volume significantly exceeds the 3-day, 5-day, 10-day, or 20-day average.
These could indicate:
A breakout when aligned with strong buyer pressure.
A sell-off when aligned with strong seller pressure.
React to Background Colors:
* Green Background (Strong Buyer Pressure):
Suggests buyers are dominating the market, and upward momentum is likely.
Use this signal to consider buying opportunities, especially if volume is above average.
* Red Background (Strong Seller Pressure):
Indicates sellers are in control, and prices might fall.
Use this signal to consider selling or shorting opportunities.
* Gray Background (Neutral Market):
Reflects indecision; avoid entering trades during these periods unless other signals support a strategy.
Volume Confirmation:
Combine volume analysis with buyer/seller pressure to confirm trends.
Example: A high daily volume with strong buyer pressure signals a high-probability uptrend.
Set Alerts:
Enable alerts to receive real-time notifications when the market generates strong buy/sell signals or enters a neutral zone.
Who Can Benefit:
* Day Traders: Quickly assess intraday market dynamics and volume trends.
* Swing Traders: Identify breakout opportunities or reversal points based on strong buyer/seller pressure.
* Volume Analysts: Compare historical volume averages to current conditions for deeper insights.
Limitations:
Does not guarantee success—should be combined with other technical indicators or strategies.
In low-volume markets, signals may produce false positives or unreliable results.
Assumes traders have basic knowledge of price action and volume analysis.
By integrating this indicator into your strategy, you gain a powerful tool to analyze buyer/seller dominance alongside volume trends, improving your market timing and trade execution.
The Buyer and Seller Pressure components in this indicator provide crucial insights into the market's sentiment and momentum by analyzing the price action relative to the trading volume. Here's how they are used:
1. Buyer Pressure:
Formula:
Buyer Pressure = (Close − Open) / (High − Low )
Interpretation:
* A high buyer pressure (≥ 0.75) indicates strong bullish sentiment, where the price closes much higher than it opened, and the range (high-low) is sufficiently wide.
* It identifies periods of aggressive buying, often signaling potential bullish trends or confirming upward momentum.
2. Seller Pressure:
Formula:
Seller Pressure = (Close − Open ) / (High -Low )
Interpretation:
*A high seller pressure (≥ 0.75) suggests strong bearish sentiment, where the price closes much lower than it opened, within a wide range.
*It helps identify periods of aggressive selling, signaling potential bearish trends or downward momentum.
Purpose in the Indicator:
1. Market Sentiment Analysis:
* Buyer Pressure and Seller Pressure allow traders to gauge market sentiment—whether buyers or sellers dominate a particular time frame.
* This helps in identifying trend reversals or confirmations.
2. Decision-Making Framework:
* The indicator uses thresholds (default 0.75) to classify the market into:
* Strong Buy Signal: When buyer pressure is dominant.
* Strong Sell Signal: When seller pressure is dominant.
* Neutral Signal: When neither buyer nor seller pressure dominates.
*This classification provides a straightforward decision-making tool for traders.
Risk Management:
*By identifying periods of strong buying or selling, traders can avoid entering trades in highly volatile or one-sided markets, which helps reduce risk.
Volume Confirmation:
*Integrating volume data with buyer/seller pressure helps confirm trends. For example:
*High buyer pressure accompanied by higher-than-average volume strengthens the bullish signal.
*Similarly, high seller pressure with higher-than-average volume confirms bearish signals.
Trade Timing:
*The indicator highlights conditions of potential entry (strong buy) or exit (strong sell), allowing traders to time their trades better based on real-time market activity.
Use Case:
*Example:
*Suppose the indicator shows Buyer Pressure = 0.85 with daily volume above the 3-day average. This combination suggests strong bullish activity with momentum, signaling a buy opportunity.
*Conversely, if Seller Pressure = 0.80 with volume above the 5-day average, it signals strong bearish momentum, ideal for selling or shorting.
This indicator combines buyer/seller pressure with volume dynamics, making it valuable for short-term and intraday traders looking for precise market entries and exits.
The background color in this indicator plays an important visual role in helping traders quickly identify the market sentiment based on buyer and seller pressure. It provides a dynamic, color-coded background that changes depending on the strength of the market's buying or selling activity.
Here's how it works:
Background Color Logic:
1. Green Background (Strong Buy Signal):
*Condition: The background turns green when buyer pressure is greater than or equal to 0.75 (strong buying pressure).
*Interpretation: A green background indicates that there is significant bullish sentiment in the market, with strong buying activity. Traders can interpret this as an environment conducive to buying or holding long positions.
*Visual Effect: This helps to quickly spot bullish market conditions, reinforcing potential entry signals for buyers.
2.Red Background (Strong Sell Signal):
*Condition: The background turns red when seller pressure is greater than or equal to 0.75 (strong selling pressure).
*Interpretation: A red background indicates that the market is dominated by selling, showing strong bearish sentiment. Traders can consider this as a signal to sell or short the asset.
*Visual Effect: The red background highlights moments when the market is heavily selling, prompting traders to either exit long positions or take short positions.
Gray Background (Neutral/Indecision Zone):
Condition: The background turns gray when neither buyer nor seller pressure exceeds 0.75. This means the market is neutral, with no dominant bullish or bearish sentiment.
Interpretation: A gray background suggests market indecision or balance between buyers and sellers. It can indicate periods of consolidation or sideways movement where no strong trend is forming.
Visual Effect: The gray background helps traders avoid entering trades when the market lacks a clear direction or when the sentiment is neutral, reducing risk during indecisive times.
Practical Use:
Instant Visual Confirmation:
*Traders can use the background color as an instant confirmation of the market’s sentiment. For instance, if the background turns green, traders might feel more confident in making a long (buy) trade.
*If the background turns red, it serves as a strong visual cue to short or exit a long position.
Helps with Trade Timing:
*The background color can be used in conjunction with other indicators and volume data to time entries and exits more effectively. For example:
*A green background with strong volume indicates a strong trend that could justify a buy.
*A red background with a significant volume surge signals strong selling pressure, which could prompt a sell.
Simplifies Market Analysis:
*For traders who prefer visual cues over complex analysis, the background color simplifies market conditions. Instead of focusing on individual numbers or values, the color-coded background gives them a quick, intuitive view of the market sentiment.
Summary:
* Green background = Strong buying pressure (bullish sentiment)
* Red background = Strong selling pressure (bearish sentiment)
* Gray background = Neutral market (indecision or balance between buyers and sellers)
This background color functionality helps traders stay aware of the prevailing market sentiment at a glance, providing an intuitive way to guide trading decisions.
Trading TimesThis script is based on the 9 and 20 EMA Strategy and combines Fibonacci Levels for added confluence.
When the price retests after breaking the EMAs, we take the trade in the same direction. That is on breakup, we take a long and on a breakdown we take a short.
VWAP can be enabled from settings for more data. institutions use it to average out their trades for both buy and sell orders.
Bullish Reversal Bar Strategy [Skyrexio]Overview
Bullish Reversal Bar Strategy leverages the combination of candlestick pattern Bullish Reversal Bar (description in Methodology and Justification of Methodology), Williams Alligator indicator and Williams Fractals to create the high probability setups. Candlestick pattern is used for the entering into trade, while the combination of Williams Alligator and Fractals is used for the trend approximation as close condition. Strategy uses only long trades.
Unique Features
No fixed stop-loss and take profit: Instead of fixed stop-loss level strategy utilizes technical condition obtained by Fractals and Alligator or the candlestick pattern invalidation to identify when current uptrend is likely to be over (more information in "Methodology" and "Justification of Methodology" paragraphs)
Configurable Trading Periods: Users can tailor the strategy to specific market windows, adapting to different market conditions.
Trend Trade Filter: strategy uses Alligator and Fractal combination as high probability trend filter.
Methodology
The strategy opens long trade when the following price met the conditions:
1.Current candle's high shall be below the Williams Alligator's lines (Jaw, Lips, Teeth)(all details in "Justification of Methodology" paragraph)
2.Price shall create the candlestick pattern "Bullish Reversal Bar". Optionally if MFI and AO filters are enabled current candle shall have the decreasing AO and at least one of three recent bars shall have the squat state on the MFI (all details in "Justification of Methodology" paragraph)
3.If price breaks through the high of the candle marked as the "Bullish Reversal Bar" the long trade is open at the price one tick above the candle's high
4.Initial stop loss is placed at the Bullish Reversal Bar's candle's low
5.If price hit the Bullish Reversal Bar's low before hitting the entry price potential trade is cancelled
6.If trade is active and initial stop loss has not been hit, trade is closed when the combination of Alligator and Williams Fractals shall consider current trend change from upward to downward.
Strategy settings
In the inputs window user can setup strategy setting:
Enable MFI (if true trades are filtered using Market Facilitation Index (MFI) condition all details in "Justification of Methodology" paragraph), by default = false)
Enable AO (if true trades are filtered using Awesome Oscillator (AO) condition all details in "Justification of Methodology" paragraph), by default = false)
Justification of Methodology
Let's explore the key concepts of this strategy and understand how they work together. The first and key concept is the Bullish Reversal Bar candlestick pattern. This is just the single bar pattern. The rules are simple:
Candle shall be closed in it's upper half
High of this candle shall be below all three Alligator's lines (Jaw, Lips, Teeth)
Next, let’s discuss the short-term trend filter, which combines the Williams Alligator and Williams Fractals. Williams Alligator
Developed by Bill Williams, the Alligator is a technical indicator that identifies trends and potential market reversals. It consists of three smoothed moving averages:
Jaw (Blue Line): The slowest of the three, based on a 13-period smoothed moving average shifted 8 bars ahead.
Teeth (Red Line): The medium-speed line, derived from an 8-period smoothed moving average shifted 5 bars forward.
Lips (Green Line): The fastest line, calculated using a 5-period smoothed moving average shifted 3 bars forward.
When the lines diverge and align in order, the "Alligator" is "awake," signaling a strong trend. When the lines overlap or intertwine, the "Alligator" is "asleep," indicating a range-bound or sideways market. This indicator helps traders determine when to enter or avoid trades.
Fractals, another tool by Bill Williams, help identify potential reversal points on a price chart. A fractal forms over at least five consecutive bars, with the middle bar showing either:
Up Fractal: Occurs when the middle bar has a higher high than the two preceding and two following bars, suggesting a potential downward reversal.
Down Fractal: Happens when the middle bar shows a lower low than the surrounding two bars, hinting at a possible upward reversal.
Traders often use fractals alongside other indicators to confirm trends or reversals, enhancing decision-making accuracy.
How do these tools work together in this strategy? Let’s consider an example of an uptrend.
When the price breaks above an up fractal, it signals a potential bullish trend. This occurs because the up fractal represents a shift in market behavior, where a temporary high was formed due to selling pressure. If the price revisits this level and breaks through, it suggests the market sentiment has turned bullish.
The breakout must occur above the Alligator’s teeth line to confirm the trend. A breakout below the teeth is considered invalid, and the downtrend might still persist. Conversely, in a downtrend, the same logic applies with down fractals.
How we can use all these indicators in this strategy? This strategy is a counter trend one. Candle's high shall be below all Alligator's lines. During this market stage the bullish reversal bar candlestick pattern shall be printed. This bar during the downtrend is a high probability setup for the potential reversal to the upside: bulls were able to close the price in the upper half of a candle. The breaking of its high is a high probability signal that trend change is confirmed and script opens long trade. If market continues going down and break down the bullish reversal bar's low potential trend change has been invalidated and strategy close long trade.
If market really reversed and started moving to the upside strategy waits for the trend change form the downtrend to the uptrend according to approximation of Alligator and Fractals combination. If this change happens strategy close the trade. This approach helps to stay in the long trade while the uptrend continuation is likely and close it if there is a high probability of the uptrend finish.
Optionally users can enable MFI and AO filters. First of all, let's briefly explain what are these two indicators. The Awesome Oscillator (AO), created by Bill Williams, is a momentum-based indicator that evaluates market momentum by comparing recent price activity to a broader historical context. It assists traders in identifying potential trend reversals and gauging trend strength.
AO = SMA5(Median Price) − SMA34(Median Price)
where:
Median Price = (High + Low) / 2
SMA5 = 5-period Simple Moving Average of the Median Price
SMA 34 = 34-period Simple Moving Average of the Median Price
This indicator is filtering signals in the following way: if current AO bar is decreasing this candle can be interpreted as a bullish reversal bar. This logic is applicable because initially this strategy is a trend reversal, it is searching for the high probability setup against the current trend. Decreasing AO is the additional high probability filter of a downtrend.
Let's briefly look what is MFI. The Market Facilitation Index (MFI) is a technical indicator that measures the price movement per unit of volume, helping traders gauge the efficiency of price movement in relation to trading volume. Here's how you can calculate it:
MFI = (High−Low)/Volume
MFI can be used in combination with volume, so we can divide 4 states. Bill Williams introduced these to help traders interpret the interaction between volume and price movement. Here’s a quick summary:
Green Window (Increased MFI & Increased Volume): Indicates strong momentum with both price and volume increasing. Often a sign of trend continuation, as both buying and selling interest are rising.
Fake Window (Increased MFI & Decreased Volume): Shows that price is moving but with lower volume, suggesting weak support for the trend. This can signal a potential end of the current trend.
Squat Window (Decreased MFI & Increased Volume): Shows high volume but little price movement, indicating a tug-of-war between buyers and sellers. This often precedes a breakout as the pressure builds.
Fade Window (Decreased MFI & Decreased Volume): Indicates a lack of interest from both buyers and sellers, leading to lower momentum. This typically happens in range-bound markets and may signal consolidation before a new move.
For our purposes we are interested in squat bars. This is the sign that volume cannot move the price easily. This type of bar increases the probability of trend reversal. In this indicator we added to enable the MFI filter of reversal bars. If potential reversal bar or two preceding bars have squat state this bar can be interpret as a reversal one.
Backtest Results
Operating window: Date range of backtests is 2023.01.01 - 2024.12.31. It is chosen to let the strategy to close all opened positions.
Commission and Slippage: Includes a standard Binance commission of 0.1% and accounts for possible slippage over 5 ticks.
Initial capital: 10000 USDT
Percent of capital used in every trade: 50%
Maximum Single Position Loss: -5.29%
Maximum Single Profit: +29.99%
Net Profit: +5472.66 USDT (+54.73%)
Total Trades: 103 (33.98% win rate)
Profit Factor: 1.634
Maximum Accumulated Loss: 1231.15 USDT (-8.32%)
Average Profit per Trade: 53.13 USDT (+0.94%)
Average Trade Duration: 76 hours
How to Use
Add the script to favorites for easy access.
Apply to the desired timeframe and chart (optimal performance observed on 4h ETH/USDT).
Configure settings using the dropdown choice list in the built-in menu.
Set up alerts to automate strategy positions through web hook with the text: {{strategy.order.alert_message}}
Disclaimer:
Educational and informational tool reflecting Skyrex commitment to informed trading. Past performance does not guarantee future results. Test strategies in a simulated environment before live implementation
These results are obtained with realistic parameters representing trading conditions observed at major exchanges such as Binance and with realistic trading portfolio usage parameters.
The JewelThe Jewel is a comprehensive momentum and trend-based indicator designed to give traders clear insights into potential market shifts. By integrating RSI, Stochastic, and optional ADX filters with an EMA-based trend filter, this script helps identify high-conviction entry and exit zones for multiple trading styles, from momentum-based breakouts to mean-reversion setups.
Features
Momentum Integration:
Leverages RSI and Stochastic crossovers for real-time momentum checks, reducing noise and highlighting potential turning points.
Optional ADX Filter:
Analyzes market strength; only triggers signals when volatility and directional movement suggest strong follow-through.
EMA Trend Filter:
Identifies broad market bias (bullish vs. bearish), helping traders focus on higher-probability setups by aligning with the prevailing trend.
Caution Alerts:
Flags potentially overbought or oversold conditions when both RSI and Stochastic reach extreme zones, cautioning traders to manage risk or tighten stops.
Customizable Parameters:
Fine-tune RSI, Stochastic, ADX, and EMA settings to accommodate various assets, timeframes, and trading preferences.
How to Use
Momentum Breakouts: Watch for RSI cross above a set threshold and Stochastic cross up, confirmed by ADX strength and alignment with the EMA filter for potential breakout entries.
Mean Reversion: Look for caution signals (RSI & Stoch extremes) as early warnings for trend slowdown or reversal opportunities.
Trend Continuation: In trending markets, rely on the EMA filter to stay aligned with the primary direction. Use momentum crosses (RSI/Stochastic) to time add-on entries or exits.
Important Notes
Non-Investment Advice
The Jewel is a technical analysis tool and does not constitute financial advice. Always use proper risk management and consider multiple confirmations when making trading decisions.
No Warranty
This indicator is provided as-is, without warranty or guarantees of performance. Traders should backtest and verify its effectiveness on their specific instruments and timeframes.
Collaborate & Share
Feedback and suggestions are welcome! Engaging with fellow traders can help refine and adapt The Jewel for diverse market conditions, strengthening the TradingView community as a whole.
Happy Trading!
If you find this script valuable, please share your feedback, ideas, or enhancements. Collaboration fosters a more insightful trading experience for everyone.
Squeeze Momentum Indicator [CHE] Squeeze Momentum Indicator
The Squeeze Momentum Indicator is an improved and simplified version of the classic Squeeze Momentum Indicator by LazyBear. It focuses on precise detection of squeeze phases without relying on Keltner Channels (KC) or complex momentum calculations. Instead, it emphasizes the dynamic analysis of Bollinger Band widths and their distance changes to provide clear and intuitive signals.
What is the Squeeze Momentum Indicator ?
This indicator helps you identify periods of low volatility (squeeze phases) when the market is often poised for significant moves. With its clear visualization and innovative methods, it enables traders to spot breakout opportunities early and trade strategically.
Differences from the Original LazyBear Indicator
1. Use of Bollinger Bands (BB):
- LazyBear Indicator combines Bollinger Bands with Keltner Channels. A squeeze is detected when the Bollinger Bands fall inside the Keltner Channels.
- CHE Indicator relies solely on Bollinger Bands and an additional analysis of their width (distance between the upper and lower bands). This makes the calculation more straightforward and reduces dependency on multiple indicator families.
2. Squeeze Detection:
- LazyBear: A squeeze is defined based on the relationship between Bollinger Bands and Keltner Channels. It has three states: “Squeeze On,” “Squeeze Off,” and “No Squeeze.”
- CHE: A squeeze is detected when the width of the Bollinger Bands falls below the lower "Distance Bollinger Bands." It only has two states: Squeeze Active and No Squeeze.
3. Momentum Calculation:
- LazyBear: Uses linear regression (LinReg) to calculate momentum and displays it as color-coded histograms.
- CHE: Does not include momentum calculations. The focus is entirely on volatility visualization and squeeze detection.
4. Visualization:
- LazyBear: Displays momentum histograms and horizontal lines to signal different states.
- CHE: Visualizes the width of the Bollinger Bands and their Distance Bollinger Bands as lines on the chart. The chart background turns green when a squeeze is detected, simplifying interpretation.
What Is Plotted?
1. Bollinger Band Width:
- A line representing the distance between the upper and lower Bollinger Bands, measuring market volatility.
2. Distance Bollinger Bands:
- Two additional lines (upper and lower Distance Bollinger Bands) based on the Bollinger Band width, defining thresholds for squeeze conditions.
3. Session-Specific Box:
- A dynamic box is drawn on the chart during a squeeze phase. The box marks the high and low of the market for the squeeze duration. It visually frames the range, helping traders monitor breakouts beyond these levels.
4. Max/Min Markers:
- The indicator dynamically updates and marks the maximum and minimum price levels during a squeeze. These levels can serve as breakout thresholds or critical reference points for price action.
5. Background Color:
- The chart background turns green when a squeeze is active (Bollinger Band width falls below the lower Distance Bollinger Bands). This highlights potential breakout conditions.
How to Use the CHE Indicator
1. Add the Indicator:
- Add the indicator to your chart and customize settings such as Bollinger Band length (`sqz_length`) and multiplier (`sqz_multiplier`) to fit your strategy.
2. Identify Squeeze Conditions:
- Watch for the green background, which signals a squeeze—indicating a period of low volatility where significant market moves often follow.
3. Monitor the Box and Max/Min Levels:
- During a squeeze, the box outlines the trading range, and the maximum and minimum levels are updated in real time. Use these as breakout triggers or support/resistance zones.
4. Session-Specific Analysis:
- The indicator can highlight squeezes during specific trading sessions (e.g., market open), allowing you to focus on key time frames.
5. Additional Confirmation:
- Combine the CHE Indicator with price action analysis or momentum tools to determine the direction of potential breakouts.
Why Use the Squeeze Momentum Indicator ?
- Simplicity: Clear visualization and reduced complexity by eliminating Keltner Channels and momentum calculations.
- Flexibility: Suitable for all markets—stocks, forex, crypto, and more.
- Enhanced Visualization: The box and max/min markers provide real-time visual cues for range-bound trading and breakout strategies.
- Efficiency: Focuses on what matters most—identifying volatility and squeeze phases.
With the Squeeze Momentum Indicator , you can take your trading strategy to the next level. Thanks to its clear design, dynamic range visualization, and innovative methods, you’ll recognize breakout opportunities earlier and trade with greater precision. Try it out and experience its user-friendliness and effectiveness for yourself!
PIP Algorithm
# **Script Overview (For Non-Coders)**
1. **Purpose**
- The script tries to capture the essential “shape” of price movement by selecting a limited number of “key points” (anchors) from the latest bars.
- After selecting these anchors, it draws straight lines between them, effectively simplifying the price chart into a smaller set of points without losing major swings.
2. **How It Works, Step by Step**
1. We look back a certain number of bars (e.g., 50).
2. We start by drawing a straight line from the **oldest** bar in that range to the **newest** bar—just two points.
3. Next, we find the bar whose price is *farthest away* from that straight line. That becomes a new anchor point.
4. We “snap” (pin) the line to go exactly through that new anchor. Then we re-draw (re-interpolate) the entire line from the first anchor to the last, in segments.
5. We repeat the process (adding more anchors) until we reach the desired number of points. Each time, we choose the biggest gap between our line and the actual price, then re-draw the entire shape.
6. Finally, we connect these anchors on the chart with red lines, visually simplifying the price curve.
3. **Why It’s Useful**
- It highlights the most *important* bends or swings in the price over the chosen window.
- Instead of plotting every single bar, it condenses the information down to the “key turning points.”
4. **Key Takeaway**
- You’ll see a small number of red line segments connecting the **most significant** points in the price data.
- This is especially helpful if you want a simplified view of recent price action without minor fluctuations.
## **Detailed Logic Explanation**
# **Script Breakdown (For Coders)**
//@version=5
indicator(title="PIP Algorithm", overlay=true)
// 1. Inputs
length = input.int(50, title="Lookback Length")
num_points = input.int(5, title="Number of PIP Points (≥ 3)")
// 2. Helper Functions
// ---------------------------------------------------------------------
// reInterpSubrange(...):
// Given two “anchor” indices in `linesArr`, linearly interpolate
// the array values in between so that the subrange forms a straight line
// from linesArr to linesArr .
reInterpSubrange(linesArr, segmentLeft, segmentRight) =>
float leftVal = array.get(linesArr, segmentLeft)
float rightVal = array.get(linesArr, segmentRight)
int segmentLen = segmentRight - segmentLeft
if segmentLen > 1
for i = segmentLeft + 1 to segmentRight - 1
float ratio = (i - segmentLeft) / segmentLen
float interpVal = leftVal + (rightVal - leftVal) * ratio
array.set(linesArr, i, interpVal)
// reInterpolateAllSegments(...):
// For the entire “linesArr,” re-interpolate each subrange between
// consecutive breakpoints in `lineBreaksArr`.
// This ensures the line is globally correct after each new anchor insertion.
reInterpolateAllSegments(linesArr, lineBreaksArr) =>
array.sort(lineBreaksArr, order.asc)
for i = 0 to array.size(lineBreaksArr) - 2
int leftEdge = array.get(lineBreaksArr, i)
int rightEdge = array.get(lineBreaksArr, i + 1)
reInterpSubrange(linesArr, leftEdge, rightEdge)
// getMaxDistanceIndex(...):
// Return the index (bar) that is farthest from the current “linesArr.”
// We skip any indices already in `lineBreaksArr`.
getMaxDistanceIndex(linesArr, closeArr, lineBreaksArr) =>
float maxDist = -1.0
int maxIdx = -1
int sizeData = array.size(linesArr)
for i = 1 to sizeData - 2
bool isBreak = false
for b = 0 to array.size(lineBreaksArr) - 1
if i == array.get(lineBreaksArr, b)
isBreak := true
break
if not isBreak
float dist = math.abs(array.get(linesArr, i) - array.get(closeArr, i))
if dist > maxDist
maxDist := dist
maxIdx := i
maxIdx
// snapAndReinterpolate(...):
// "Snap" a chosen index to its actual close price, then re-interpolate the entire line again.
snapAndReinterpolate(linesArr, closeArr, lineBreaksArr, idxToSnap) =>
if idxToSnap >= 0
float snapVal = array.get(closeArr, idxToSnap)
array.set(linesArr, idxToSnap, snapVal)
reInterpolateAllSegments(linesArr, lineBreaksArr)
// 3. Global Arrays and Flags
// ---------------------------------------------------------------------
// We store final data globally, then use them outside the barstate.islast scope to draw lines.
var float finalCloseData = array.new_float()
var float finalLines = array.new_float()
var int finalLineBreaks = array.new_int()
var bool didCompute = false
var line pipLines = array.new_line()
// 4. Main Logic (Runs Once at the End of the Current Bar)
// ---------------------------------------------------------------------
if barstate.islast
// A) Prepare closeData in forward order (index 0 = oldest bar, index length-1 = newest)
float closeData = array.new_float()
for i = 0 to length - 1
array.push(closeData, close )
// B) Initialize linesArr with a simple linear interpolation from the first to the last point
float linesArr = array.new_float()
float firstClose = array.get(closeData, 0)
float lastClose = array.get(closeData, length - 1)
for i = 0 to length - 1
float ratio = (length > 1) ? (i / float(length - 1)) : 0.0
float val = firstClose + (lastClose - firstClose) * ratio
array.push(linesArr, val)
// C) Initialize lineBreaks with two anchors: 0 (oldest) and length-1 (newest)
int lineBreaks = array.new_int()
array.push(lineBreaks, 0)
array.push(lineBreaks, length - 1)
// D) Iteratively insert new breakpoints, always re-interpolating globally
int iterationsNeeded = math.max(num_points - 2, 0)
for _iteration = 1 to iterationsNeeded
// 1) Re-interpolate entire shape, so it's globally up to date
reInterpolateAllSegments(linesArr, lineBreaks)
// 2) Find the bar with the largest vertical distance to this line
int maxDistIdx = getMaxDistanceIndex(linesArr, closeData, lineBreaks)
if maxDistIdx == -1
break
// 3) Insert that bar index into lineBreaks and snap it
array.push(lineBreaks, maxDistIdx)
array.sort(lineBreaks, order.asc)
snapAndReinterpolate(linesArr, closeData, lineBreaks, maxDistIdx)
// E) Save results into global arrays for line drawing outside barstate.islast
array.clear(finalCloseData)
array.clear(finalLines)
array.clear(finalLineBreaks)
for i = 0 to array.size(closeData) - 1
array.push(finalCloseData, array.get(closeData, i))
array.push(finalLines, array.get(linesArr, i))
for b = 0 to array.size(lineBreaks) - 1
array.push(finalLineBreaks, array.get(lineBreaks, b))
didCompute := true
// 5. Drawing the Lines in Global Scope
// ---------------------------------------------------------------------
// We cannot create lines inside barstate.islast, so we do it outside.
array.clear(pipLines)
if didCompute
// Connect each pair of anchors with red lines
if array.size(finalLineBreaks) > 1
for i = 0 to array.size(finalLineBreaks) - 2
int idxLeft = array.get(finalLineBreaks, i)
int idxRight = array.get(finalLineBreaks, i + 1)
float x1 = bar_index - (length - 1) + idxLeft
float x2 = bar_index - (length - 1) + idxRight
float y1 = array.get(finalCloseData, idxLeft)
float y2 = array.get(finalCloseData, idxRight)
line ln = line.new(x1, y1, x2, y2, extend=extend.none)
line.set_color(ln, color.red)
line.set_width(ln, 2)
array.push(pipLines, ln)
1. **Data Collection**
- We collect the **most recent** `length` bars in `closeData`. Index 0 is the oldest bar in that window, index `length-1` is the newest bar.
2. **Initial Straight Line**
- We create an array called `linesArr` that starts as a simple linear interpolation from `closeData ` (the oldest bar’s close) to `closeData ` (the newest bar’s close).
3. **Line Breaks**
- We store “anchor points” in `lineBreaks`, initially ` `. These are the start and end of our segment.
4. **Global Re-Interpolation**
- Each time we want to add a new anchor, we **re-draw** (linear interpolation) for *every* subrange ` [lineBreaks , lineBreaks ]`, ensuring we have a globally consistent line.
- This avoids the “local subrange only” approach, which can cause clustering near existing anchors.
5. **Finding the Largest Distance**
- After re-drawing, we compute the vertical distance for each bar `i` that isn’t already a line break. The bar with the biggest distance from the line is chosen as the next anchor (`maxDistIdx`).
6. **Snapping and Re-Interpolate**
- We “snap” that bar’s line value to the actual close, i.e. `linesArr = closeData `. Then we globally re-draw all segments again.
7. **Repeat**
- We repeat these insertions until we have the desired number of points (`num_points`).
8. **Drawing**
- Finally, we connect each consecutive pair of anchor points (`lineBreaks`) with a `line.new(...)` call, coloring them red.
- We offset the line’s `x` coordinate so that the anchor at index 0 lines up with `bar_index - (length - 1)`, and the anchor at index `length-1` lines up with `bar_index` (the current bar).
**Result**:
You get a simplified representation of the price with a small set of line segments capturing the largest “jumps” or swings. By re-drawing the entire line after each insertion, the anchors tend to distribute more *evenly* across the data, mitigating the issue where anchors bunch up near each other.
Enjoy experimenting with different `length` and `num_points` to see how the simplified lines change!
Eroina Trend Reversal Indicator with ConfirmationsEroina Trend Reversal Indicator with Confirmations
Overview (English):
The Trend Reversal Indicator with Confirmations is designed to identify potential trend reversals by analyzing dynamic resistance and support levels. This script uses a robust confirmation system to reduce false signals, making it ideal for traders who seek disciplined, data-driven decisions.
Key Features:
• Dynamic Levels: Calculates resistance and support levels based on user-defined lengths.
• Breakout Confirmation: Confirms trend reversals by validating price action over a specified number of candles.
• Visual Cues: Displays “LONG” and “SHORT” signals directly on the chart, alongside resistance/support levels.
• Customizable Parameters: Adaptable to different timeframes and market conditions.
How It Works:
1. Resistance & Support Levels:
• Resistance: Calculated as the highest high over the last N bars.
• Support: Calculated as the lowest low over the last N bars.
2. Breakout Detection:
• A resistance breakout occurs when the price closes above the resistance level.
• A support breakout occurs when the price closes below the support level.
3. Confirmation Logic:
• Signals are validated only if the price remains above/below the levels for a user-defined number of candles.
4. Entry Signals:
• “LONG” signals indicate a confirmed breakout above resistance.
• “SHORT” signals indicate a confirmed breakdown below support.
Settings:
• Resistance Length: Defines the number of candles used to calculate resistance levels.
• Support Length: Defines the number of candles used to calculate support levels.
• Confirmation Candles: Specifies how many candles are required to confirm breakouts.
Usage:
This indicator is ideal for identifying trend reversals and optimizing entry points. Combine it with volume analysis or other technical indicators to enhance accuracy. For example:
• Use in conjunction with RSI to avoid overbought/oversold conditions.
• Combine with moving averages to confirm the trend direction.
Overview (Additional Language):
(Your additional language description can go here after English, e.g., Russian, Spanish, etc.)
Linear Regression Channel [TradingFinder] Existing Trend Line🔵 Introduction
The Linear Regression Channel indicator is one of the technical analysis tool, widely used to identify support, resistance, and analyze upward and downward trends.
The Linear Regression Channel comprises five main components : the midline, representing the linear regression line, and the support and resistance lines, which are calculated based on the distance from the midline using either standard deviation or ATR.
This indicator leverages linear regression to forecast price changes based on historical data and encapsulates price movements within a price channel.
The upper and lower lines of the channel, which define resistance and support levels, assist traders in pinpointing entry and exit points, ultimately aiding better trading decisions.
When prices approach these channel lines, the likelihood of interaction with support or resistance levels increases, and breaking through these lines may signal a price reversal or continuation.
Due to its precision in identifying price trends, analyzing trend reversals, and determining key price levels, the Linear Regression Channel indicator is widely regarded as a reliable tool across financial markets such as Forex, stocks, and cryptocurrencies.
🔵 How to Use
🟣 Identifying Entry Signals
One of the primary uses of this indicator is recognizing buy signals. The lower channel line acts as a support level, and when the price nears this line, the likelihood of an upward reversal increases.
In an uptrend : When the price approaches the lower channel line and signs of upward reversal (e.g., reversal candlesticks or high trading volume) are observed, it is considered a buy signal.
In a downtrend : If the price breaks the lower channel line and subsequently re-enters the channel, it may signal a trend change, offering a buying opportunity.
🟣 Identifying Exit Signals
The Linear Regression Channel is also used to identify sell signals. The upper channel line generally acts as a resistance level, and when the price approaches this line, the likelihood of a price decrease increases.
In an uptrend : Approaching the upper channel line and observing weakness in the uptrend (e.g., declining volume or reversal patterns) indicates a sell signal.
In a downtrend : When the price reaches the upper channel line and reverses downward, this is considered a signal to exit trades.
🟣 Analyzing Channel Breakouts
The Linear Regression Channel allows traders to identify price breakouts as strong signals of potential trend changes.
Breaking the upper channel line : Indicates buyer strength and the likelihood of a continued uptrend, often accompanied by increased trading volume.
Breaking the lower channel line : Suggests seller dominance and the possibility of a continued downtrend, providing a strong sell signal.
🟣 Mean Reversion Analysis
A key concept in using the Linear Regression Channel is the tendency for prices to revert to the midline of the channel, which acts as a dynamic moving average, reflecting the price's equilibrium over time.
In uptrends : Significant deviations from the midline increase the likelihood of a price retracement toward the midline.
In downtrends : When prices deviate considerably from the midline, a return toward the midline can be used to identify potential reversal points.
🔵 Settings
🟣 Time Frame
The time frame setting enables users to view higher time frame data on a lower time frame chart. This feature is especially useful for traders employing multi-time frame analysis.
🟣 Regression Type
Standard : Utilizes classical linear regression to draw the midline and channel lines.
Advanced : Produces similar results to the standard method but may provide slightly different alignment on the chart.
🟣 Scaling Type
Standard Deviation : Suitable for markets with stable volatility.
ATR (Average True Range) : Ideal for markets with higher volatility.
🟣 Scaling Coefficients
Larger coefficients create broader channels for broader trend analysis.
Smaller coefficients produce tighter channels for precision analysis.
🟣 Channel Extension
None : No extension.
Left: Extends lines to the left to analyze historical trends.
Right : Extends lines to the right for future predictions.
Both : Extends lines in both directions.
🔵 Conclusion
The Linear Regression Channel indicator is a versatile and powerful tool in technical analysis, providing traders with support, resistance, and midline insights to better understand price behavior. Its advanced settings, including time frame selection, regression type, scaling options, and customizable coefficients, allow for tailored and precise analysis.
One of its standout advantages is its ability to support multi-time frame analysis, enabling traders to view higher time frame data within a lower time frame context. The option to use scaling methods like ATR or standard deviation further enhances its adaptability to markets with varying volatility.
Designed to identify entry and exit signals, analyze mean reversion, and assess channel breakouts, this indicator is suitable for a wide range of markets, including Forex, stocks, and cryptocurrencies. By incorporating this tool into your trading strategy, you can make more informed decisions and improve the accuracy of your market predictions.
300-Candle Weighted Average Zones w/50 EMA SignalsThis indicator is designed to deliver a more nuanced view of price dynamics by combining a custom, weighted price average with a volatility-based zone and a trend filter (in this case, a 50-period exponential moving average). The core concept revolves around capturing the overall price level over a relatively large lookback window (300 candles) but with an intentional bias toward recent market activity (the most recent 20 candles), thereby offering a balance between long-term context and short-term responsiveness. By smoothing this weighted average and establishing a “zone” of standard deviation bands around it, the indicator provides a refined visualization of both average price and its recent volatility envelope. Traders can then look for confluence with a standard trend filter, such as the 50 EMA, to identify meaningful crossover signals that may represent trend shifts or opportunities for entry and exit.
What the Indicator Does:
Weighted Price Average:
Instead of using a simple or exponential moving average, this indicator calculates a custom weighted average price over the past 300 candles. Most historical candles receive a base weight of 1.0, but the most recent 20 candles are assigned a higher weight (for example, a weight of 2.0). This weighting scheme ensures that the calculation is not simply a static lookback average; it actively emphasizes current market conditions. The effect is to generate an average line that is more sensitive to the most recent price swings while still maintaining the historical context of the previous 280 candles.
Smoothing of the Weighted Average:
Once the raw weighted average is computed, an exponential smoothing function (EMA) is applied to reduce noise and produce a cleaner, more stable average line. This smoothing helps traders avoid reacting prematurely to minor price fluctuations. By stabilizing the average line, traders can more confidently identify actual shifts in market direction.
Volatility Zone via Standard Deviation Bands:
To contextualize how far price can deviate from this weighted average, the indicator uses standard deviation. Standard deviation is a statistical measure of volatility—how spread out the price values are around the mean. By adding and subtracting one standard deviation from the smoothed weighted average, the indicator plots an upper band and a lower band, creating a zone or channel. The area between these bands is filled, often with a semi-transparent color, highlighting a volatility corridor within which price and the EMA might oscillate.
This zone is invaluable in visualizing “normal” price behavior. When the 50 EMA line and the weighted average line are both within this volatility zone, it indicates that the market’s short- to mid-term trend and its average pricing are aligned well within typical volatility bounds.
Incorporation of a 50-Period EMA:
The inclusion of a commonly used trend filter, the 50 EMA, adds another layer of context to the analysis. The 50 EMA, being a widely recognized moving average length, is often considered a baseline for intermediate trend bias. It reacts faster than a long-term average (like a 200 EMA) but is still stable enough to filter out the market “chop” seen in very short-term averages.
By overlaying the 50 EMA on this custom weighted average and the surrounding volatility zone, the trader gains a dual-dimensional perspective:
Trend Direction: If the 50 EMA is generally above the weighted average, the short-term trend is gaining bullish momentum; if it’s below, the short-term trend has a bearish tilt.
Volatility Normalization: The bands, constructed from standard deviations, provide a sense of whether the price and the 50 EMA are operating within a statistically “normal” range. If the EMA crosses the weighted average within this zone, it signals a potential trend initiation or meaningful shift, as opposed to a random price spike outside normal volatility boundaries.
Why a Trader Would Want to Use This Indicator:
Contextualized Price Level:
Standard MAs may not fully incorporate the most recent price dynamics in a large lookback window. By weighting the most recent candles more heavily, this indicator ensures that the trader is always anchored to what the market is currently doing, not just what it did 100 or 200 candles ago.
Reduced Whipsaw with Smoothing:
The smoothed weighted average line reduces noise, helping traders filter out inconsequential price movements. This makes it easier to spot genuine changes in trend or sentiment.
Visual Volatility Gauge:
The standard deviation bands create a visual representation of “normal” price movement. Traders can quickly assess if a breakout or breakdown is statistically significant or just another oscillation within the expected volatility range.
Clear Trade Signals with Confirmation:
By integrating the 50 EMA and designing signals that trigger only when the 50 EMA crosses above or below the weighted average while inside the zone, the indicator provides a refined entry/exit criterion. This avoids chasing breakouts that occur in abnormal volatility conditions and focuses on those crossovers likely to have staying power.
How to Use It in an Example Strategy:
Imagine you are a swing trader looking to identify medium-term trend changes. You apply this indicator to a chart of a popular currency pair or a leading tech stock. Over the past few days, the 50 EMA has been meandering around the weighted average line, both confined within the standard deviation zone.
Bullish Example:
Suddenly, the 50 EMA crosses decisively above the weighted average line while both are still hovering within the volatility zone. This might be your cue: you interpret this crossover as the 50 EMA acknowledging the recent upward shift in price dynamics that the weighted average has highlighted. Since it occurred inside the normal volatility range, it’s less likely to be a head-fake. You place a long position, setting an initial stop just below the lower band to protect against volatility.
If the price continues to rise and the EMA stays above the average, you have confirmation to hold the trade. As the price moves higher, the weighted average may follow, reinforcing your bullish stance.
Bearish Example:
On the flip side, if the 50 EMA crosses below the weighted average line within the zone, it suggests a subtle but meaningful change in trend direction to the downside. You might short the asset, placing your protective stop just above the upper band, expecting that the statistically “normal” level of volatility will contain the price action. If the price does break above those bands later, it’s a sign your trade may not work out as planned.
Other Indicators for Confluence:
To strengthen the reliability of the signals generated by this weighted average zone approach, traders may want to combine it with other technical studies:
Volume Indicators (e.g., Volume Profile, OBV):
Confirm that the trend crossover inside the volatility zone is supported by volume. For instance, an uptrend crossover combined with increasing On-Balance Volume (OBV) or volume spikes on up candles signals stronger buying pressure behind the price action.
Momentum Oscillators (e.g., RSI, Stochastics):
Before taking a crossover signal, check if the RSI is above 50 and rising for bullish entries, or if the Stochastics have turned down from overbought levels for bearish entries. Momentum confirmation can help ensure that the trend change is not just an isolated random event.
Market Structure Tools (e.g., Pivot Points, Swing High/Low Analysis):
Identify if the crossover event coincides with a break of a previous pivot high or low. A bullish crossover inside the zone aligned with a break above a recent swing high adds further strength to your conviction. Conversely, a bearish crossover confirmed by a breakdown below a previous swing low can make a short trade setup more compelling.
Volume-Weighted Average Price (VWAP):
Comparing where the weighted average zone lies relative to VWAP can provide institutional insight. If the bullish crossover happens while the price is also holding above VWAP, it can mean that the average participant in the market is in profit and that the trend is likely supported by strong hands.
This indicator serves as a tool to balance long-term perspective, short-term adaptability, and volatility normalization. It can be a valuable addition to a trader’s toolkit, offering enhanced clarity and precision in detecting meaningful shifts in trend, especially when combined with other technical indicators and robust risk management principles.
Ultra Market StructureThe Ultra Market Structure indicator detects key market structure breaks, such as Break of Structure (BoS) and Change of Character (CHoCH), to help identify trend reversals. It plots lines and labels on the chart to visualize these breakpoints with alerts for important signals.
Introduction
This script is designed to help traders visualize important market structure events, such as trend breaks and reversals, using concepts like Break of Structure (BoS) and Change of Character (CHoCH). The indicator highlights internal and external price levels where the market shifts direction. It offers clear visual signals and alerts to keep traders informed of potential changes in the market trend.
Detailed Description
The indicator focuses on detecting "market structure breaks," which occur when the price moves past significant support or resistance levels, suggesting a potential reversal or continuation of the trend.
.........
Type of structure
Internal Structure: Focuses on smaller, shorter-term price levels within the current market trend.
External Structure: Focuses on larger, longer-term price levels that may indicate more significant shifts in the market.
.....
Key events
Break of Structure (BoS): A market structure break where the price surpasses a previous high (bullish BoS) or low (bearish BoS).
Change of Character (CHoCH): A shift in market behavior when the price fails to continue in the same direction, indicating a possible trend reversal.
Once a break or shift is detected, the script plots lines and labels on the chart to visually mark the breakpoints.
It also provides alerts when a BoS or CHoCH occurs, keeping traders informed in real-time.
The indicator can color the background and candles based on the market structure, making it easy to identify the current trend.
.....
Special feature
At news events or other momentum pushes most structure indicators will go into "sleep mode" because of too far away structure highs/lows. This indicator has a structure reset feature to solve this issue.
.........
Detects Break of Structure (BoS) and Change of Character (CHoCH) signals.
Marks internal and external support/resistance levels where market trends change.
Provides visual cues (lines, labels) and real-time alerts for structure breaks.
Offers background and candle color customization to highlight market direction.
lib_smcLibrary "lib_smc"
This is an adaptation of LuxAlgo's Smart Money Concepts indicator with numerous changes. Main changes include integration of object based plotting, plenty of performance improvements, live tracking of Order Blocks, integration of volume profiles to refine Order Blocks, and many more.
This is a library for developers, if you want this converted into a working strategy, let me know.
buffer(item, len, force_rotate)
Parameters:
item (float)
len (int)
force_rotate (bool)
buffer(item, len, force_rotate)
Parameters:
item (int)
len (int)
force_rotate (bool)
buffer(item, len, force_rotate)
Parameters:
item (Profile type from robbatt/lib_profile/32)
len (int)
force_rotate (bool)
swings(len)
INTERNAL: detect swing points (HH and LL) in given range
Parameters:
len (simple int) : range to check for new swing points
Returns: values are the price level where and if a new HH or LL was detected, else na
method init(this)
Namespace types: OrderBlockConfig
Parameters:
this (OrderBlockConfig)
method delete(this)
Namespace types: OrderBlock
Parameters:
this (OrderBlock)
method clear_broken(this, broken_buffer)
INTERNAL: delete internal order blocks box coordinates if top/bottom is broken
Namespace types: map
Parameters:
this (map)
broken_buffer (map)
Returns: any_bull_ob_broken, any_bear_ob_broken, broken signals are true if an according order block was broken/mitigated, broken contains the broken block(s)
create_ob(id, mode, start_t, start_i, top, end_t, end_i, bottom, break_price, early_confirmation_price, config, init_plot, force_overlay)
INTERNAL: set internal order block coordinates
Parameters:
id (int)
mode (int) : 1: bullish, -1 bearish block
start_t (int)
start_i (int)
top (float)
end_t (int)
end_i (int)
bottom (float)
break_price (float)
early_confirmation_price (float)
config (OrderBlockConfig)
init_plot (bool)
force_overlay (bool)
Returns: signals are true if an according order block was broken/mitigated
method align_to_profile(block, align_edge, align_break_price)
Namespace types: OrderBlock
Parameters:
block (OrderBlock)
align_edge (bool)
align_break_price (bool)
method create_profile(block, opens, tops, bottoms, closes, values, resolution, vah_pc, val_pc, args, init_calculated, init_plot, force_overlay)
Namespace types: OrderBlock
Parameters:
block (OrderBlock)
opens (array)
tops (array)
bottoms (array)
closes (array)
values (array)
resolution (int)
vah_pc (float)
val_pc (float)
args (ProfileArgs type from robbatt/lib_profile/32)
init_calculated (bool)
init_plot (bool)
force_overlay (bool)
method create_profile(block, resolution, vah_pc, val_pc, args, init_calculated, init_plot, force_overlay)
Namespace types: OrderBlock
Parameters:
block (OrderBlock)
resolution (int)
vah_pc (float)
val_pc (float)
args (ProfileArgs type from robbatt/lib_profile/32)
init_calculated (bool)
init_plot (bool)
force_overlay (bool)
track_obs(swing_len, hh, ll, top, btm, bull_bos_alert, bull_choch_alert, bear_bos_alert, bear_choch_alert, min_block_size, max_block_size, config_bull, config_bear, init_plot, force_overlay, enabled, extend_blocks, clear_broken_buffer_before, align_edge_to_value_area, align_break_price_to_poc, profile_args_bull, profile_args_bear, use_soft_confirm, soft_confirm_offset, use_retracements_with_FVG_out)
Parameters:
swing_len (int)
hh (float)
ll (float)
top (float)
btm (float)
bull_bos_alert (bool)
bull_choch_alert (bool)
bear_bos_alert (bool)
bear_choch_alert (bool)
min_block_size (float)
max_block_size (float)
config_bull (OrderBlockConfig)
config_bear (OrderBlockConfig)
init_plot (bool)
force_overlay (bool)
enabled (bool)
extend_blocks (simple bool)
clear_broken_buffer_before (simple bool)
align_edge_to_value_area (simple bool)
align_break_price_to_poc (simple bool)
profile_args_bull (ProfileArgs type from robbatt/lib_profile/32)
profile_args_bear (ProfileArgs type from robbatt/lib_profile/32)
use_soft_confirm (simple bool)
soft_confirm_offset (float)
use_retracements_with_FVG_out (simple bool)
method draw(this, config, extend_only)
Namespace types: OrderBlock
Parameters:
this (OrderBlock)
config (OrderBlockConfig)
extend_only (bool)
method draw(blocks, config)
INTERNAL: plot order blocks
Namespace types: array
Parameters:
blocks (array)
config (OrderBlockConfig)
method draw(blocks, config)
INTERNAL: plot order blocks
Namespace types: map
Parameters:
blocks (map)
config (OrderBlockConfig)
method cleanup(this, ob_bull, ob_bear)
removes all Profiles that are older than the latest OrderBlock from this profile buffer
Namespace types: array
Parameters:
this (array type from robbatt/lib_profile/32)
ob_bull (OrderBlock)
ob_bear (OrderBlock)
_plot_swing_points(mode, x, y, show_swing_points, linecolor_swings, keep_history, show_latest_swings_levels, trail_x, trail_y, trend)
INTERNAL: plot swing points
Parameters:
mode (int) : 1: bullish, -1 bearish block
x (int) : x-coordingate of swing point to plot (bar_index)
y (float) : y-coordingate of swing point to plot (price)
show_swing_points (bool) : switch to enable/disable plotting of swing point labels
linecolor_swings (color) : color for swing point labels and lates level lines
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
show_latest_swings_levels (bool)
trail_x (int) : x-coordinate for latest swing point (bar_index)
trail_y (float) : y-coordinate for latest swing point (price)
trend (int) : the current trend 1: bullish, -1: bearish, to determine Strong/Weak Low/Highs
_pivot_lvl(mode, trend, hhll_x, hhll, super_hhll, filter_insignificant_internal_breaks)
INTERNAL: detect whether a structural level has been broken and if it was in trend direction (BoS) or against trend direction (ChoCh), also track the latest high and low swing points
Parameters:
mode (simple int) : detect 1: bullish, -1 bearish pivot points
trend (int) : current trend direction
hhll_x (int) : x-coordinate of newly detected hh/ll (bar_index)
hhll (float) : y-coordinate of newly detected hh/ll (price)
super_hhll (float) : level/y-coordinate of superior hhll (if this is an internal structure pivot level)
filter_insignificant_internal_breaks (bool) : if true pivot points / internal structure will be ignored where the wick in trend direction is longer than the opposite (likely to push further in direction of main trend)
Returns: coordinates of internal structure that has been broken (x,y): start of structure, (trail_x, trail_y): tracking hh/ll after structure break, (bos_alert, choch_alert): signal whether a structural level has been broken
_plot_structure(x, y, is_bos, is_choch, line_color, line_style, label_style, label_size, keep_history)
INTERNAL: plot structural breaks (BoS/ChoCh)
Parameters:
x (int) : x-coordinate of newly broken structure (bar_index)
y (float) : y-coordinate of newly broken structure (price)
is_bos (bool) : whether this structural break was in trend direction
is_choch (bool) : whether this structural break was against trend direction
line_color (color) : color for the line connecting the structural level and the breaking candle
line_style (string) : style (line.style_dashed/solid) for the line connecting the structural level and the breaking candle
label_style (string) : style (label.style_label_down/up) for the label above/below the line connecting the structural level and the breaking candle
label_size (string) : size (size.small/tiny) for the label above/below the line connecting the structural level and the breaking candle
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
structure_values(length, super_hh, super_ll, filter_insignificant_internal_breaks)
detect (and plot) structural breaks and the resulting new trend
Parameters:
length (simple int) : lookback period for swing point detection
super_hh (float) : level/y-coordinate of superior hh (for internal structure detection)
super_ll (float) : level/y-coordinate of superior ll (for internal structure detection)
filter_insignificant_internal_breaks (bool) : if true pivot points / internal structure will be ignored where the wick in trend direction is longer than the opposite (likely to push further in direction of main trend)
Returns: trend: direction 1:bullish -1:bearish, (bull_bos_alert, bull_choch_alert, top_x, top_y, trail_up_x, trail_up): whether and which level broke in a bullish direction, trailing high, (bbear_bos_alert, bear_choch_alert, tm_x, btm_y, trail_dn_x, trail_dn): same in bearish direction
structure_plot(trend, bull_bos_alert, bull_choch_alert, top_x, top_y, trail_up_x, trail_up, hh, bear_bos_alert, bear_choch_alert, btm_x, btm_y, trail_dn_x, trail_dn, ll, color_bull, color_bear, show_swing_points, show_latest_swings_levels, show_bos, show_choch, line_style, label_size, keep_history)
detect (and plot) structural breaks and the resulting new trend
Parameters:
trend (int) : crrent trend 1: bullish, -1: bearish
bull_bos_alert (bool) : if there was a bullish bos alert -> plot it
bull_choch_alert (bool) : if there was a bullish choch alert -> plot it
top_x (int) : latest shwing high x
top_y (float) : latest swing high y
trail_up_x (int) : trailing high x
trail_up (float) : trailing high y
hh (float) : if there was a higher high
bear_bos_alert (bool) : if there was a bearish bos alert -> plot it
bear_choch_alert (bool) : if there was a bearish chock alert -> plot it
btm_x (int) : latest swing low x
btm_y (float) : latest swing low y
trail_dn_x (int) : trailing low x
trail_dn (float) : trailing low y
ll (float) : if there was a lower low
color_bull (color) : color for bullish BoS/ChoCh levels
color_bear (color) : color for bearish BoS/ChoCh levels
show_swing_points (bool) : whether to plot swing point labels
show_latest_swings_levels (bool) : whether to track and plot latest swing point levels with lines
show_bos (bool) : whether to plot BoS levels
show_choch (bool) : whether to plot ChoCh levels
line_style (string) : whether to plot BoS levels
label_size (string) : label size of plotted BoS/ChoCh levels
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
structure(length, color_bull, color_bear, super_hh, super_ll, filter_insignificant_internal_breaks, show_swing_points, show_latest_swings_levels, show_bos, show_choch, line_style, label_size, keep_history, enabled)
detect (and plot) structural breaks and the resulting new trend
Parameters:
length (simple int) : lookback period for swing point detection
color_bull (color) : color for bullish BoS/ChoCh levels
color_bear (color) : color for bearish BoS/ChoCh levels
super_hh (float) : level/y-coordinate of superior hh (for internal structure detection)
super_ll (float) : level/y-coordinate of superior ll (for internal structure detection)
filter_insignificant_internal_breaks (bool) : if true pivot points / internal structure will be ignored where the wick in trend direction is longer than the opposite (likely to push further in direction of main trend)
show_swing_points (bool) : whether to plot swing point labels
show_latest_swings_levels (bool) : whether to track and plot latest swing point levels with lines
show_bos (bool) : whether to plot BoS levels
show_choch (bool) : whether to plot ChoCh levels
line_style (string) : whether to plot BoS levels
label_size (string) : label size of plotted BoS/ChoCh levels
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
enabled (bool)
_check_equal_level(mode, len, eq_threshold, enabled)
INTERNAL: detect equal levels (double top/bottom)
Parameters:
mode (int) : detect 1: bullish/high, -1 bearish/low pivot points
len (int) : lookback period for equal level (swing point) detection
eq_threshold (float) : maximum price offset for a level to be considered equal
enabled (bool)
Returns: eq_alert whether an equal level was detected and coordinates of the first and the second level/swing point
_plot_equal_level(show_eq, x1, y1, x2, y2, label_txt, label_style, label_size, line_color, line_style, keep_history)
INTERNAL: plot equal levels (double top/bottom)
Parameters:
show_eq (bool) : whether to plot the level or not
x1 (int) : x-coordinate of the first level / swing point
y1 (float) : y-coordinate of the first level / swing point
x2 (int) : x-coordinate of the second level / swing point
y2 (float) : y-coordinate of the second level / swing point
label_txt (string) : text for the label above/below the line connecting the equal levels
label_style (string) : style (label.style_label_down/up) for the label above/below the line connecting the equal levels
label_size (string) : size (size.tiny) for the label above/below the line connecting the equal levels
line_color (color) : color for the line connecting the equal levels (and it's label)
line_style (string) : style (line.style_dotted) for the line connecting the equal levels
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
equal_levels_values(len, threshold, enabled)
detect (and plot) equal levels (double top/bottom), returns coordinates
Parameters:
len (int) : lookback period for equal level (swing point) detection
threshold (float) : maximum price offset for a level to be considered equal
enabled (bool) : whether detection is enabled
Returns: (eqh_alert, eqh_x1, eqh_y1, eqh_x2, eqh_y2) whether an equal high was detected and coordinates of the first and the second level/swing point, (eql_alert, eql_x1, eql_y1, eql_x2, eql_y2) same for equal lows
equal_levels_plot(eqh_x1, eqh_y1, eqh_x2, eqh_y2, eql_x1, eql_y1, eql_x2, eql_y2, color_eqh, color_eql, show, keep_history)
detect (and plot) equal levels (double top/bottom), returns coordinates
Parameters:
eqh_x1 (int) : coordinates of first point of equal high
eqh_y1 (float) : coordinates of first point of equal high
eqh_x2 (int) : coordinates of second point of equal high
eqh_y2 (float) : coordinates of second point of equal high
eql_x1 (int) : coordinates of first point of equal low
eql_y1 (float) : coordinates of first point of equal low
eql_x2 (int) : coordinates of second point of equal low
eql_y2 (float) : coordinates of second point of equal low
color_eqh (color) : color for the line connecting the equal highs (and it's label)
color_eql (color) : color for the line connecting the equal lows (and it's label)
show (bool) : whether plotting is enabled
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
Returns: (eqh_alert, eqh_x1, eqh_y1, eqh_x2, eqh_y2) whether an equal high was detected and coordinates of the first and the second level/swing point, (eql_alert, eql_x1, eql_y1, eql_x2, eql_y2) same for equal lows
equal_levels(len, threshold, color_eqh, color_eql, enabled, show, keep_history)
detect (and plot) equal levels (double top/bottom)
Parameters:
len (int) : lookback period for equal level (swing point) detection
threshold (float) : maximum price offset for a level to be considered equal
color_eqh (color) : color for the line connecting the equal highs (and it's label)
color_eql (color) : color for the line connecting the equal lows (and it's label)
enabled (bool) : whether detection is enabled
show (bool) : whether plotting is enabled
keep_history (bool) : weater to remove older swing point labels and only keep the most recent
Returns: (eqh_alert) whether an equal high was detected, (eql_alert) same for equal lows
_detect_fvg(mode, enabled, o, h, l, c, filter_insignificant_fvgs, change_tf)
INTERNAL: detect FVG (fair value gap)
Parameters:
mode (int) : detect 1: bullish, -1 bearish gaps
enabled (bool) : whether detection is enabled
o (float) : reference source open
h (float) : reference source high
l (float) : reference source low
c (float) : reference source close
filter_insignificant_fvgs (bool) : whether to calculate and filter small/insignificant gaps
change_tf (bool) : signal when the previous reference timeframe closed, triggers new calculation
Returns: whether a new FVG was detected and its top/mid/bottom levels
_clear_broken_fvg(mode, upper_boxes, lower_boxes)
INTERNAL: clear mitigated FVGs (fair value gaps)
Parameters:
mode (int) : detect 1: bullish, -1 bearish gaps
upper_boxes (array) : array that stores the upper parts of the FVG boxes
lower_boxes (array) : array that stores the lower parts of the FVG boxes
_plot_fvg(mode, show, top, mid, btm, border_color, extend_box)
INTERNAL: plot (and clear broken) FVG (fair value gap)
Parameters:
mode (int) : plot 1: bullish, -1 bearish gap
show (bool) : whether plotting is enabled
top (float) : top level of fvg
mid (float) : center level of fvg
btm (float) : bottom level of fvg
border_color (color) : color for the FVG box
extend_box (int) : how many bars into the future the FVG box should be extended after detection
fvgs_values(o, h, l, c, filter_insignificant_fvgs, change_tf, enabled)
detect (and plot / clear broken) FVGs (fair value gaps), and return alerts and level values
Parameters:
o (float) : reference source open
h (float) : reference source high
l (float) : reference source low
c (float) : reference source close
filter_insignificant_fvgs (bool) : whether to calculate and filter small/insignificant gaps
change_tf (bool) : signal when the previous reference timeframe closed, triggers new calculation
enabled (bool) : whether detection is enabled
Returns: (bullish_fvg_alert, bull_top, bull_mid, bull_btm): whether a new bullish FVG was detected and its top/mid/bottom levels, (bearish_fvg_alert, bear_top, bear_mid, bear_btm): same for bearish FVGs
fvgs_plot(bullish_fvg_alert, bull_top, bull_mid, bull_btm, bearish_fvg_alert, bear_top, bear_mid, bear_btm, color_bull, color_bear, extend_box, show)
Parameters:
bullish_fvg_alert (bool)
bull_top (float)
bull_mid (float)
bull_btm (float)
bearish_fvg_alert (bool)
bear_top (float)
bear_mid (float)
bear_btm (float)
color_bull (color) : color for bullish FVG boxes
color_bear (color) : color for bearish FVG boxes
extend_box (int) : how many bars into the future the FVG box should be extended after detection
show (bool) : whether plotting is enabled
Returns: (bullish_fvg_alert, bull_top, bull_mid, bull_btm): whether a new bullish FVG was detected and its top/mid/bottom levels, (bearish_fvg_alert, bear_top, bear_mid, bear_btm): same for bearish FVGs
fvgs(o, h, l, c, filter_insignificant_fvgs, change_tf, color_bull, color_bear, extend_box, enabled, show)
detect (and plot / clear broken) FVGs (fair value gaps)
Parameters:
o (float) : reference source open
h (float) : reference source high
l (float) : reference source low
c (float) : reference source close
filter_insignificant_fvgs (bool) : whether to calculate and filter small/insignificant gaps
change_tf (bool) : signal when the previous reference timeframe closed, triggers new calculation
color_bull (color) : color for bullish FVG boxes
color_bear (color) : color for bearish FVG boxes
extend_box (int) : how many bars into the future the FVG box should be extended after detection
enabled (bool) : whether detection is enabled
show (bool) : whether plotting is enabled
Returns: (bullish_fvg_alert): whether a new bullish FVG was detected, (bearish_fvg_alert): same for bearish FVGs
OrderBlock
Fields:
id (series int)
dir (series int)
left_top (chart.point)
right_bottom (chart.point)
break_price (series float)
early_confirmation_price (series float)
ltf_high (array)
ltf_low (array)
ltf_volume (array)
plot (Box type from robbatt/lib_plot_objects/49)
profile (Profile type from robbatt/lib_profile/32)
trailing (series bool)
extending (series bool)
awaiting_confirmation (series bool)
touched_break_price_before_confirmation (series bool)
soft_confirmed (series bool)
has_fvg_out (series bool)
hidden (series bool)
broken (series bool)
OrderBlockConfig
Fields:
show (series bool)
show_last (series int)
show_id (series bool)
show_profile (series bool)
args (BoxArgs type from robbatt/lib_plot_objects/49)
txt (series string)
txt_args (BoxTextArgs type from robbatt/lib_plot_objects/49)
delete_when_broken (series bool)
broken_args (BoxArgs type from robbatt/lib_plot_objects/49)
broken_txt (series string)
broken_txt_args (BoxTextArgs type from robbatt/lib_plot_objects/49)
broken_profile_args (ProfileArgs type from robbatt/lib_profile/32)
use_profile (series bool)
profile_args (ProfileArgs type from robbatt/lib_profile/32)
SMB MagicSMB Magic
Overview: SMB Magic is a powerful technical strategy designed to capture breakout opportunities based on price movements, volume spikes, and trend-following logic. This strategy works exclusively on the XAU/USD symbol and is optimized for the 15-minute time frame. By incorporating multiple factors, this strategy identifies high-probability trades with a focus on risk management.
Key Features:
Breakout Confirmation:
This strategy looks for price breakouts above the previous high or below the previous low, with a significant volume increase. A breakout is considered valid when it is supported by strong volume, confirming the strength of the price move.
Price Movement Filter:
The strategy ensures that only significant price movements are considered for trades, helping to avoid low-volatility noise. This filter targets larger price swings to maximize potential profits.
Exponential Moving Average (EMA):
A long-term trend filter is applied to ensure that buy trades occur only when the price is above the moving average, and sell trades only when the price is below it.
Fibonacci Levels:
Custom Fibonacci retracement levels are drawn based on recent price action. These levels act as dynamic support and resistance zones and help determine the exit points for trades.
Take Profit/Stop Loss:
The strategy incorporates predefined take profit and stop loss levels, designed to manage risk effectively. These levels are automatically applied to trades and are adjusted based on the market's volatility.
Volume Confirmation:
A volume multiplier confirms the strength of the breakout. A trade is only considered when the volume exceeds a certain threshold, ensuring that the breakout is supported by sufficient market participation.
How It Works:
Entry Signals:
Buy Signal: A breakout above the previous high, accompanied by significant volume and price movement, occurs when the price is above the trend-following filter (e.g., EMA).
Sell Signal: A breakout below the previous low, accompanied by significant volume and price movement, occurs when the price is below the trend-following filter.
Exit Strategy:
Each position (long or short) has predefined take-profit and stop-loss levels, which are designed to protect capital and lock in profits at key points in the market.
Fibonacci Levels:
Fibonacci levels are drawn to identify potential areas of support or resistance, which can be used to guide exits and stop-loss placements.
Important Notes:
Timeframe Restriction: This strategy is designed specifically for the 15-minute time frame.
Symbol Restriction: The strategy works exclusively on the XAU/USD (Gold) symbol and is not recommended for use with other instruments.
Best Performance in Trending Markets: It works best in trending conditions where breakouts occur frequently.
Disclaimer:
Risk Warning: Trading involves risk, and past performance is not indicative of future results. Always conduct your own research and make informed decisions before trading.