LineReg Candles with Hma filterOverview
Purpose:
The indicator creates “LinReg Candles” by recalculating OHLC values using linear regression (to smooth out noise) and overlays additional features such as a customizable signal line and an HMA (Hull Moving Average) filter for trend detection. It also plots buy/sell signals and supports alerts.
Customization:
Users can adjust settings for signal smoothing (choosing SMA, EMA, or WMA), HMA periods (preset for Scalping/Intraday or custom values), linear regression length, colors, display options, and alert messages. Inputs are organized into groups for clarity.
Input Definitions
Signal Settings:
signal_length and smoothingType define the period and method used to smooth the close price, creating a signal line.
HMA Filter Settings:
A dropdown (t_type) lets you choose between Scalping, Intraday, or Custom. Based on this, three HMA periods (hma1, hma2, hma3) are set either to fixed values or user-defined custom inputs.
LinReg Settings:
Users can toggle linear regression for OHLC values (lin_reg) and set its period (linreg_length) to reduce price noise.
Color and Display Settings:
These control the colors for buy/sell candles, default bullish/bearish candles, markers, and background highlighting. Display toggles decide whether to show the background, signal line, HMA filter, and the recalculated candles.
Alert and Plot Customization:
Alerts can be enabled with custom messages. Additionally, line width and transparency for the plotted signal and HMA lines are adjustable.
Function Definitions
calcOHLC Function:
Computes OHLC values using linear regression if enabled. Otherwise, it returns the raw price values. This helps in reducing noise.
calcSignalLine Function:
Applies the chosen moving average (SMA, EMA, or WMA) to smooth the recalculated close values and generate a signal line.
getBaseCandleColor Function:
Determines the candle’s base color. It assigns buy/sell colors if specific crossover conditions are met; if not, it defaults to bullish (green) or bearish (red) based on the open/close relationship.
HMA Filter Calculations
HMA Computation:
The script calculates three HMAs (ma1, ma2, ma3) for different periods.
Trend Determination:
It sets a bullish condition (bcn) when ma3 is lower than both ma1 and ma2 with ma1 above ma2. Conversely, a bearish condition (scn) is set when ma3 is higher and the order of the HMAs indicates a downtrend.
Color Coding:
The HMA filter line color changes dynamically (green for bullish, red for bearish) based on these conditions.
Main Calculations
LinReg Candles:
Using the calcOHLC function, the script calculates the new open, high, low, and close values that reduce price noise.
Signal Line:
The signal line is computed on the basis of the smoothed close values using the selected moving average.
Buy/Sell Conditions:
Initial conditions are determined by checking if the recalculated close price crosses over (buy) or under (sell) the signal line.
The base candle color is then adjusted: if the HMA filter confirms the trend (bullish for buy or bearish for sell), the respective buy/sell colors are enforced.
A change in candle color compared to the previous bar triggers a buy or sell signal.
Plotting and Alerts
Visual Elements:
Background: Highlights the chart with a custom color when buy or sell conditions are met.
HMA Filter Line: Plotted (if enabled) with the dynamic color determined earlier.
Candles: The recalculated LinReg candles are drawn with colors based on the combined conditions.
Signal Line: Plotted over the candles with adjustable transparency and width.
Markers: Buy and sell markers are added to visually indicate signal points on the chart.
Alerts:
Alert conditions are set to trigger with predefined messages when a buy or sell signal is generated.
Modularity & Flexibility:
The code is structured with modular functions and clear grouping of inputs, making it highly customizable and user-friendly for open-source TradingView users.
Important how to track the real price on chart:
Locate the Chart Type Menu:
At the top of your TradingView chart, you’ll see a button showing the current chart type (likely a candlestick icon).
Select “Line” from the Dropdown:
Click that button and choose “Line” in the dropdown menu. This changes the main chart to a line chart of the real price.
Screenshots:
Cerca negli script per "alert"
Candle Momentum ExhaustionCandle Momentum Exhaustion
The Candle Momentum Exhaustion indicator is designed to help traders spot potential turning points in a trend by identifying when the prevailing momentum may be “running on empty.” The indicator works by comparing the size of each candle’s body (the absolute difference between the open and close) to the average body size over a recent period. When a candle’s body exceeds a user‐defined multiple of this average, it is flagged as an “exhaustion” candle.
• A bullish exhaustion (shown with a red down–facing triangle above the bar) occurs when a very large bullish candle (close > open) is detected, suggesting that buyers may have pushed the price too far and the rally could be near its end.
• A bearish exhaustion (shown with a green up–facing triangle below the bar) occurs when a very large bearish candle (close < open) is detected, implying that selling pressure might be overdone.
These signals can alert you to a potential reversal or consolidation point. The script also includes alert conditions so that you can set up notifications whenever an exhaustion signal is generated.
How It Works
1. Average Candle Body:
The script computes a simple moving average (SMA) of the absolute candle bodies over a user-defined period (default is 14 bars).
2. Exhaustion Candidate:
A candle is flagged as an exhaustion candidate if its body size exceeds the average by more than the set multiplier (default is 2.0).
3. Signal Identification:
• If the exhaustion candle is bullish (close > open), it is marked with a red down–facing triangle above the bar.
• If it is bearish (close < open), it is marked with a green up–facing triangle below the bar.
4. Alerts:
The built-in alertcondition() calls allow you to set alerts (via TradingView’s alert system) so that you can be notified when an exhaustion event occurs.
Risk Disclaimer:
This indicator is provided for educational and informational purposes only and does not constitute financial, investment, or trading advice. Trading and investing involve significant risk, and you should not rely solely on this indicator when making any trading decisions. Past performance is not indicative of future results. Always perform your own due diligence and consult with a qualified financial advisor before making any financial decisions. The creator of this indicator shall not be held responsible for any losses incurred through its use.
Multi-indicator Signal Builder [Skyrexio]Overview
Multi-Indicator Signal Builder is a versatile, all-in-one script designed to streamline your trading workflow by combining multiple popular technical indicators under a single roof. It features a single-entry, single-exit logic, intrabar stop-loss/take-profit handling, an optional time filter, a visually accessible condition table, and a built-in statistics label. Traders can choose any combination of 12+ indicators (RSI, Ultimate Oscillator, Bollinger %B, Moving Averages, ADX, Stochastic, MACD, PSAR, MFI, CCI, Heikin Ashi, and a “TV Screener” placeholder) to form entry or exit conditions. This script aims to simplify strategy creation and analysis, making it a powerful toolkit for technical traders.
Indicators Overview
1. RSI (Relative Strength Index)
Measures recent price changes to evaluate overbought or oversold conditions on a 0–100 scale.
2. Ultimate Oscillator (UO)
Uses weighted averages of three different timeframes, aiming to confirm price momentum while avoiding false divergences.
3. Bollinger %B
Expresses price relative to Bollinger Bands, indicating whether price is near the upper band (overbought) or lower band (oversold).
4. Moving Average (MA)
Smooths price data over a specified period. The script supports both SMA and EMA to help identify trend direction and potential crossovers.
5. ADX (Average Directional Index)
Gauges the strength of a trend (0–100). Higher ADX signals stronger momentum, while lower ADX indicates a weaker trend.
6. Stochastic
Compares a closing price to a price range over a given period to identify momentum shifts and potential reversals.
7. MACD (Moving Average Convergence/Divergence)
Tracks the difference between two EMAs plus a signal line, commonly used to spot momentum flips through crossovers.
8. PSAR (Parabolic SAR)
Plots a trailing stop-and-reverse dot that moves with the trend. Often used to signal potential reversals when price crosses PSAR.
9. MFI (Money Flow Index)
Similar to RSI but incorporates volume data. A reading above 80 can suggest overbought conditions, while below 20 may indicate oversold.
10. CCI (Commodity Channel Index)
Identifies cyclical trends or overbought/oversold levels by comparing current price to an average price over a set timeframe.
11. Heikin Ashi
A type of candlestick charting that filters out market noise. The script uses a streak-based approach (multiple consecutive bullish or bearish bars) to gauge mini-trends.
12. TV Screener
A placeholder condition designed to integrate external buy/sell logic (like a TradingView “Buy” or “Sell” rating). Users can override or reference external signals if desired.
Unique Features
1. Multi-Indicator Entry and Exit
You can selectively enable any subset of 12+ classic indicators, each with customizable parameters and conditions. A position opens only if all enabled entry conditions are met, and it closes only when all enabled exit conditions are satisfied, helping reduce false triggers.
2. Single-Entry / Single-Exit with Intrabar SL/TP
The script supports a single position at a time. Once a position is open, it monitors intrabar to see if the price hits your stop-loss or take-profit levels before the bar closes, making results more realistic for fast-moving markets.
3. Time Window Filter
Users may specify a start/end date range during which trades are allowed, making it convenient to focus on specific market cycles for backtesting or live trading.
4. Condition Table and Statistics
A table at the bottom of the chart lists all active entry/exit indicators. Upon each closed trade, an integrated statistics label displays net profit, total trades, win/loss count, average and median PnL, etc.
5. Seamless Alerts and Automation
Configure alerts in TradingView using “Any alert() function call.”
The script sends JSON alert messages you can route to your own webhook.
The indicator can be integrated with Skyrexio alert bots to automate execution on major cryptocurrency exchanges
6. Optional MA/PSAR Plots
For added visual clarity, optionally plot the chosen moving averages or PSAR on the chart to confirm signals without stacking multiple indicators.
Methodology
1. Multi-Indicator Entry Logic
When multiple entry indicators are enabled (e.g., RSI + Stochastic + MACD), the script requires all signals to align before generating an entry. Each indicator can be set for crossovers, crossunders, thresholds (above/below), etc. This “AND” logic aims to filter out low-confidence triggers.
2. Single-Entry Intrabar SL/TP
One Position At a Time: Once an entry signal triggers, a trade opens at the bar’s close.
Intrabar Checks: Stop-loss and take-profit levels (if enabled) are monitored on every tick. If either is reached, the position closes immediately, without waiting for the bar to end.
3. Exit Logic
All Conditions Must Agree: If the trade is still open (SL/TP not triggered), then all enabled exit indicators must confirm a closure before the script exits on the bar’s close.
4. Time Filter
Optional Trading Window: You can activate a date/time range to constrain entries and exits strictly to that interval.
Justification of Methodology
Indicator Confluence: Combining multiple tools (RSI, MACD, etc.) can reduce noise and false signals.
Intrabar SL/TP: Capturing real-time spikes or dips provides a more precise reflection of typical live trading scenarios.
Single-Entry Model: Straightforward for both manual and automated tracking (especially important in bridging to bots).
Custom Date Range: Helps refine backtesting for specific market conditions or to avoid known irregular data periods.
How to Use
1. Add the Script to Your Chart
In TradingView, open Indicators , search for “Multi-indicator Signal Builder”.
Click to add it to your chart.
2. Configure Inputs
Time Filter: Set a start and end date for trades.
Alerts Messages: Input any JSON or text payload needed by your external service or bot.
Entry Conditions: Enable and configure any indicators (e.g., RSI, MACD) for a confluence-based entry.
Close Conditions: Enable exit indicators, along with optional SL (negative %) and TP (positive %) levels.
3. Set Up Alerts
In TradingView, select “Create Alert” → Condition = “Any alert() function call” → choose this script.
Entry Alert: Triggers on the script’s entry signal.
Close Alert: Triggers on the script’s close signal (or if SL/TP is hit).
Skyrexio Alert Bots: You can route these alerts via webhook to Skyrexio alert bots to automate order execution on major crypto exchanges (or any other supported broker).
4. Visual Reference
A condition table at the bottom summarizes active signals.
Statistics Label updates automatically as trades are closed, showing PnL stats and distribution metrics.
Backtesting Guidelines
Symbol/Timeframe: Works on multiple assets and timeframes; always do thorough testing.
Realistic Costs: Adjust commissions and potential slippage to match typical exchange conditions.
Risk Management: If using the built-in stop-loss/take-profit, set percentages that reflect your personal risk tolerance.
Longer Test Horizons: Verify performance across diverse market cycles to gauge reliability.
Example of statistic calculation
Test Period: 2023-01-01 to 2025-12-31
Initial Capital: $1,000
Commission: 0.1%, Slippage ~5 ticks
Trade Count: 468 (varies by strategy conditions)
Win rate: 76% (varies by strategy conditions)
Net Profit: +96.17% (varies by strategy conditions)
Disclaimer
This indicator is provided strictly for informational and educational purposes .
It does not constitute financial or trading advice.
Past performance never guarantees future results.
Always test thoroughly in demo environments before using real capital.
Enjoy exploring the Multi-Indicator Signal Builder! Experiment with different indicator combinations and adjust parameters to align with your trading preferences, whether you trade manually or link your alerts to external automation services. Happy trading and stay safe!
Buy and Sell Signal at 50% Retracement, Based on MANDO MODELthe sell is taking out a previous high. leave some runners and practice safe trading.
Explanation of Behavior:
When the price retraces 50% of the defined range (from the low to high), a Buy signal is triggered.
After the Buy signal, if the price moves above the previous high (after retracement), a Sell signal is triggered.
Once a Sell signal is triggered, the range is reset, and a new range needs to form before another signal can be triggered.
Test this:
Apply the script to your chart.
Check for Buy signals when the price crosses the 50% retracement level.
Sell signals will trigger once the price breaks above the previous high after the retracement phase.
Ensure that the signals are plotted as arrows on the chart and that the background color changes to indicate Buy or Sell.
Alerts Setup:
To set up alerts:
Right-click on the chart and select Add Alert.
For Buy Signal: Choose the condition Buy and Sell Signal at 50% Retracement with Top Break > Buy Signal.
For Sell Signal: Choose the condition Buy and Sell Signal at 50% Retracement with Top Break > Sell Signal.
Set your preferred alert type (popup, email, etc.).
Click Create to set the alert.
LiquidFusion SignalPro [CHE] LiquidFusion SignalPro – Indicator Overview
The LiquidFusion SignalPro is a powerful and sophisticated TradingView indicator designed to identify high-quality trade entries and exits. By combining seven unique sub-indicators, it provides comprehensive market analysis, ensuring traders can make informed decisions. This tool is suitable for all market conditions and supports customization to fit individual trading strategies.
Key Components (Sub-Indicators):
1. RPM (Relative Price Momentum):
- Measures cumulative price momentum over a specified period.
- Provides insights into price strength and directional bias.
- Input Customization:
- Source: Data for momentum calculation.
- Period: Length for momentum measurement.
- Resolution: Timeframe for data fetching.
2. BBO (Bull-Bear Oscillator):
- Calculates the strength of bullish or bearish momentum based on price movement and RSI conditions.
- Uses a super-smoothing technique for reliable signals.
- Customizable parameters include the oscillator's period and repainting options.
3. MACD (Moving Average Convergence Divergence):
- A classic momentum indicator for trend direction and strength.
- Provides buy/sell signals based on the crossover of the MACD line and signal line.
- Input Customization:
- Fast/Slow EMA Periods.
- Signal Line Period.
- Resolution and Source Data.
4. RSI (Relative Strength Index):
- Tracks overbought and oversold conditions.
- A key tool to validate trend continuation or reversals.
- Customizable period, resolution, and source.
5. CCI (Commodity Channel Index):
- Measures the deviation of price from its average.
- Useful for identifying cyclical trends.
- Input Customization includes period, resolution, and source.
6. Stochastic Oscillator:
- Indicates momentum by comparing closing prices to a range of highs and lows.
- Includes smoothing factors for %K and %D lines.
- Customizable parameters:
- %K Length and Smoothing.
- Resolution and Repainting Options.
7. Supertrend:
- A trailing stop-and-reverse system for trend-following strategies.
- Excellent for identifying strong trends and potential reversals.
- Inputs include the multiplier factor and period for ATR-like calculations.
Inputs Overview:
The indicator supports extensive customization for each sub-indicator, grouped under intuitive categories:
- Color Settings: Define bullish and bearish plot colors.
- RPM, BBO, MACD, RSI, CCI, Stochastic, and Supertrend Settings: Tailor each sub-indicator's behavior with adjustable parameters.
- UI Options: Toggle features such as bar coloring, indicator names, and plotted candles.
Trade Signals:
- Long Signal:
- All indicators align in a bullish state:
- RPM > 0, MACD > 0, RSI > 50, Stochastic > 50, CCI > 0, BBO > 0, Supertrend below price.
- Plot: Green triangle below the candle.
- Alert: Notifies the trader of a potential long entry.
- Short Signal:
- All indicators align in a bearish state:
- RPM < 0, MACD < 0, RSI < 50, Stochastic < 50, CCI < 0, BBO < 0, Supertrend above price.
- Plot: Red triangle above the candle.
- Alert: Notifies the trader of a potential short entry.
Features:
- Enhanced Visuals: Plots sub-indicator statuses using labels and color-coded shapes for clarity.
- Alerts: Integrated alert conditions for both long and short trades.
- Bar Coloring: Provides overall trend bias with green (bullish), red (bearish), or gray (neutral) bars.
- Customizable Table: Displays the indicator's status in the chart’s top-right corner.
Trading Benefits:
The LiquidFusion SignalPro excels in generating high-quality entries and exits by:
- Reducing noise through multiple indicator alignment.
- Supporting multiple timeframes and resolutions for flexibility.
- Offering customizable inputs for personalized trading strategies.
Use this tool to enhance your market analysis and improve your trading performance.
Disclaimer:
The content provided, including all code and materials, is strictly for educational and informational purposes only. It is not intended as, and should not be interpreted as, financial advice, a recommendation to buy or sell any financial instrument, or an offer of any financial product or service. All strategies, tools, and examples discussed are provided for illustrative purposes to demonstrate coding techniques and the functionality of Pine Script within a trading context.
Any results from strategies or tools provided are hypothetical, and past performance is not indicative of future results. Trading and investing involve high risk, including the potential loss of principal, and may not be suitable for all individuals. Before making any trading decisions, please consult with a qualified financial professional to understand the risks involved.
By using this script, you acknowledge and agree that any trading decisions are made solely at your discretion and risk.
This indicator is inspired by the Super 6x Indicators: RSI, MACD, Stochastic, Loxxer, CCI, and Velocity . A special thanks to Loxx for their relentless effort, creativity, and contributions to the TradingView community, which served as a foundation for this work.
Happy trading and best regards
Chervolino
Equilibrium Candles + Pattern [Honestcowboy]The Equilibrium Candles is a very simple trend continuation or reversal strategy depending on your settings.
How an Equilibrium Candle is created:
We calculate the equilibrium by measuring the mid point between highest and lowest point over X amount of bars back.
This now is the opening price for each bar and will be considered a green bar if price closes above equilibrium.
Bars get shaded by checking if regular candle close is higher than open etc. So you still see what the normal candles are doing.
Why are they useful?
The equilibrium is calculated the same as Baseline in Ichimoku Cloud. Which provides a point where price is very likely to retrace to. This script visualises the distance between close and equilibrium using candles. To provide a clear visual of how price relates to this equilibrium point.
This also makes it more straightforward to develop strategies based on this simple concept and makes the trader purely focus on this relationship and not think of any Ichimoku Cloud theories.
Script uses a very simple pattern to enter trades:
It will count how many candles have been one directional (above or below equilibrium)
Based on user input after X candles (7 by default) script shows we are in a trend (bg colors)
On the first pullback (candle closes on other side of equilibrium) it will look to enter a trade.
Places a stop order at the high of the candle if bullish trend or reverse if bearish trend.
If based on user input after X opposite candles (2 by default) order is not filled will cancel it and look for a new trend.
Use Reverse Logic:
There is a use reverse logic in the settings which on default is turned on. It will turn long orders into short orders making the stop orders become limit orders. It will use the normal long SL as target for the short. And TP as stop for the short. This to provide a means to reverse equity curve in case your pair is mean reverting by nature instead of trending.
ATR Calculation:
Averaged ATR, which is using ta.percentile_nearest_rank of 60% of a normal ATR (14 period) over the last 200 bars. This in simple words finds a value slightly above the mean ATR value over that period.
Big Candle Exit Logic:
Using Averaged ATR the script will check if a candle closes X times that ATR from the equilibrium point. This is then considered an overextension and all trades are closed.
This is also based on user input.
Simple trade management logic:
Checks if the user has selected to use TP and SL, or/and big candle exit.
Places a TP and SL based on averaged ATR at a multiplier based on user Input.
Closes trade if there is a Big Candle Exit or an opposite direction signal from indicator.
Script can be fully automated to MT5
There are risk settings in % and symbol settings provided at the bottom of the indicator. The script will send alert to MT5 broker trying to mimic the execution that happens on tradingview. There are always delays when using a bridge to MT5 broker and there could be errors so be mindful of that. This script sends alerts in format so they can be read by tradingview.to which is a bridge between the platforms.
Use the all alert function calls feature when setting up alerts and make sure you provide the right webhook if you want to use this approach.
There is also a simple buy and sell alert feature if you don't want to fully automate but still get alerts. These are available in the dropdown when creating an alert.
Almost every setting in this indicator has a tooltip added to it. So if any setting is not clear hover over the (?) icon on the right of the setting.
The backtest uses a 4% exposure per trade and a 10 point slippage. I did not include a commission cause I'm not personaly aware what the commissions are on most forex brokers. I'm only aware of minimal slippage to use in a backtest. Trading conditions vary per broker you use so always pay close attention to trading costs on your own broker. Use a full automation at your own risk and discretion and do proper backtesting.
MTF SqzMom [tradeviZion]Credits:
John Carter for creating the TTM Squeeze and TTM Squeeze Pro.
Lazybear for the original interpretation of the TTM Squeeze: Squeeze Momentum Indicator.
Makit0 for evolving Lazybear's script by incorporating TTM Squeeze Pro upgrades – Squeeze PRO Arrows.
MTF SqzMom - Multi-Timeframe Squeeze & Momentum Tool
MTF SqzMom is a tool designed to help traders easily monitor squeeze and momentum signals across multiple timeframes in a simple, organized format. Built using Pine Script 5, it ensures that data remains consistent, even when switching between different time intervals on the chart.
Key Features:
Multi-Timeframe Monitoring: Track squeeze and momentum signals across various timeframes, all in one view. This includes key timeframes like 1-minute, 5-minute, hourly, and daily.
Dynamic Table Display: A color-coded table that automatically adjusts based on the selected timeframes, offering a clear view of market conditions.
Alerts for Key Market Events: Get notifications when a squeeze starts or fires across your chosen timeframes, so you can stay informed without needing to monitor the chart continuously.
Customizable Appearance: Tailor the look of the table by selecting colors for squeeze levels and momentum shifts, and choose the best position on your chart for easy access.
How It Works:
MTF SqzMom is based on the concept of the squeeze, which signals periods of lower volatility where price breakouts may occur. The tool tracks this by monitoring the contraction of Bollinger Bands within Keltner Channels. Along with this, it provides momentum analysis to help you gauge the potential direction of the market after a squeeze.
Squeeze Conditions: The script tracks four levels of squeeze conditions (no squeeze, low, mid, and high), each represented by a different color in the table.
Momentum Analysis: Momentum is visually represented by colors indicating four stages: up increasing, up decreasing, down increasing, and down decreasing. This color coding helps you quickly assess whether the market is gaining or losing momentum.
Using Alerts:
You can enable two types of alerts: when a squeeze starts (indicating consolidation) and when a squeeze fires (indicating a breakout). These alerts cover all timeframes you’ve selected, so you never miss important signals.
How to Set It Up:
1. Enable Alerts in Settings: Turn on "Alert for Squeeze Start" and "Alert for Squeeze Fire" in the settings.
2. Add Alerts to Your Chart:
Click the three dots next to the indicator name.
Select "Add alert on tradeviZion - MTF SqzMom."
3. Customize and Save: Adjust alert options, choose your notification type, and click "Create."
Why Use MTF SqzMom ?
Consistent Data: The tool ensures that squeeze and momentum data remain consistent, even when you switch between chart intervals.
Real-Time Alerts: Stay updated with alerts for squeeze conditions without needing to constantly watch the chart.
Simple to Use, Customizable to Fit: You can easily adjust the table’s look and choose the timeframes and colors that best suit your trading style.
Acknowledgment:
While this tool builds on the TTM Squeeze concept developed by John Carter of Simpler Trading, it offers added flexibility through multi-timeframe analysis, alerts, and customizability to make monitoring market conditions more accessible.
Reflected ema Difference (RED) This script, titled "Reflected EMA Difference (RED)," is based on the logic of evaluating the percentage of convergence and divergence between two moving averages, specifically the Hull Moving Averages (HMA), to make price-related decisions. The Hull Moving Average, created by Alan Hull, is used as the foundation of this strategy, offering a faster and more accurate way to analyze market trends. In this script, the concept is employed to measure and reflect price variations.
Script Functionality Overview:
Hull Moving Averages (HMA): The script utilizes two HMAs, one short-term and one long-term. The main idea is to compute the Delta Difference between these two moving averages, which represents how much they are converging or diverging from each other. This difference is key to identifying potential market trend changes.
Reflected HMA Value: Using the Delta Difference between the HMAs, the value of the short-term HMA is reflected, creating a visual reference point that helps traders see the relationship between price and HMAs on the chart.
Percentage Change Index: The second key parameter is the percentage change index. This determines when a trend is reversing, allowing buy or sell orders to be established based on significant changes in the relationship between the HMAs and the price.
Delta Multiplier: The script comes with a default Delta multiplier of 2 for calculating the difference between HMAs, allowing traders to adjust the sensitivity of the analysis based on the time frame being analyzed.
Trend Reversal Signals: When the price crosses the thresholds defined by the percentage change index, buy or sell signals are triggered, based on the detection of a potential trend reversal.
Visual Cues with Boxes: Boxes are drawn on the chart when the HullMA crosses the reflected HMA value, providing a visual aid to identify critical moments where risk should be evaluated.
Alerts for Receiving Signals:
This script allows you to set up buy and sell alerts via TradingView's alert system. These alerts are triggered when trend changes are detected based on the conditions coded in the script. Traders can receive instant notifications, allowing them to make decisions without needing to constantly monitor the chart.
Additional Considerations:
The percentage change parameter is adjustable and should be configured based on the time frame you are trading on. For longer time frames, it's advisable to use a larger percentage change to avoid false signals.
The use of Hull Moving Averages (HMA) provides a faster and more reactive approach to trend evaluation compared to other moving averages, making it a powerful tool for traders seeking quick reversal signals.
This approach combines the power of Hull Moving Averages with an alert system to improve the trader’s response to trend changes.
Spanish
Este script, titulado "Reflected EMA Difference (RED)", está fundamentado en la lógica de evaluar el porcentaje de acercamiento y distancia entre dos medias móviles, específicamente las medias móviles de Hull (HMA), para tomar decisiones sobre el valor del precio. El creador de la media móvil de Hull, Alan Hull, diseñó este indicador para ofrecer una forma más rápida y precisa de analizar tendencias de mercado, y en este script se utiliza su concepto como base para medir y reflejar las variaciones de precio.
Descripción del funcionamiento:
Medias Móviles de Hull (HMA): Se utilizan dos HMAs, una de corto plazo y otra de largo plazo. La idea principal es calcular la diferencia Delta entre estas dos medias móviles, que representa cuánto se están alejando o acercando entre sí. Esta diferencia es clave para identificar cambios potenciales en la tendencia del mercado.
Valor Reflejado de la HMA: Con la diferencia Delta calculada entre las HMAs, se refleja el valor de la HMA corta, creando un punto de referencia visual que ayuda a los traders a observar la relación entre el precio y las HMAs en el gráfico.
Índice de Cambio de Porcentaje: El segundo parámetro clave del script es el índice de cambio porcentual. Este define el momento en que una tendencia está revirtiendo, permitiendo establecer órdenes de compra o venta en función de un cambio significativo en la relación entre las HMAs y el precio.
Multiplicador Delta: El script tiene un multiplicador predeterminado de 2 para el cálculo de la diferencia Delta, lo que permite ajustar la sensibilidad del análisis según la temporalidad del gráfico.
Señales de Reversión de Tendencia: Cuando el precio cruza los límites definidos por el índice de cambio porcentual, se emiten señales para comprar o vender, basadas en la detección de una posible reversión de tendencia.
Visualización con Cajas: Se dibujan cajas en el gráfico cuando el indicador HullMA cruza el valor reflejado de la HMA, ayudando a identificar visualmente los momentos críticos en los que se debe evaluar el riesgo de las operaciones.
Alertas para Recibir Señales:
Este script permite configurar alertas de compra y venta desde el apartado de alertas de TradingView. Estas alertas se activan cuando se detectan cambios de tendencia en función de las condiciones establecidas en el código. El trader puede recibir notificaciones instantáneas, lo que facilita la toma de decisiones sin necesidad de estar constantemente observando el gráfico.
Consideraciones adicionales:
El porcentaje de cambio es un parámetro ajustable y debe configurarse según la temporalidad que se esté operando. En temporalidades más largas, es recomendable usar un porcentaje de cambio mayor para evitar señales falsas.
La utilización de las medias móviles de Hull (HMA) proporciona un enfoque más rápido y reactivo para evaluar tendencias en comparación con otras medias móviles, lo que lo convierte en una herramienta poderosa para traders que buscan señales rápidas de reversión.
Este enfoque combina la potencia de las medias móviles de Hull con un sistema de alertas que mejora la reactividad a cambios de tendencia.
1 (or) 5-Minute Scalping Strategy - KGP1-Minute Scalping Strategy - KGP
Overview: This indicator is designed for short-term traders who engage in 1 (or) 5-minute scalping. It combines several technical analysis tools to provide buy and sell signals, helping traders make informed decisions quickly.
Key Features:
VWAP (Volume Weighted Average Price):
Purpose: VWAP provides the average price a security has traded at throughout the day, based on both volume and price.
Usage: Helps identify the overall trend and potential entry points. When the price is above VWAP, it indicates a bullish trend; when below, it indicates a bearish trend.
RSI (Relative Strength Index):
Purpose: RSI measures the speed and change of price movements, indicating overbought or oversold conditions.
Usage: The RSI values between 30 and 70 are used to filter trades. A value above 70 indicates overbought conditions, while below 30 indicates oversold conditions.
Custom OBV (On Balance Volume):
Purpose: OBV uses volume flow to predict changes in stock price.
Usage: Helps confirm the strength of a trend. Increasing OBV indicates accumulation (buying pressure), while decreasing OBV indicates distribution (selling pressure).
Multi-Timeframe Analysis:
Purpose: Confirms signals by analyzing RSI on a higher timeframe (5-minute chart).
Usage: Ensures that signals on the 1-minute chart align with the broader trend on the 5-minute chart, reducing false signals.
Signals:
Buy Signal:
Triggered when the price crosses above the VWAP, and the RSI is between 50 and 70 on both the 1-minute and 5-minute charts.
Visual Cue: A green “BUY” label appears below the bar.'
Sell Signal:
Triggered when the price crosses below the VWAP, and the RSI is between 30 and 50 on both the 1-minute and 5-minute charts.
Visual Cue: A red “SELL” label appears above the bar.
Alerts:
Buy Alert: Notifies you when a buy signal is detected.
Sell Alert: Notifies you when a sell signal is detected.
Additional Visuals:
VWAP Line: Plotted in blue to show the average price based on volume.
OBV Line: Plotted in purple to indicate volume flow.
RSI Line: Plotted in orange with horizontal lines at 70 (overbought) and 30 (oversold) levels.
Enhanced Alligator Trend Indicator By Er. Parvez HaleemPurpose: The Enhanced Alligator Trend Indicator aims to identify strong and reliable buy and sell signals on the price chart by combining the Alligator Indicator with trend strength and volume filters. It is specifically designed for use on a 1-minute chart to enhance precision in short-term trading decisions.
Components:
Alligator Indicator:
Jaw Line (Blue): Calculated as a simple moving average (SMA) of the closing price over a specified period (default: 13 bars). Represents the long-term trend.
Teeth Line (Red): Calculated as a simple moving average (SMA) of the closing price over a shorter period (default: 8 bars). Represents the medium-term trend.
Lips Line (Green): Calculated as a simple moving average (SMA) of the closing price over an even shorter period (default: 5 bars). Represents the short-term trend.
Trend Strength Indicator:
Relative Strength Index (RSI): Measures the strength of the current trend, using a default period of 14 bars. RSI values above 50 suggest a bullish trend, while values below 50 suggest a bearish trend.
Volume Filter:
Volume Threshold: Filters signals based on trading volume to ensure they only appear when volume exceeds a specified threshold (default: 100,000). This helps to avoid low-volume noise and enhance signal reliability.
Additional Trend Filters:
Short-Term SMA: A simple moving average with a default period of 20 bars, used to assess short-term trend direction.
Long-Term SMA: A simple moving average with a default period of 50 bars, used to assess long-term trend direction.
SMA Crossover: A bullish crossover occurs when the short-term SMA is above the long-term SMA, and a bearish crossover occurs when the short-term SMA is below the long-term SMA.
Signal Generation:
Buy Signal: Generated when:
The Lips line is above the Teeth line, and the Teeth line is above the Jaw line (indicating a bullish alignment in the Alligator Indicator).
The RSI is above 50 (indicating strong bullish trend strength).
The trading volume exceeds the specified volume threshold (indicating sufficient trading activity).
The short-term SMA is above the long-term SMA (confirming a bullish trend).
Sell Signal: Generated when:
The Lips line is below the Teeth line, and the Teeth line is below the Jaw line (indicating a bearish alignment in the Alligator Indicator).
The RSI is below 50 (indicating strong bearish trend strength).
The trading volume exceeds the specified volume threshold (indicating sufficient trading activity).
The short-term SMA is below the long-term SMA (confirming a bearish trend).
Plotting on Chart:
Alligator Lines: The Jaw, Teeth, and Lips lines are plotted directly on the price chart in blue, red, and green, respectively, to indicate the long-term, medium-term, and short-term trends.
Buy/Sell Signals: Buy signals are plotted below the price bars in green, and sell signals are plotted above the price bars in red. These signals are marked with labels ("BUY" and "SELL") to clearly indicate trading opportunities.
Debugging: RSI and SMA lines are plotted but hidden by default. They can be revealed for verification purposes to ensure the correctness of the indicator’s calculations.
Alerts:
Buy Alert: Triggers when a buy signal condition is met, sending a notification that a buy opportunity has been identified.
Sell Alert: Triggers when a sell signal condition is met, sending a notification that a sell opportunity has been identified.
HTF Liquidity Dashboard [TFO]The purpose of this indicator is to server as a multi-symbol scanner that indicates when user-defined symbols have exceeded their previous Day/Week/Month highs and lows.
By default, the dashboard will use a compact view where the green ✔ means that price has swept and is currently exceeding the level of interest, the red ❌ implies that price swept the level but reversed back into the original range, and - indicates that the level hasn't been reached. However, the dashboard text can be toggled to show the numerical values of the highs and lows instead of these compact strings, as shown in the following image.
These levels may be shown and customized on the current chart as well via the Show Levels option. By default, levels from the selected timeframes will initially be plotted as black, and will change to red once traded through. Users can optionally increase the Session Limit parameter to show more than one previous high/low on their chart, for each selected timeframe.
Optionally, we can also plot labels to show when any of the user-defined symbols have exceeded their respective highs and lows, for any of the selected timeframes. Alerts can be created for these events as well; simply select the desired symbols and timeframes, create a new alert using this indicator, and you should be alerted when highs and lows are traded through. Note: if you encounter any issues with duplicate alerts, try deleting the alert, navigating to a lower timeframe such as the 1m, and making a new alert.
Volume Divergence IndicatorThe Volume Divergence Indicator is a powerful tool that can help traders identify potential price reversals in the market by analyzing volume data. The indicator has several features, including divergences signals, volume spikes, volume contractions, and volume trend signals.
Unlike most divergence indicators, this one is focused on providing non-repainting alerts. That is why I chose not to use pivot points.
The Volume Divergence Indicator can be used as an overlay or a non-overlay. The overlay mode displays the indicator on top of the price chart, while the non-overlay mode displays the indicator below the price chart.
The indicator has five alerts that can be used to generate alerts:
Bullish Divergence : This alert is generated when prices are making lower lows, but volume is making higher lows. This suggests that the selling pressure is weakening, and a bullish reversal may be imminent.
Bearish Divergence : This alert is generated when prices are making higher highs, but volume is making lower highs. This suggests that the buying pressure is weakening, and a bearish reversal may be imminent.
Volume Spike : This alert is generated when volume spikes above a certain threshold, such as two standard deviations above the moving average. This suggests that there is unusual buying or selling activity in the market, and traders may want to pay attention to the price movements that follow.
Volume Contraction : This alert is generated when volume contracts to a certain level, such as two standard deviations below the moving average. This suggests that there is little buying or selling activity in the market, and traders may want to be cautious until volume picks up again.
Volume Trend : This alert is generated when volume trends above or below the moving average for a certain number of periods, such as five or ten. This suggests that there is a sustained increase or decrease in buying or selling pressure, and traders may want to adjust their trading strategy accordingly.
To customize the indicator settings, users can adjust the following inputs:
Choose overlay mode: select either Overlay or Non-Overlay
Price and volume lookback: set the number of bars to look back for price and volume data
Bull and bear sensitivity: adjust the sensitivity of the bullish and bearish divergences
Volume MA length: set the length of the moving average used to calculate volume spikes and contractions
Sensitivity of spikes: adjust the sensitivity of the volume spikes
Sensitivity of contractions: adjust the sensitivity of the volume contractions
Trend sensitivity: set the number of periods to identify the volume trend
The Volume Divergence Indicator can be a valuable addition to any trader's toolkit. It can help traders identify potential price reversals in the market, as well as unusual buying or selling activity.
I am open to suggestions for further updates or additions.
Webhook Starter Kit [HullBuster]
Introduction
This is an open source strategy which provides a framework for webhook enabled projects. It is designed to work out-of-the-box on any instrument triggering on an intraday bar interval. This is a full featured script with an emphasis on actual trading at a brokerage through the TradingView alert mechanism and without requiring browser plugins.
The source code is written in a self documenting style with clearly defined sections. The sections “communicate” with each other through state variables making it easy for the strategy to evolve and improve. This is an excellent place for Pine Language beginners to start their strategy building journey. The script exhibits many Pine Language features which will certainly ad power to your script building abilities.
This script employs a basic trend follow strategy utilizing a forward pyramiding technique. Trend detection is implemented through the use of two higher time frame series. The market entry setup is a Simple Moving Average crossover. Positions exit by passing through conditional take profit logic. The script creates ten indicators including a Zscore oscillator to measure support and resistance levels. The indicator parameters are exposed through 47 strategy inputs segregated into seven sections. All of the inputs are equipped with detailed tool tips to help you get started.
To improve the transition from simulation to execution, strategy.entry and strategy.exit calls show enhanced message text with embedded keywords that are combined with the TradingView placeholders at alert time. Thereby, enabling a single JSON message to generate multiple execution events. This is genius stuff from the Pine Language development team. Really excellent work!
This document provides a sample alert message that can be applied to this script with relatively little modification. Without altering the code, the strategy inputs can alter the behavior to generate thousands of orders or simply a few dozen. It can be applied to crypto, stocks or forex instruments. A good way to look at this script is as a webhook lab that can aid in the development of your own endpoint processor, impress your co-workers and have hours of fun.
By no means is a webhook required or even necessary to benefit from this script. The setups, exits, trend detection, pyramids and DCA algorithms can be easily replaced with more sophisticated versions. The modular design of the script logic allows you to incrementally learn and advance this script into a functional trading system that you can be proud of.
Design
This is a trend following strategy that enters long above the trend line and short below. There are five trend lines that are visible by default but can be turned off in Section 7. Identified, in frequency order, as follows:
1. - EMA in the chart time frame. Intended to track price pressure. Configured in Section 3.
2. - ALMA in the higher time frame specified in Section 2 Signal Line Period.
3. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
4. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
5. - DEMA in the higher time frame specified in Section 2 Trend Line Period.
The Blue, Green and Orange lines are signal lines are on the same time frame. The time frame selected should be at least five times greater than the chart time frame. The Purple line represents the trend line for which prices above the line suggest a rising market and prices below a falling market. The time frame selected for the trend should be at least five times greater than the signal lines.
Three oscillators are created as follows:
1. Stochastic - In the chart time frame. Used to enter forward pyramids.
2. Stochastic - In the Trend period. Used to detect exit conditions.
3. Zscore - In the Signal period. Used to detect exit conditions.
The Stochastics are configured identically other than the time frame. The period is set in Section 2.
Two Simple Moving Averages provide the trade entry conditions in the form of a crossover. Crossing up is a long entry and down is a short. This is in fact the same setup you get when you select a basic strategy from the Pine editor. The crossovers are configured in Section 3. You can see where the crosses are occurring by enabling Show Entry Regions in Section 7.
The script has the capacity for pyramids and DCA. Forward pyramids are enabled by setting the Pyramid properties tab with a non zero value. In this case add on trades will enter the market on dips above the position open price. This process will continue until the trade exits. Downward pyramids are available in Crypto and Range mode only. In this case add on trades are placed below the entry price in the drawdown space until the stop is hit. To enable downward pyramids set the Pyramid Minimum Span In Section 1 to a non zero value.
This implementation of Dollar Cost Averaging (DCA) triggers off consecutive losses. Each loss in a run increments a sequence number. The position size is increased as a multiple of this sequence. When the position eventually closes at a profit the sequence is reset. DCA is enabled by setting the Maximum DCA Increments In Section 1 to a non zero value.
It should be noted that the pyramid and DCA features are implemented using a rudimentary design and as such do not perform with the precision of my invite only scripts. They are intended as a feature to stress test your webhook endpoint. As is, you will need to buttress the logic for it to be part of an automated trading system. It is for this reason that I did not apply a Martingale algorithm to this pyramid implementation. But, hey, it’s an open source script so there is plenty of room for learning and your own experimentation.
How does it work
The overall behavior of the script is governed by the Trading Mode selection in Section 1. It is the very first input so you should think about what behavior you intend for this strategy at the onset of the configuration. As previously discussed, this script is designed to be a trend follower. The trend being defined as where the purple line is predominately heading. In BiDir mode, SMA crossovers above the purple line will open long positions and crosses below the line will open short. If pyramiding is enabled add on trades will accumulate on dips above the entry price. The value applied to the Minimum Profit input in Section 1 establishes the threshold for a profitable exit. This is not a hard number exit. The conditional exit logic must be satisfied in order to permit the trade to close. This is where the effort put into the indicator calibration is realized. There are four ways the trade can exit at a profit:
1. Natural exit. When the blue line crosses the green line the trade will close. For a long position the blue line must cross under the green line (downward). For a short the blue must cross over the green (upward).
2. Alma / Linear Regression event. The distance the blue line is from the green and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 6 and relies on the period and length set in Section 2. A long position will exit on an upward thrust which exceeds the activation threshold. A short will exit on a downward thrust.
3. Exponential event. The distance the yellow line is from the blue and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 3 and relies on the period and length set in the same section.
4. Stochastic event. The purple line stochastic is used to measure overbought and over sold levels with regard to position exits. Signal line positions combined with a reading over 80 signals a long profit exit. Similarly, readings below 20 signal a short profit exit.
Another, optional, way to exit a position is by Bale Out. You can enable this feature in Section 1. This is a handy way to reduce the risk when carrying a large pyramid stack. Instead of waiting for the entire position to recover we exit early (bale out) as soon as the profit value has doubled.
There are lots of ways to implement a bale out but the method I used here provides a succinct example. Feel free to improve on it if you like. To see where the Bale Outs occur, enable Show Bale Outs in Section 7. Red labels are rendered below each exit point on the chart.
There are seven selectable Trading Modes available from the drop down in Section 1:
1. Long - Uses the strategy.risk.allow_entry_in to execute long only trades. You will still see shorts on the chart.
2. Short - Uses the strategy.risk.allow_entry_in to execute short only trades. You will still see long trades on the chart.
3. BiDir - This mode is for margin trading with a stop. If a long position was initiated above the trend line and the price has now fallen below the trend, the position will be reversed after the stop is hit. Forward pyramiding is available in this mode if you set the Pyramiding value in the Properties tab. DCA can also be activated.
4. Flip Flop - This is a bidirectional trading mode that automatically reverses on a trend line crossover. This is distinctively different from BiDir since you will get a reversal even without a stop which is advantageous in non-margin trading.
5. Crypto - This mode is for crypto trading where you are buying the coins outright. In this case you likely want to accumulate coins on a crash. Especially, when all the news outlets are talking about the end of Bitcoin and you see nice deep valleys on the chart. Certainly, under these conditions, the market will be well below the purple line. No margin so you can’t go short. Downward pyramids are enabled for Crypto mode when two conditions are met. First the Pyramiding value in the Properties tab must be non zero. Second the Pyramid Minimum Span in Section 1 must be non zero.
6. Range - This is a counter trend trading mode. Longs are entered below the purple trend line and shorts above. Useful when you want to test your webhook in a market where the trend line is bisecting the signal line series. Remember that this strategy is a trend follower. It’s going to get chopped out in a range bound market. By turning on the Range mode you will at least see profitable trades while stuck in the range. However, when the market eventually picks a direction, this mode will sustain losses. This range trading mode is a rudimentary implementation that will need a lot of improvement if you want to create a reliable switch hitter (trend/range combo).
7. No Trade. Useful when setting up the trend lines and the entry and exit is not important.
Once in the trade, long or short, the script tests the exit condition on every bar. If not a profitable exit then it checks if a pyramid is required. As mentioned earlier, the entry setups are quite primitive. Although they can easily be replaced by more sophisticated algorithms, what I really wanted to show is the diminished role of the position entry in the overall life of the trade. Professional traders spend much more time on the management of the trade beyond the market entry. While your trade entry is important, you can get in almost anywhere and still land a profitable exit.
If DCA is enabled, the size of the position will increase in response to consecutive losses. The number of times the position can increase is limited by the number set in Maximum DCA Increments of Section 1. Once the position breaks the losing streak the trade size will return the default quantity set in the Properties tab. It should be noted that the Initial Capital amount set in the Properties tab does not affect the simulation in the same way as a real account. In reality, running out of money will certainly halt trading. In fact, your account would be frozen long before the last penny was committed to a trade. On the other hand, TradingView will keep running the simulation until the current bar even if your funds have been technically depleted.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that the endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Webhook Integration
The TradingView alerts dialog provides a way to connect your script to an external system which could actually execute your trade. This is a fantastic feature that enables you to separate the data feed and technical analysis from the execution and reporting systems. Using this feature it is possible to create a fully automated trading system entirely on the cloud. Of course, there is some work to get it all going in a reliable fashion. Being a strategy type script place holders such as {{strategy.position_size}} can be embedded in the alert message text. There are more than 10 variables which can write internal script values into the message for delivery to the specified endpoint.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that my endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Here is an excerpt of the fields I use in my webhook signal:
"broker_id": "kraken",
"account_id": "XXX XXXX XXXX XXXX",
"symbol_id": "XMRUSD",
"action": "{{strategy.order.action}}",
"strategy": "{{strategy.order.id}}",
"lots": "{{strategy.order.contracts}}",
"price": "{{strategy.order.price}}",
"comment": "{{strategy.order.alert_message}}",
"timestamp": "{{time}}"
Though TradingView does a great job in dispatching your alert this feature does come with a few idiosyncrasies. Namely, a single transaction call in your script may cause multiple transmissions to the endpoint. If you are using placeholders each message describes part of the transaction sequence. A good example is closing a pyramid stack. Although the script makes a single strategy.close() call, the endpoint actually receives a close message for each pyramid trade. The broker, on the other hand, only requires a single close. The incongruity of this situation is exacerbated by the possibility of messages being received out of sequence. Depending on the type of order designated in the message, a close or a reversal. This could have a disastrous effect on your live account. This broker simulator has no idea what is actually going on at your real account. Its just doing the job of running the simulation and sending out the computed results. If your TradingView simulation falls out of alignment with the actual trading account lots of really bad things could happen. Like your script thinks your are currently long but the account is actually short. Reversals from this point forward will always be wrong with no one the wiser. Human intervention will be required to restore congruence. But how does anyone find out this is occurring? In closed systems engineering this is known as entropy. In practice your webhook logic should be robust enough to detect these conditions. Be generous with the placeholder usage and give the webhook code plenty of information to compare states. Both issuer and receiver. Don’t blindly commit incoming signals without verifying system integrity.
Setup
The following steps provide a very brief set of instructions that will get you started on your first configuration. After you’ve gone through the process a couple of times, you won’t need these anymore. It’s really a simple script after all. I have several example configurations that I used to create the performance charts shown. I can share them with you if you like. Of course, if you’ve modified the code then these steps are probably obsolete.
There are 47 inputs divided into seven sections. For the most part, the configuration process is designed to flow from top to bottom. Handy, tool tips are available on every field to help get you through the initial setup.
Step 1. Input the Base Currency and Order Size in the Properties tab. Set the Pyramiding value to zero.
Step 2. Select the Trading Mode you intend to test with from the drop down in Section 1. I usually select No Trade until I’ve setup all of the trend lines, profit and stop levels.
Step 3. Put in your Minimum Profit and Stop Loss in the first section. This is in pips or currency basis points (chart right side scale). Remember that the profit is taken as a conditional exit not a fixed limit. The actual profit taken will almost always be greater than the amount specified. The stop loss, on the other hand, is indeed a hard number which is executed by the TradingView broker simulator when the threshold is breached.
Step 4. Apply the appropriate value to the Tick Scalar field in Section 1. This value is used to remove the pipette from the price. You can enable the Summary Report in Section 7 to see the TradingView minimum tick size of the current chart.
Step 5. Apply the appropriate Price Normalizer value in Section 1. This value is used to normalize the instrument price for differential calculations. Basically, we want to increase the magnitude to significant digits to make the numbers more meaningful in comparisons. Though I have used many normalization techniques, I have always found this method to provide a simple and lightweight solution for less demanding applications. Most of the time the default value will be sufficient. The Tick Scalar and Price Normalizer value work together within a single calculation so changing either will affect all delta result values.
Step 6. Turn on the trend line plots in Section 7. Then configure Section 2. Try to get the plots to show you what’s really happening not what you want to happen. The most important is the purple trend line. Select an interval and length that seem to identify where prices tend to go during non-consolidation periods. Remember that a natural exit is when the blue crosses the green line.
Step 7. Enable Show Event Regions in Section 7. Then adjust Section 6. Blue background fills are spikes and red fills are plunging prices. These measurements should be hard to come by so you should see relatively few fills on the chart if you’ve set this up as intended. Section 6 includes the Zscore oscillator the state of which combines with the signal lines to detect statistically significant price movement. The Zscore is a zero based calculation with positive and negative magnitude readings. You want to input a reasonably large number slightly below the maximum amplitude seen on the chart. Both rise and fall inputs are entered as a positive real number. You can easily use my code to create a separate indicator if you want to see it in action. The default value is sufficient for most configurations.
Step 8. Turn off Show Event Regions and enable Show Entry Regions in Section 7. Then adjust Section 3. This section contains two parts. The entry setup crossovers and EMA events. Adjust the crossovers first. That is the Fast Cross Length and Slow Cross Length. The frequency of your trades will be shown as blue and red fills. There should be a lot. Then turn off Show Event Regions and enable Display EMA Peaks. Adjust all the fields that have the word EMA. This is actually the yellow line on the chart. The blue and red fills should show much less than the crossovers but more than event fills shown in Step 7.
Step 9. Change the Trading Mode to BiDir if you selected No Trades previously. Look on the chart and see where the trades are occurring. Make adjustments to the Minimum Profit and Stop Offset in Section 1 if necessary. Wider profits and stops reduce the trade frequency.
Step 10. Go to Section 4 and 5 and make fine tuning adjustments to the long and short side.
Example Settings
To reproduce the performance shown on the chart please use the following configuration: (Bitcoin on the Kraken exchange)
1. Select XBTUSD Kraken as the chart symbol.
2. On the properties tab set the Order Size to: 0.01 Bitcoin
3. On the properties tab set the Pyramiding to: 12
4. In Section 1: Select “Crypto” for the Trading Model
5. In Section 1: Input 2000 for the Minimum Profit
6. In Section 1: Input 0 for the Stop Offset (No Stop)
7. In Section 1: Input 10 for the Tick Scalar
8. In Section 1: Input 1000 for the Price Normalizer
9. In Section 1: Input 2000 for the Pyramid Minimum Span
10. In Section 1: Check mark the Position Bale Out
11. In Section 2: Input 60 for the Signal Line Period
12. In Section 2: Input 1440 for the Trend Line Period
13. In Section 2: Input 5 for the Fast Alma Length
14. In Section 2: Input 22 for the Fast LinReg Length
15. In Section 2: Input 100 for the Slow LinReg Length
16. In Section 2: Input 90 for the Trend Line Length
17. In Section 2: Input 14 Stochastic Length
18. In Section 3: Input 9 Fast Cross Length
19. In Section 3: Input 24 Slow Cross Length
20. In Section 3: Input 8 Fast EMA Length
21. In Section 3: Input 10 Fast EMA Rise NetChg
22. In Section 3: Input 1 Fast EMA Rise ROC
23. In Section 3: Input 10 Fast EMA Fall NetChg
24. In Section 3: Input 1 Fast EMA Fall ROC
25. In Section 4: Check mark the Long Natural Exit
26. In Section 4: Check mark the Long Signal Exit
27. In Section 4: Check mark the Long Price Event Exit
28. In Section 4: Check mark the Long Stochastic Exit
29. In Section 5: Check mark the Short Natural Exit
30. In Section 5: Check mark the Short Signal Exit
31. In Section 5: Check mark the Short Price Event Exit
32. In Section 5: Check mark the Short Stochastic Exit
33. In Section 6: Input 120 Rise Event NetChg
34. In Section 6: Input 1 Rise Event ROC
35. In Section 6: Input 5 Min Above Zero ZScore
36. In Section 6: Input 120 Fall Event NetChg
37. In Section 6: Input 1 Fall Event ROC
38. In Section 6: Input 5 Min Below Zero ZScore
In this configuration we are trading in long only mode and have enabled downward pyramiding. The purple trend line is based on the day (1440) period. The length is set at 90 days so it’s going to take a while for the trend line to alter course should this symbol decide to node dive for a prolonged amount of time. Your trades will still go long under those circumstances. Since downward accumulation is enabled, your position size will grow on the way down.
The performance example is Bitcoin so we assume the trader is buying coins outright. That being the case we don’t need a stop since we will never receive a margin call. New buy signals will be generated when the price exceeds the magnitude and speed defined by the Event Net Change and Rate of Change.
Feel free to PM me with any questions related to this script. Thank you and happy trading!
CFTC RULE 4.41
These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to these being shown.
Pullback Trading Tool R5-65 by JustUncleLBy request this is an updated version of the "PullBack Trading Tool": removes experimental "OCC" channel, added option to display ribbons or just single moving average lines, added alert arrows for "PB" exits, added alertcondition for TV alarm subsystem, added some extract options for Pivot points and general cleanup of code.
Description:
This project incorporates the majority of the indicators needed to analyse and trade Trends for Pullbacks, swings and reversals.
Incorporated within this tool are the following indicators:
1. Major industry (Banks) recognised important EMAs in an EMA Ribbon:
Lime = EMA5 (Optional Display)
DodgerBlue = EMA12 (Optional Display)
Red = EMA36 (Optional display)
Green = EMA89
Blue = EMA200
Black = EMA633
2. The 5 EMA (default) High/Low/Close Price Action Channel (PAC), the PAC channel display is disabled by default.
3. Optionally display Fractals and optional Fractal levels
4. Optional HH, LH, LL, HL finder.
5. Optional Buy/Sell "PB" exit Alerts with Optional 200EMA filter.
6. Coloured coded Bar high lighting based on the PAC:
blue = bar closed above PAC
red = bar closed below PAC
gray = bar closed inside PAC
7. Alert condition sent to TradingView's Alarm subsystem for PB exits.
8. Pivot points with optional labels.
9. EMA5-12 Ribbon is displayed by default.
10.EMA12-36 Ribbon is displayed by default
Set up and hints:
I am unable to provide a full description here, as Pullback Trading incorporates a full trading Methodology, there are a number of articles and books written on the subject.
Set the chart to Heikin Ashi Candles (optional).
I also add a "Sweetspot Gold R3" indicator to the chart as well to help with support and resistance finding and shows where the important "00" lines are.
First on a weekly basis say Sunday night or Monday morning, analyse the Daily and Weekly charts to establish overall trends, and support/resistant levels. Draw significant mini trend lines (2/3 TL), vertical trend lines (VTL) and S/R levels. Can use the Pivots points to guide VTL drawing and Fractals to help guide 2/3 TL drawing.
Once the trend direction and any potential major reversals highlighted, drop down to lower timeframe chart and draw appropriate mini Trend line (2/3 TL) matching the established momentum direction. Take note of potential pull backs from and of the EMAs, in particular the EMA5-12 ribbon, EMA12-36 Ribbon and the 200EMA. Can use the Pivots and/or Fractals points to guide your 2/3 TL drawing.
Set a TradingView alarm on the "PBTOOL alert", with the default settings this normally occurs before or during the Break of the manually drawn TL lines.
Once alerted check to see if the TL is broken and is returning to trend away from the EMA lines, this is indicated by bar colour change to trend directional colour.
You can trade that alert or drop down to even lower time frames and perform the same TL analysis there to find trades at the lower TF. Trading at lower TF you will allow tighter Stop loss settings.
Other than the "SweetSpot Gold R3" indicator, you should not need any other indicator to successfully trade trends for Pullbacks and reversals. If you really want another indicator I suggest a momentum one for example: AO ( Awesome Oscillator ), MACD or Squeeze Momentum.
Relative Volume - Fully ConfigurableOf course. Publishing your script with a clear, detailed description is key to helping other traders understand its value. A good description should cover what the indicator does, its features, and how it can be used in a trading strategy.
Here is a complete description you can use. You can copy and paste this directly into the "Description" field when you publish your script on TradingView.
Title: Relative Volume (RV-X) - Fully Configurable with Alerts
Description:
Overview
This script provides a comprehensive and highly customizable Relative Volume (RVOL) indicator designed to give traders an instant edge in analyzing market participation and conviction.
Relative Volume measures the current bar's volume as a multiple of its recent average volume (e.g., 2.5x means the current volume is 2.5 times the average). This allows you to immediately spot unusual volume activity that often precedes significant price moves. Unlike standard volume bars, RVOL provides immediate context, answering the question: "Is this volume high or low relative to recent history?"
This tool is invaluable for confirming breakouts, gauging trend strength, identifying climactic tops or bottoms, and filtering out low-liquidity market conditions.
Key Features
Relative Volume as a Multiple: Instantly see if volume is 1.5x, 3x, or 10x the recent average, providing clear context.
Tiered Color-Coding: Histogram bars are automatically colored based on RVOL strength, giving you an intuitive, at-a-glance understanding of market activity.
Fully Customizable Visuals: Every color for every tier is fully configurable in the settings menu. Tailor the look and feel to your personal preference.
Customizable Lookback Period: Easily adjust the lookback period for the volume moving average to suit different timeframes and trading styles.
Built-in Crossover Alerts: Never miss a volume spike again. Set a custom RVOL level (e.g., 2.0x) and receive a server-side alert when volume crosses above it. This works for single symbols or entire watchlists.
Clear Reference Lines: Horizontal lines are plotted at key RVOL levels (1.0, 2.0, 5.0, 10.0) to provide clear reference points.
How It Works
The indicator's calculation is straightforward:
RelativeVolume=
SimpleMovingAverageofVolumeoveraLookbackPeriod
CurrentBar
′
sVolume
An RVOL value greater than 1.0 indicates that the current volume is higher than the recent average.
An RVOL value less than 1.0 indicates that the current volume is lower than the recent average.
The default color scheme is designed for intuitive analysis:
Red: Below average volume (RVOL <= 1x)
Yellow: Above average volume (1x < RVOL < 2x)
Light Green: Moderately high volume (2x <= RVOL < 5x)
Medium Green: High volume (5x <= RVOL < 10x)
Bright Green: Extremely high volume (RVOL >= 10x)
How to Use in Trading
Breakout Confirmation: A price breakout from a consolidation range is significantly more reliable if it occurs on high relative volume (e.g., RVOL > 2.0). Low RVOL on a breakout suggests a lack of conviction and a higher chance of failure (a "fakeout").
Trend Strength Analysis: In a healthy, sustained trend, you should see volume pick up on moves in the direction of the trend (RVOL > 1.0) and decrease on pullbacks.
Identifying Exhaustion/Climax: An extremely high RVOL spike (e.g., > 5x or 10x) after a prolonged price move can signal an "exhaustion climax," where the last of the buyers (at a top) or sellers (at a bottom) have entered the market. This often precedes a reversal.
Filtering Low-Liquidity Environments: When RVOL is consistently below 1.0 (red bars), it signals a quiet, low-liquidity market. This can be a useful filter to avoid choppy price action and unreliable chart patterns.
Configuration Settings
All settings are easily accessible in the indicator's "Inputs" tab:
General Settings:
Lookback Period: Sets the length for the volume's Simple Moving Average.
Alert On RVOL >: Sets the custom threshold for the crossover alert.
Color Settings:
Individual color pickers for all five RVOL tiers, from <= 1x to > 10x.
This script was developed to be a robust, all-in-one solution for volume analysis. Feel free to use and modify it. Happy trading!
Mahnam BTC with breake outThis strategy is designed and coded specifically for trading Bitcoin in the 15-minute timeframe.
Of course, those who are skilled in coding can use it in other timeframes and currencies by changing its codes and personalizing it.
Of course, it is strongly recommended that people who want to use it first perform the necessary backtests or test this strategy on demo sites and then trade on the Tetri platform.
In this strategy, it only checks the entry and exit conditions and connects to the exchange using the API code and trades completely automatically.
This strategy determines the stop loss and take profit points on the exchange at the same time as entering the transaction and sets them.
///////////////////////// Code ////////////////////////////////
//@version=5
// Copyright (c) 2021-present, Alex Orekhov (everget)
//indicator('HalfTrend and TMA', overlay=true , max_lines_count = 500, max_labels_count = 500)
strategy(title='Mahnam BTC with breake out', overlay=true , max_bars_back=5000 , max_labels_count= 500 , max_boxes_count = 500,max_lines_count = 500, initial_capital=1000, currency = currency.USDT, default_qty_type=strategy.cash )
import PineCoders/Time/4
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
newyork = '0000-2400' // input.session(title='Session', defval='0000-2400')
time_newyork = time(timeframe.period, newyork)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// تعیین تاریخ شروع و پایان (بر حسب timestamp یونیکس)
// تنظیمات Input برای تاریخ شروع و پایان
startDate = input.time(timestamp('01 Jan 2025 00:00 UTC'), "📅 تاریخ شروع معاملات", inline="dateRange")
endDate = input.time(timestamp('31 Dec 2025 23:59 UTC'), "📅 تاریخ پایان معاملات", inline="dateRange")
// بررسی اینکه آیا زمان فعلی در بازه مجاز است یا خیر
isTradeEnabled = (time >= startDate) //and (time <= endDate)
///////////////////////////////////////////////////////////////////////////////////////////
// currentTime = time("15", "GMT+0")
// hourOfDay = hour(currentTime)
// notrade_hours1 = input.(12 , minval = 0 , maxval = 24 , title = "Hours Friday")
// notrade_hours2 = input.int(12 , minval = 0 , maxval = 24 , title = "Hours Monday")
////////////////////////////////////////////////////////////Holidays/////////////////////
// تعریف روزهای هفته
isSaturday = dayofweek == dayofweek.saturday //and hourOfDay > 12
isSunday = dayofweek == dayofweek.sunday
// isMonday = dayofweek == dayofweek.monday and hourOfDay < notrade_hours1
// isFriday = dayofweek == dayofweek.friday and hourOfDay > notrade_hours2
// رنگآمیزی پسزمینه برای شنبه (آبی کمرنگ) و یکشنبه (نارنجی کمرنگ)
bgcolor(isSaturday ? color.new(color.blue, 90) : isSunday ? color.new(color.orange, 90) : na)
//bgcolor(isMonday ? color.new(color.white, 90) : isFriday ? color.new(color.green, 90) : na)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات پوزیشن
leverage = input.int(defval = 10 , title = "leverage" , minval = 1 , maxval = 20,step = 5 , group="Posistion Settings==========================================")
quantity = input.float(defval = 500 , title = "quantity" , minval = 1, group="Posistion Settings==========================================")
sl_manager = input.float(defval = 0.5 , step = 0.1 , title = "Risk Percent Of Capital", group="Posistion Settings==========================================")
persent_fee = input.float(defval = 0.05 , title = "Persent Fee Eexchange" , minval = 0 , maxval = 1,step = 0.01 , group="Posistion Settings==========================================")
position_type = input.string(defval = "Buy_And_Sell" , title = "Position_type" , options = , group="Posistion Settings==========================================" )
r_r_long = input.float(defval = 2 , step = 0.1 , title = "R - R =>", group="Posistion Settings==========================================")
r_r_short = r_r_long // input.float(defval = 1.8 , step = 0.1 , title = "r_r Short =>")
//////////////////////////////////////////////////////// END ROC /////////////////////////////////////
day_of_week = input.bool(false , title = "Trade in 7 days", group="Posistion Settings==========================================")
show_tp_sl_ent = true // input.bool(defval=true, title= "Show Tp Sl Ent Box", group="Posistion Settings==========================================")
show_qty = true // input.bool(defval = true , title = "Show Qty Label", group="Posistion Settings==========================================")
//////////////////////////////////////////////////////// Information Position ////////////////////////////////////////////////////
var short_is_open = false
var long_is_open = false
//variant for sell position
var sl1 = 0.0
var tp1 = 0.0
var ent1 = 0.0
var equity1 = 0.0
var qty1 = ""
//variant for buy position
var sl3 = 0.0
var qty2 = ""
var tp3 = 0.0
var ent2 = 0.0
var equity2 = 0.0
symbol = str.tostring(syminfo.basecurrency + "-" + syminfo.currency )
////////////////////////////////////////////////////////////////////////////////////////////////////////
var long_condition = false
var short_condition = false
persent_candel = 0.7 // input.float(defval = 0.7 , step = 0.1 , title = "درصد حرکت آخرین کندل", group="CANDEL Settings==========================================")
////////////////////////////////////////////////////////////////////////////////////////////////////////
amplitude = 2 // input.int(title='Amplitude', defval=2)
channelDeviation =2 //input.int(title='Channel Deviation', defval=2)
showChannels =true // input.bool(title='Show Channels', defval=true)
var int trend = 0
var int nextTrend = 0
var float maxLowPrice = nz(low , low)
var float minHighPrice = nz(high , high)
var float up = 0.0
var float down = 0.0
float atrHigh = 0.0
float atrLow = 0.0
float arrowUp = na
float arrowDown = na
len_atr = 130 // input.int(130 , title = "Len Half Trend")
atr2 = ta.atr(len_atr) / 2
dev = channelDeviation * atr2
highPrice = high
lowPrice = low
highma = ta.sma(high, amplitude)
lowma = ta.sma(low, amplitude)
if nextTrend == 1
maxLowPrice := math.max(lowPrice, maxLowPrice)
if highma < maxLowPrice and close < nz(low , low)
trend := 1
nextTrend := 0
minHighPrice := highPrice
minHighPrice
else
minHighPrice := math.min(highPrice, minHighPrice)
if lowma > minHighPrice and close > nz(high , high)
trend := 0
nextTrend := 1
maxLowPrice := lowPrice
maxLowPrice
if trend == 0
if not na(trend ) and trend != 0
up := na(down ) ? down : down
arrowUp := up - atr2
arrowUp
else
up := na(up ) ? maxLowPrice : math.max(maxLowPrice, up )
up
atrHigh := up + dev
atrLow := up - dev
atrLow
else
if not na(trend ) and trend != 1
down := na(up ) ? up : up
arrowDown := down + atr2
arrowDown
else
down := na(down ) ? minHighPrice : math.min(minHighPrice, down )
down
atrHigh := down + dev
atrLow := down - dev
atrLow
//////////////////////////////////////////////////////////////////////////////////////////////////////////
len_rsi = 14 // input.int(14, group = "RSI Setting=================================")
rsi = ta.rsi(close , len_rsi)
//////////////////////////////////////////////////////////////////////////////////
// محاسبات مربوط به تعیین خطوط حمایت و مقاومت و شکست آنها
show_ATR = input.bool(false)
lookback_15 = 4 // input.int(4, title = "====>Look Back 1H=====>", inline = "2", group = "Setting Pivot======================", tooltip = "Drawing support and resistance in time frame 15 min in selected look back")
pl60 = fixnan(ta.pivotlow( low , lookback_15 , lookback_15 ))
ph60 = fixnan(ta.pivothigh( high , lookback_15 , lookback_15 ))
plot(show_ATR ? pl60 : na , color = color.red)
plot(show_ATR ? ph60 : na , color = color.green)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
len_ema_fast_long = 2 // input.int(2)
sorce_tma_long = low // input.source(low)
ema_fast_long = ta.ema(sorce_tma_long , len_ema_fast_long)
len_ema_slow_long = 25 // input.int(25)
ema_slow_long = ta.ema(sorce_tma_long , len_ema_slow_long)
//**********************************
len_ema_fast_short = 2 // input.int(2)
sorce_tma_short = high // input.source(close)
ema_fast_short = ta.ema(sorce_tma_short , len_ema_fast_short)
len_ema_slow_short = 25 // input.int(25)
ema_slow_short = ta.ema(sorce_tma_short , len_ema_slow_short)
///////////////////////////////////////////////////////////////////////////////////////////////////////////
bars = 2 // input.int(9,title="Volume Previous bars to check")
//one_side = input.bool(false, title="Positive values only")
float volume_up = 0
float volume_down = 0
for i = 0 to bars
if (close >open )
volume_up:=volume_up+volume
else
volume_down:=volume_down+volume
total_up_down_vol= volume_up-volume_down
vol_bb = 8 // input.int(8)
vol_aa = 2 // input.int(2)
pivot_high_vol = fixnan(ta.pivothigh(total_up_down_vol , vol_bb , vol_aa ))
pivot_low_vol = fixnan(ta.pivotlow(total_up_down_vol , vol_bb , vol_aa ))
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
CLOSE = close
LOW = low
HIGH = high
//////////////////////////////////////////////////////////////////////////////////
//
//reg_trend_on = input(true, 'Activate Reg Trend Line')
length_bull_bear = 4 // input.int(defval= 4, title='🔹 Length Reg Trend line=', minval=1)
//
BullTrend_hist = 0.0
BearTrend_hist = 0.0
BullTrend = (CLOSE - ta.lowest(LOW, length_bull_bear)) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend = (ta.highest(HIGH, length_bull_bear) - CLOSE) / (ta.sma(ta.tr(true), length_bull_bear ))
BearTrend2 = -1 * BearTrend
Trend = BullTrend - BearTrend
// plot columun
if BullTrend < 2
BullTrend_hist := BullTrend - 2
BullTrend_hist
if BearTrend2 > -2
BearTrend_hist := BearTrend2 + 2
BearTrend_hist
//alexgrover-Regression Line Formula
x = bar_index
y = Trend
x_ = ta.sma(x, length_bull_bear)
y_ = ta.sma(y, length_bull_bear)
mx = ta.stdev(x, length_bull_bear)
my = ta.stdev(y, length_bull_bear)
c = ta.correlation(x, y, length_bull_bear)
slope = c * (my / mx)
inter = y_ - slope * x_
reg_trend = x * slope + inter
/////////////////////////////////////////////////
long2 = true
short2 = true
close_H = request.security("" , "" , close )
open_H = request.security("" , "" , open )
if close_H > open_H and close_H > open_H
short2 := false
if close_H < open_H and close_H < open_H
long2 := false
nnn = 1.4 // input.float(1.4 , step = 0.1)
long_1 = BullTrend > nnn and ta.sma(reg_trend , 4 ) > ta.sma(reg_trend , 8 )
short_1 = BearTrend2 < -nnn and ta.sma(reg_trend , 4 ) < ta.sma(reg_trend , 8 )
///////////////////////////////////////////////////
lensig_mdi = 8 // input.int(8, title="ADX Smoothing", minval=1)
len_mdi = 2 // input.int(2, minval=1, title="DI Length")
up_mdi = ta.change(high)
down_mdi = -ta.change(low)
plusDM = na(up_mdi) ? na : (up_mdi > down_mdi and up_mdi > 0 ? up_mdi : 0)
minusDM = na(down_mdi) ? na : (down_mdi > up_mdi and down_mdi > 0 ? down_mdi : 0)
trur_mdi = ta.rma(ta.tr, len_mdi)
plus_mdi = fixnan(100 * ta.rma(plusDM, len_mdi) / trur_mdi)
minus_mdi = fixnan(100 * ta.rma(minusDM, len_mdi) / trur_mdi)
sum = plus_mdi + minus_mdi
adx = 100 * ta.rma(math.abs(plus_mdi - minus_mdi) / (sum == 0 ? 1 : sum), lensig_mdi)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات SuperTrend
atrPeriod = 28 // input(28, title="ATR Period Super Trend")
factor = 3 // input(3.0, title="Multiplier")
= ta.supertrend(factor, atrPeriod)
// تعریف تایمفریمهای بالاتر
htf0 = "30" // input.timeframe("30", title="تایمفریم تأیید اول (1H)")
htf1 = "60" // input.timeframe("60", title=" ایمفریم تأیید دوم (1H)")
htf2 = "240" // input.timeframe("240", title="تایمفریم تأیید سوم (4H)")
// محاسبه SuperTrend در تایمفریمهای بالاتر
supertrend1 = request.security(syminfo.tickerid, htf0, supertrend)
direction1 = request.security(syminfo.tickerid, htf0, direction)
supertrend1H = request.security(syminfo.tickerid, htf1, supertrend )
direction1H = request.security(syminfo.tickerid, htf1, direction)
supertrend4H = request.security(syminfo.tickerid, htf2, supertrend )
direction4H = request.security(syminfo.tickerid, htf2, direction)
// شرایط ورود
Condition_supertrend_long = (direction1H > 0 or direction4H > 0 or direction1 > 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
Condition_supertrend_short = (direction1H < 0 or direction4H < 0 or direction1 < 0) and volume > fixnan(ta.pivotlow(volume , 16 , 2 ))
//////////////////////////////////////////////////////////////////////////////////////////////////////////
open_4h = request.security("" , "240" , open )
close_4h = request.security("" , "240" , close )
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
if day_of_week == false
if isTradeEnabled == true and time == time_newyork and not isSaturday and not isSunday //and not isFriday and not isMonday
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
if day_of_week == true
if isTradeEnabled == true and time == time_newyork
long_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi > 51 and rsi < 80
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_long > ema_slow_long and high > ph60 and open < ph60 and long_1 == true and long2 == true
and plus_mdi > minus_mdi and Condition_supertrend_long == true and high > close_4h and close > atrHigh
short_condition := long_is_open == false and short_is_open == false and total_up_down_vol > pivot_low_vol and rsi < 49 and rsi > 20
and math.abs(close - open) < (persent_candel/100) * close and ema_fast_short < ema_slow_short and low < pl60 and open > pl60 and short_1 == true and short2 == true
and plus_mdi < minus_mdi and Condition_supertrend_short == true and low < close_4h and close < atrLow
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//تنظیمات استاپ سل پوزیشن شورت و لانگ بر اساس ATR
length_atr = 2 // input.int(title='Length', defval=2, minval=1, group = "StopLoss Setting=================================")
m = 0.9 // input.float(0.9,step = 0.1,title = 'Multiplier', group = "StopLoss Setting=================================")
show_atr = false // input.bool(false, group = "StopLoss Setting=================================")
src1_atr = high //input(high , title = "Stoploss Short")
src2_atr = low //input(low ,title = "Stoploss Long")
collong_atr = color.rgb(0,255,0,0)
colshort_atr = color.rgb(255,0,0,0)
a1 = (ta.sma(ta.tr(true), length_atr) * m) / 2 + (ta.wma(ta.tr(true), length_atr) * m) / 2
stop_loss_short = src1_atr + a1
stop_loss_long = src2_atr - a1
p1_atr1 = plot(show_atr ? stop_loss_long : na, title='ATR Short Stop Loss', color=colshort_atr, style=plot.style_circles)
p2_atr1 = plot(show_atr ? stop_loss_short : na, title='ATR Long Stop Loss', color=collong_atr, style=plot.style_circles)
/////////////////////////////////////////////////////////////////Start Stop Loss///////////////////////////////////////////////
/////////////////////////////////////////////////////////////////END Stop Loss///////////////////////////////////////////////
var total_long_trade = 0
var loss_long = 0
var profit_long = 0
var sood_pos_long = 0.00
var zarar_pos_long = 0.00
var kol_sood_long = 0.00
var total_short_trade = 0
var loss_short = 0
var profit_short = 0
var sood_pos_short = 0.00
var zarar_pos_short = 0.00
var kol_sood_short = 0.00
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ━━━━━━━━━━━━━━━━━━ تنظیمات ورودی ━━━━━━━━━━━━━━━━━━
var int candlesToWait = 12 // input.int(1, "تعداد کندلهای انتظار پس از معامله", minval=1)
// ━━━━━━━━━━━━━━━━━━ شناسایی آخرین معامله ━━━━━━━━━━━━━━━━━━
var int lastTradeCloseBar = na
var bool isCoolDownOver = true
// اگر معاملهای بسته شد، شماره کندل آن را ذخیره کن
if strategy.closedtrades > 0 and (na(lastTradeCloseBar) or strategy.closedtrades != strategy.closedtrades )
lastTradeCloseBar := bar_index
isCoolDownOver := false
// بررسی آیا تعداد کندلهای موردنظر گذشته است؟
if not na(lastTradeCloseBar) and (bar_index - lastTradeCloseBar) >= candlesToWait
isCoolDownOver := true
bgcolor(isCoolDownOver ? na : color.new(color.red, 90), title="Cooldown Status")
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// تنظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن لانگ
//ADD_quantity = 1.5 // input.float(2 , title = "در صورت واگرایی ماجین رو چند بابر کنم؟")
if position_type == "Buy" or position_type == "Buy_And_Sell"
if long_condition and isCoolDownOver
ent2 := close
sl3 :=stop_loss_long - (stop_loss_long * (0.5 / leverage) / 100 )
tp3 := ent2 + ((ent2 - sl3) * r_r_long)
number_coin = ((quantity * leverage * sl_manager) / ((ent2 - sl3) *100))
equity2 := math.round ((number_coin * close ) , 3)
if equity2 > quantity * leverage
equity2 := quantity * leverage
//////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , low , str.tostring(equity2) + "$" , color = color.rgb(0, 255, 0,0) , size = size.normal , style = label.style_label_up)
strategy.entry(id="buy", direction = strategy.long , qty=(equity2/close) )
if close >= 10 and close < 500
qty2 := str.tostring(math.round(equity2/close , 2))
else
qty2 := str.tostring(math.round(equity2/close , 0))
if close > 500
qty2 := str.tostring(math.round(equity2/close , 3 ))
if symbol == "AAVEUSDT"
qty2 := str.tostring(math.round(equity2/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"BUY", "positionSide": "LONG", "quantity":"'+qty2+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"SELL", "positionSide": "LONG","delay": 5 ,"quantity":"'+qty2+'","price": "'+str.tostring(tp3)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"SELL","positionSide": "LONG","delay": 10 ,"quantity":"'+qty2+'","price": "'+str.tostring(sl3)+'", "stopPrice": "'+str.tostring(sl3)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
long_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp3, bar_index + 15, tp3, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp3 - ((tp3 - ent2) /2)), bar_index + 15, (tp3 - ((tp3 - ent2) /2)), xloc= xloc.bar_index, color= color.rgb(0, 17, 255), width = 2 , style = line.style_dashed)
line.new(bar_index, sl3, bar_index + 15, sl3, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,0), width = 1)
box.new(bar_index , sl3 , bar_index + 15 , ent2 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent2 , bar_index + 15 , ent2 , color = color.rgb(255, 255, 0, 0))
/////////////////////////////////////////////////////////
total_long_trade := total_long_trade + 1
if low <= sl3 and long_is_open == true
loss_long := loss_long + 1
zarar_pos_long := zarar_pos_long + (((ent2 - sl3) / ent2) * equity2)
if high >= tp3 and long_is_open == true
profit_long := profit_long + 1
sood_pos_long := sood_pos_long +(((tp3 - ent2) / ent2) * equity2)
kol_sood_long := sood_pos_long - zarar_pos_long
/////////////////////////////////////////////////////////////
if (low <= sl3 or high >= tp3) and long_is_open == true
long_is_open := false
strategy.exit( id = "buy" , from_entry = "buy" , limit = tp3 , stop = sl3 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_long = kol_sood_long >0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
// //////////////////////LONG___ENNNDD//////////////////////////////////////////////////////////
// تظیمات دستورات لازم برای ارسال به صرافی جهت پوزیشن شورت
if position_type == "Sell" or position_type == "Buy_And_Sell"
if short_condition and isCoolDownOver
ent1 := close
sl1 :=stop_loss_short + (stop_loss_short * (0.5 / leverage) / 100 )
tp1 := ent1 - ((sl1 - ent1 ) * r_r_short)
number_coin = ((quantity * leverage * sl_manager) / ((sl1 - ent1) *100))
equity1 := math.round ((number_coin * close ) , 3)
if equity1 > quantity * leverage
equity1 := quantity * leverage
/////////////////////////////////////////////////////////////////////////////////////////
if show_qty
label.new(bar_index , high , str.tostring(equity1) + "$" , color = color.rgb(255, 0, 0,0) , size = size.normal , style = label.style_label_down)
strategy.entry(id="sell", direction = strategy.short, qty=(equity1/close) )
if close >= 10 and close < 500
qty1 := str.tostring(math.round(equity1/close , 2))
else
qty1 := str.tostring(math.round(equity1/close , 0))
if close > 500
qty1 := str.tostring(math.round(equity1/close , 3))
if symbol == "AAVEUSDT"
qty1 := str.tostring(math.round(equity1/close , 1))
// ================/ برای باز کردن پوزیشن از این مقدار استفاده میکند /======================
message1 = '{"symbol":"'+symbol+'","type":"MARKET", "side":"SELL", "positionSide": "SHORT", "quantity":"'+qty1+'","leverage": "'+str.tostring(leverage)+'","marginMode": "Isolated","botmix-action":"open-market-order-v2"}'
// message1 = '{ "side":"Ask","symbol":"'+symbol+'","tradeType":"Market","entrustVolume":"'+qty1+'","action":"Open","marginMode":"Isolated","leverage":"'+str.tostring(leverage)+'", "takerProfitPrice":"'+str.tostring(tp1)+'","stopLossPrice":"'+str.tostring(sl1)+'","botmix-action":"open-market-order" }'
// message1 = '{ "batchOrders": ,"botmix-action":"open-multiple-order" }'
alert(message1 , alert.freq_once_per_bar)
message2 = '{"symbol":"'+symbol+'","type":"LIMIT","side":"BUY", "positionSide": "SHORT","delay": 5 ,"quantity":"'+qty1+'","price": "'+str.tostring(tp1)+'", "botmix-action":"open-market-order-v2"}'
alert(message2 , alert.freq_once_per_bar)
message3 = '{"symbol":"'+symbol+'","type":"STOP_MARKET","side":"BUY","positionSide": "SHORT","delay": 10 ,"quantity":"'+qty1+'","price": "'+str.tostring(sl1)+'", "stopPrice": "'+str.tostring(sl1)+'","botmix-action":"open-market-order-v2"}'
alert(message3 , alert.freq_once_per_bar)
short_is_open := true
if show_tp_sl_ent
line.new(bar_index, tp1, bar_index + 15, tp1, xloc= xloc.bar_index, color= color.rgb(0, 255, 0,0 ), width = 1)
box.new(bar_index , tp1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(0, 255, 0 , 90) , border_color = color.rgb(0, 255, 0 , 80) )
line.new(bar_index, (tp1+((ent1 - tp1)/2)), bar_index + 15, (tp1+((ent1 - tp1)/2)), xloc= xloc.bar_index, color= color.rgb(4, 0, 255), width = 2 , style= line.style_dashed)
line.new(bar_index, sl1, bar_index + 15, sl1, xloc= xloc.bar_index, color= color.rgb(255, 0, 0,50), width = 1)
box.new(bar_index , sl1 , bar_index + 15 , ent1 ,bgcolor = color.rgb(255, 0, 0, 90) , border_color = color.rgb(255, 0, 0 , 80) )
line.new(bar_index , ent1 , bar_index + 15 , ent1 , color = color.rgb(255, 255, 0,0))
////////////////////////////////////////////////////////////////////////////////////
total_short_trade := total_short_trade + 1
if high >= sl1 and short_is_open == true
loss_short := loss_long + 1
zarar_pos_short := zarar_pos_short + (((sl1 - ent1) / ent1) * equity1)
if low <= tp1 and short_is_open == true
profit_short := profit_short + 1
sood_pos_short := sood_pos_short +(((ent1 - tp1) / ent1) * equity1)
kol_sood_short := sood_pos_short - zarar_pos_short
///////////////////////////////////////////////////////////////////////////////////
if (high >= sl1 or low <= tp1 ) and short_is_open == true
short_is_open := false
strategy.exit( id = "sellext1" , from_entry = "sell" , limit = tp1 , stop = sl1 , qty_percent = 100 , comment_profit = "tp" , comment_loss = "sl" )
color_kol_pos_short = kol_sood_short > 0 ? color.rgb(0,255,0) : color.rgb(255,0,0)
////////////////////////////////////////////////////////////////////////////////////////////
kol_trade = loss_short + loss_long + profit_long + profit_short
/////////////////////SHORT___ENNNDD//////////////////////////////////////////////////////
closed_trades = (loss_short + loss_long + profit_long + profit_short) // strategy.closedtrades
kolfee = (closed_trades * quantity * leverage * persent_fee) / 100
net_profit = math.round((kol_sood_short + kol_sood_long) , 2 ) - kolfee
net_percent = math.round((net_profit / quantity) * 100 , 2)
win_rate = math.round(((profit_long + profit_short) / kol_trade) * 100 , 2) //math.round((strategy.wintrades / strategy.closedtrades) * 100 , 2)
ending = math.round((quantity + net_profit) , 2)
profit_factor = math.round((sood_pos_long + sood_pos_short) / math.abs(zarar_pos_long + zarar_pos_short) , 2)
drow_down = math.round((strategy.max_drawdown / quantity) * 100, 2 )
show_reportTabel = input.bool(true)
if show_reportTabel
table_color = color.rgb(0, 0, 0)
var table result_table = table.new(position.top_right, 30, 40, bgcolor=color.rgb(255,255,255,0), frame_color=color.rgb(0, 0, 0,0), frame_width=1, border_width=2)
table.cell(result_table , column = 0 , row = 0 , text = "TEST BTC with breake out:\n" + str.tostring(kol_trade) , bgcolor = table_color , text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 0 , text = "starting:\n" + str.tostring(quantity) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 0 , text = "Net Profit:\n" + str.tostring(net_profit) + "$:\n" + " fee = " + str.tostring(kolfee) , bgcolor = table_color, text_color = net_profit > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 0 , row = 1 , text = "Win Rate:\n" + str.tostring(win_rate) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 1 , row = 1 , text = "Ending:\n" + str.tostring(ending) + "$" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 2 , row = 1 , text = "Profit Factor:\n" + str.tostring(profit_factor) , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 3 , row = 0 , text = "Net Percent:\n" + str.tostring(net_percent) + "%" , bgcolor = table_color, text_color = net_percent > 0 ? color.rgb(0,255,0,0) : color.rgb(255,0,0,0))
table.cell(result_table , column = 3 , row = 1 , text = "Draw Down:\n" + str.tostring(drow_down) + "%" , bgcolor = table_color, text_color = color.rgb(255,255,255,0))
table.cell(result_table , column = 4 , row = 0 , text = "Stop:\n" + "Short =" + str.tostring(loss_short)+ "\n" +"Long =" + str.tostring(loss_long) , bgcolor = table_color, text_color = color.rgb(255,0,0,0))
table.cell(result_table , column = 4 , row = 1 , text = "TP:\n" + "Short =" + str.tostring(profit_short)+ "\n" +"Long =" + str.tostring(profit_long) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 0 , text = "Short:\n" + "sood =" + str.tostring(math.round(sood_pos_short,2)) + "\n" + "Zarar =" + str.tostring(math.round(zarar_pos_short,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 5 , row = 1 , text = "Long:\n" + "sood =" + str.tostring(math.round(sood_pos_long,2)) + "\n" + "Zarar =" + str.tostring(math.round(zarar_pos_long,2)) , bgcolor = table_color, text_color = color.rgb(0,255,0,0))
table.cell(result_table , column = 6 , row = 0 , text = "Kol Sood Short:\n" + "Short =" + str.tostring(math.round(kol_sood_short,2)) , bgcolor = table_color, text_color = color_kol_pos_short)
table.cell(result_table , column = 6 , row = 1 , text = "Kol Sood Long:\n" + "LONG =" + str.tostring(math.round(kol_sood_long,2)) , bgcolor = table_color, text_color = color_kol_pos_long)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //////////////////////////////////////////////////////////////////////////////////////////////////////
// // ********** تنظیمات **********
// show_monthly_Report = input.bool(false, "نمایش گزارش ماهیانه")
// exchange_fee_percent = 0.05 / 100 // input.float(0.05, "کارمزد صرافی (%)", step=0.01) / 100
// indicator_name = 'BTC with breake out' // input.string("تحلیلگر حرفه ای - گزارش ماهیانه", "عنوان اندیکاتور")
// show_total_row = true // input.bool(true, "نمایش سطر جمع کل")
// // ********** ایجاد جدول **********
// var table monthlyReport = table.new(position = position.top_right, columns = 6,rows = 21,bgcolor = color.rgb(33, 33, 33),
// border_width = 2,border_color = color.rgb(80, 80, 80),frame_width = 1,frame_color = color.rgb(50, 50, 50))
// // ********** متغیرهای ماهیانه **********
// var int currentMonth = na
// var int monthTrades = 0
// var int monthWinningTrades = 0
// var float totalFees = 0.0
// var float monthNetProfit = 0.0
// // ********** متغیرهای جمع کل **********
// var float totalAllTrades = 0.0
// var float totalAllFees = 0.0
// var float totalAllNetProfit = 0.0
// var int totalAllWinningTrades = 0
// var int totalAllMonths = 0
// // ********** تشخیص تغییر ماه **********
// isNewMonth = ta.change(month) or ta.change(year)
// // ********** محاسبات معاملات **********
// tradeClosed = strategy.closedtrades > strategy.closedtrades
// if tradeClosed
// lastTradeIndex = strategy.closedtrades - 1
// tradeSize = math.abs(strategy.closedtrades.size(lastTradeIndex) * strategy.closedtrades.exit_price(lastTradeIndex))
// tradeFee = tradeSize * exchange_fee_percent
// totalFees := totalFees + tradeFee
// tradeProfit = strategy.closedtrades.profit(lastTradeIndex)
// monthNetProfit := monthNetProfit + tradeProfit
// monthTrades := monthTrades + 1
// if tradeProfit > 0
// monthWinningTrades := monthWinningTrades + 1
// // ********** مدیریت گزارش ماهیانه **********
// if isNewMonth and show_monthly_Report and not na(currentMonth)
// // محاسبات ماهانه
// grossProfit = monthNetProfit
// netProfit = grossProfit - totalFees
// winRate = monthTrades > 0 ? (monthWinningTrades/monthTrades)*100 : 0
// // به روزرسانی جمع کل
// totalAllTrades := totalAllTrades + monthTrades
// totalAllFees := totalAllFees + totalFees
// totalAllNetProfit := totalAllNetProfit + netProfit
// totalAllWinningTrades := totalAllWinningTrades + monthWinningTrades
// totalAllMonths := totalAllMonths + 1
// // نمایش در جدول
// row = (month % 12 == 0 ? 12 : month % 12) + 2 // +2 برای جا دادن سطرهای عنوان
// monthName = str.tostring(year ) + "-" + str.tostring(month , "00")
// table.cell(monthlyReport, 0, row, monthName, text_color=color.white)
// table.cell(monthlyReport, 1, row, str.tostring(monthTrades), text_color=color.white)
// table.cell(monthlyReport, 2, row, str.tostring(grossProfit, "0.00") + " $")
// table.cell(monthlyReport, 3, row, str.tostring(totalFees, "0.00") + " $")
// table.cell(monthlyReport, 4, row, str.tostring(netProfit, "0.00") + " $")
// table.cell(monthlyReport, 5, row, str.tostring(winRate, "1.0") + "%")
// // رنگ آمیزی سود/زیان
// textColor = netProfit >= 0 ? color.rgb(0, 200, 0) : color.rgb(200, 0, 0)
// for i = 2 to 5
// table.cell_set_text_color(monthlyReport, i, row, textColor)
// // ********** سطر جمع کل **********
// if show_monthly_Report and show_total_row and totalAllMonths > 0
// totalWinRate = totalAllTrades > 0 ? (totalAllWinningTrades/totalAllTrades)*100 : 0
// table.cell(monthlyReport, 0, 15, "جمع کل (" + str.tostring(totalAllMonths) + " ماه)",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50),
// width=6)
// table.cell(monthlyReport, 1, 15, str.tostring(totalAllTrades),
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 2, 15, str.tostring(totalAllNetProfit + totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 3, 15, str.tostring(totalAllFees, "0.00") + " $",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 4, 15, str.tostring(totalAllNetProfit, "0.00") + " $",
// text_color = totalAllNetProfit >= 0 ? color.green : color.red,
// bgcolor=color.rgb(50, 50, 50))
// table.cell(monthlyReport, 5, 15, str.tostring(totalWinRate, "1.0") + "%",
// text_color=color.yellow,
// bgcolor=color.rgb(50, 50, 50))
// // ********** ریست ماهیانه **********
// if isNewMonth
// currentMonth := month
// monthTrades := 0
// monthWinningTrades := 0
// totalFees := 0.0
// monthNetProfit := 0.0
// // ********** عنوانهای جدول **********
// if barstate.isfirst and show_monthly_Report
// // عنوان اصلی (یکپارچه در سطر اول)
// table.cell(
// monthlyReport,
// column = 4, // ستون شروع (0 = اولین ستون)
// row = 0, // ردیف 0 (اولین ردیف)
// text = indicator_name,
// bgcolor = color.rgb(0, 0, 0),
// text_size = size.small,
// text_color = color.rgb(255,255,0),
// width = 12, // گسترش روی تمام 6 ستون
// height = 4 // ارتفاع بیشتر برای وضوح بهتر
// )
// // عنوان ستونها (در ردیف دوم)
// headers = array.from("ماه", "تعداد", "سود ناخالص", "کارمزد", "سود خالص", "نرخ برد")
// for i = 0 to 5
// table.cell(
// monthlyReport,
// column = i,
// row = 1, // ردیف بعد از عنوان اصلی
// text = array.get(headers, i),
// text_color = color.white,
// bgcolor = color.rgb(60, 60, 60),
// width = 1 // عرض معمولی برای هر ستون
// )
SignalWatcherThis script provides real-time monitoring of multiple technical indicators and generates visual alerts and configurable alarms:
Inputs & Mini-GUI
MACD Settings: Activation, fast, slow and signal line lengths.
RSI Settings: Activation, period length, overbought and oversold thresholds.
ADX Settings: Activation, period length, smoothing and trend strength thresholds.
Volume Settings: Activation, length of the volume MA, factor for detecting volume peaks.
Global Alert: A single composite alert for all signals.
Plot Settings: Activation and deactivation of the plot displays for RSI, MACD (lines) and ADX. Color and width selection for each line.
Display Table: Activation of the status table.
Calculations
MACD: Generates macdLine and signalLine, detects crossovers (bullish) and crossunders (bearish).
RSI: Calculates rsi_val, compares with rsi_ob and rsi_os to determine overbought/oversold.
ADX: Uses ta.dmi() to determine adx_val and checks against adx_thresh for trend strength.
Volume Spike: Exceptional trading activity detected by moving average (vol_ma) and factor (vol_factor).
Alert conditions
Six individual alertcondition() calls: MACD ↑/↓, RSI Overbought/Oversold, ADX Strong Trend, Volume Spike.
Optional composite alert (enable_global): A single notification when one of the indicator signals strikes.
Visual overlays
Alarm overlay (bottom right): Red table with text lines for currently triggered signals.
Status Table (bottom left): Overview of all indicators with current status (On/Off, Values, Thresholds).
Plots in the chart
RSI, MACD Line & Signal Line, ADX: Are displayed as lines if activated in the GUI; configurable colors & line thicknesses.
Real-Time Spring DetectorThis is a Pine Script for Trading View that creates a "Real-Time Spring Detector" indicator. This Pine Script is essentially a sophisticated pattern recognition tool that helps identify "spring" setups - a popular trading pattern where price briefly breaks below support but then bounces back strongly, often indicating that sellers are exhausted and buyers are ready to step in.What is a "Spring" in Trading?
A spring is a technical analysis pattern that occurs when:
Price breaks below a support level (like breaking below a floor)
But then quickly bounces back up (like a spring rebounds)
This often signals that sellers are weak and buyers are stepping in
Think of it like testing the strength of a trampoline - you push down, but it springs back up stronger.
What This Script Does
This Pine Script automatically detects spring patterns on your chart and alerts you when they happen. Here's how it works:
Main Components
1. Input Parameters (Settings You Can Adjust)
Lookback Period (10): How many bars back to look for patterns
Min Support Touches (2): How many times price must touch the support level
Min Penetration % (0.1%): How far below support price must break
Min Rejection % (30%): How much price must bounce back up
Alert Settings: Choose when to get notifications
2. Support Level Detection
The script finds "support levels" - price levels where buyers have stepped in before:
It looks at recent low points
Identifies areas where price has bounced multiple times
Uses a small tolerance (0.5%) to account for minor price differences
3. Spring Detection Logic
The script identifies three types of springs:
Real-Time Spring (happening right now):
Price breaks below support by the minimum amount
Price bounces back strongly (rejection %)
Current candle closes higher than it opened (bullish)
Volume is reasonable
Confirmed Spring (already completed):
Same as real-time, but the candle has finished forming
Potential Spring (early warning):
Price is near support but hasn't fully formed the pattern yet
4. Visual Elements
Markers on Chart:
🟢 Green Triangle: Confirmed spring (reliable signal)
🟡 Yellow Triangle: Spring forming right now (live signal)
🟠 Orange Circle: Potential spring (early warning)
Labels:
Show "SPRING" with the rejection percentage
"FORMING" for developing patterns
"?" for potential springs
Support Line:
Red dotted line showing the support level
Background Colors:
Light red when price penetrates support
Light yellow for potential springs
5. Information Box
A table in the top-left corner shows:
Current support level price
Whether penetration is happening
Rejection percentage
Current pattern status
Live price
6. Alert System
Two types of alerts:
Real-time alerts: Notify when spring is forming (current bar)
Confirmed alerts: Notify when spring is complete (bar closed)
Alert cooldown: Prevents spam by waiting 5 bars between alerts
How to Use This Script
1. Installation
Copy the script code
Open TradingView
Go to Pine Editor
Paste the code
Click "Add to Chart"
2. Settings
Adjust the input parameters based on your trading style:
Lower lookback = more sensitive, faster signals
Higher support touches = more reliable but fewer signals
Lower penetration % = catches smaller springs
Higher rejection % = only strong bounces
3. Interpretation
Green triangles: High-confidence buy signals
Yellow triangles: Watch closely, pattern developing
Orange circles: Early warning, not tradeable yet
4. Best Practices
Use on higher timeframes (15min+) for more reliable signals
Combine with other indicators for confirmation
Pay attention to volume - higher volume springs are more reliable
Wait for confirmed signals if you're a conservative trader
Key Features for Small Timeframes
The script includes special detection for shorter timeframes:
Quick bounce detection: Identifies rapid reversals
Hammer pattern recognition: Spots candlestick patterns
Relaxed volume requirements: Works when volume data is limited
Advanced Features
Volume Analysis
Compares current volume to 10-bar average
Requires at least 80% of average volume (flexible for small timeframes)
Pattern Enhancement
Looks for hammer-like candles (long lower wick, small upper wick)
Identifies quick bounces where the upper wick is small
Multiple Confirmation
Combines multiple criteria to reduce false signals
Stronger springs get priority for alerts
Common Use Cases
Entry Signals: Buy when confirmed springs appear
Support Level Identification: Visual support lines help identify key levels
Risk Management: Failed springs (continued breakdown) can be stop-loss triggers
Market Structure: Understanding where buyers are defending price levels
Limitations
Works best in trending or ranging markets May produce false signals in very choppy conditions
small timeframe signals can be noisy should be combined with other analysis methods.The key advantage is that it can catch these patterns as they happen, rather than you having to constantly watch charts. This is especially valuable for active traders who want to capitalize on quick reversals at support levels.
DECODE Moving Average ToolkitDECODE Moving Average Toolkit: Your All-in-One MA Analysis Powerhouse!
This versatile indicator is designed to be your go-to solution for analysing trends, identifying potential entry/exit points, and staying ahead of market movements using the power of Moving Averages (MAs).
Whether you're a seasoned trader or just starting out, the Decode MAT offers a comprehensive suite of features in a user-friendly package.
Key Features:
Multiple Moving Averages: Visualize up to 10 Moving Averages simultaneously on your chart.
Includes 5 Exponential Moving Averages (EMAs) and 5 Simple Moving Averages (SMAs).
Easily toggle the visibility of each MA and customize its length to suit your trading style and the asset you're analyzing.
Dynamic MA Ribbons: Gain a clearer perspective on trend direction and strength with 5 configurable MA Ribbons.
Each ribbon is formed between a corresponding EMA and SMA (e.g., EMA 20 / SMA 20).
The ribbon color changes to indicate bullish (e.g., green) or bearish (e.g., red) sentiment, providing an intuitive visual cue.
Toggle ribbon visibility with a single click.
Powerful Crossover Alerts: Never miss a potential trading opportunity with up to 5 customizable MA Crossover Alerts.
Define your own fast and slow MAs for each alert from any of the 10 available MAs.
Receive notifications directly through TradingView when your specified MAs cross over or cross under.
Optionally display visual symbols (e.g., triangles ▲▼) directly on your chart at the exact crossover points for quick identification.
Highly Customizable:
Adjust the source price (close, open, etc.) for all MA calculations.
Fine-tune the appearance (colors, line thickness) of every MA line, ribbon, and alert symbol to match your charting preferences.
User-Friendly Interface: All settings are neatly organized in the indicator's input menu, making configuration straightforward and intuitive.
How Can You Use the Decode MAT in Your Trading?
This toolkit is incredibly versatile and can be adapted to various trading strategies:
Trend Identification:
Use longer-term MAs (e.g., 50, 100, 200 period) to identify the prevailing market trend. When prices are consistently above these MAs, it suggests an uptrend, and vice-versa.
Observe the MA ribbons: A consistently green ribbon can indicate a strong uptrend, while a red ribbon can signal a downtrend. The widening or narrowing of the ribbon can also suggest changes in trend momentum.
Dynamic Support & Resistance:
Shorter-term MAs (e.g., 10, 20 period EMAs) can act as dynamic levels of support in an uptrend or resistance in a downtrend. Look for price pullbacks to these MAs as potential entry opportunities.
Crossover Signals (Entries & Exits):
Golden Cross / Death Cross: Configure alerts for classic crossover signals. For example, a 50-period MA crossing above a 200-period MA (Golden Cross) is often seen as a long-term bullish signal. Conversely, a 50-period MA crossing below a 200-period MA (Death Cross) can be a bearish signal.
Shorter-Term Signals: Use crossovers of shorter-term MAs (e.g., EMA 10 crossing EMA 20) for more frequent, shorter-term trading signals. A fast MA crossing above a slow MA can signal a buy, while a cross below can signal a sell.
Use the on-chart symbols for quick visual confirmation of these crossover events.
Confirmation Tool:
Combine the Decode MAT with other indicators (like RSI, MACD, or volume analysis) to confirm signals and increase the probability of successful trades. For instance, a bullish MA crossover combined with an oversold RSI reading could strengthen a buy signal.
Multi-Timeframe Analysis:
Apply the toolkit across different timeframes to get a broader market perspective. A long-term uptrend on the daily chart, confirmed by a short-term bullish crossover on the 1-hour chart, can provide a higher-confidence entry.
The DECODE Moving Average Toolkit empowers you to tailor your MA analysis precisely to your needs.
Smart Trend Lines [The_lurker]
Smart Trend Lines
A multi-level trend classifier that detects bullish and bearish conditions using a methodology based on drawing trend lines—main, intermediate, and short-term—by identifying peaks and troughs. The tool highlights trend strength by applying filters such as the Average Directional Index (ADX) (A), Relative Strength Index (RSI) (R), and Volume (V), making it easier to interpret trend strength. The filter markers (V, A, R) in the Smart Trend Lines indicator are powerful tools for assessing the reliability of breakouts. Breakouts containing are the most reliable, as they indicate strong volume support, trend strength, and favorable momentum. Breakouts with partial filters (such as or ) require additional confirmation, while breakouts without filters ( ) should be avoided unless supported by other strong signals. By understanding the meaning of each filter and the market context.
Core Functionality
1. Trend Line Types
The indicator generates three distinct trend line categories, each serving a specific analytical purpose:
Main Trend Lines: These are long-term trend lines designed to capture significant market trends. They are calculated based on pivot points over a user-defined period (default: 50 bars). Main trend lines are ideal for identifying macro-level support and resistance zones.
Mid Trend Lines: These are medium-term trend lines (default: 21 bars) that focus on intermediate price movements. They provide a balance between short-term fluctuations and long-term trends, suitable for swing trading strategies.
Short Trend Lines: These are short-term trend lines (default: 9 bars) that track rapid price changes. They are particularly useful for scalping or day trading, highlighting immediate support and resistance levels.
Each trend line type can be independently enabled or disabled, allowing traders to tailor the indicator to their preferred timeframes.
2. Breakout Detection
The indicator employs a robust breakout detection system that identifies when the price crosses a trend line, signaling a potential trend reversal or continuation. Breakouts are validated using the following filters:
ADX Filter: The Average Directional Index (ADX) measures trend strength. A user-defined threshold (default: 20) ensures that breakouts occur during strong trends, reducing false signals in range-bound markets.
RSI Filter: The Relative Strength Index (RSI) identifies overbought or oversold conditions. Breakouts are filtered based on RSI thresholds (default: 65 for overbought, 35 for oversold) to avoid signals in extreme market conditions.
Volume Filter: Breakouts are confirmed only when trading volume exceeds a moving average (default: 20 bars) and aligns with the breakout direction (e.g., higher volume on bullish breakouts when the candle closes higher).
Breakout events are marked with labels on the chart, indicating the type of trend line broken (Main, Mid, or Short) and the filters satisfied (Volume, ADX, RSI). Alerts are triggered for each breakout, providing real-time notifications.
3. Customization Options
The indicator offers extensive customization through input settings, organized into logical groups for ease of use:
Main Trend Line Settings
Length: Defines the number of bars used to calculate pivot points (default: 50).
Bullish Color: Color for upward-sloping (bullish) main trend lines (default: green).
Bearish Color: Color for downward-sloping (bearish) main trend lines (default: red).
Style: Line style options include solid, dashed, or dotted (default: solid).
Mid Trend Line Settings
Length: Number of bars for mid-term pivot points (default: 21).
Show/Hide: Toggle visibility of mid trend lines (default: enabled).
Bullish Color: Color for bullish mid trend lines (default: lime).
Bearish Color: Color for bearish mid trend lines (default: maroon).
Style: Line style (default: dashed).
Short Trend Line Settings
Length: Number of bars for short-term pivot points (default: 9).
Show/Hide: Toggle visibility of short trend lines (default: enabled).
Bullish Color: Color for bullish short trend lines (default: teal).
Bearish Color: Color for bearish short trend lines (default: purple).
Style: Line style (default: dotted).
General Display Settings
Break Check Price: Selects the price type for breakout detection (Close, High, or Low; default: Close).
Show Previous Trendlines: Option to display historical main trend lines (default: disabled).
Label Size: Size of breakout labels (Tiny, Small, Normal, Large, Huge; default: Small).
Filter Settings
ADX Threshold: Minimum ADX value for trend strength confirmation (default: 25).
Volume MA Period: Period for the volume moving average (default: 20).
RSI Filter: Enable/disable RSI filtering (default: enabled).
RSI Upper Threshold: Upper RSI limit for overbought conditions (default: 65).
RSI Lower Threshold: Lower RSI limit for oversold conditions (default: 35).
4. Technical Calculations
The indicator relies on several technical calculations to ensure accuracy:
Pivot Points: Pivot highs and lows are detected using the ta.pivothigh and ta.pivotlow functions, with separate lengths for Main, Mid, and Short trend lines.
Slope Calculation: The slope of each trend line is calculated as the change in price divided by the change in bar index between two pivot points.
ADX Calculation: ADX is computed using a 14-period Directional Movement Index (DMI), with smoothing over 14 bars.
RSI Calculation: RSI is calculated over a 14-period lookback using the ta.rsi function.
Volume Moving Average: A simple moving average (SMA) of volume is used to determine if current volume exceeds the average.
5. Strict Mode Validation
To ensure the reliability of trend lines, the indicator employs a strict mode check:
For bearish trend lines, all prices between pivot points must remain below the projected trend line.
For bullish trend lines, all prices must remain above the projected trend line.
Post-pivot break checks ensure that no breakouts occur between pivot points, enhancing the validity of the trend line.
6. Trend Line Extension
Trend lines are dynamically extended forward until a breakout occurs. The extension logic:
Projects the trend line using the calculated slope.
Continuously validates the extension using strict mode checks.
Stops extension upon a breakout, fixing the trend line at the breakout point.
7. Alerts and Labels
Labels: Breakout labels are placed above (for bearish breakouts) or below (for bullish breakouts) the price bar. Labels include:
A prefix indicating the trend line type (B for Main, M for Mid, S for Short).
A suffix showing satisfied filters (e.g., for Volume, ADX, and RSI).
Alerts: Each breakout triggers a one-time alert per bar close, with a descriptive message indicating the trend line type and filters met.
Detailed Code Breakdown
1. Initialization and Inputs
The script begins by defining the indicator with indicator('Smart Trend Lines ', overlay = true), ensuring it overlays on the price chart. Input settings are grouped into categories (Main, Mid, Short, General Display, Filters) for user convenience. Each input includes a tooltip in both English and Arabic, enhancing accessibility.
2. Technical Indicator Calculations
Volume MA: Calculated using ta.sma(volume, volPeriod) to compare current volume against the average.
ADX: Computed using custom dirmov and adx functions, which calculate the Directional Movement Index and smooth it over 14 periods.
RSI: Calculated with ta.rsi(close, rsiPeriod) over 14 periods.
Price Selection: The priceToCheck function selects the price type (Close, High, or Low) for breakout detection.
3. Pivot Detection
Pivot points are detected using ta.pivothigh and ta.pivotlow for each trend line type. The lookback period is set to the respective trend line length (e.g., 50 for Main, 21 for Mid, 9 for Short).
4. Trend Line Logic
For each trend line type (Main, Mid, Short):
Bearish Trend Lines: Identified when two consecutive pivot highs form a downward slope. The script validates the trend line using strict mode and post-pivot break checks.
Bullish Trend Lines: Identified when two consecutive pivot lows form an upward slope, with similar validation.
Trend lines are drawn using line.new, with separate lines for the initial segment (between pivots) and the extended segment (from the second pivot forward).
5. Breakout Detection and Labeling
Breakouts are detected when the selected price crosses the trend line level. The script checks:
Volume conditions (above average and aligned with candle direction).
ADX condition (above threshold).
RSI condition (within thresholds if enabled). Labels are created with label.new, and alerts are triggered with alert.
6. Trend Line Extension
The extendTrendline function dynamically updates the trend line’s endpoint unless a breakout occurs. It uses strict mode checks to ensure the trend line remains valid.
7. Previous Trend Lines
If enabled, previous main trend lines are stored in arrays (previousBearishStartLines, previousBullishTrendLines, etc.) and displayed on the chart, providing historical context.
Disclaimer:
The information and publications are not intended to be, nor do they constitute, financial, investment, trading, or other types of advice or recommendations provided or endorsed by TradingView.
Reversal + Confirm ZonesThis script is written in Pine Script (version 5) for TradingView and creates an indicator called **"Reversal + Confirm Zones"**. It overlays visual zones on a price chart to identify potential reversal points and confirmation signals for trading. The indicator combines **Bollinger Bands** and **RSI** to detect overbought/oversold conditions (reversal zones) and uses **EMA crosses** and **MACD zero-line crosses** to confirm bullish or bearish trends. Below is a detailed explanation:
---
### **1. Purpose**
- The script highlights:
- **Reversal Zones**: Areas where the price might reverse due to being overbought (green) or oversold (red).
- **Confirmation Zones**: Areas where a trend reversal is confirmed using EMA and MACD signals (green for bullish, red for bearish).
- It provides visual backgrounds and alerts to assist traders in spotting potential trade setups.
---
### **2. Components**
The script is divided into two main parts: **Reversal Logic** and **Confirmation Logic**.
---
### **3. Reversal Logic (Red & Green Zones)**
#### **Bollinger Bands**
- **Parameters**:
- Length: 20 periods.
- Source: Closing price (`close`).
- Multiplier: 2.0 (standard deviations).
- **Calculation**:
- `basis`: 20-period Simple Moving Average (SMA).
- `dev`: 2 times the standard deviation of the price over 20 periods.
- `upper`: `basis + dev` (upper band).
- `lower`: `basis - dev` (lower band).
- **Purpose**: Identifies when the price moves outside the normal range (beyond 2 standard deviations).
#### **Relative Strength Index (RSI)**
- **Parameters**:
- Length: 14 periods.
- Low Threshold: 30 (oversold).
- High Threshold: 70 (overbought).
- **Calculation**: `rsiValue = ta.rsi(close, rsiLength)`.
- **Purpose**: Measures momentum to confirm overbought or oversold conditions.
#### **Zone Conditions**
- **Red Zone (Oversold)**:
- Condition: `close < lower` (price below lower Bollinger Band) AND `rsiValue < rsiLowThreshold` (RSI < 30).
- Visual: Light red background (`color.new(color.red, 80)`).
- Alert: "Deep Oversold Signal triggered!".
- **Green Zone (Overbought)**:
- Condition: `close > upper` (price above upper Bollinger Band) AND `rsiValue > rsiHighThreshold` (RSI > 70).
- Visual: Light green background (`color.new(color.green, 80)`).
- Alert: "Deep Overbought Signal triggered!".
#### **Interpretation**
- Red Zone: Suggests the price is oversold and may reverse upward.
- Green Zone: Suggests the price is overbought and may reverse downward.
---
### **4. Confirmation Logic (EMA and MACD Crosses)**
#### **Exponential Moving Averages (EMAs)**
- **Parameters**:
- Short EMA Length: 9 periods (user adjustable).
- Long EMA Length: 21 periods (user adjustable).
- **Calculation**:
- `emaShort = ta.ema(close, emaShortLength)`.
- `emaLong = ta.ema(close, emaLongLength)`.
- **Conditions**:
- **Bullish EMA Cross**: `emaCrossBullish = ta.crossover(emaShort, emaLong)` (9 EMA crosses above 21 EMA).
- **Bearish EMA Cross**: `emaCrossBearish = ta.crossunder(emaShort, emaLong)` (9 EMA crosses below 21 EMA).
#### **MACD**
- **Parameters**:
- Fast Length: 12 periods (user adjustable).
- Slow Length: 26 periods (user adjustable).
- Signal Smoothing: 9 periods (user adjustable).
- **Calculation**:
- ` = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing)`.
- Only the MACD line and signal line are used; the histogram is ignored (`_`).
- **Conditions**:
- **Bullish MACD Cross**: `macdCrossBullish = ta.crossover(macdLine, 0)` (MACD crosses above zero).
- **Bearish MACD Cross**: `macdCrossBearish = ta.crossunder(macdLine, 0)` (MACD crosses below zero).
#### **Combined Confirmation Conditions**
- **Bullish Confirmation**:
- Condition: `bullishConfirmation = emaCrossBullish and macdCrossBullish`.
- Visual: Very light green background (`color.new(color.green, 90)`).
- Meaning: A bullish trend is confirmed when the 9 EMA crosses above the 21 EMA AND the MACD crosses above zero.
- **Bearish Confirmation**:
- Condition: `bearishConfirmation = emaCrossBearish and macdCrossBearish`.
- Visual: Very light red background (`color.new(color.red, 90)`).
- Meaning: A bearish trend is confirmed when the 9 EMA crosses below the 21 EMA AND the MACD crosses below zero.
---
### **5. Visual Outputs**
- **Reversal Zones**:
- Red background for oversold conditions.
- Green background for overbought conditions.
- **Confirmation Zones**:
- Light green background for bullish confirmation.
- Light red background for bearish confirmation.
- Note: The script does not plot the Bollinger Bands, EMAs, or MACD lines—only the background zones are visualized.
---
### **6. Alerts**
- **Deep Oversold Alert**: Triggers when the red zone condition is met.
- **Deep Overbought Alert**: Triggers when the green zone condition is met.
- No alerts are set for the confirmation zones (EMA/MACD crosses).
---
### **7. How It Works**
1. **Reversal Detection**:
- The script uses Bollinger Bands and RSI to flag extreme price levels (red for oversold, green for overbought).
- These zones suggest potential reversals but are not confirmed yet.
2. **Trend Confirmation**:
- EMA crosses (9/21) and MACD zero-line crosses provide confirmation of a trend direction.
- Bullish confirmation (green) occurs when both indicators align upward.
- Bearish confirmation (red) occurs when both indicators align downward.
3. **Trading Strategy**:
- Look for a red zone (oversold) followed by a bullish confirmation for a potential long entry.
- Look for a green zone (overbought) followed by a bearish confirmation for a potential short entry.
---
### **8. How to Use**
1. Add the script to TradingView.
2. Adjust inputs (EMA lengths, MACD settings) if desired.
3. Monitor the chart:
- Red zones indicate oversold conditions—watch for a potential upward reversal.
- Green zones indicate overbought conditions—watch for a potential downward reversal.
- Light green/red backgrounds confirm the trend direction after a reversal zone.
4. Set up alerts for oversold/overbought conditions to catch reversal signals early.
---
### **9. Key Features**
- **Dual Purpose**: Combines reversal detection (Bollinger Bands + RSI) with trend confirmation (EMA + MACD).
- **Visual Simplicity**: Uses background colors instead of plotting lines, keeping the chart clean.
- **Customizable**: Allows users to tweak EMA and MACD periods.
- **Alerts**: Notifies users of extreme conditions for timely action.
---
### **10. Limitations**
- No plotted indicators (e.g., Bollinger Bands, EMAs, MACD) for visual reference—relies entirely on background shading.
- Confirmation signals (EMA/MACD) may lag behind reversal zones, potentially missing fast reversals.
- No alerts for confirmation zones, limiting real-time notification of trend confirmation.
This script is ideal for traders who want a straightforward way to spot potential reversals and confirm them with trend-following indicators, all overlaid on the price chart.
Golden Death Cross IndicatorThis indicator uses moving average to detect both a Golden Cross and Death Cross on any timeframe but is recommended for use on the daily and 24 hour timeframes only.
We have also provided instructions on how to create alerts for these indicators below.
Happy Trading!
Moving Averages: We’ll use Simple Moving Averages (SMA). The 50-day SMA looks at the average price over the last 50 periods, and the 200-day SMA does the same for 200 periods.
Crossovers: We’ll check when the 50-day SMA crosses above (Golden Cross) or below the 200-day SMA (Death Cross).
Set Up Alerts
Now, let’s make sure you get notified when a cross happens:
Open the Alerts Menu
On the chart, click the bell icon (top right of the screen) to create an alert.
Configure the Golden Cross Alert
In the “Condition” dropdown, select “Cross Alerts” (the name of your script).
Below that, select “Golden Cross.”
Set “Once Per Bar Close” in the next dropdown (this ensures it only triggers after the period ends, avoiding false signals mid-bar).
Choose how you want to be notified (e.g., popup, email, or phone app—set this under “Notifications”).
Name the alert (e.g., “Golden Cross Alert”) and click “Create.”
Configure the Death Cross Alert
Click the bell icon again to create a second alert.
Condition: “Cross Alerts” > “Death Cross.”
Set “Once Per Bar Close” again.
Choose your notification method.
Name it (e.g., “Death Cross Alert”) and click “Create.”
IU 4 Bar UP StrategyIU 4 Bar UP Strategy
The IU 4 Bar UP Strategy is a trend-following strategy designed to identify and execute long trades during strong bullish momentum, combined with confirmation from the SuperTrend indicator. This strategy is suitable for traders aiming to capitalize on sustained upward market movements.
Features :
1. SuperTrend Confirmation: Incorporates the SuperTrend indicator as a dynamic support/resistance line to filter trades in the direction of the trend.
2. 4 Consecutive Bullish Bars: Detects a series of 4 bullish candles as a signal for strong upward momentum, ensuring robust trade setups.
3. Dynamic Alerts: Sends alerts for trade entries and exits to keep traders informed.
4. Visual Enhancements:
- Plots the SuperTrend indicator on the chart.
- Changes the background color while a trade is active for easy visualization.
Inputs :
- SuperTrend ATR Period: The period used to calculate the Average True Range (ATR) for the SuperTrend indicator.
- SuperTrend ATR Factor: The multiplier for the ATR in the SuperTrend calculation.
Entry Conditions :
A long entry is triggered when:
1. The last 4 consecutive candles are bullish (closing prices are higher than opening prices).
2. The current price is above the SuperTrend line.
3. The strategy is not already in a position.
4. The bar is confirmed (not a partially formed bar).
When all these conditions are met, the strategy enters a long position and provides an alert:
"Long Entry triggered"
Exit Conditions :
The strategy exits the long position when:
1. The closing price drops below the SuperTrend line.
2. An alert is generated: "Close the long Trade"
Visualization :
- The SuperTrend line is plotted, dynamically colored:
- Green when the trend is bullish.
- Red when the trend is bearish.
- The background color turns semi-transparent green while a trade is active, indicating a long position.
Do use proper risk management while using this strategy.