Twitter Model ICT [TradingFinder] MMXM ERL D + FVG + M15 MSS/SMT🔵 Introduction
The Twitter Model ICT is a trading approach based on ICT (Inner Circle Trader) models, focusing on price movement between external and internal liquidity in lower timeframes. This model integrates key concepts such as Market Structure Shift (MSS), Smart Money Technique (SMT) divergence, and CISD level break to identify precise entry points in the market.
The primary goal of this model is to determine key liquidity levels, such as the previous day’s high and low (PDH/PDL) and align them with the Fair Value Gap (FVG) in the 1-hour timeframe. The overall strategy involves framing trades around the 1H FVG and using the M15 Market Structure Shift (MSS) for entry confirmation.
The Twitter Model ICT is designed to utilize external liquidity levels, such as PDH/PDL, as key entry zones. The model identifies FVG in the 1-hour timeframe, which acts as a magnet for price movement. Additionally, traders confirm entries using M15 Market Structure Shift (MSS) and SMT divergence.
Bullish Twitter Model :
In a bullish setup, the price sweeps the previous day’s low (PDL), and after confirming reversal signals, buys are executed in internal liquidity zones. Conversely, in a bearish setup, the price sweeps the previous day’s high (PDH), and after confirming weakness signals, sells are executed.
Bearish Twitter Model :
In short setups, entries are only executed above the Midnight Open, while in long setups, entries are taken below the Midnight Open. Adhering to these principles allows traders to define precise entry and exit points and analyze price movement with greater accuracy based on liquidity and market structure.
🔵 How to Use
The Twitter Model ICT is a liquidity-based trading strategy that analyzes price movements relative to the previous day’s high and low (PDH/PDL) and Fair Value Gap (FVG). This model is applicable in both bullish and bearish directions and utilizes the 1-hour (1H) and 15-minute (M15) timeframes for entry confirmation.
The price first sweeps an external liquidity level (PDH or PDL) and then provides an entry opportunity based on Market Structure Shift (MSS) and SMT divergence. Additionally, the entry should be positioned relative to the Midnight Open, meaning long entries should occur below the Midnight Open and short entries above it.
🟣 Bullish Twitter Model
In a bullish setup, the price first sweeps the previous day’s low (PDL) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bullish Fair Value Gap (FVG) forms, which serves as the price target.
To confirm the entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should be observed, signaling a trend reversal to the upside. Additionally, SMT divergence with correlated assets can indicate weakness in selling pressure.
Under these conditions, a long position is taken below the Midnight Open, with a stop-loss placed at the lowest point of the recent bearish move. The price target for this trade is the FVG in the 1-hour timeframe.
🟣 Bearish Twitter Model
In a bearish setup, the price first sweeps the previous day’s high (PDH) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bearish Fair Value Gap (FVG) is identified, serving as the trade target.
To confirm entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should form, signaling a trend shift to the downside. If an SMT divergence is present, it can provide additional confirmation for the trade.
Once these conditions are met, a short position is taken above the Midnight Open, with a stop-loss placed at the highest level of the recent bullish move. The trade's price target is the FVG in the 1-hour timeframe.
🔵 Settings
Bar Back Check : Determining the return of candles to identify the CISD level.
CISD Level Validity : CISD level validity period based on the number of candles.
Daily Position : Determines whether only the first signal of the day is considered or if signals are evaluated throughout the entire day.
Session : Specifies in which trading sessions the indicator will be active.
Second Symbol : This setting allows you to select another asset for comparison with the primary asset. By default, "XAUUSD" (Gold) is set as the second symbol, but you can change it to any currency pair, stock, or cryptocurrency. For example, you can choose currency pairs like EUR/USD or GBP/USD to identify divergences between these two assets.
Divergence Fractal Periods : This parameter defines the number of past candles to consider when identifying divergences. The default value is 2, but you can change it to suit your preferences. This setting allows you to detect divergences more accurately by selecting a greater number of candles.
The indicator allows displaying sessions based on various time zones. The user can select one of the following options :
UTC (Coordinated Universal Time)
Local Time of the Session
User’s Local Time
Show Open Price : Displays the New York market opening price.
Show PDH / PDL : Displays the previous day’s high and low to identify potential entry points.
Show SMT Divergence : Displays lines and labels for bullish ("+SMT") and bearish ("-SMT") divergences.
🔵 Conclusion
The Twitter Model ICT is an effective approach for analyzing and executing trades in financial markets, utilizing a combination of liquidity principles, market structure, and SMT confirmations to identify optimal entry and exit points.
By analyzing the previous day’s high and low (PDH/PDL), Fair Value Gaps (FVG), and Market Structure Shift (MSS) in the 1H and M15 timeframes, traders can pinpoint liquidity-driven trade opportunities. Additionally, considering the Midnight Open level helps traders avoid random entries and ensures better trade placement.
By applying this model, traders can interpret market movements based on liquidity flow and structural changes, allowing them to fine-tune their trading decisions with higher precision. Ultimately, the Twitter Model ICT provides a structured and logical approach for traders who seek to trade based on liquidity behavior and trend shifts in the market.
Cari dalam skrip untuk "股票开盘前15分钟交易规则"
Composite Indicator (CCI + ATR)Composite Indicator (CCI + ATR)
The Composite Indicator (CCI + ATR) combines the Commodity Channel Index (CCI) with the Average True Range (ATR) , providing traders with a dynamic tool for identifying entry and exit points based on momentum and volatility. This indicator is particularly useful for markets like cryptocurrencies, which often exhibit sharp sell-offs and gradual upward trends.
Key Features
Momentum Analysis with CCI: The CCI calculates price momentum by comparing the current price level to its average over a specific period. The indicator generates signals when CCI crosses predefined thresholds.
- Buy Signal: Triggered when CCI crosses above the lower threshold (e.g., -100).
- Sell Signal: Triggered when CCI crosses below the upper threshold (e.g., +100).
Volatility Filtering with ATR: The ATR measures market volatility, ensuring signals occur only during significant price movements.
Separate multipliers for buy and sell signals allow tailored filtering based on market behavior.
Stop Loss Calculation: Dynamic stop loss levels are calculated using the ATR multiplier to adapt to market volatility, offering better risk management.
How It Works
CCI Calculation: The CCI is calculated using the typical price ((High + Low + Close) / 3) and a user-defined length. It detects momentum changes by measuring deviations from the average price.
ATR Calculation: The ATR determines the average price range over a specified period, identifying the market’s volatility. The ATR SMA acts as a baseline to filter signals.
Buy Signal: A buy signal is triggered when:
- CCI crosses above the lower threshold (e.g., -100).
- ATR exceeds its SMA multiplied by the buy multiplier (e.g., 1.0).
Sell Signal: A sell signal is triggered when:
- CCI crosses below the upper threshold (e.g., +100).
- ATR exceeds its SMA multiplied by the sell multiplier (e.g., 0.95).
Stop Loss Integration:
- Long positions: Stop loss = Low – (ATR * ATR Multiplier)
- Short positions: Stop loss = High + (ATR * ATR Multiplier)
Advantages
Combines momentum (CCI) and volatility (ATR) for precise signal generation.
Customizable thresholds and multipliers for different market conditions.
Dynamic stop loss ensures better risk management in volatile markets.
Suggested Parameter Settings
CCI Length: 20 (default). Adjust as follows:
- 10–15: Shorter timeframes (e.g., 5-15 minutes).
- 20: General use for 1-hour timeframes.
- 30–50: Longer timeframes (e.g., 4-hour or daily charts).
CCI Threshold: 100 (default). Adjust as follows:
- 50–75: For more frequent signals in ranging markets.
- 100: Balanced for most trading conditions.
- 150–200: For strong trends to reduce noise.
ATR Length: 14 (default). Adjust as follows:
- 10–14: For assets with moderate volatility.
- 20: For assets with lower volatility.
ATR Buy Multiplier: 1.0 (default). Adjust as follows:
- 0.9–1.0: For gradual uptrends in crypto markets.
- 1.1–1.2: For stronger trend filtering.
ATR Sell Multiplier: 0.95 (default). Adjust as follows:
- 0.8–0.95: For sharp sell-offs.
- 1.0–1.1: For stable downward trends.
ATR Multiplier (Stop Loss): 1.5 (default). Adjust as follows:
- 1.0–1.2: For shorter timeframes or less volatile markets.
- 2.0–2.5: For highly volatile markets like cryptocurrencies.
Example Use Cases
Scalping (5-15 minute charts): Use CCI Length = 10, CCI Threshold = 75, ATR Buy Multiplier = 0.9, ATR Sell Multiplier = 0.8.
Day Trading (1-hour charts): Use CCI Length = 20, CCI Threshold = 100, ATR Buy Multiplier = 1.0, ATR Sell Multiplier = 0.95.
Swing Trading (4-hour or daily charts): Use CCI Length = 30, CCI Threshold = 150, ATR Buy Multiplier = 1.2, ATR Sell Multiplier = 1.0.
Final Thoughts The Composite Indicator (CCI + ATR) is a versatile tool designed to enhance trading decisions by combining momentum analysis with volatility filtering. Whether scalping or swing trading, this indicator provides actionable insights and robust risk management to navigate complex markets effectively.
Bitcoin 1H-15M Breakout StrategyKey Features
1H and 15M Timeframes:
The script uses the 1-hour timeframe for the range and 15-minute timeframe for breakout conditions.
request.security is used to fetch the higher timeframe data.
Risk Management:
Variables entry_price, sl_price, and tp_price are declared explicitly as float with na initialization to handle dynamic assignment.
Stop-loss and take-profit levels are calculated based on the specified Risk-Reward Ratio (RRR) and buffer (in pips).
Trade Logic:
Long trade triggered when the 15-minute candle closes above the 1-hour high.
Short trade triggered when the 15-minute candle closes below the 1-hour low.
Visualization:
The range_high and range_low (previous 1-hour high and low) are plotted on the chart using dashed lines.
Debugging:
Enabling the show_debug input displays labels showing stop-loss and take-profit values for easier troubleshooting.
ORB opening range breakoutThis indicator plots the opening range high and low for a selected period of time in minutes after the market opens on an intraday chart to allow the user to visualize the high and low of the opening range for use in the Opening Range Breakout (ORB) strategy.
The Opening Range Breakout (ORB) strategy is a trading approach that involves identifying the price range within the first few minutes of a market session and then waiting for the price to break out of that range. This indicator facilitates this strategy through the use of shaded regions and/or price levels.
Features
Able to plot the high and low for any opening range above 1 min on any intraday timeframe
Fully customizable ORB region, price level, price axis, label
The inclusion of the Bollinger band along with it's Moving Average serves multiple purposes to assist the user in the opening range breakout strategy
Highlights to the user the deviation from the Moving Average due to an opening range breakout so that the user is better informed on whether to avoid entering a position, exit a position, or monitor the situation more closely
Highlights area of support or resistance formed by the Moving Average of Bollinger Band
Inform the user of the current trend direction to serve as confluence during an opening range breakout
What sets this indicator apart from others
In other ORB indicators, the opening range must be a multiple of the current chart's timeframe, restricting users on the intraday timeframes that can be used. E.g. if the user is using the 15 minutes opening range, they are restricted to use the 1, 3, 5, 15 minute(s) chart.
This indicator gives the user the flexibility to set any opening range above 1 min on any intraday timeframe. E.g. if the user is using the 15 minutes opening range, they are free to use any intraday timeframe on their chart, such as 1 hour or 2 hours chart.
How to use
Input the opening time range of interest in minutes
Check the "ORB region" checkbox to shade the ORB region
Check the "PRICE LEVEL" checkbox to draw a horizontal line of the high and low
Check the "PRICE AXIS" checkbox to plot the values on the price axis
Check the "LABEL" checkbox to draw a label of the high and low
Market Movement After OpenDescription:
This script provides a detailed visualization of market movements during key trading hours: the German market opening (08:00–09:00 UTC+1) and the US market opening (15:30–16:30 UTC+1). It is designed to help traders analyze price behavior in these critical trading periods by capturing and presenting movement patterns and trends directly on the chart and in an interactive table.
Key Features:
Market Movement Analysis:
Tracks the price movement during the German market's first hour (08:00–09:00 UTC+1) and the US market's opening session (15:30–16:30 UTC+1).
Analyzes whether the price moved up or down during these intervals.
Visual Representation:
Dynamically colored price lines indicate upward (green) or downward (red) movement during the respective periods.
Labels ("DE" for Germany and "US" for the United States) mark key moments in the chart.
Historical Data Table:
Displays the past 10 trading days' movement trends in an interactive table, including:
Date: Trading date.
German Market Movement: Up (▲), Down (▼), or Neutral (-) for 08:00–09:00 UTC+1.
US Market Movement: Up (▲), Down (▼), or Neutral (-) for 15:30–16:30 UTC+1.
The table uses color coding for easy interpretation: green for upward movements, red for downward, and gray for neutral.
Real-Time Updates:
Automatically updates during live trading sessions to reflect the most recent movements.
Highlights incomplete periods (e.g., ongoing sessions) to indicate their status.
Customizable:
Suitable for intraday analysis or broader studies of market trends.
Designed to overlay directly on any price chart.
Use Case:
This script is particularly useful for traders who focus on market openings, which are often characterized by high volatility and significant price movements. By providing a clear visual representation of historical and live data, it aids in understanding and capitalizing on market trends during these critical periods.
Notes:
The script works best when the chart is set to the appropriate timezone (UTC+1 for the German market or your local equivalent).
For precise trading decisions, consider combining this script with other technical indicators or trading strategies.
Feel free to share feedback or suggest additional features to enhance the script!
Austin MTF EMA Entry PointsAustin MTF EMA Entry Points
Overview
The Austin MTF EMA Entry Points is a custom TradingView indicator designed to assist traders in identifying high-probability entry points by combining multiple time frame (MTF) analysis. It leverages exponential moving averages (EMAs) from the daily, 1-hour, and 15-minute charts to generate buy and sell signals that align with the overall trend.
This indicator is ideal for traders who:
Want to trade in the direction of the broader daily trend.
Seek precise entry points on lower time frames (1H and 15M).
Prefer using EMAs as their main trend-following tool.
How It Works
Daily Trend Filter:
The indicator calculates the 50 EMA on the daily chart.
The daily EMA acts as the primary trend filter:
If the current price is above the daily 50 EMA, the trend is bullish.
If the current price is below the daily 50 EMA, the trend is bearish.
Lower Time Frame Entry Points:
The indicator calculates the 20 EMA on both the 1-hour (1H) and 15-minute (15M) time frames.
Buy and sell signals are generated when the price aligns with the trend on all three time frames:
Buy Signal: Price is above the daily 50 EMA and also above the 20 EMA on both the 1H and 15M charts.
Sell Signal: Price is below the daily 50 EMA and also below the 20 EMA on both the 1H and 15M charts.
Visual and Alert Features:
Plot Lines:
The daily 50 EMA is plotted in yellow for easy identification of the main trend.
The 20 EMA from the 1H chart is plotted in blue, and the 15M chart's EMA is in purple for comparison.
Buy/Sell Markers:
Green "Up" arrows appear for buy signals.
Red "Down" arrows appear for sell signals.
Alerts:
Alerts notify users when a buy or sell signal is triggered, making it easier to act on trading opportunities in real-time.
How to Use the Indicator
Identify the Main Trend:
Check the relationship between the price and the daily 50 EMA (yellow line):
Only look for buy signals if the price is above the daily 50 EMA.
Only look for sell signals if the price is below the daily 50 EMA.
Wait for Lower Time Frame Alignment:
For a valid signal, ensure that the price is also above or below the 20 EMA (blue and purple lines) on both the 1H and 15M time frames:
This alignment confirms short-term momentum in the same direction as the daily trend.
Act on Signals:
Use the arrows as visual cues for entry points:
Enter long trades on green "Up" arrows.
Enter short trades on red "Down" arrows.
The alerts will notify you of these signals, so you don’t have to monitor the chart constantly.
Exit Strategy:
Use your preferred stop-loss, take-profit, or trailing stop strategy.
You can also exit trades if the price crosses back below/above the daily 50 EMA, signaling a potential reversal.
Use Cases
Swing Traders: Use the daily trend filter to trade in the direction of the dominant trend, while using 1H and 15M signals to fine-tune entries.
Day Traders: Leverage the 1H and 15M time frames to capitalize on short-term momentum while respecting the broader daily trend.
Position Traders: Monitor the indicator to determine potential reversals or significant alignment across time frames.
Customizable Inputs
The indicator includes the following inputs:
Daily EMA Length: Default is 50. Adjust this to change the length of the trend filter EMA.
Lower Time Frame EMA Length: Default is 20. Adjust this to change the short-term EMA for the 1H and 15M charts.
Time Frames: Hardcoded to "D", "60", and "15", but you can modify the script for different time frames if needed.
Example Scenarios
Buy Signal:
Price is above the daily 50 EMA.
Price crosses above the 20 EMA on both the 1H and 15M time frames.
A green "Up" arrow is displayed, and an alert is triggered.
Sell Signal:
Price is below the daily 50 EMA.
Price crosses below the 20 EMA on both the 1H and 15M time frames.
A red "Down" arrow is displayed, and an alert is triggered.
Strengths and Limitations
Strengths:
Aligns trades with the higher time frame trend for increased probability.
Uses multiple time frame analysis to identify precise entry points.
Visual signals and alerts make it easy to use in real-time.
Limitations:
May produce fewer signals in choppy or ranging markets.
Requires discipline to avoid overtrading when conditions are unclear.
Lag in EMAs could result in late entries in fast-moving markets.
Final Notes
The Austin MTF EMA Entry Points indicator is a powerful tool for traders who value multiple time frame alignment and trend-following strategies. While it simplifies decision-making, it is always recommended to backtest and practice proper risk management before using it in live markets.
Try it out and make smarter, trend-aligned trades today! 🚀
libTFLibrary "libTF"
libTF: Find higher/lower TF automatically
This library to find higher/lower TF from current timeframe(timeframe.period) for Pine Script version6(or higher).
Basic Algorithm
Using a timeframe scale Array and timeframe.in_seconds() function to find higher/lower timeframe.
Return value is na if could not find TF in the timeframe scale.
The timeframe scale could be changed by the parameter 'scale'(CSV).
How to use
1. Set higher/lower TF
higher()/lower() function returns higher/lower TF.
Default timeframe scale is "1, 5, 15, 60, 240, 1D, 1M, 3M, 12M".
example:
htf1 = higher()
htf2 = higher(htf1)
ltf1 = lower()
ltf2 = lower(ltf1)
2. Set higher/lower TF using your timeframe scale
The timeframe scale could be changed by the parameter.
example:
myscale="1,60,1D,1M,12M"
htf1 = higher(timeframe.period,myscale)
htf2 = higher(htf1,myscale)
ltf1 = lower(timeframe.period,myscale)
ltf2 = lower(ltf1,myscale)
3. How to use with request.*() function
na value is set if no higher/lower TF in timeframe scale.
It returns current timeframe's value, when na value as timeframe parameter in request.*().
As bellow, if it should be na when timeframe is na.
example:
return_value_request_htf1 = na(htf1)?na:request.security(syminfo.tickerid,htf1,timeframe.period)
return_value_request_ltf1 = na(ltf1)?na:request.security(syminfo.tickerid,ltf1,timeframe.period)
higher(tf, scale)
higher: find higher TF from TF string.
Parameters:
tf (string) : default value is timeframe.period.
scale (string) : TF scale in CSV. default is "1,5,15,60,240,1D,1W,1M,3M,12M".
Returns: higher TF string.
lower(tf, scale)
lower: find lower TF from TF string.
Parameters:
tf (string) : default value is timeframe.period.
scale (string) : TF scale in CSV. defalut is "1,5,15,60,240,1D,1W,1M,3M,12M".
Returns: lower TF string.
Bull Bear Candles with Volume ProfileUser Guide for Bull Bear Candles Indicator with Keltner Channels
Author: NellyN
Introduction
This indicator helps identify potential bullish and bearish trends in the market by analyzing buying and selling volume over two configurable timeframes. It calculates the percentage of buying and selling volume and displays the current market condition based on two moving averages for 2 periods.
Key Features
• Volume Analysis : Calculates Buy and Sell Volume for two configurable timeframes (e.g., 5 min, 15 min, 15 min. and 1 hour, etc.) and displays them as percentages.
• Moving Averages : Uses one Moving Average (MA) for two different time periods to identify trends (uptrend when shorter-term MA is above longer-term MA). You can also choose other Moving Average types like SMA, EMA, WMA, RMA, VWMA, or HMA.
• Colored Candles : Candles are colored green for bullish conditions, red for bearish conditions, and gray for neutral conditions.
• Market Condition Labels : Displays labels in table-view indicating the current market condition based on Buy and Sell Volume (Very Bullish, Very Bearish, Bullish/Bearish Retracement, Chop).
• Alerts: Generates alerts for potential buy and sell signals based on indicator conditions (Note: Enable alerts in the indicator settings).
• Visual Signals: Provides visual signals through colored candles and market condition labels in addition to alerts.
Input Parameters
• Source: Close price (default) or Heikin Ashi
• Timeframe: Select the timeframe for price and volume data used in the indicator (e.g., Daily, Hourly).
• Colored Candles On: Enable (True) or disable (False) coloring candles based on market conditions.
• Enable Alerts: Enable (True) or disable (False) alerts for buy/sell signals.
• Length of MA: Sets the length for the MAs used in trend identification (minimum 1).
• Lookback Period Vol. 1 & 2: Define the timeframes used to calculate buying and selling volume and the MA calculation (e.g., 5 min, 15 min).
Understanding the Outputs
• Cloud Fill: The area between two MAs is filled with a color that reflects the trend (green for uptrend, red for downtrend).
• Table: Shows Buy Volume, Sell Volume, Buy Percentage, Sell Percentage, and the current Market Condition Labels. (If you decide to see them uncomment them from the code simply removing the // in front of the code)
• Colored Candles and Market Condition Labels: Look for green candles and bullish labels for potential buying opportunities, and vice versa for red candles and bearish labels.
Bullish green label appears when short-term MA is above long-term MA AND Buy Volume percentage is greater than 50%.
Red cross for exiting long entry appears when we have bearish volume OR bearish crossover of the MA for the 2 periods.
Bearish red label appears when short-term MA is below long-term MA AND Buy Volume percentage is less than 50%.
Green cross for exiting short entry appears when we have bullish volume OR bullish crossover of the MA for the 2 periods.
• Bullish/Bearish Retracement: The moving averages indicate a potential trend reversal, while the Buy Volume percentage suggests a continuation of the prior trend. The candle color may be green, red, or gray depending on the current price position relative to the moving averages.
• Chop (Gray Candle): The moving averages are flat and the Buy Volume percentage is not significantly above or below 50%.
• Buy/Sell Alerts: The indicator generates alerts based on specific conditions, but these should be used in conjunction with other trading strategies and careful risk management.
Important Notes
• This indicator is for informational purposes only and should not be considered financial advice. Back-test the indicator with historical data to understand its performance before using it for live trading.
• Combine this indicator with other technical analysis tools.
MERCURY by DrAbhiramSivprasad"MERCURY by DrAbhiramSivprasad"
Developed from over 10 years of personal trading experience, the Mercury Indicator is a strategic tool designed to enhance accuracy in trading decisions. Think of it as a guiding light—a supportive tool that helps traders refine and build more robust strategies by integrating multiple powerful elements into a single indicator. I’ll be sharing some examples to illustrate how I use this indicator in my own trading journey, highlighting its potential to improve strategy accuracy.
Reason behind the combination of emas , cpr and vwap is it provides very good support and resistance in my trading carrier so now i brought them together in one plate
How It Works:
Mercury combines three essential elements—EMA, VWAP, and CPR—each of which plays a vital role in detecting support and resistance:
Exponential Moving Averages (EMAs): Known for their strength in providing dynamic support and resistance levels, EMAs help in identifying trends and shifts in momentum. This indicator includes a dashboard with up to nine customizable EMAs, showing whether each is acting as support or resistance based on real-time price movement.
Volume Weighted Average Price (VWAP): VWAP also provides valuable support and resistance, often regarded as a fair price level by institutional traders. Paired with EMAs, it forms a dual-layered support/resistance system, adding an additional level of confirmation.
Central Pivot Range (CPR): By combining CPR with EMAs and VWAP, Mercury highlights “traffic blocks” in your target journey. This means it identifies zones where price is likely to stall or reverse, providing additional guidance for navigating entries and exits.
Why This Combination Matters:
Using these three tools together gives you a more complete view of the market. VWAP and EMAs offer dynamic trend direction and support/resistance, while CPR pinpoints critical price zones. This combination helps you find high-probability trades, adding clarity to complex market situations and enabling stronger confirmation on trend or reversal decisions.
How to Use:
Trend Confirmation: Check if all EMAs are aligned (green for uptrend, red for downtrend), which is visible in the EMA dashboard. An alignment across VWAP, CPR, and EMAs signifies high confidence in trend direction.
Breakouts & Breakdowns: Mercury has an alert system to signal when a price breakout or breakdown occurs across VWAP, EMA1, and EMA2. This can help in spotting strong directional moves.
Example Application: In my trading, I use Mercury to identify support/resistance zones, confirming trends with EMA/VWAP alignment and using CPR as a checkpoint. I find this especially useful for day trading and swing setups.
Recommended Timeframes:
Day Trading: 5 to 15-minute charts for swift, actionable insights.
Swing Trading: 1-hour or 4-hour charts for broader trend analysis.
Note:
The Mercury Indicator should be used as a supportive tool rather than a standalone strategy, guiding you toward informed decisions in line with your trading style and goals.
EXAMPLE OF TRADE
you can see the cart of XAUUSD on 11th nov 2024
1.SHORT POSITION - TIME FRAME 15 MIN
So here for a short position you need to wait for a breakdown candle which will print in orange post the candle you need to check ema dashboard is completly red that indicates no traffic blocks in your journey to destiny target from ema's and you can take the target from nearest cpr support line
TAKEN IN XAUUSD you can see in chart of XAUUSD on 7th nov
2.LONG POSITION - TIME FRAME 15 MIN -
So here for long position you need to wait for a breakout candle from indicator thats here is blue and check all ema boxes are green and candle body should close above all the 3 lines here it is the both ema 1 and 2 and the vwap line then you can take and entry and your target will be the nearest resistance from the daily cpr
3. STOP LOSS CRITERIA
After the entry any candle close below any of the last line from entry for example we have 3 lines vwap and ema 1 and 2 lines and u have made an entry and the last line before the entry is vwap then if any candle closes below vwap can be considered as stoploss like wise in any lines
The MERCURY indicator is a comprehensive trading tool designed to enhance traders' ability to identify trends, breakouts, and reversals effectively. Created by Dr. Abhiram Sivprasad, this indicator integrates several technical elements, including Central Pivot Range (CPR), EMA crossovers, VWAP levels, and a table-based EMA dashboard, to offer a holistic trading view.
Core Components and Functionality:
Central Pivot Range (CPR):
The CPR in MERCURY provides a central pivot level along with Below Central (BC) and Top Central (TC) pivots. These levels act as potential support and resistance, useful for identifying reversal points and zones where price may consolidate.
Exponential Moving Averages (EMAs):
MERCURY includes up to nine EMAs, with a customizable EMA crossover alert system. This feature enables traders to see shifts in trend direction, especially when shorter EMAs cross longer ones.
VWAP (Volume-Weighted Average Price):
VWAP is incorporated as a dynamic support/resistance level and, combined with EMA crossovers, helps refine entry and exit points for higher probability trades.
Breakout and Breakdown Alerts:
MERCURY monitors conditions for upside and downside breakouts. For an upside breakout, all EMAs turn green and a candle closes above VWAP, EMA1, and EMA2. Similarly, all EMAs turning red, combined with a close below VWAP and EMA1/EMA2, signals a downside breakdown. Continuous alerts are available until the trend shifts.
Real-Time EMA Dashboard:
A table displays each EMA’s relative position (Above or Below), helping traders quickly gauge trend direction. Colors in the table adjust to long/short conditions based on EMA alignment.
Usage Recommendations:
Trend Confirmation:
Use the CPR, EMA alignments, and VWAP to confirm uptrends and downtrends. The table highlights trends, making it easy to spot long or short setups at a glance.
Breakout and Breakdown Alerts:
The alert system is customizable for continuous notifications on critical price levels. When all EMAs align in one direction (green for long, red for short) and the close is above or below VWAP and key EMAs, the indicator confirms a breakout/breakdown.
Adaptable for Different Styles:
Day Trading: Traders can set shorter EMAs for quick insights.
Swing Trading: Longer EMAs combined with CPR offer insights into sustained trends.
Recommended Settings:
Timeframes: MERCURY is suitable for timeframes as low as 5 minutes for intraday traders, up to daily charts for trend analysis.
Symbols: Works across forex, stocks, and crypto. Adjust EMA lengths for asset volatility.
Example Strategy:
Long Entry: When the price crosses above CPR and closes above both EMA1 and EMA2.
Short Entry: When the price falls below CPR with a close below both EMA1 and EMA2.
Stoch RSI and RSI Buy/Sell Signals with MACD Trend FilterDescription of the Indicator
This Pine Script is designed to provide traders with buy and sell signals based on the combination of Stochastic RSI, RSI, and MACD indicators, enhanced by the confirmation of candle colors. The primary goal is to facilitate informed trading decisions in various market conditions by utilizing different indicators and their interactions. The script allows customization of various parameters, providing flexibility for traders to adapt it to their specific trading styles.
Usefulness
This indicator is not just a mashup of existing indicators; it integrates the functionality of multiple momentum and trend-detection methods into a cohesive trading tool. The combination of Stochastic RSI, RSI, and MACD offers a well-rounded approach to analyzing market conditions, allowing traders to identify entry and exit points effectively. The inclusion of color-coded signals (strong vs. weak) further enhances its utility by providing visual cues about the strength of the signals.
How to Use This Indicator
Input Settings: Adjust the parameters for the Stochastic RSI, RSI, and MACD to fit your trading style. Set the overbought/oversold levels according to your risk tolerance.
Signal Colors:
Strong Buy Signal: Indicated by a green label and confirmed by a green candle (close > open).
Weak Buy Signal: Indicated by a blue label and confirmed by a green candle (close > open).
Strong Sell Signal: Indicated by a red label and confirmed by a red candle (close < open).
Weak Sell Signal: Indicated by an orange label and confirmed by a red candle (close < open).
Example Trading Strategy Using This Indicator
To effectively use this indicator as part of your trading strategy, follow these detailed steps:
Setup:
Timeframe : Select a timeframe that aligns with your trading style (e.g., 15-minute for intraday, 1-hour for swing trading, or daily for longer-term positions).
Indicator Settings : Customize the Stochastic RSI, RSI, and MACD parameters to suit your trading approach. Adjust overbought/oversold levels to match your risk tolerance.
Strategy:
1. Strong Buy Entry Criteria :
Wait for a strong buy signal (green label) when the RSI is at or below the oversold level (e.g., ≤ 35), indicating a deeply oversold market. Confirm that the MACD shows a decreasing trend (bearish momentum weakening) to validate a potential reversal. Ensure the current candle is green (close > open) if candle color confirmation is enabled.
Example Use : On a 1-hour chart, if the RSI drops below 35, MACD shows three consecutive bars of decreasing negative momentum, and a green candle forms, enter a buy position. This setup signals a robust entry with strong momentum backing it.
2. Weak Buy Entry Criteria :
Monitor for weak buy signals (blue label) when RSI is above the oversold level but still below the neutral (e.g., between 36 and 50). This indicates a market recovering from an oversold state but not fully reversing yet. These signals can be used for early entries with additional confirmations, such as support levels or higher timeframe trends.
Example Use : On the same 1-hour chart, if RSI is at 45, the MACD shows momentum stabilizing (not necessarily negative), and a green candle appears, consider a partial or cautious entry. Use this as an early warning for a potential bullish move, especially when higher timeframe indicators align.
3. Strong Sell Entry Criteria :
Look for a strong sell signal (red label) when RSI is at or above the overbought level (e.g., ≥ 65), signaling a strong overbought condition. The MACD should show three consecutive bars of increasing positive momentum to indicate that the bullish trend is weakening. Ensure the current candle is red (close < open) if candle color confirmation is enabled.
Example Use : If RSI reaches 70, MACD shows increasing momentum that starts to level off, and a red candle forms on a 1-hour chart, initiate a short position with a stop loss set above recent resistance. This is a high-confidence signal for potential price reversal or pullback.
4. Weak Sell Entry Criteria :
Use weak sell signals (orange label) when RSI is between the neutral and overbought levels (e.g., between 50 and 64). These can indicate potential short opportunities that might not yet be fully mature but are worth monitoring. Look for other confirmations like resistance levels or trendline touches to strengthen the signal.
Example Use : If RSI reads 60 on a 1-hour chart, and the MACD shows slight positive momentum with signs of slowing down, place a cautious sell position or scale out of existing long positions. This setup allows you to prepare for a possible downtrend.
Trade Management:
Stop Loss : For buy trades, place stop losses below recent swing lows. For sell trades, set stops above recent swing highs to manage risk effectively.
Take Profit : Target nearby resistance or support levels, apply risk-to-reward ratios (e.g., 1:2), or use trailing stops to lock in profits as price moves in your favor.
Confirmation : Align these signals with broader trends on higher timeframes. For example, if you receive a weak buy signal on a 15-minute chart, check the 1-hour or daily chart to ensure the overall trend is not bearish.
Real-World Example: Imagine trading on a 15-minute chart :
For a buy:
A strong buy signal (green) appears when the RSI dips to 32, MACD shows declining bearish momentum, and a green candle forms. Enter a buy position with a stop loss below the most recent support level.
Alternatively, a weak buy signal (blue) appears when RSI is at 47. Use this as a signal to start monitoring the market closely or enter a smaller position if other indicators (like support and volume analysis) align.
For a sell:
A strong sell signal (red) with RSI at 72 and a red candle signals to short with conviction. Place your stop loss just above the last peak.
A weak sell signal (orange) with RSI at 62 might prompt caution but can still be acted on if confirmed by declining volume or touching a resistance level.
These strategies show how to blend both strong and weak signals into your trading for more nuanced decision-making.
Technical Analysis of the Code
1. Stochastic RSI Calculation:
The script calculates the Stochastic RSI (stochRsiK) using the RSI as input and smooths it with a moving average (stochRsiD).
Code Explanation : ta.stoch(rsi, rsi, rsi, stochLength) computes the Stochastic RSI, and ta.sma(stochRsiK, stochSmoothing) applies smoothing.
2. RSI Calculation :
The RSI is computed over a user-defined period and checks for overbought or oversold conditions.
Code Explanation : rsi = ta.rsi(close, rsiLength) calculates RSI values.
3. MACD Trend Filter :
MACD is calculated with fast, slow, and signal lengths, identifying trends via three consecutive bars moving in the same direction.
Code Explanation : = ta.macd(close, macdLengthFast, macdLengthSlow, macdSignalLength) sets MACD values. Conditions like macdLine < macdLine confirm trends.
4. Buy and Sell Conditions :
The script checks Stochastic RSI, RSI, and MACD values to set buy/sell flags. Candle color filters further confirm valid entries.
Code Explanation : buyConditionMet and sellConditionMet logically check all conditions and toggles (enableStochCondition, enableRSICondition, etc.).
5. Signal Flags and Confirmation :
Flags track when conditions are met and ensure signals only appear on appropriate candle colors.
Code Explanation : Conditional blocks (if statements) update buyFlag and sellFlag.
6. Labels and Alerts :
The indicator plots "BUY" or "SELL" labels with the RSI value when signals trigger and sets alerts through alertcondition().
Code Explanation : label.new() displays the signal, color-coded for strength based on RSI.
NOTE : All strategies can be enabled or disabled in the settings, allowing traders to customize the indicator to their preferences and trading styles.
Multi Fibonacci Supertrend with Signals【FIbonacciFlux】Multi Fibonacci Supertrend with Signals (MFSS)
Overview
The Multi Fibonacci Supertrend with Signals (MFSS) is an advanced technical analysis tool that combines multiple Supertrend indicators using Fibonacci ratios to identify trend directions and potential trading opportunities.
Key Features
1. Fibonacci-Based Supertrend Levels
* Factor 1 (Weak) : 0.618 - The golden ratio
* Factor 2 (Medium) : 1.618 - The Fibonacci ratio
* Factor 3 (Strong) : 2.618 - The extension ratio
2. Visual Components
* Multi-layered Trend Lines
* Different line weights for easy identification
* Progressive transparency from Factor 1 to Factor 3
* Color-coded trend directions (Green for bullish, Red for bearish)
* Dynamic Fill Areas
* Gradient fills between price and trend lines
* Visual representation of trend strength
* Automatic color adjustment based on trend direction
* Signal Indicators
* Clear BUY/SELL labels on chart
* Position-adaptive signal placement
* High-visibility color scheme
3. Signal Generation Logic
The system generates signals based on two key conditions:
* Primary Condition :
* BUY : Price crossunder Supertrend2 (Factor 1.618)
* SELL : Price crossover Supertrend2 (Factor 1.618)
* Confirmation Filter :
* Signals only trigger when Supertrend3 confirms the trend direction
* Reduces false signals in volatile markets
Technical Details
Input Parameters
* ATR Period : 10 (default)
* Customizable for different market conditions
* Affects sensitivity of all Supertrend levels
* Factor Settings :
* All factors are customizable
* Default values based on Fibonacci sequence
* Minimum value: 0.01
* Step size: 0.01
Alert System
* Built-in alert conditions
* Customizable alert messages
* Real-time notification support
Use Cases
* Trend Trading
* Identify strong trend directions
* Filter out weak signals
* Confirm trend continuations
* Risk Management
* Multiple trend levels for stop-loss placement
* Clear entry and exit signals
* Trend strength visualization
* Market Analysis
* Multi-timeframe analysis capability
* Trend strength assessment
* Market structure identification
Benefits
* Reliability
* Based on proven Supertrend algorithm
* Enhanced with Fibonacci mathematics
* Multiple confirmation levels
* Clarity
* Clear visual signals
* Easy-to-interpret interface
* Reduced noise in signal generation
* Flexibility
* Customizable parameters
* Adaptable to different markets
* Suitable for various trading styles
Performance Considerations
* Optimized code structure
* Efficient calculation methods
* Minimal resource usage
Installation and Usage
Setup
* Add indicator to chart
* Adjust parameters if needed
* Enable alerts as required
Best Practices
* Use with other confirmation tools
* Adjust factors based on market volatility
* Consider timeframe appropriateness
Backtesting Results and Strategy Performance
This indicator is specifically designed for pullback trading with optimized risk-reward ratios in trend-following strategies. Below are the detailed backtesting results from our proprietary strategy implementation:
BTCUSDT Performance (Binance)
* Test Period: Approximately 7 years
* Risk-Reward Ratio: 2:1
* Take Profit: 8%
* Stop Loss: 4%
Key Metrics (BTCUSDT):
* Net Profit: +2,579%
* Total Trades: 551
* Win Rate: 44.8%
* Profit Factor: 1.278
* Maximum Drawdown: 42.86%
ETHUSD Performance (Binance)
* Risk-Reward Ratio: 4.33:1
* Take Profit: 13%
* Stop Loss: 3%
Key Metrics (ETHUSD):
* Net Profit: +8,563%
* Total Trades: 581
* Win Rate: 32%
* Profit Factor: 1.32
* Maximum Drawdown: 55%
Strategy Highlights:
* Optimized for pullback trading in strong trends
* Focus on high risk-reward ratios
* Proven effectiveness in major cryptocurrency pairs
* Consistent performance across different market conditions
* Robust profit factor despite moderate win rates
Note: These results are from our proprietary strategy implementation and should be used as reference only. Individual results may vary based on market conditions and implementation.
Important Considerations:
* The strategy demonstrates strong profitability despite lower win rates, emphasizing the importance of proper risk-reward ratios
* Higher drawdowns are compensated by significant overall returns
* The system shows adaptability across different cryptocurrencies with consistent profit factors
* Results suggest optimal performance in volatile crypto markets
Real Trading Examples
BTCUSDT 4-Hour Chart Analysis
Example of pullback strategy implementation on Bitcoin, showing clear trend definition and entry points
ETHUSDT 4-Hour Chart Analysis
Ethereum chart demonstrating effective signal generation during strong trends
BTCUSDT Detailed Signal Example (15-Minute Scalping)
Close-up view of signal generation and trend confirmation process on 15-minute timeframe, demonstrating the indicator's effectiveness for scalping operations
Chart Analysis Notes:
* Green and red zones clearly indicate trend direction
* Multiple timeframe confirmation visible through different Supertrend levels
* Clear entry signals during pullbacks in established trends
* Precise stop-loss placement opportunities below support levels
Implementation Guidelines:
* Wait for main trend confirmation from Factor 3 (2.618)
* Enter trades on pullbacks to Factor 2 (1.618)
* Use Factor 1 (0.618) for fine-tuning entry points
* Place stops below the relevant Supertrend level
Footnotes:
* Charts provided are from Binance exchange, using both 4-hour and 15-minute timeframes
* Trading view screenshots captured during actual market conditions
* Indicators shown: Multi Fibonacci Supertrend with all three factors
* Time period: Recent market activity showing various market conditions
Important Notice:
These charts are for educational purposes only. Past performance does not guarantee future results. Always conduct your own analysis and risk management.
Disclaimer
This indicator is for informational purposes only. Past performance is not indicative of future results. Always conduct proper risk management and due diligence.
License
Open source under MIT License
Author's Note
Contributions and suggestions for improvement are welcome. Please feel free to fork and enhance.
Universal Ratio Trend Matrix [InvestorUnknown]The Universal Ratio Trend Matrix is designed for trend analysis on asset/asset ratios, supporting up to 40 different assets. Its primary purpose is to help identify which assets are outperforming others within a selection, providing a broad overview of market trends through a matrix of ratios. The indicator automatically expands the matrix based on the number of assets chosen, simplifying the process of comparing multiple assets in terms of performance.
Key features include the ability to choose from a narrow selection of indicators to perform the ratio trend analysis, allowing users to apply well-defined metrics to their comparison.
Drawback: Due to the computational intensity involved in calculating ratios across many assets, the indicator has a limitation related to loading speed. TradingView has time limits for calculations, and for users on the basic (free) plan, this could result in frequent errors due to exceeded time limits. To use the indicator effectively, users with any paid plans should run it on timeframes higher than 8h (the lowest timeframe on which it managed to load with 40 assets), as lower timeframes may not reliably load.
Indicators:
RSI_raw: Simple function to calculate the Relative Strength Index (RSI) of a source (asset price).
RSI_sma: Calculates RSI followed by a Simple Moving Average (SMA).
RSI_ema: Calculates RSI followed by an Exponential Moving Average (EMA).
CCI: Calculates the Commodity Channel Index (CCI).
Fisher: Implements the Fisher Transform to normalize prices.
Utility Functions:
f_remove_exchange_name: Strips the exchange name from asset tickers (e.g., "INDEX:BTCUSD" to "BTCUSD").
f_remove_exchange_name(simple string name) =>
string parts = str.split(name, ":")
string result = array.size(parts) > 1 ? array.get(parts, 1) : name
result
f_get_price: Retrieves the closing price of a given asset ticker using request.security().
f_constant_src: Checks if the source data is constant by comparing multiple consecutive values.
Inputs:
General settings allow users to select the number of tickers for analysis (used_assets) and choose the trend indicator (RSI, CCI, Fisher, etc.).
Table settings customize how trend scores are displayed in terms of text size, header visibility, highlighting options, and top-performing asset identification.
The script includes inputs for up to 40 assets, allowing the user to select various cryptocurrencies (e.g., BTCUSD, ETHUSD, SOLUSD) or other assets for trend analysis.
Price Arrays:
Price values for each asset are stored in variables (price_a1 to price_a40) initialized as na. These prices are updated only for the number of assets specified by the user (used_assets).
Trend scores for each asset are stored in separate arrays
// declare price variables as "na"
var float price_a1 = na, var float price_a2 = na, var float price_a3 = na, var float price_a4 = na, var float price_a5 = na
var float price_a6 = na, var float price_a7 = na, var float price_a8 = na, var float price_a9 = na, var float price_a10 = na
var float price_a11 = na, var float price_a12 = na, var float price_a13 = na, var float price_a14 = na, var float price_a15 = na
var float price_a16 = na, var float price_a17 = na, var float price_a18 = na, var float price_a19 = na, var float price_a20 = na
var float price_a21 = na, var float price_a22 = na, var float price_a23 = na, var float price_a24 = na, var float price_a25 = na
var float price_a26 = na, var float price_a27 = na, var float price_a28 = na, var float price_a29 = na, var float price_a30 = na
var float price_a31 = na, var float price_a32 = na, var float price_a33 = na, var float price_a34 = na, var float price_a35 = na
var float price_a36 = na, var float price_a37 = na, var float price_a38 = na, var float price_a39 = na, var float price_a40 = na
// create "empty" arrays to store trend scores
var a1_array = array.new_int(40, 0), var a2_array = array.new_int(40, 0), var a3_array = array.new_int(40, 0), var a4_array = array.new_int(40, 0)
var a5_array = array.new_int(40, 0), var a6_array = array.new_int(40, 0), var a7_array = array.new_int(40, 0), var a8_array = array.new_int(40, 0)
var a9_array = array.new_int(40, 0), var a10_array = array.new_int(40, 0), var a11_array = array.new_int(40, 0), var a12_array = array.new_int(40, 0)
var a13_array = array.new_int(40, 0), var a14_array = array.new_int(40, 0), var a15_array = array.new_int(40, 0), var a16_array = array.new_int(40, 0)
var a17_array = array.new_int(40, 0), var a18_array = array.new_int(40, 0), var a19_array = array.new_int(40, 0), var a20_array = array.new_int(40, 0)
var a21_array = array.new_int(40, 0), var a22_array = array.new_int(40, 0), var a23_array = array.new_int(40, 0), var a24_array = array.new_int(40, 0)
var a25_array = array.new_int(40, 0), var a26_array = array.new_int(40, 0), var a27_array = array.new_int(40, 0), var a28_array = array.new_int(40, 0)
var a29_array = array.new_int(40, 0), var a30_array = array.new_int(40, 0), var a31_array = array.new_int(40, 0), var a32_array = array.new_int(40, 0)
var a33_array = array.new_int(40, 0), var a34_array = array.new_int(40, 0), var a35_array = array.new_int(40, 0), var a36_array = array.new_int(40, 0)
var a37_array = array.new_int(40, 0), var a38_array = array.new_int(40, 0), var a39_array = array.new_int(40, 0), var a40_array = array.new_int(40, 0)
f_get_price(simple string ticker) =>
request.security(ticker, "", close)
// Prices for each USED asset
f_get_asset_price(asset_number, ticker) =>
if (used_assets >= asset_number)
f_get_price(ticker)
else
na
// overwrite empty variables with the prices if "used_assets" is greater or equal to the asset number
if barstate.isconfirmed // use barstate.isconfirmed to avoid "na prices" and calculation errors that result in empty cells in the table
price_a1 := f_get_asset_price(1, asset1), price_a2 := f_get_asset_price(2, asset2), price_a3 := f_get_asset_price(3, asset3), price_a4 := f_get_asset_price(4, asset4)
price_a5 := f_get_asset_price(5, asset5), price_a6 := f_get_asset_price(6, asset6), price_a7 := f_get_asset_price(7, asset7), price_a8 := f_get_asset_price(8, asset8)
price_a9 := f_get_asset_price(9, asset9), price_a10 := f_get_asset_price(10, asset10), price_a11 := f_get_asset_price(11, asset11), price_a12 := f_get_asset_price(12, asset12)
price_a13 := f_get_asset_price(13, asset13), price_a14 := f_get_asset_price(14, asset14), price_a15 := f_get_asset_price(15, asset15), price_a16 := f_get_asset_price(16, asset16)
price_a17 := f_get_asset_price(17, asset17), price_a18 := f_get_asset_price(18, asset18), price_a19 := f_get_asset_price(19, asset19), price_a20 := f_get_asset_price(20, asset20)
price_a21 := f_get_asset_price(21, asset21), price_a22 := f_get_asset_price(22, asset22), price_a23 := f_get_asset_price(23, asset23), price_a24 := f_get_asset_price(24, asset24)
price_a25 := f_get_asset_price(25, asset25), price_a26 := f_get_asset_price(26, asset26), price_a27 := f_get_asset_price(27, asset27), price_a28 := f_get_asset_price(28, asset28)
price_a29 := f_get_asset_price(29, asset29), price_a30 := f_get_asset_price(30, asset30), price_a31 := f_get_asset_price(31, asset31), price_a32 := f_get_asset_price(32, asset32)
price_a33 := f_get_asset_price(33, asset33), price_a34 := f_get_asset_price(34, asset34), price_a35 := f_get_asset_price(35, asset35), price_a36 := f_get_asset_price(36, asset36)
price_a37 := f_get_asset_price(37, asset37), price_a38 := f_get_asset_price(38, asset38), price_a39 := f_get_asset_price(39, asset39), price_a40 := f_get_asset_price(40, asset40)
Universal Indicator Calculation (f_calc_score):
This function allows switching between different trend indicators (RSI, CCI, Fisher) for flexibility.
It uses a switch-case structure to calculate the indicator score, where a positive trend is denoted by 1 and a negative trend by 0. Each indicator has its own logic to determine whether the asset is trending up or down.
// use switch to allow "universality" in indicator selection
f_calc_score(source, trend_indicator, int_1, int_2) =>
int score = na
if (not f_constant_src(source)) and source > 0.0 // Skip if you are using the same assets for ratio (for example BTC/BTC)
x = switch trend_indicator
"RSI (Raw)" => RSI_raw(source, int_1)
"RSI (SMA)" => RSI_sma(source, int_1, int_2)
"RSI (EMA)" => RSI_ema(source, int_1, int_2)
"CCI" => CCI(source, int_1)
"Fisher" => Fisher(source, int_1)
y = switch trend_indicator
"RSI (Raw)" => x > 50 ? 1 : 0
"RSI (SMA)" => x > 50 ? 1 : 0
"RSI (EMA)" => x > 50 ? 1 : 0
"CCI" => x > 0 ? 1 : 0
"Fisher" => x > x ? 1 : 0
score := y
else
score := 0
score
Array Setting Function (f_array_set):
This function populates an array with scores calculated for each asset based on a base price (p_base) divided by the prices of the individual assets.
It processes multiple assets (up to 40), calling the f_calc_score function for each.
// function to set values into the arrays
f_array_set(a_array, p_base) =>
array.set(a_array, 0, f_calc_score(p_base / price_a1, trend_indicator, int_1, int_2))
array.set(a_array, 1, f_calc_score(p_base / price_a2, trend_indicator, int_1, int_2))
array.set(a_array, 2, f_calc_score(p_base / price_a3, trend_indicator, int_1, int_2))
array.set(a_array, 3, f_calc_score(p_base / price_a4, trend_indicator, int_1, int_2))
array.set(a_array, 4, f_calc_score(p_base / price_a5, trend_indicator, int_1, int_2))
array.set(a_array, 5, f_calc_score(p_base / price_a6, trend_indicator, int_1, int_2))
array.set(a_array, 6, f_calc_score(p_base / price_a7, trend_indicator, int_1, int_2))
array.set(a_array, 7, f_calc_score(p_base / price_a8, trend_indicator, int_1, int_2))
array.set(a_array, 8, f_calc_score(p_base / price_a9, trend_indicator, int_1, int_2))
array.set(a_array, 9, f_calc_score(p_base / price_a10, trend_indicator, int_1, int_2))
array.set(a_array, 10, f_calc_score(p_base / price_a11, trend_indicator, int_1, int_2))
array.set(a_array, 11, f_calc_score(p_base / price_a12, trend_indicator, int_1, int_2))
array.set(a_array, 12, f_calc_score(p_base / price_a13, trend_indicator, int_1, int_2))
array.set(a_array, 13, f_calc_score(p_base / price_a14, trend_indicator, int_1, int_2))
array.set(a_array, 14, f_calc_score(p_base / price_a15, trend_indicator, int_1, int_2))
array.set(a_array, 15, f_calc_score(p_base / price_a16, trend_indicator, int_1, int_2))
array.set(a_array, 16, f_calc_score(p_base / price_a17, trend_indicator, int_1, int_2))
array.set(a_array, 17, f_calc_score(p_base / price_a18, trend_indicator, int_1, int_2))
array.set(a_array, 18, f_calc_score(p_base / price_a19, trend_indicator, int_1, int_2))
array.set(a_array, 19, f_calc_score(p_base / price_a20, trend_indicator, int_1, int_2))
array.set(a_array, 20, f_calc_score(p_base / price_a21, trend_indicator, int_1, int_2))
array.set(a_array, 21, f_calc_score(p_base / price_a22, trend_indicator, int_1, int_2))
array.set(a_array, 22, f_calc_score(p_base / price_a23, trend_indicator, int_1, int_2))
array.set(a_array, 23, f_calc_score(p_base / price_a24, trend_indicator, int_1, int_2))
array.set(a_array, 24, f_calc_score(p_base / price_a25, trend_indicator, int_1, int_2))
array.set(a_array, 25, f_calc_score(p_base / price_a26, trend_indicator, int_1, int_2))
array.set(a_array, 26, f_calc_score(p_base / price_a27, trend_indicator, int_1, int_2))
array.set(a_array, 27, f_calc_score(p_base / price_a28, trend_indicator, int_1, int_2))
array.set(a_array, 28, f_calc_score(p_base / price_a29, trend_indicator, int_1, int_2))
array.set(a_array, 29, f_calc_score(p_base / price_a30, trend_indicator, int_1, int_2))
array.set(a_array, 30, f_calc_score(p_base / price_a31, trend_indicator, int_1, int_2))
array.set(a_array, 31, f_calc_score(p_base / price_a32, trend_indicator, int_1, int_2))
array.set(a_array, 32, f_calc_score(p_base / price_a33, trend_indicator, int_1, int_2))
array.set(a_array, 33, f_calc_score(p_base / price_a34, trend_indicator, int_1, int_2))
array.set(a_array, 34, f_calc_score(p_base / price_a35, trend_indicator, int_1, int_2))
array.set(a_array, 35, f_calc_score(p_base / price_a36, trend_indicator, int_1, int_2))
array.set(a_array, 36, f_calc_score(p_base / price_a37, trend_indicator, int_1, int_2))
array.set(a_array, 37, f_calc_score(p_base / price_a38, trend_indicator, int_1, int_2))
array.set(a_array, 38, f_calc_score(p_base / price_a39, trend_indicator, int_1, int_2))
array.set(a_array, 39, f_calc_score(p_base / price_a40, trend_indicator, int_1, int_2))
a_array
Conditional Array Setting (f_arrayset):
This function checks if the number of used assets is greater than or equal to a specified number before populating the arrays.
// only set values into arrays for USED assets
f_arrayset(asset_number, a_array, p_base) =>
if (used_assets >= asset_number)
f_array_set(a_array, p_base)
else
na
Main Logic
The main logic initializes arrays to store scores for each asset. Each array corresponds to one asset's performance score.
Setting Trend Values: The code calls f_arrayset for each asset, populating the respective arrays with calculated scores based on the asset prices.
Combining Arrays: A combined_array is created to hold all the scores from individual asset arrays. This array facilitates further analysis, allowing for an overview of the performance scores of all assets at once.
// create a combined array (work-around since pinescript doesn't support having array of arrays)
var combined_array = array.new_int(40 * 40, 0)
if barstate.islast
for i = 0 to 39
array.set(combined_array, i, array.get(a1_array, i))
array.set(combined_array, i + (40 * 1), array.get(a2_array, i))
array.set(combined_array, i + (40 * 2), array.get(a3_array, i))
array.set(combined_array, i + (40 * 3), array.get(a4_array, i))
array.set(combined_array, i + (40 * 4), array.get(a5_array, i))
array.set(combined_array, i + (40 * 5), array.get(a6_array, i))
array.set(combined_array, i + (40 * 6), array.get(a7_array, i))
array.set(combined_array, i + (40 * 7), array.get(a8_array, i))
array.set(combined_array, i + (40 * 8), array.get(a9_array, i))
array.set(combined_array, i + (40 * 9), array.get(a10_array, i))
array.set(combined_array, i + (40 * 10), array.get(a11_array, i))
array.set(combined_array, i + (40 * 11), array.get(a12_array, i))
array.set(combined_array, i + (40 * 12), array.get(a13_array, i))
array.set(combined_array, i + (40 * 13), array.get(a14_array, i))
array.set(combined_array, i + (40 * 14), array.get(a15_array, i))
array.set(combined_array, i + (40 * 15), array.get(a16_array, i))
array.set(combined_array, i + (40 * 16), array.get(a17_array, i))
array.set(combined_array, i + (40 * 17), array.get(a18_array, i))
array.set(combined_array, i + (40 * 18), array.get(a19_array, i))
array.set(combined_array, i + (40 * 19), array.get(a20_array, i))
array.set(combined_array, i + (40 * 20), array.get(a21_array, i))
array.set(combined_array, i + (40 * 21), array.get(a22_array, i))
array.set(combined_array, i + (40 * 22), array.get(a23_array, i))
array.set(combined_array, i + (40 * 23), array.get(a24_array, i))
array.set(combined_array, i + (40 * 24), array.get(a25_array, i))
array.set(combined_array, i + (40 * 25), array.get(a26_array, i))
array.set(combined_array, i + (40 * 26), array.get(a27_array, i))
array.set(combined_array, i + (40 * 27), array.get(a28_array, i))
array.set(combined_array, i + (40 * 28), array.get(a29_array, i))
array.set(combined_array, i + (40 * 29), array.get(a30_array, i))
array.set(combined_array, i + (40 * 30), array.get(a31_array, i))
array.set(combined_array, i + (40 * 31), array.get(a32_array, i))
array.set(combined_array, i + (40 * 32), array.get(a33_array, i))
array.set(combined_array, i + (40 * 33), array.get(a34_array, i))
array.set(combined_array, i + (40 * 34), array.get(a35_array, i))
array.set(combined_array, i + (40 * 35), array.get(a36_array, i))
array.set(combined_array, i + (40 * 36), array.get(a37_array, i))
array.set(combined_array, i + (40 * 37), array.get(a38_array, i))
array.set(combined_array, i + (40 * 38), array.get(a39_array, i))
array.set(combined_array, i + (40 * 39), array.get(a40_array, i))
Calculating Sums: A separate array_sums is created to store the total score for each asset by summing the values of their respective score arrays. This allows for easy comparison of overall performance.
Ranking Assets: The final part of the code ranks the assets based on their total scores stored in array_sums. It assigns a rank to each asset, where the asset with the highest score receives the highest rank.
// create array for asset RANK based on array.sum
var ranks = array.new_int(used_assets, 0)
// for loop that calculates the rank of each asset
if barstate.islast
for i = 0 to (used_assets - 1)
int rank = 1
for x = 0 to (used_assets - 1)
if i != x
if array.get(array_sums, i) < array.get(array_sums, x)
rank := rank + 1
array.set(ranks, i, rank)
Dynamic Table Creation
Initialization: The table is initialized with a base structure that includes headers for asset names, scores, and ranks. The headers are set to remain constant, ensuring clarity for users as they interpret the displayed data.
Data Population: As scores are calculated for each asset, the corresponding values are dynamically inserted into the table. This is achieved through a loop that iterates over the scores and ranks stored in the combined_array and array_sums, respectively.
Automatic Extending Mechanism
Variable Asset Count: The code checks the number of assets defined by the user. Instead of hardcoding the number of rows in the table, it uses a variable to determine the extent of the data that needs to be displayed. This allows the table to expand or contract based on the number of assets being analyzed.
Dynamic Row Generation: Within the loop that populates the table, the code appends new rows for each asset based on the current asset count. The structure of each row includes the asset name, its score, and its rank, ensuring that the table remains consistent regardless of how many assets are involved.
// Automatically extending table based on the number of used assets
var table table = table.new(position.bottom_center, 50, 50, color.new(color.black, 100), color.white, 3, color.white, 1)
if barstate.islast
if not hide_head
table.cell(table, 0, 0, "Universal Ratio Trend Matrix", text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.merge_cells(table, 0, 0, used_assets + 3, 0)
if not hide_inps
table.cell(table, 0, 1,
text = "Inputs: You are using " + str.tostring(trend_indicator) + ", which takes: " + str.tostring(f_get_input(trend_indicator)),
text_color = color.white, text_size = fontSize), table.merge_cells(table, 0, 1, used_assets + 3, 1)
table.cell(table, 0, 2, "Assets", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, 2, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = #010c3b, text_size = fontSize)
table.cell(table, 0, x + 3, text = str.tostring(array.get(assets, x)), text_color = color.white, bgcolor = f_asset_col(array.get(ranks, x)), text_size = fontSize)
for r = 0 to (used_assets - 1)
for c = 0 to (used_assets - 1)
table.cell(table, c + 1, r + 3, text = str.tostring(array.get(combined_array, c + (r * 40))),
text_color = hl_type == "Text" ? f_get_col(array.get(combined_array, c + (r * 40))) : color.white, text_size = fontSize,
bgcolor = hl_type == "Background" ? f_get_col(array.get(combined_array, c + (r * 40))) : na)
for x = 0 to (used_assets - 1)
table.cell(table, x + 1, x + 3, "", bgcolor = #010c3b)
table.cell(table, used_assets + 1, 2, "", bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 1, x + 3, "==>", text_color = color.white)
table.cell(table, used_assets + 2, 2, "SUM", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
table.cell(table, used_assets + 3, 2, "RANK", text_color = color.white, text_size = fontSize, bgcolor = #010c3b)
for x = 0 to (used_assets - 1)
table.cell(table, used_assets + 2, x + 3,
text = str.tostring(array.get(array_sums, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_sum(array.get(array_sums, x), array.get(ranks, x)))
table.cell(table, used_assets + 3, x + 3,
text = str.tostring(array.get(ranks, x)),
text_color = color.white, text_size = fontSize,
bgcolor = f_highlight_rank(array.get(ranks, x)))
Simultaneous INSIDE Bar Break IndicatorSimultaneous Inside Bar Break Indicator (SIBBI) for The Strat Community
Overview:
The Simultaneous Inside Bar Break Indicator (SIBBI) is designed to help traders using The Strat methodology identify one of the most powerful breakout patterns: the Simultaneous Inside Bar Break across multiple symbols. This indicator detects when all four user-selected symbols form inside bars on the previous candle and then break those inside bars in the same direction (either bullish or bearish) on the current candle.
Inside bars represent consolidation periods where price action does not break the high or low of the previous candle. When a simultaneous break occurs across multiple symbols, this often signals a strong move in the market, making this a key actionable signal in The Strat trading strategy.
Key Features:
Multi-Symbol Analysis: You can track up to four different symbols simultaneously. By default, the indicator comes with SPY, QQQ, IWM, and DIA, but you can modify these to track any other assets or symbols.
Inside Bar Detection: The indicator checks whether all four symbols have inside bars on the previous candle. It only triggers when all symbols meet this condition, making it a highly specific and reliable signal.
Simultaneous Break Detection: Once all symbols have inside bars, the indicator waits for a breakout in the same direction across all four symbols. A simultaneous bullish break (prices breaking above the previous candle’s high) triggers a green label, while a simultaneous bearish break (prices breaking below the previous candle’s low) triggers a red label.
Dynamic Label Timeframe: The indicator dynamically adjusts the timeframe in the label based on the user’s selected timeframe. This allows traders to know precisely which timeframe the break is occurring on. If the user selects "Chart Timeframe," the indicator will evolve with the current chart's timeframe, making it more versatile.
Timeframe Flexibility: The indicator can be set to analyze any timeframe—15-minute, 30-minute, 60-minute, daily, weekly, and so on. It only works for the specific timeframe you set it to in the settings. If set to "Chart Timeframe," the label will adapt dynamically based on the timeframe you are currently viewing.
Customizable Labels: The user can choose the size of the labels (tiny, small, or normal), ensuring that the visual output is tailored to individual preferences and chart layouts.
Best Use Case:
The Simultaneous Inside Bar Break Indicator is particularly powerful when applied to multiple timeframes. Here’s how to use it for maximum impact:
Multi-Timeframe Setup: Set the indicator on various timeframes (e.g., 15-minute, 30-minute, 60-minute, and daily) across multiple charts. This allows you to monitor different timeframes and identify when lower timeframe breaks trigger potential moves on higher timeframes.
Anticipating Strong Moves: When a simultaneous inside bar break occurs on one timeframe (e.g., 30-minute), keep an eye on the higher timeframes (e.g., 60-minute or daily) to see if those timeframes also break. This stacking of inside bar breaks can signal powerful market moves.
Higher Conviction Signals: The indicator is designed to provide high-conviction signals. Since it requires all four symbols to break in the same direction simultaneously, it reduces false signals and focuses on higher probability setups, which is crucial for traders using The Strat to time their trades effectively.
How the Indicator Works:
Inside Bar Formation: The indicator first checks that all four selected symbols had inside bars in the previous bar (i.e., the current high and low are contained within the previous bar’s high and low).
Simultaneous Break Detection: After detecting inside bars, the indicator checks if all four symbols break out in the same direction—bullish (breaking above the previous bar’s high) or bearish (breaking below the previous bar’s low).
Label Display: When a simultaneous inside bar break occurs, a label is plotted on the chart—either green for a bullish break (below the candle) or red for a bearish break (above the candle). The label will display the timeframe you set in the settings (e.g., "IBSB 60" for a 60-minute break).
Chart Timeframe Option: If you prefer, you can set the indicator to evolve with the chart’s current timeframe. In this mode, the label will not show a specific timeframe but will still display the simultaneous inside bar break when it occurs.
Recommendations for Usage:
Focus on Multiple Timeframes: The Strat methodology is all about understanding the relationship between different timeframes. Use this indicator on multiple timeframes to get a better picture of potential moves.
Pair with Other Strat Techniques: This indicator is most powerful when combined with other Strat tools, such as broadening formations, timeframe continuity, and actionable signals (e.g., 2-2 reversals). The simultaneous inside bar break can help confirm or invalidate other signals.
Customize Symbols and Timeframes: Although the default symbols are SPY, QQQ, IWM, and DIA, feel free to replace them with symbols more relevant to your trading. This indicator works well across equities, indices, futures, and forex pairs.
How to Set It Up:
Select Symbols: Choose four symbols that you want to track. These can be index ETFs (like SPY and QQQ), individual stocks, or any other tradable instruments.
Set Timeframe: In the indicator’s settings, choose a specific timeframe (e.g., 15-minute, 30-minute, daily). The label will reflect the selected timeframe, making it clear which time-based break you are seeing.
Optional - Chart Timeframe Mode: If you want the indicator to adapt to the chart’s current timeframe, select the "Chart Timeframe" option in the settings. The indicator will plot the breaks without showing a specific timeframe in the label.
Customize Label Size: Depending on your chart layout and personal preference, you can adjust the size of the labels (tiny, small, or normal) in the settings.
Conclusion:
The Simultaneous Inside Bar Break Indicator is a powerful tool for traders using The Strat methodology, offering a highly specific and reliable signal that can indicate potential large market moves. By monitoring multiple symbols and timeframes, you can gain deeper insight into the market's behavior and act with greater confidence. This indicator is ideal for traders looking to catch high-conviction moves and align their trades with broader market continuity.
Note: The indicator works best when paired with multi-timeframe analysis, allowing you to see how breaks on lower timeframes might influence larger trends. For traders who prefer simplicity, setting it to the "Chart Timeframe" mode offers flexibility while maintaining the core benefits of this indicator.
Post-Open Long Strategy with ATR-based Stop Loss and Take ProfitThe "Post-Open Long Strategy with ATR-Based Stop Loss and Take Profit" is designed to identify buying opportunities after the German and US markets open. It combines various technical indicators to filter entry signals, focusing on breakout moments following price lateralization periods.
Key Components and Their Interaction:
Bollinger Bands (BB):
Description: Uses BB with a 14-period length and standard deviation multiplier of 1.5, creating narrower bands for lower timeframes.
Role in the Strategy: Identifies low volatility phases (lateralization). The lateralization condition is met when the price is near the simple moving average of the BB, suggesting an imminent increase in volatility.
Exponential Moving Averages (EMA):
10-period EMA: Quickly detects short-term trend direction.
200-period EMA: Filters long-term trends, ensuring entries occur in a bullish market.
Interaction: Positions are entered only if the price is above both EMAs, indicating a consolidated positive trend.
Relative Strength Index (RSI):
Description: 7-period RSI with a threshold above 30.
Role in the Strategy: Confirms the market is not oversold, supporting the validity of the buy signal.
Average Directional Index (ADX):
Description: 7-period ADX with 7-period smoothing and a threshold above 10.
Role in the Strategy: Assesses trend strength. An ADX above 10 indicates sufficient momentum to justify entry.
Average True Range (ATR) for Dynamic Stop Loss and Take Profit:
Description: 14-period ATR with multipliers of 2.0 for Stop Loss and 4.0 for Take Profit.
Role in the Strategy: Adjusts exit levels based on current volatility, enhancing risk management.
Resistance Identification and Breakout:
Description: Analyzes the highs of the last 20 candles to identify resistance levels with at least two touches.
Role in the Strategy: A breakout above this level signals a potential continuation of the bullish trend.
Time Filters and Market Conditions:
Trading Hours: Operates only during the opening of the German market (8:00 - 12:00) and US market (15:30 - 19:00).
Panic Candle: The current candle must close negative, leveraging potential emotional reactions in the market.
Avoiding Entry During Pullbacks:
Description: Checks that the two previous candles are not both bearish.
Role in the Strategy: Avoids entering during a potential pullback, improving trade success probability.
Post-Open Long Strategy with ATR-Based Stop Loss and Take Profit
The "Post-Open Long Strategy with ATR-Based Stop Loss and Take Profit" is designed to identify buying opportunities after the German and US markets open. It combines various technical indicators to filter entry signals, focusing on breakout moments following price lateralization periods.
Key Components and Their Interaction:
Bollinger Bands (BB):
Description: Uses BB with a 14-period length and standard deviation multiplier of 1.5, creating narrower bands for lower timeframes.
Role in the Strategy: Identifies low volatility phases (lateralization). The lateralization condition is met when the price is near the simple moving average of the BB, suggesting an imminent increase in volatility.
Exponential Moving Averages (EMA):
10-period EMA: Quickly detects short-term trend direction.
200-period EMA: Filters long-term trends, ensuring entries occur in a bullish market.
Interaction: Positions are entered only if the price is above both EMAs, indicating a consolidated positive trend.
Relative Strength Index (RSI):
Description: 7-period RSI with a threshold above 30.
Role in the Strategy: Confirms the market is not oversold, supporting the validity of the buy signal.
Average Directional Index (ADX):
Description: 7-period ADX with 7-period smoothing and a threshold above 10.
Role in the Strategy: Assesses trend strength. An ADX above 10 indicates sufficient momentum to justify entry.
Average True Range (ATR) for Dynamic Stop Loss and Take Profit:
Description: 14-period ATR with multipliers of 2.0 for Stop Loss and 4.0 for Take Profit.
Role in the Strategy: Adjusts exit levels based on current volatility, enhancing risk management.
Resistance Identification and Breakout:
Description: Analyzes the highs of the last 20 candles to identify resistance levels with at least two touches.
Role in the Strategy: A breakout above this level signals a potential continuation of the bullish trend.
Time Filters and Market Conditions:
Trading Hours: Operates only during the opening of the German market (8:00 - 12:00) and US market (15:30 - 19:00).
Panic Candle: The current candle must close negative, leveraging potential emotional reactions in the market.
Avoiding Entry During Pullbacks:
Description: Checks that the two previous candles are not both bearish.
Role in the Strategy: Avoids entering during a potential pullback, improving trade success probability.
Entry and Exit Conditions:
Long Entry:
The price breaks above the identified resistance.
The market is in a lateralization phase with low volatility.
The price is above the 10 and 200-period EMAs.
RSI is above 30, and ADX is above 10.
No short-term downtrend is detected.
The last two candles are not both bearish.
The current candle is a "panic candle" (negative close).
Order Execution: The order is executed at the close of the candle that meets all conditions.
Exit from Position:
Dynamic Stop Loss: Set at 2 times the ATR below the entry price.
Dynamic Take Profit: Set at 4 times the ATR above the entry price.
The position is automatically closed upon reaching the Stop Loss or Take Profit.
How to Use the Strategy:
Application on Volatile Instruments:
Ideal for financial instruments that show significant volatility during the target market opening hours, such as indices or major forex pairs.
Recommended Timeframes:
Intraday timeframes, such as 5 or 15 minutes, to capture significant post-open moves.
Parameter Customization:
The default parameters are optimized but can be adjusted based on individual preferences and the instrument analyzed.
Backtesting and Optimization:
Backtesting is recommended to evaluate performance and make adjustments if necessary.
Risk Management:
Ensure position sizing respects risk management rules, avoiding risking more than 1-2% of capital per trade.
Originality and Benefits of the Strategy:
Unique Combination of Indicators: Integrates various technical metrics to filter signals, reducing false positives.
Volatility Adaptability: The use of ATR for Stop Loss and Take Profit allows the strategy to adapt to real-time market conditions.
Focus on Post-Lateralization Breakout: Aims to capitalize on significant moves following consolidation periods, often associated with strong directional trends.
Important Notes:
Commissions and Slippage: Include commissions and slippage in settings for more realistic simulations.
Capital Size: Use a realistic trading capital for the average user.
Number of Trades: Ensure backtesting covers a sufficient number of trades to validate the strategy (ideally more than 100 trades).
Warning: Past results do not guarantee future performance. The strategy should be used as part of a comprehensive trading approach.
With this strategy, traders can identify and exploit specific market opportunities supported by a robust set of technical indicators and filters, potentially enhancing their trading decisions during key times of the day.
DP-OCR MTF & MA 2024This script developed is designed for multi-timeframe analysis of previous open, close, and range, with additional signal plots based on various percentage extension levels. It also incorporates EMA calculations for crossover strategies. Here's a quick breakdown of what the script does:
Key Features:
1. Timeframes:
o Two separate timeframes (TF1 and TF2), which can be set by the user (e.g., 15 mins, 30 mins, daily, etc.). The script computes price actions and extensions for both timeframes. For better analysis, use Daily in TF1 and Weekly in TF2
2. Extension Levels:
o Calculates and plots 10%, 21%, 31%, 51%, and 61% extensions (both positive and negative) for each timeframe.
o The most commonly used extension levels are 61%, 31%, -61%, and -21%.
o These extension levels can be turned on or off by the user.
3. Open/Close/Range:
o Tracks the high, low, open, and close for both timeframes.
o Highlights open/close gaps.
o Plots the previous high/low range for both timeframes with a fill and different colors based on price movement.
How to Use:
• You can toggle specific extension levels on or off in the script’s settings.
• For example, when price hits a +61% extension, it could signal a breakout, and when it hits a -61% extension, it may indicate a potential retracement.
• Use these levels in conjunction with your price action analysis to set entry/exit points or stop-loss levels.
4. Today’s Open:
o Plots today’s opening price for both timeframes.
How to Use:
• Use today’s open as a key reference point to determine the day’s price action.
• Compare today’s open with the previous high/low or extension levels to evaluate possible trends or reversals.
5. EMA Calculations:
o The script calculates 5, 15, and 20 period EMAs and plots them on the chart.
o Additional EMA crossover signals can be included for strategy optimization.
How to Use:
• Observe the EMAs for potential crossover signals. For example, a 5-period EMA crossing above a 15-period or 20-period EMA may signal a buy opportunity, while a crossover in the opposite direction may signal a sell.
• Combine the EMA crossovers with extension levels or previous price data to refine your entries and exits.
Customizations Available:
• Users can select whether to display extension levels for either timeframe.
• The script allows automatic adaptation to intraday, daily, weekly, or monthly timeframes based on the current chart settings.
Moreover, the extension levels are calculated based on the previous period’s range, with the most commonly usable extension levels being 61, 31, -61, and -21. These levels are often used for identifying potential price retracements, breakouts, or reversal points in technical analysis.
Trend and RSI Bias FusionTrend and RSI Bias Fusion Indicator
This is my first ever indicator. I created this indicator for myself. I was inspired by the indicators created by Bjorgum, Duyck and QuantTherapy and decided to create multiple indicators that either work well combined with their indicators or something new that applies some of their indicator concepts. I decided to share this because I believe in learning and earing together as a community. I will later share the rest of the indicators I have created. This is my first time ever sharing any indicator so if you guys have any questions or suggestions write them.
Overview
The "Trend and RSI Bias Fusion" indicator is a versatile tool designed to help traders identify key market trends, potential reversals, momentum shifts, and RSI-based pullbacks. This indicator fuses trend analysis and RSI bias into a single, comprehensive visual, making it easier to make informed trading decisions across various timeframes and market conditions.
Features
Dual Timeframe Analysis: Combines trend analysis on a higher timeframe (e.g., Daily) with RSI analysis on a lower timeframe (e.g., 4-Hour), providing a more granular view of market conditions. You can, however, choose any timeframe you want for instance 12hr with trend and 2hr RSI analysis.
Trend and Momentum Visualization: The indicator uses Exponential Moving Averages (EMAs) to determine trend direction and colors the chart background to reflect bullish or bearish trends, along with momentum strength.
RSI Bias Detection: Automatically identifies overbought and oversold conditions using the RSI, providing a clear indication of potential market reversals or continuations.
Color-Coded Bars: Optionally color codes bars based on either trend direction or RSI bias, giving you a quick visual cue of the market's state.
Reversal Markers: Displays trend reversal markers on the chart when the short-term EMA crosses over or under the long-term EMA.
Calculation Details
Exponential Moving Averages (EMAs): The indicator calculates short-term and long-term EMAs using the closing prices.
The crossover between these EMAs is used to determine the trend direction:
Short-Term EMA: Typically a 14-period EMA.
Long-Term EMA: Typically a 50-period EMA.
Momentum: Calculated using the RSI and then centered around zero by subtracting 50. This allows the indicator to distinguish between positive and negative momentum.
RSI Bias: The RSI is calculated on a lower timeframe to detect overbought (above 60) and oversold (below 40) conditions, which are used to determine the bias:
RSI Above 60: Indicates potential overbought conditions (bearish bias).
RSI Below 40: Indicates potential oversold conditions (bullish bias).
How to Use the Indicator
Select Your Timeframes: Choose your preferred trend timeframe (e.g., Daily) and RSI timeframe (e.g., 4-2 Hour) in the indicator settings. These should match your trading strategy and the asset class you're analyzing.
Interpret Trend and Momentum
Background Color: The background color reflects the current trend direction:
Green/Lime: Uptrend, with lime indicating positive momentum.
Red/Maroon: Downtrend, with maroon indicating positive momentum within a downtrend.
Momentum Histogram: The histogram plot shows momentum, color-coded by the trend. A histogram above zero with green/lime indicates bullish momentum, while below zero with red/maroon indicates bearish momentum.
Image above: Both RSI and Trend are set to daily, uses RSI bar color
Read RSI Bias:
The RSI bias line helps identify the current market state relative to overbought or oversold levels. The RSI value is plotted on the chart, with lines at 60 and 40 to mark these levels.
When the RSI crosses above 60, it suggests a bearish bias; crossing below 40 suggests a bullish bias.
Use Reversal Markers: The indicator places small circles on the chart at points where the short-term EMA crosses the long-term EMA, signaling potential trend reversals.
Bar Color Customization:
You can choose to color the bars based on either the trend or the RSI bias in the indicator settings. In the Images below I have changed the colors to fit my personal style , Blue for uptrend and Pink for downtrend:
Trend-Based: Bars will reflect the trend direction (green for uptrend or in this case blue, red for downtrend or in this case pink).
RSI-Based: Bars will reflect RSI conditions (yellow for overbought, maroon for oversold).
Image above: RSI is set to 4hr and Trend is set to daily, uses RSI bar color
Image above: RSI is set to 4hr and Trend is set to daily, uses Trend bar color
Image above: Both RSI and Trend are set to daily, uses RSI bar color
Image above: Both RSI and Trend are set to daily, uses Trend bar color
Image above: Both RSI and Trend are set to daily, without bar color
Image above: Both RSI and Trend are set to daily, how it looks on a clean chart
Example Use Case Swing Traders:
For instance, if you're trading a 4-hour chart of USDCHF:
Set the trend timeframe to Daily and the RSI timeframe to 4-Hour.
Watch for background color shifts and reversal markers to determine trend direction.
Use RSI bias to time your entries and exits, especially around overbought/oversold levels.
Enable bar coloring to quickly see when conditions favor either trend continuation or reversal.
This indicator is particularly effective for swing traders and those who want to align their trades with higher timeframe trends while using momentum and RSI for entry and exit signals.
For Day Traders
Timeframe Selection:
Trend Timeframe: Set to a higher intraday timeframe such as the 1 or 2 Hour chart.
RSI Timeframe: Set to a shorter timeframe like 15-10 Minutes or 5-Minutes to capture finer details of intraday momentum shifts.
Using the Indicator:
Trend Identification: Day traders can use the background color to quickly identify whether the market is in a bullish or bearish trend on the 1-Hour chart. A green background suggests looking for long opportunities, while a red background suggests short opportunities.
Momentum Analysis: The histogram can help day traders gauge the strength of the current trend. For example, if the histogram is green and above zero, the trader may consider buying pullbacks within the trend.
RSI Bias: Monitor RSI levels on the lower timeframe (e.g., 15-Minutes). If the RSI crosses below 40, it indicates an oversold condition, potentially signaling a buying opportunity, especially if it aligns with a bullish trend on the higher timeframe.
Trade Execution:
Look for entries when the RSI shows a reversal or pullback in the direction of the higher timeframe trend.
Use the trend reversal markers to confirm potential intraday reversals, adding extra confidence to trade setups.
For Scalpers
Timeframe Selection:
Trend Timeframe: Set to a short intraday timeframe like 15-Minutes or 5-Minutes.
RSI Timeframe: Use an even shorter timeframe, such as 1-Minute, to capture rapid price movements.
Final Notes:
The "Trend and RSI Bias Fusion" indicator is a powerful tool that combines trend analysis, momentum assessment, and RSI insights into one cohesive package. By integrating these different aspects, the indicator helps traders navigate complex market environments with greater clarity and confidence. Customize the settings to fit your specific trading style and market and use it to stay ahead of market trends and potential reversals.
My Scripts/Indicators/Ideas /Systems that I share are only for educational purposes!
MTOBVR_CheckOverview.
This indicator checks to see if the OBV follows a specific pattern and visually displays the trend of the OBV on different time legs. It also has the ability to set alerts when certain conditions are met.
How to use
Setting up the indicator
Add a new indicator on a chart in TradingView.
Copy the code into the “Pine Script™ Editor” and save it as a new script.
Apply the script to your chart.
Indicator Functions
OBV Calculation
Calculates OBV for each time frame (5-minute, 15-minute, 30-minute, 1-hour, 4-hour, daily, and weekly) and displays it on the chart OBV is an indicator that combines price changes and trading volume.
Pattern Detection
Detects whether a particular pattern, such as a double or triple bottom, appears in the OBV. This allows us to identify buy or sell signals.
When these patterns are detected, the background color changes.
Background Color Change
When an OBV forms a particular pattern, the background color of the chart changes. This provides visual confirmation that a pattern has appeared.
Minimum pattern (min_bool): when the 5-, 15-, and 30-minute conditions for OBV are met.
High hourly pattern (h_bool): when the condition is met for the 1-hour, 4-hour, and daily legs of the OBV.
One-week pattern (range_obv_1w_bool): when the condition is met for the 1-week OBV pattern.
When all conditions are met: when the minimum pattern, high hourly pattern, and one-week pattern are all met.
Alert Settings
You can set alerts when certain conditions are met. This allows you to receive signals in real time.
Minimum conditions (min_bool): conditions at 5, 15, and 30 minutes of OBV.
High timeframe condition (h_bool): condition on the 1-hour, 4-hour, and daily legs of the OBV.
When all conditions are met: When all of the above conditions are met.
One-week condition (range_obv_1w_bool): Condition for the one-week leg of the OBV.
When all conditions are met: when the minimum, high time leg, and one week conditions are all met.
Arrows
OBV_ALL_UP: A green triangle arrow is displayed when the OBV is rising on all time legs.
OBV_ALL_DOWN: A red triangle arrow appears when the OBV is falling on all time legs.
Usage Notes
Time Leg Settings: This script uses OBVs of different time legs to detect patterns. Depending on the time leg used, appropriate settings and interpretation are required.
Alert settings: In order to activate the alert function, the alert conditions and notification method must be configured using TradingView's alert system.
This indicator allows you to visually see trends and patterns in the OBV across multiple time frames, allowing you to make more informed trading decisions.
Control Candle Range [UkutaLabs]Control Candle Range
█ OVERVIEW
The Control Candle Range is a powerful trading tool that automatically identifies control candles in real time. The versatile ranges drawn by this indicator can be used in a variety of trading strategies because they can be used as ranges as well as areas of support and resistance.
The purpose of this script is to simplify the trading experience of users by automatically identifying and displaying Control Candle Ranges.
█ USAGE
A Control Candle is a candle that is followed by two consecutive inside candles. When this pattern is detected, this indicator will automatically identify it and draw a range in real time. This range will continue to extend as long as candles continue to close within the range of the Control Candle. It is important to note that a Control Candle is still valid if the price action exits its range as long as it closes within its range.
This script also supports higher time frame mapping, allowing you to draw Control Candle Ranges from higher timeframes onto lower timeframe charts. This is a powerful feature that allows users to see multiple timeframes worth of information at a glance on one single chart.
Each Control Candle Range will also be displayed with a label to allow users to understand at a glance which timeframe the range is being drawn from. These labels can be turned off in the settings.
The user also has the ability to adjust the color of each timeframe’s ranges.
█ SETTINGS
Configuration
• Show Labels: Determines whether or not identifying labels are displayed on ranges.
• Label Size: Determines the size of labels.
• Text Alignment: Determines where labels are drawn on ranges.
• Max Display: Determines the maximum number of ranges that can be drawn from each timeframe.
Current Timeframe
• Display (On/Off): Determines whether or not ranges from the current timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the current timeframe.
5 Minute (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the 5 minute timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the 5 minute timeframe.
15 Minute (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the 15 minute timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the 15 minute timeframe.
30 Minute (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the 30 minute timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the 30 minute timeframe.
60 Minute (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the 60 minute timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the 60 minute timeframe.
240 Minute (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the 240 minute timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the 240 minute timeframe.
Daily (Higher Timeframe)
• Display (On/Off): Determines whether or not ranges from the daily timeframe will be drawn on the chart.
• Color: Determines the color of ranges drawn from the daily timeframe.
Rsi Long-Term Strategy [15min]Hello, I would like to present to you The "RSI Long-Term Strategy" for 15min tf
The "RSI Long-Term Strategy " is designed for traders who prefer a combination of momentum and trend-following techniques. The strategy focuses on entering long positions during significant market corrections within an overall uptrend, confirmed by both RSI and volume. The use of long-term SMAs ensures that trades are made in line with the broader market trend. The stop-loss feature provides risk management by limiting losses on trades that do not perform as expected. This strategy is particularly well-suited for longer-term traders who monitor 15-minute charts but look for substantial trend reversals or continuations.
Indicators and Parameters:
Relative Strength Index (RSI):
- The RSI is calculated using a 10-period length. It measures the magnitude of recent price changes to evaluate overbought or oversold conditions. The script defines oversold conditions when the RSI is at or below 30 and overbought conditions when the RSI is at or above 70.
Volume Condition:
-The strategy incorporates a volume condition where the current volume must be greater than 2.5 times the 20-period moving average of volume. This is used to confirm the strength of the price movement.
Simple Moving Averages (SMA):
- The strategy uses two SMAs: SMA1 with a length of 250 periods and SMA2 with a length of 500 periods. These SMAs help identify long-term trends and generate signals based on their crossover.
Strategy Logic:
Entry Logic:
A long position is initiated when all the following conditions are met:
The RSI indicates an oversold condition (RSI ≤ 30).
SMA1 is above SMA2, indicating an uptrend.
The volume condition is satisfied, confirming the strength of the signal.
Exit Logic:
The strategy closes the long position when SMA1 crosses under SMA2, signaling a potential end of the uptrend (a "Death Cross").
Stop-Loss:
A stop-loss is set at 5% below the entry price to manage risk and limit potential losses.
Buy and sell signals are highlighted with circles below or above bars:
Green Circle : Buy signal when RSI is oversold, SMA1 > SMA2, and the volume condition is met.
Red Circle : Sell signal when RSI is overbought, SMA1 < SMA2, and the volume condition is met.
Black Cross: "Death Cross" when SMA1 crosses under SMA2, indicating a potential bearish signal.
to determine the level of stop loss and target point I used a piece of code by RafaelZioni, here is the script from which a piece of code was taken
I hope the strategy will be helpful, as always, best regards and safe trades
;)
Thrax - QuickStrike 5-Mins Scalping** Indicator Description **
1. Price Change Threshold (%) – The minimum price change required for a candle to be recognized as significant. Candles exceeding this threshold are considered potential candidates for zone creation. Default value for 5 min is 0.5%. As you move on higher timeframe the threshold should increase
2. Percentage Change for Zones (%) – The amount of price movement needed to form a dynamic support or resistance zone. Tweak this to control how sensitive the indicator is to price fluctuations. 5 min default value is 1%. For 15 min suggested is 2-3%.
3. Break Threshold for Zones (%) – Defines how much price must break above or below a zone for it to be removed from the chart/mitigated. Keeps the chart clean by removing invalidated zones. Default value is 0.1% in 5 min, for 15 min it is 0.5%.
4. Buy Zone Retracement Level (%) – The percentage retracement level for defining the inner buy zone within a broader bullish zone. Ideal for timing precision entries. Ideal value is 75%
5. Sell Zone Retracement Level (%) – The percentage retracement level used to determine the inner sell zone within a larger bearish zone. Helps in identifying potential reversal areas or exits. Ideal value is 25%
By tailoring these inputs, traders can fully customize the indicator to suit their scalping strategies, enhancing their ability to navigate fast-moving markets with confidence.
---------------------------------------------------------------------------
There are two primary approaches for scalping using this indicator:
1. Candle-Based Scalping:
a. Bullish Signal: When you observe a bullish candle highlighted in blue (by default), you can consider entering a long position at the close of this candle. It’s advisable to wait for the candle to close before taking action. For a more aggressive scalp, you might take profits based on your scalp target after a few subsequent candles. If the price remains stagnant or moves unfavorably in the next few candles, you can exit with a small loss. Alternatively, if you have a higher risk tolerance, you may hold the position even if the price initially declines within a set percentage.
b. Bearish Signal: For a bearish candle highlighted in yellow, you can enter a short trade at the close of the candle. Similar to the bullish setup, you have the option to exit after a few candles if the price doesn’t move as expected or hold the position with a higher risk tolerance if the price goes up initially.
2. Zone-Based Scalping:
Entering Zones: Monitor the price as it enters a defined support or resistance zone. If you are open to higher risk, you can enter a trade immediately upon the price entering the zone. For a more cautious approach with a smaller stop loss, wait for the price to reach a retracement level within the zone before initiating your trade. This approach allows for a more precise entry but may result in missing out on trades if the price reverses before hitting the retracement level. Conversely, entering at the zone’s boundary offers the potential for early trade capture but comes with a higher stop loss risk.
Adjust these strategies based on your risk tolerance and trading preferences to optimize your scalping opportunities.
Macro Times [Blu_Ju]About ICT Macro Times:
The Inner Circle Trader (ICT) has taught that there are certain time sessions when the Interbank Price Delivery Algorithm (IPDA) is running a macro. The macro itself could be a repricing macro, a consolidation macro, etc. - this depends on where price currently is in relation to its draw. The times the macro is active do not change however, and are always the following (in New York local time):
8:50-9:10 (premarket macro)
9:50-10:10 (AM macro 1)
10:50-11:10 (AM macro 2)
11:50-12:10 (lunch macro)
13:10-13:40 (PM macro)
15:15-15:45 (final hour macro)
Because these times are fixed, traders can anticipate a setup is likely to form in or around these sessions. Setups may involve sweeps of liquidity (highs/lows), repricing to inefficiencies (e.g., fair value gaps), breaker setups, etc. (The specific setup involved is beyond the scope of this script; this script is concerned with visually marking the time sessions only.)
About this Script:
The scope of this script is to visually identify the macro active time sessions. This script draws vertical lines to mark the start and end of the macro time sessions. Optionally, the user can use a background color for the macro session with or without the vertical lines. The user can also toggle on or off any of the macro sessions, if he or she is only interested in certain ones. The user also has the freedom to change the times of the macro sessions if he or she is interested in a different time.
What makes this script unique is that it plots the macro time sessions after midnight for each day, before the real-time bar reaches the macro times. This is advantageous to the trader, as it gives the trader a visual cue that the macro times are approaching. When watching price it is easy to lose track of time, and the purpose of this script is to help the trader maintain where price is in relation to the macro time sessions in a simple, visual way.
Fine-tune Inputs: Fourier Smoothed Volume zone oscillator WFSVZ0Use this Strategy to Fine-tune inputs for the (W&)FSVZ0 Indicator.
Strategy allows you to fine-tune the indicator for 1 TimeFrame at a time; cross Timeframe Input fine-tuning is done manually after exporting the chart data.
I suggest using "Close all" input False when fine-tuning Inputs for 1 TimeFrame. When you export data to Excel/Numbers/GSheets I suggest using "Close all" input as True, except for the lowest TimeFrame.
MEANINGFUL DESCRIPTION:
The Volume Zone oscillator breaks up volume activity into positive and negative categories. It is positive when the current closing price is greater than the prior closing price and negative when it's lower than the prior closing price. The resulting curve plots through relative percentage levels that yield a series of buy and sell signals, depending on level and indicator direction.
The Wavelet & Fourier Smoothed Volume Zone Oscillator (W&)FSVZO is a refined version of the Volume Zone Oscillator, enhanced by the implementation of the Discrete Fourier Transform . Its primary function is to streamline price data and diminish market noise, thus offering a clearer and more precise reflection of price trends.
By combining the Wavalet and Fourier aproximation with Ehler's white noise histogram, users gain a comprehensive perspective on volume-related market conditions.
HOW TO USE THE INDICATOR:
The default period is 2 but can be adjusted after backtesting. (I suggest 5 VZO length and NoiceR max length 8 as-well)
The VZO points to a positive trend when it is rising above the 0% level, and a negative trend when it is falling below the 0% level. 0% level can be adjusted in setting by adjusting VzoDifference. Oscillations rising below 0% level or falling above 0% level result in a natural trend.
HOW TO USE THE STRATEGY:
Here you fine-tune the inputs until you find a combination that works well on all Timeframes you will use when creating your Automated Trade Algorithmic Strategy. I suggest 4h, 12h, 1D, 2D, 3D, 4D, 5D, 6D, W and M.
When I ndicator/Strategy returns 0 or natural trend , Strategy Closes All it's positions.
ORIGINALITY & USFULLNESS:
Personal combination of Fourier and Wavalet aproximation of a price which results in less noise Volume Zone Oscillator.
The Wavelet Transform is a powerful mathematical tool for signal analysis, particularly effective in analyzing signals with varying frequency or non-stationary characteristics. It dissects a signal into wavelets, small waves with varying frequency and limited duration, providing a multi-resolution analysis. This approach captures both frequency and location information, making it especially useful for detecting changes or anomalies in complex signals.
The Discrete Fourier Transform (DFT) is a mathematical technique that transforms discrete data from the time domain into its corresponding representation in the frequency domain. This process involves breaking down a signal into its individual frequency components, thereby exposing the amplitude and phase characteristics inherent in each frequency element.
This indicator utilizes the concept of Ehler's Universal Oscillator and displays a histogram, offering critical insights into the prevailing levels of market noise. The Ehler's Universal Oscillator is grounded in a statistical model that captures the erratic and unpredictable nature of market movements. Through the application of this principle, the histogram aids traders in pinpointing times when market volatility is either rising or subsiding.
DETAILED DESCRIPTION:
My detailed description of the indicator and use cases which I find very valuable.
What is oscillator?
Oscillators are chart indicators that can assist a trader in determining overbought or oversold conditions in ranging (non-trending) markets.
What is volume zone oscillator?
Price Zone Oscillator measures if the most recent closing price is above or below the preceding closing price.
Volume Zone Oscillator is Volume multiplied by the 1 or -1 depending on the difference of the preceding 2 close prices and smoothed with Exponential moving Average.
What does this mean?
If the VZO is above 0 and VZO is rising. We have a bullish trend. Most likely.
If the VZO is below 0 and VZO is falling. We have a bearish trend. Most likely.
Rising means that VZO on close is higher than the previous day.
Falling means that VZO on close is lower than the previous day.
What if VZO is falling above 0 line?
It means we have a high probability of a bearish trend.
Thus the indicator returns 0 and Strategy closes all it's positions when falling above 0 (or rising bellow 0) and we combine higher and lower timeframes to gauge the trend.
In the next Image you can see that trend is negative on 4h, negative on 12h and positive on 1D. That means trend is negative.
I am sorry, the chart is a bit messy. The idea is to use the indicator over more than 1 Timeframe.
What is approximation and smoothing?
They are mathematical concepts for making a discrete set of numbers a
continuous curved line.
Fourier and Wavelet approximation of a close price are taken from aprox library.
Key Features:
You can tailor the Indicator/Strategy to your preferences with adjustable parameters such as VZO length, noise reduction settings, and smoothing length.
Volume Zone Oscillator (VZO) shows market sentiment with the VZO, enhanced with Exponential Moving Average (EMA) smoothing for clearer trend identification.
Noise Reduction leverages Euler's White noise capabilities for effective noise reduction in the VZO, providing a cleaner and more accurate representation of market dynamics.
Choose between the traditional Fast Fourier Transform (FFT) , the innovative Double Discrete Fourier Transform (DTF32) and Wavelet soothed Fourier soothed price series to suit your analytical needs.
Image of Wavelet transform with FAST settings, Double Fourier transform with FAST settings. Improved noice reduction with SLOW settings, and standard FSVZO with SLOW settings:
Fast setting are setting by default:
VZO length = 2
NoiceR max Length = 2
Slow settings are:
VZO length = 5 or 7
NoiceR max Length = 8
As you can see fast setting are more volatile. I suggest averaging fast setting on 4h 12h 1d 2d 3d 4d W and M Timeframe to get a clear view on market trend.
What if I want long only when VZO is rising and above 15 not 0?
You have set Setting VzoDifference to 15. That reduces the number of trend changes.
Example of W&FSVZO with VzoDifference 15 than 0:
VZO crossed 0 line but not 15 line and that's why Indicator returns 0 in one case an 1 in another.
What is Smooth length setting?
A way of calculating Bullish or Bearish (W&)FSVZO .
If smooth length is 2 the trend is rising if:
rising = VZO > ta.ema(VZO, 2)
Meaning that we check if VZO is higher that exponential average of the last 2 elements.
If smooth length is 1 the trend is rising if:
rising = VZO_ > VZO_
Use this Strategy to fine-tune inputs for the (W&)FSVZO Indicator.
(Strategy allows you to fine-tune the indicator for 1 TimeFrame at a time; cross Timeframe Input fine-tuning is done manually after exporting the chart data)
I suggest using " Close all " input False when fine-tuning Inputs for 1 TimeFrame . When you export data to Excel/Numbers/GSheets I suggest using " Close all " input as True , except for the lowest TimeFrame . I suggest using 100% equity as your default quantity for fine-tune purposes. I have to mention that 100% equity may lead to unrealistic backtesting results. Be avare. When backtesting for trading purposes use Contracts or USDT.
Statistics • Chi Square • P-value • SignificanceThe Statistics • Chi Square • P-value • Significance publication aims to provide a tool for combining different conditions and checking whether the outcome is significant using the Chi-Square Test and P-value.
🔶 USAGE
The basic principle is to compare two or more groups and check the results of a query test, such as asking men and women whether they want to see a romantic or non-romantic movie.
–––––––––––––––––––––––––––––––––––––––––––––
| | ROMANTIC | NON-ROMANTIC | ⬅︎ MOVIE |
–––––––––––––––––––––––––––––––––––––––––––––
| MEN | 2 | 8 | 10 |
–––––––––––––––––––––––––––––––––––––––––––––
| WOMEN | 7 | 3 | 10 |
–––––––––––––––––––––––––––––––––––––––––––––
|⬆︎ SEX | 10 | 10 | 20 |
–––––––––––––––––––––––––––––––––––––––––––––
We calculate the Chi-Square Formula, which is:
Χ² = Σ ( (Observed Value − Expected Value)² / Expected Value )
In this publication, this is:
chiSquare = 0.
for i = 0 to rows -1
for j = 0 to colums -1
observedValue = aBin.get(i).aFloat.get(j)
expectedValue = math.max(1e-12, aBin.get(i).aFloat.get(colums) * aBin.get(rows).aFloat.get(j) / sumT) //Division by 0 protection
chiSquare += math.pow(observedValue - expectedValue, 2) / expectedValue
Together with the 'Degree of Freedom', which is (rows − 1) × (columns − 1) , the P-value can be calculated.
In this case it is P-value: 0.02462
A P-value lower than 0.05 is considered to be significant. Statistically, women tend to choose a romantic movie more, while men prefer a non-romantic one.
Users have the option to choose a P-value, calculated from a standard table or through a math.ucla.edu - Javascript-based function (see references below).
Note that the population (10 men + 10 women = 20) is small, something to consider.
Either way, this principle is applied in the script, where conditions can be chosen like rsi, close, high, ...
🔹 CONDITION
Conditions are added to the left column ('CONDITION')
For example, previous rsi values (rsi ) between 0-100, divided in separate groups
🔹 CLOSE
Then, the movement of the last close is evaluated
UP when close is higher then previous close (close )
DOWN when close is lower then previous close
EQUAL when close is equal then previous close
It is also possible to use only 2 columns by adding EQUAL to UP or DOWN
UP
DOWN/EQUAL
or
UP/EQUAL
DOWN
In other words, when previous rsi value was between 80 and 90, this resulted in:
19 times a current close higher than previous close
14 times a current close lower than previous close
0 times a current close equal than previous close
However, the P-value tells us it is not statistical significant.
NOTE: Always keep in mind that past behaviour gives no certainty about future behaviour.
A vertical line is drawn at the beginning of the chosen population (max 4990)
Here, the results seem significant.
🔹 GROUPS
It is important to ensure that the groups are formed correctly. All possibilities should be present, and conditions should only be part of 1 group.
In the example above, the two top situations are acceptable; close against close can only be higher, lower or equal.
The two examples at the bottom, however, are very poorly constructed.
Several conditions can be placed in more than 1 group, and some conditions are not integrated into a group. Even if the results are significant, they are useless because of the group formation.
A population count is added as an aid to spot errors in group formation.
In this example, there is a discrepancy between the population and total count due to the absence of a condition.
The results when rsi was between 5-25 are not included, resulting in unreliable results.
🔹 PRACTICAL EXAMPLES
In this example, we have specific groups where the condition only applies to that group.
For example, the condition rsi > 55 and rsi <= 65 isn't true in another group.
Also, every possible rsi value (0 - 100) is present in 1 of the groups.
rsi > 15 and rsi <= 25 28 times UP, 19 times DOWN and 2 times EQUAL. P-value: 0.01171
When looking in detail and examining the area 15-25 RSI, we see this:
The population is now not representative (only checking for RSI between 15-25; all other RSI values are not included), so we can ignore the P-value in this case. It is merely to check in detail. In this case, the RSI values 23 and 24 seem promising.
NOTE: We should check what the close price did without any condition.
If, for example, the close price had risen 100 times out of 100, this would make things very relative.
In this case (at least two conditions need to be present), we set 1 condition at 'always true' and another at 'always false' so we'll get only the close values without any condition:
Changing the population or the conditions will change the P-value.
In the following example, the outcome is evaluated when:
close value from 1 bar back is higher than the close value from 2 bars back
close value from 1 bar back is lower/equal than the close value from 2 bars back
Or:
close value from 1 bar back is higher than the close value from 2 bars back
close value from 1 bar back is equal than the close value from 2 bars back
close value from 1 bar back is lower than the close value from 2 bars back
In both examples, all possibilities of close against close are included in the calculations. close can only by higher, equal or lower than close
Both examples have the results without a condition included (5 = 5 and 5 < 5) so one can compare the direction of current close.
🔶 NOTES
• Always keep in mind that:
Past behaviour gives no certainty about future behaviour.
Everything depends on time, cycles, events, fundamentals, technicals, ...
• This test only works for categorical data (data in categories), such as Gender {Men, Women} or color {Red, Yellow, Green, Blue} etc., but not numerical data such as height or weight. One might argue that such tests shouldn't use rsi, close, ... values.
• Consider what you're measuring
For example rsi of the current bar will always lead to a close higher than the previous close, since this is inherent to the rsi calculations.
• Be careful; often, there are na -values at the beginning of the series, which are not included in the calculations!
• Always keep in mind considering what the close price did without any condition
• The numbers must be large enough. Each entry must be five or more. In other words, it is vital to make the 'population' large enough.
• The code can be developed further, for example, by splitting UP, DOWN in close UP 1-2%, close UP 2-3%, close UP 3-4%, ...
• rsi can be supplemented with stochRSI, MFI, sma, ema, ...
🔶 SETTINGS
🔹 Population
• Choose the population size; in other words, how many bars you want to go back to. If fewer bars are available than set, this will be automatically adjusted.
🔹 Inputs
At least two conditions need to be chosen.
• Users can add up to 11 conditions, where each condition can contain two different conditions.
🔹 RSI
• Length
🔹 Levels
• Set the used levels as desired.
🔹 Levels
• P-value: P-value retrieved using a standard table method or a function.
• Used function, derived from Chi-Square Distribution Function; JavaScript
LogGamma(Z) =>
S = 1
+ 76.18009173 / Z
- 86.50532033 / (Z+1)
+ 24.01409822 / (Z+2)
- 1.231739516 / (Z+3)
+ 0.00120858003 / (Z+4)
- 0.00000536382 / (Z+5)
(Z-.5) * math.log(Z+4.5) - (Z+4.5) + math.log(S * 2.50662827465)
Gcf(float X, A) => // Good for X > A +1
A0=0., B0=1., A1=1., B1=X, AOLD=0., N=0
while (math.abs((A1-AOLD)/A1) > .00001)
AOLD := A1
N += 1
A0 := A1+(N-A)*A0
B0 := B1+(N-A)*B0
A1 := X*A0+N*A1
B1 := X*B0+N*B1
A0 := A0/B1
B0 := B0/B1
A1 := A1/B1
B1 := 1
Prob = math.exp(A * math.log(X) - X - LogGamma(A)) * A1
1 - Prob
Gser(X, A) => // Good for X < A +1
T9 = 1. / A
G = T9
I = 1
while (T9 > G* 0.00001)
T9 := T9 * X / (A + I)
G := G + T9
I += 1
G *= math.exp(A * math.log(X) - X - LogGamma(A))
Gammacdf(x, a) =>
GI = 0.
if (x<=0)
GI := 0
else if (x
Chisqcdf = Gammacdf(Z/2, DF/2)
Chisqcdf := math.round(Chisqcdf * 100000) / 100000
pValue = 1 - Chisqcdf
🔶 REFERENCES
mathsisfun.com, Chi-Square Test
Chi-Square Distribution Function