Are stop orders making money? [yohtza]Who is this indicator for and what does it do?
This is an indicator that helps price action traders in determining the strength of the trend and potential counter trend traps that present themselves during the move. It highlights the background of the bar at which counter trend traders that trade with stop orders (breakout entries) were able to achieve the same amount of reward as was their risk for that trade.
What is it based on?
When there is a strong trend in effect, the counter trend traders are unable to buy above(in bear trend) or sell below (in bull trend) a bar with a stop order and get an equal reward for the risk they are taking.
The first time counter trend traders are able to buy and make money in bear or sell and make money in bull it is a warning sign that market is likely transitioning into trading range phase of the market cycle.
Another application of the indicator is for discovering potential traps. If market comes very close to the take profit level of counter trend traders and reverses, they will usually try to get out with as much profit or as small of a loss as possible and that will often create a fast move (also called giving up) and a good with trend entry.
How does it work?
The indicator is using exponential moving average as a filter for when the market is trending and then scans for signals where counter trend traders enter. Next it looks if the stoploss or profit target was hit for that trade. If the profit target was hit it draws a box around the bar on which the traders entered, the box height is based on stoploss and profit target price levels.
Indicator inputs
- Scan for doji signal bars
When this option is selected, bars that have small bodies (less than 50% of their height) are also included as bars on which counter traders enter. If the option is not selected it only looks for bull trend bars (bodies are greater than 50% of their height) below the moving average and bear trend bars above the moving average.
- Border and background colors and border style
It is possible to select different colors and chose between solid, dashed and dotted borders
- Ema period
Default setting is 20 bar exponential moving average but feel free to use which you prefer
- Tick value
This is the value of the minimal movement of the chart you are trading on. For example for S&P 500 E-mini futures the value is 0.25 and that is the default setting.
Cari dalam skrip untuk "bar"
Volume Delta Compare [Ticks ~ LTF data]
The "Volume Delta Compare " publication shows 2 different techniques to show into-depth details of Volume, using Tick and Lower-Time-Frame (LTF) data.
🔶 USAGE
Check for divergences between price and volume movement
Check details (why and when a ΔV developed)
Or if you want to see a lot of data stacked on each other )
🔶 CONCEPTS
🔹 Tick vs. LTF data
a Tick is an measure of (upward or downward) movement in price OR volume.
We can use this data by using varip in the code.
Advantage:
• Detail, detail, detail
• Accurate, per tick
Disadvantage:
• Only realtime
• Can reset 'easily' -> loss of data
• Will reset when settings are changed
LTF data, through the request.security_lower_tf() function, measures the OHLCV data per LTF bar
Advantage:
• Access to history when loading a chart
• No 'loss' of data when chart resets
Disadvantage:
• Less detailed
• Less accurate
This script makes it possible to compare the 2 techniques and enables you to show different values.
🔹 Values
There are mainly 3 important values:
• UP volume (uV): volume when price rises
• DOWN volume (dV): volume when price falls
• NEUTRAL volume (nV): volume when price stays the same
From this, additional data is calculated:
• Volume Delta (ΔV): uV minus dV
• Cumulative Delta Volume (cΔV): sum of ΔV
One typical nV is at open: at that moment there isn't a base price to compare with,
so when the first trade doesn't fully fill the first supply (up or down), volume will rise, but price just is 'open', no movement -> no uV or dV.
• Tick data: every volume changement per tick will be added to the concerning variable (uV, dV or nV)
• LTF data: every volume changement of each bar will be added to the concerning variable (uV, dV or nV)
-> this can easily give a difference, for example (Tick vs. 1 minute LTF), when most of the ticks caused a rise of price, but at the last few seconds, a few ticks causes the close to come below open, with Tick data this could give more UP Volume, while LTF data will show 1 value of DOWN Volume.
🔶 EXAMPLES
🔹 Details
In these examples you can see:
• grey line: Total volume (higher precision)
• UP/DOWN/NEUTRAL Volume
• green columns: uV
• orange columns: dV
• blue pillars: nV
• coloured stepline: reflects ΔV
• close > open and positive ΔV -> green
• close > open but negative ΔV -> fuchsia
• close < open and negative ΔV -> orange
• close < open but positive ΔV -> bright lime green
• Right side -> indication of used data (Tick/LTF data) + last ΔV
• labels (can be disabled)
Above 0 (only with Tick data): data from EVERY tick (ΔV ):
• first the amount of Volume (0 when the amount is very minimal)
• between brackets: price movement
Below 0:
• Σ V: sum of uV, dV and nV, for that bar
• Σ up: sum of uV for that bar
• Σ dn: sum of dV for that bar
• Σ nt: sum of nV for that bar
• Σ P: sum of price movement, for that bar (only at Tick data)
(At the right you'll see a new bar just started)
Here is a detail of the first second at opening:
🔹 Cumulative Volume Delta (CVD)
Difference CVD based on Tick vs. LTF data :
(horizontal lines added for reference)
🔶 FEATURES
🔹 Minimal plotting of na values
Data window and status line only show what is applicable (tick or LTF data) to diminish clutter of data values:
The Tick option has a label above 0 which includes details of every Tick.
If data is added every tick, that label on a 10 minute chart will be filled beyond limitations pretty quickly (string max_length = 4096 limit).
To prevent the script stopping to execute, at a certain limit, this label will stop updating and show the message "Too much data".
The label below the 0-line won't reach that limit, so it will keep on updating.
Timeframes closer to 1 second will have less risk to reach that 4096 limit. Details will remain to show in this case.
🔹 Automatic label colour adaption when changing between dark/light mode values
Label background/text-colour will adapt according to the dark/light-mode by using chart.fg_color / chart.bg_color
🔶 SETTINGS
🔹 Data from: Ticks vs. LTF data
🔹 LTF: Lower Time-Frame for when LTF option is chosen: 1, 5, 10, 15, 30 Seconds or 1 minute
🔹 Also start when bar already has data: only for tick data -> when disabled calculations only start on a new bar.
🔹 CVD, Only show Cumulative Delta Volume: enable to just display CVD
🔹 Colours: colour at the right is for price/volume direction divergences
🔹 Label: choose what you want to display + size labels
🔹 0-line: The label under the 0-line sometimes goes below the chart. this can be adjusted with this setting.
Devs Cumulative Delta candles with Moving Average and DivergenceDELTA = BUY Volume – SELL Volumes
Delta = Positive => Aggressiveness on the Buy side
Delta = Negative => Aggressiveness on the Sell side
If delta is greater than 0 you have more buying than selling pressure. If delta is less than 0, you have more selling than buying pressure.
When there is more Buying than Selling (Delta=Positive), the price candle is Green and when there is more Selling than Buying (Delta=Negative), the price candle is Red. We use delta to understand the relationship between buying or selling pressure and price.
Let’s imagine a price bar that reached the low for the day but delta was actually positive and the bar closed higher than it opened.
In simple terms we can describe this as:
Price made a new low
The bar closed higher
Delta demonstrated more buying than selling : Volume delta is a key metric to understand when making trading decisions based on volume and order flow. However, on its own it can be too much information to interpret quickly when trading in a volatile market.
What are Delta Bars?
Delta Bars is a candlestick representation of Delta. In other words, it has an Open, High (also called Delta Max), Low (also called Delta Min) and Close point in every candle (1min, 5min, 30min etc.)
The Delta Open in every candle is always 0
The Delta Close is the cumulative BUY less cumulative SELL at the close if the candle
The Delta Max is the maximum value of Delta during the candle session (lowest Delta Max possible = 0)
The Delta Min is the minimum value of Delta during the candle session (highest Delta Min possible = 0) The Delta bars are uncorrelated to the Tick Multiplier of the symbol.
Generally you would expect Price to move UP when Delta is positive and Price to move DOWN when Delta is negative. So what happens when the above rule is not followed. We have Divergence
Divergence:
Any two parameters that should be in sync (Price and Delta in this case) towards supporting a particular move (Up or Down) but are in reality not (in sync) form a Divergence
Cumulative volume delta takes the delta values for every bar and successively adds them together to visually provide as seen in the chart.
While volume delta is great for comparing delta bar to bar, cumulative volume delta is useful when determining buying or selling pressure at different price levels such as swing highs or lows. I just gave you a details regarding delta and delta bars.
What details would you see in the indicator??
When you apply this indicator on the chart, you will find the CD(Cumulative delta) candles, which move up and down the way price moves in a chart. Moreover, in case of a divergence, you will find a change in colour of delta candles. If the price is still green but the delta is negative, you will find a bullish divergence, marked with Yellow colour and if the price is red and you have a positive delta, you will have a bearish divergence, marked with blue coloured delta candle. Usually it has been seen that a repeated divergence generally depicts end of a trend or slow down of a trend.
Moreover, I have placed 2 moving averages in the script which you can customize as per your needs. I prefer 20 and 50 day MA for better accuracy as most reversals happen at 20 and 50 day MA.
This indicator works in almost all index, stocks, currencies excepting few where the volume past is invisible. This indicator purely works taking the buying and selling volume into consideration. Sometimes when you change the timeframe in chart, you may have to manually adjust for the display in chart.
MOST + Moving Average ScreenerScreener version of Anıl Özekşi's Moving Stop Loss (MOST) Indicator:
USERS MAY SCREEN MOST WITH 11 DIFFERENT TYPES OF MOVING AVERAGES + THEY CAN ALSO SCREEN SIGNALS WITH THAT 11 MOVING AVERAGES INSTEAD OF USING MOST LINE.
Adjustable Moving Average Types:
SMA : Simple Moving Average
EMA : Exponential Moving Average
WMA : Weighted Moving Average
DEMA : Double Exponential Moving Average
TMA : Triangular Moving Average
VAR : Variable Index Dynamic Moving Average aka VIDYA
WWMA : Welles Wilder's Moving Average
ZLEMA : Zero Lag Exponential Moving Average
TSF : True Strength Force
HULL : Hull Moving Average
TILL : Tillson T3 Moving Average
About Screener Panel:
Users can explore 20 different and user-defined tickers, which can be changed from the SETTINGS (shares, crypto, commodities...) on this screener version.
The screener panel shows up right after the bars on the right side of the chart.
-In this screener version of MOST, users can define the number of demanded tickers (symbols) from 1 to 20 by checking the relevant boxes on the settings tab.
-All selected tickers can be screened in different timeframes.
-Also, different timeframes of the same Ticker can be screened.
IMPORTANT NOTICE:
Screener shows the results in 3 different logic:
1st LOGIC (Default Settings):
BUY AND SELL SIGNALS of MOST and MOVING AVERAGE LINE
Most Buy Signal: Moving Average Crosses ABOVE the MOST LINE
Most Sel Signal: Moving Average Crosses BELOW the MOST LINE
Tickers seen in green are the ones that are in an uptrend, according to MOST.
The ones that appear in red are those in the SELL signal, in a downtrend.
The numbers before each Ticker indicate how many bars passed after MOST's last BUY or SELL signal.
For example, according to the indicator, when BTCUSDT appears (3) in GREEN, Bitcoin switched to a BUY signal 3 bars ago.
2nd LOGIC (Moving Average & Price Flips Screener Mode):
This mode can only be activated by checking the 'Activate Moving Average Screening Mode' box on the settings menu.
MOST line will be disappeared after checking the box.
Buy Signal: When the Selected Price crosses ABOVE the selected Moving Average.
Sell Signal: When the Selected Price crosses BELOW the selected Moving Average.
Tickers seen in green are the ones that are in an uptrend, according to Moving Average & Price Flips.
The ones that appear in red are those in the SELL signal, in a downtrend.
The numbers before each Ticker indicate how many bars passed after the last BUY or SELL signal of Moving Average & Price Flips.
For example, according to the indicator, when BTCUSDT appears (3) in GREEN, Bitcoin switched to a BUY signal 3 bars ago.
3rd LOGIC (Moving Average Color Change Screener Mode):
Both 'Activate Moving Average Screening Mode' and 'Activate Moving Average Color Change Screening Mode' boxes must be checked in the settings tab.
Moving Average Line will turn out into two colors.
Green color means the moving average value is greater than the previous bar's value.
Red color means the moving average value is smaller than the previous bar's value.
Buy Signal: After the Selected Moving Average turns GREEN from red.
Sell Signal: After the Selected Moving Average turns RED from green.
-Screener shows the information about the color changes of the selected Moving Average with default settings.
If this option is preferred, users are advised to enlarge the length to have better signals.
Tickers seen in green are the ones that are in an uptrend, according to Moving Average Color.
The ones that appear in red are those in the SELL signal, in a downtrend.
The numbers before each Ticker indicate how many bars passed after the last BUY or SELL signal of Moving Average Color Change.
For example, according to the indicator, when BTCUSDT appears (3) in GREEN, Bitcoin switched to a BUY signal 3 bars ago.
RelativeValue█ OVERVIEW
This library is a Pine Script™ programmer's tool offering the ability to compute relative values, which represent comparisons of current data points, such as volume, price, or custom indicators, with their analogous historical data points from corresponding time offsets. This approach can provide insightful perspectives into the intricate dynamics of relative market behavior over time.
█ CONCEPTS
Relative values
In this library, a relative value is a metric that compares a current data point in a time interval to an average of data points with corresponding time offsets across historical periods. Its purpose is to assess the significance of a value by considering the historical context within past time intervals.
For instance, suppose we wanted to calculate relative volume on an hourly chart over five daily periods, and the last chart bar is two hours into the current trading day. In this case, we would compare the current volume to the average of volume in the second hour of trading across five days. We obtain the relative volume value by dividing the current volume by this average.
This form of analysis rests on the hypothesis that substantial discrepancies or aberrations in present market activity relative to historical time intervals might help indicate upcoming changes in market trends.
Cumulative and non-cumulative values
In the context of this library, a cumulative value refers to the cumulative sum of a series since the last occurrence of a specific condition (referred to as `anchor` in the function definitions). Given that relative values depend on time, we use time-based conditions such as the onset of a new hour, day, etc. On the other hand, a non-cumulative value is simply the series value at a specific time without accumulation.
Calculating relative values
Four main functions coordinate together to compute the relative values: `maintainArray()`, `calcAverageByTime()`, `calcCumulativeSeries()`, and `averageAtTime()`. These functions are underpinned by a `collectedData` user-defined type (UDT), which stores data collected since the last reset of the timeframe along with their corresponding timestamps. The relative values are calculated using the following procedure:
1. The `averageAtTime()` function invokes the process leveraging all four of the methods and acts as the main driver of the calculations. For each bar, this function adds the current bar's source and corresponding time value to a `collectedData` object.
2. Within the `averageAtTime()` function, the `maintainArray()` function is called at the start of each anchor period. It adds a new `collectedData` object to the array and ensures the array size does not exceed the predefined `maxSize` by removing the oldest element when necessary. This method plays an essential role in limiting memory usage and ensuring only relevant data over the desired number of periods is in the calculation window.
3. Next, the `calcAverageByTime()` function calculates the average value of elements within the `data` field for each `collectedData` object that corresponds to the same time offset from each anchor condition. This method accounts for cases where the current index of a `collectedData` object exceeds the last index of any past objects by using the last available values instead.
4. For cumulative calculations, the `averageAtTime()` function utilizes the `isCumulative` boolean parameter. If true, the `calcCumulativeSeries()` function will track the running total of the source data from the last bar where the anchor condition was met, providing a cumulative sum of the source values from one anchor point to the next.
To summarize, the `averageAtTime()` function continually stores values with their corresponding times in a `collectedData` object for each bar in the anchor period. When the anchor resets, this object is added to a larger array. The array's size is limited by the specified number of periods to be averaged. To correlate data across these periods, time indexing is employed, enabling the function to compare corresponding points across multiple periods.
█ USING THIS LIBRARY
The library simplifies the complex process of calculating relative values through its intuitive functions. Follow the steps below to use this library in your scripts.
Step 1: Import the library and declare inputs
Import the library and declare variables based on the user's input. These can include the timeframe for each period, the number of time intervals to include in the average, and whether the calculation uses cumulative values. For example:
//@version=5
import TradingView/RelativeValue/1 as TVrv
indicator("Relative Range Demo")
string resetTimeInput = input.timeframe("D")
int lengthInput = input.int(5, "No. of periods")
Step 2: Define the anchor condition
With these inputs declared, create a condition to define the start of a new period (anchor). For this, we use the change in the time value from the input timeframe:
bool anchor = timeframe.change(resetTimeInput)
Step 3: Calculate the average
At this point, one can calculate the average of a value's history at the time offset from the anchor over a number of periods using the `averageAtTime()` function. In this example, we use True Range (TR) as the `source` and set `isCumulative` to false:
float pastRange = TVrv.averageAtTime(ta.tr, lengthInput, anchor, false)
Step 4: Display the data
You can visualize the results by plotting the returned series. These lines display the non-cumulative TR alongside the average value over `lengthInput` periods for relative comparison:
plot(pastRange, "Past True Range Avg", color.new(chart.bg_color, 70), 1, plot.style_columns)
plot(ta.tr, "True Range", close >= open ? color.new(color.teal, 50) : color.new(color.red, 50), 1, plot.style_columns)
This example will display two overlapping series of columns. The green and red columns depict the current TR on each bar, and the light gray columns show the average over a defined number of periods, e.g., the default inputs on an hourly chart will show the average value at the hour over the past five days. This comparative analysis aids in determining whether the range of a bar aligns with its typical historical values or if it's an outlier.
█ NOTES
• The foundational concept of this library was derived from our initial Relative Volume at Time script. This library's logic significantly boosts its performance. Keep an eye out for a forthcoming updated version of the indicator. The demonstration code included in the library emulates a streamlined version of the indicator utilizing the library functions.
• Key efficiencies in the data management are realized through array.binary_search_leftmost() , which offers a performance improvement in comparison to its loop-dependent counterpart.
• This library's architecture utilizes user-defined types (UDTs) to create custom objects which are the equivalent of variables containing multiple parts, each able to hold independent values of different types . The recently added feature was announced in this blog post.
• To enhance readability, the code substitutes array functions with equivalent methods .
Look first. Then leap.
█ FUNCTIONS
This library contains the following functions:
calcCumulativeSeries(source, anchor)
Calculates the cumulative sum of `source` since the last bar where `anchor` was `true`.
Parameters:
source (series float) : Source used for the calculation.
anchor (series bool) : The condition that triggers the reset of the calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
Returns: (float) The cumulative sum of `source`.
averageAtTime(source, length, anchor, isCumulative)
Calculates the average of all `source` values that share the same time difference from the `anchor` as the current bar for the most recent `length` bars.
Parameters:
source (series float) : Source used for the calculation.
length (simple int) : The number of reset periods to consider for the average calculation of historical data.
anchor (series bool) : The condition that triggers the reset of the average calculation. The calculation is reset when `anchor` evaluates to `true`, and continues using the values accumulated since the previous reset when `anchor` is `false`.
isCumulative (simple bool) : If `true`, `source` values are accumulated until the next time `anchor` is `true`. Optional. The default is `true`.
Returns: (float) The average of the source series at the specified time difference.
MACD Chebyshev (CMACD)Introducing the Advanced MACD Chebyshev Indicator
Enhanced Convergence Divergence with Gate Compressor for Improved Trading Signals
Introduction
We are excited to introduce a new, advanced Moving Average Convergence Divergence (MACD) indicator that we've developed, called the MACD Chebyshev (CMACD). This innovative indicator uses the dominant period to determine the frequency of the band pass and employs a delayed version of the signal for better convergence divergence. To further enhance the quality of the signals, we've incorporated a gate compressor in the histogram. In this blog post, we will provide an extensive overview of the CMACD indicator, detailing its features and explaining how it works.
The MACD Chebyshev Indicator
The CMACD indicator is based on the well-known MACD indicator, which is a popular technical analysis tool for identifying potential trend reversals in financial markets. The MACD indicator calculates the difference between two Exponential Moving Averages (EMAs) and plots a histogram to represent the convergence and divergence between these EMAs. The CMACD indicator builds on this concept by using the Chebyshev Type I and Type II Moving Averages, which offer superior smoothing and reduced lag compared to traditional EMAs.
The main components of the CMACD indicator are:
1. Signal Line (Blue Line)
2. Delay Line (Orange Line)
3. Histogram (Green and Red bars)
4. Zero Line (Gray Line)
The indicator calculates the difference between the two Chebyshev Moving Averages and plots the histogram based on this difference. The histogram bars change color depending on whether they are above or below the zero line and whether they are growing or falling.
Custom Functions and Features
The CMACD indicator includes several custom functions and features that set it apart from the standard MACD indicator:
1. Dominant Period: The CMACD indicator uses the dominant period to determine the frequency of the band pass. This ensures that the indicator is more responsive to the current market conditions, as it adapts to the dominant cycle in the price data.
2. Delayed Signal: The CMACD indicator employs a delayed version of the signal to provide better convergence divergence. This helps to reduce false signals and improve the accuracy of the indicator.
3. Ripple: The Ripple parameter allows users to adjust the smoothing factor of the Chebyshev Moving Averages. This can be customized to suit individual trading preferences and strategies.
4. Gate Compressor: The CMACD indicator incorporates a gate compressor in the histogram. This unique feature allows users to specify a Percent Rank for the gate signal level, a Gate Ratio, and a Knee Type (either "hard" or "soft"). The gate compressor works by reducing the amplitude of the histogram bars when their absolute value is below the specified threshold. This helps to filter out noise and improve the clarity of the signals generated by the indicator.
Color Scheme
The CMACD indicator features an intuitive color scheme for easy interpretation of the histogram:
1. Green Bars (Above Zero Line): The histogram bars are green when they are above the zero line. The darker green color indicates a growing bar, while the lighter green color represents a falling bar.
2. Red Bars (Below Zero Line): The histogram bars are red when they are below the zero line. The darker red color indicates a growing bar, while the lighter red color represents a falling bar.
Conclusion
The MACD Chebyshev (CMACD) indicator is an innovative and powerful tool for technical analysis, offering superior performance compared to the standard MACD indicator. With its advanced features, such as the dominant period, delayed signal, ripple adjustment, and gate compressor, the CMACD indicator provides more accurate and reliable trading signals. Incorporate the CMACD indicator into your trading strategy today and experience the enhanced convergence divergence for better trading decisions.
Quinn-Fernandes Fourier Transform of Filtered Price [Loxx]Down the Rabbit Hole We Go: A Deep Dive into the Mysteries of Quinn-Fernandes Fast Fourier Transform and Hodrick-Prescott Filtering
In the ever-evolving landscape of financial markets, the ability to accurately identify and exploit underlying market patterns is of paramount importance. As market participants continuously search for innovative tools to gain an edge in their trading and investment strategies, advanced mathematical techniques, such as the Quinn-Fernandes Fourier Transform and the Hodrick-Prescott Filter, have emerged as powerful analytical tools. This comprehensive analysis aims to delve into the rich history and theoretical foundations of these techniques, exploring their applications in financial time series analysis, particularly in the context of a sophisticated trading indicator. Furthermore, we will critically assess the limitations and challenges associated with these transformative tools, while offering practical insights and recommendations for overcoming these hurdles to maximize their potential in the financial domain.
Our investigation will begin with a comprehensive examination of the origins and development of both the Quinn-Fernandes Fourier Transform and the Hodrick-Prescott Filter. We will trace their roots from classical Fourier analysis and time series smoothing to their modern-day adaptive iterations. We will elucidate the key concepts and mathematical underpinnings of these techniques and demonstrate how they are synergistically used in the context of the trading indicator under study.
As we progress, we will carefully consider the potential drawbacks and challenges associated with using the Quinn-Fernandes Fourier Transform and the Hodrick-Prescott Filter as integral components of a trading indicator. By providing a critical evaluation of their computational complexity, sensitivity to input parameters, assumptions about data stationarity, performance in noisy environments, and their nature as lagging indicators, we aim to offer a balanced and comprehensive understanding of these powerful analytical tools.
In conclusion, this in-depth analysis of the Quinn-Fernandes Fourier Transform and the Hodrick-Prescott Filter aims to provide a solid foundation for financial market participants seeking to harness the potential of these advanced techniques in their trading and investment strategies. By shedding light on their history, applications, and limitations, we hope to equip traders and investors with the knowledge and insights necessary to make informed decisions and, ultimately, achieve greater success in the highly competitive world of finance.
█ Fourier Transform and Hodrick-Prescott Filter in Financial Time Series Analysis
Financial time series analysis plays a crucial role in making informed decisions about investments and trading strategies. Among the various methods used in this domain, the Fourier Transform and the Hodrick-Prescott (HP) Filter have emerged as powerful techniques for processing and analyzing financial data. This section aims to provide a comprehensive understanding of these two methodologies, their significance in financial time series analysis, and their combined application to enhance trading strategies.
█ The Quinn-Fernandes Fourier Transform: History, Applications, and Use in Financial Time Series Analysis
The Quinn-Fernandes Fourier Transform is an advanced spectral estimation technique developed by John J. Quinn and Mauricio A. Fernandes in the early 1990s. It builds upon the classical Fourier Transform by introducing an adaptive approach that improves the identification of dominant frequencies in noisy signals. This section will explore the history of the Quinn-Fernandes Fourier Transform, its applications in various domains, and its specific use in financial time series analysis.
History of the Quinn-Fernandes Fourier Transform
The Quinn-Fernandes Fourier Transform was introduced in a 1993 paper titled "The Application of Adaptive Estimation to the Interpolation of Missing Values in Noisy Signals." In this paper, Quinn and Fernandes developed an adaptive spectral estimation algorithm to address the limitations of the classical Fourier Transform when analyzing noisy signals.
The classical Fourier Transform is a powerful mathematical tool that decomposes a function or a time series into a sum of sinusoids, making it easier to identify underlying patterns and trends. However, its performance can be negatively impacted by noise and missing data points, leading to inaccurate frequency identification.
Quinn and Fernandes sought to address these issues by developing an adaptive algorithm that could more accurately identify the dominant frequencies in a noisy signal, even when data points were missing. This adaptive algorithm, now known as the Quinn-Fernandes Fourier Transform, employs an iterative approach to refine the frequency estimates, ultimately resulting in improved spectral estimation.
Applications of the Quinn-Fernandes Fourier Transform
The Quinn-Fernandes Fourier Transform has found applications in various fields, including signal processing, telecommunications, geophysics, and biomedical engineering. Its ability to accurately identify dominant frequencies in noisy signals makes it a valuable tool for analyzing and interpreting data in these domains.
For example, in telecommunications, the Quinn-Fernandes Fourier Transform can be used to analyze the performance of communication systems and identify interference patterns. In geophysics, it can help detect and analyze seismic signals and vibrations, leading to improved understanding of geological processes. In biomedical engineering, the technique can be employed to analyze physiological signals, such as electrocardiograms, leading to more accurate diagnoses and better patient care.
Use of the Quinn-Fernandes Fourier Transform in Financial Time Series Analysis
In financial time series analysis, the Quinn-Fernandes Fourier Transform can be a powerful tool for isolating the dominant cycles and frequencies in asset price data. By more accurately identifying these critical cycles, traders can better understand the underlying dynamics of financial markets and develop more effective trading strategies.
The Quinn-Fernandes Fourier Transform is used in conjunction with the Hodrick-Prescott Filter, a technique that separates the underlying trend from the cyclical component in a time series. By first applying the Hodrick-Prescott Filter to the financial data, short-term fluctuations and noise are removed, resulting in a smoothed representation of the underlying trend. This smoothed data is then subjected to the Quinn-Fernandes Fourier Transform, allowing for more accurate identification of the dominant cycles and frequencies in the asset price data.
By employing the Quinn-Fernandes Fourier Transform in this manner, traders can gain a deeper understanding of the underlying dynamics of financial time series and develop more effective trading strategies. The enhanced knowledge of market cycles and frequencies can lead to improved risk management and ultimately, better investment performance.
The Quinn-Fernandes Fourier Transform is an advanced spectral estimation technique that has proven valuable in various domains, including financial time series analysis. Its adaptive approach to frequency identification addresses the limitations of the classical Fourier Transform when analyzing noisy signals, leading to more accurate and reliable analysis. By employing the Quinn-Fernandes Fourier Transform in financial time series analysis, traders can gain a deeper understanding of the underlying financial instrument.
Drawbacks to the Quinn-Fernandes algorithm
While the Quinn-Fernandes Fourier Transform is an effective tool for identifying dominant cycles and frequencies in financial time series, it is not without its drawbacks. Some of the limitations and challenges associated with this indicator include:
1. Computational complexity: The adaptive nature of the Quinn-Fernandes Fourier Transform requires iterative calculations, which can lead to increased computational complexity. This can be particularly challenging when analyzing large datasets or when the indicator is used in real-time trading environments.
2. Sensitivity to input parameters: The performance of the Quinn-Fernandes Fourier Transform is dependent on the choice of input parameters, such as the number of harmonic periods, frequency tolerance, and Hodrick-Prescott filter settings. Choosing inappropriate parameter values can lead to inaccurate frequency identification or reduced performance. Finding the optimal parameter settings can be challenging, and may require trial and error or a more sophisticated optimization process.
3. Assumption of stationary data: The Quinn-Fernandes Fourier Transform assumes that the underlying data is stationary, meaning that its statistical properties do not change over time. However, financial time series data is often non-stationary, with changing trends and volatility. This can limit the effectiveness of the indicator and may require additional preprocessing steps, such as detrending or differencing, to ensure the data meets the assumptions of the algorithm.
4. Limitations in noisy environments: Although the Quinn-Fernandes Fourier Transform is designed to handle noisy signals, its performance may still be negatively impacted by significant noise levels. In such cases, the identification of dominant frequencies may become less reliable, leading to suboptimal trading signals or strategies.
5. Lagging indicator: As with many technical analysis tools, the Quinn-Fernandes Fourier Transform is a lagging indicator, meaning that it is based on past data. While it can provide valuable insights into historical market dynamics, its ability to predict future price movements may be limited. This can result in false signals or late entries and exits, potentially reducing the effectiveness of trading strategies based on this indicator.
Despite these drawbacks, the Quinn-Fernandes Fourier Transform remains a valuable tool for financial time series analysis when used appropriately. By being aware of its limitations and adjusting input parameters or preprocessing steps as needed, traders can still benefit from its ability to identify dominant cycles and frequencies in financial data, and use this information to inform their trading strategies.
█ Deep-dive into the Hodrick-Prescott Fitler
The Hodrick-Prescott (HP) filter is a statistical tool used in economics and finance to separate a time series into two components: a trend component and a cyclical component. It is a powerful tool for identifying long-term trends in economic and financial data and is widely used by economists, central banks, and financial institutions around the world.
The HP filter was first introduced in the 1990s by economists Robert Hodrick and Edward Prescott. It is a simple, two-parameter filter that separates a time series into a trend component and a cyclical component. The trend component represents the long-term behavior of the data, while the cyclical component captures the shorter-term fluctuations around the trend.
The HP filter works by minimizing the following objective function:
Minimize: (Sum of Squared Deviations) + λ (Sum of Squared Second Differences)
Where:
1. The first term represents the deviation of the data from the trend.
2. The second term represents the smoothness of the trend.
3. λ is a smoothing parameter that determines the degree of smoothness of the trend.
The smoothing parameter λ is typically set to a value between 100 and 1600, depending on the frequency of the data. Higher values of λ lead to a smoother trend, while lower values lead to a more volatile trend.
The HP filter has several advantages over other smoothing techniques. It is a non-parametric method, meaning that it does not make any assumptions about the underlying distribution of the data. It also allows for easy comparison of trends across different time series and can be used with data of any frequency.
Another significant advantage of the HP Filter is its ability to adapt to changes in the underlying trend. This feature makes it particularly well-suited for analyzing financial time series, which often exhibit non-stationary behavior. By employing the HP Filter to smooth financial data, traders can more accurately identify and analyze the long-term trends that drive asset prices, ultimately leading to better-informed investment decisions.
However, the HP filter also has some limitations. It assumes that the trend is a smooth function, which may not be the case in some situations. It can also be sensitive to changes in the smoothing parameter λ, which may result in different trends for the same data. Additionally, the filter may produce unrealistic trends for very short time series.
Despite these limitations, the HP filter remains a valuable tool for analyzing economic and financial data. It is widely used by central banks and financial institutions to monitor long-term trends in the economy, and it can be used to identify turning points in the business cycle. The filter can also be used to analyze asset prices, exchange rates, and other financial variables.
The Hodrick-Prescott filter is a powerful tool for analyzing economic and financial data. It separates a time series into a trend component and a cyclical component, allowing for easy identification of long-term trends and turning points in the business cycle. While it has some limitations, it remains a valuable tool for economists, central banks, and financial institutions around the world.
█ Combined Application of Fourier Transform and Hodrick-Prescott Filter
The integration of the Fourier Transform and the Hodrick-Prescott Filter in financial time series analysis can offer several benefits. By first applying the HP Filter to the financial data, traders can remove short-term fluctuations and noise, effectively isolating the underlying trend. This smoothed data can then be subjected to the Fourier Transform, allowing for the identification of dominant cycles and frequencies with greater precision.
By combining these two powerful techniques, traders can gain a more comprehensive understanding of the underlying dynamics of financial time series. This enhanced knowledge can lead to the development of more effective trading strategies, better risk management, and ultimately, improved investment performance.
The Fourier Transform and the Hodrick-Prescott Filter are powerful tools for financial time series analysis. Each technique offers unique benefits, with the Fourier Transform being adept at identifying dominant cycles and frequencies, and the HP Filter excelling at isolating long-term trends from short-term noise. By combining these methodologies, traders can develop a deeper understanding of the underlying dynamics of financial time series, leading to more informed investment decisions and improved trading strategies. As the financial markets continue to evolve, the combined application of these techniques will undoubtedly remain an essential aspect of modern financial analysis.
█ Features
Endpointed and Non-repainting
This is an endpointed and non-repainting indicator. These are crucial factors that contribute to its usefulness and reliability in trading and investment strategies. Let us break down these concepts and discuss why they matter in the context of a financial indicator.
1. Endpoint nature: An endpoint indicator uses the most recent data points to calculate its values, ensuring that the output is timely and reflective of the current market conditions. This is in contrast to non-endpoint indicators, which may use earlier data points in their calculations, potentially leading to less timely or less relevant results. By utilizing the most recent data available, the endpoint nature of this indicator ensures that it remains up-to-date and relevant, providing traders and investors with valuable and actionable insights into the market dynamics.
2. Non-repainting characteristic: A non-repainting indicator is one that does not change its values or signals after they have been generated. This means that once a signal or a value has been plotted on the chart, it will remain there, and future data will not affect it. This is crucial for traders and investors, as it offers a sense of consistency and certainty when making decisions based on the indicator's output.
Repainting indicators, on the other hand, can change their values or signals as new data comes in, effectively "repainting" the past. This can be problematic for several reasons:
a. Misleading results: Repainting indicators can create the illusion of a highly accurate or successful trading system when backtesting, as the indicator may adapt its past signals to fit the historical price data. This can lead to overly optimistic performance results that may not hold up in real-time trading.
b. Decision-making uncertainty: When an indicator repaints, it becomes challenging for traders and investors to trust its signals, as the signal that prompted a trade may change or disappear after the fact. This can create confusion and indecision, making it difficult to execute a consistent trading strategy.
The endpoint and non-repainting characteristics of this indicator contribute to its overall reliability and effectiveness as a tool for trading and investment decision-making. By providing timely and consistent information, this indicator helps traders and investors make well-informed decisions that are less likely to be influenced by misleading or shifting data.
Inputs
Source: This input determines the source of the price data to be used for the calculations. Users can select from options like closing price, opening price, high, low, etc., based on their preferences. Changing the source of the price data (e.g., from closing price to opening price) will alter the base data used for calculations, which may lead to different patterns and cycles being identified.
Calculation Bars: This input represents the number of past bars used for the calculation. A higher value will use more historical data for the analysis, while a lower value will focus on more recent price data. Increasing the number of past bars used for calculation will incorporate more historical data into the analysis. This may lead to a more comprehensive understanding of long-term trends but could also result in a slower response to recent price changes. Decreasing this value will focus more on recent data, potentially making the indicator more responsive to short-term fluctuations.
Harmonic Period: This input represents the harmonic period, which is the number of harmonics used in the Fourier Transform. A higher value will result in more harmonics being used, potentially capturing more complex cycles in the price data. Increasing the harmonic period will include more harmonics in the Fourier Transform, potentially capturing more complex cycles in the price data. However, this may also introduce more noise and make it harder to identify clear patterns. Decreasing this value will focus on simpler cycles and may make the analysis clearer, but it might miss out on more complex patterns.
Frequency Tolerance: This input represents the frequency tolerance, which determines how close the frequencies of the harmonics must be to be considered part of the same cycle. A higher value will allow for more variation between harmonics, while a lower value will require the frequencies to be more similar. Increasing the frequency tolerance will allow for more variation between harmonics, potentially capturing a broader range of cycles. However, this may also introduce noise and make it more difficult to identify clear patterns. Decreasing this value will require the frequencies to be more similar, potentially making the analysis clearer, but it might miss out on some cycles.
Number of Bars to Render: This input determines the number of bars to render on the chart. A higher value will result in more historical data being displayed, but it may also slow down the computation due to the increased amount of data being processed. Increasing the number of bars to render on the chart will display more historical data, providing a broader context for the analysis. However, this may also slow down the computation due to the increased amount of data being processed. Decreasing this value will speed up the computation, but it will provide less historical context for the analysis.
Smoothing Mode: This input allows the user to choose between two smoothing modes for the source price data: no smoothing or Hodrick-Prescott (HP) smoothing. The choice depends on the user's preference for how the price data should be processed before the Fourier Transform is applied. Choosing between no smoothing and Hodrick-Prescott (HP) smoothing will affect the preprocessing of the price data. Using HP smoothing will remove some of the short-term fluctuations from the data, potentially making the analysis clearer and more focused on longer-term trends. Not using smoothing will retain the original price fluctuations, which may provide more detail but also introduce noise into the analysis.
Hodrick-Prescott Filter Period: This input represents the Hodrick-Prescott filter period, which is used if the user chooses to apply HP smoothing to the price data. A higher value will result in a smoother curve, while a lower value will retain more of the original price fluctuations. Increasing the Hodrick-Prescott filter period will result in a smoother curve for the price data, emphasizing longer-term trends and minimizing short-term fluctuations. Decreasing this value will retain more of the original price fluctuations, potentially providing more detail but also introducing noise into the analysis.
Alets and signals
This indicator featues alerts, signals and bar coloring. You have to option to turn these on/off in the settings menu.
Maximum Bars Restriction
This indicator requires a large amount of processing power to render on the chart. To reduce overhead, the setting "Number of Bars to Render" is set to 500 bars. You can adjust this to you liking.
█ Related Indicators and Libraries
Goertzel Cycle Composite Wave
Goertzel Browser
Fourier Spectrometer of Price w/ Extrapolation Forecast
Fourier Extrapolator of 'Caterpillar' SSA of Price
Normalized, Variety, Fast Fourier Transform Explorer
Real-Fast Fourier Transform of Price Oscillator
Real-Fast Fourier Transform of Price w/ Linear Regression
Fourier Extrapolation of Variety Moving Averages
Fourier Extrapolator of Variety RSI w/ Bollinger Bands
Fourier Extrapolator of Price w/ Projection Forecast
Fourier Extrapolator of Price
STD-Stepped Fast Cosine Transform Moving Average
Variety RSI of Fast Discrete Cosine Transform
loxfft
Net Positions (Net Longs & Net Shorts) - By LeviathanThis script is an experimental indicator that visualizes the entering and exiting of long and short positions in the market. It also includes other useful tools, such as NL/NS Profile, NL/NS Delta, NL/NS Ratio, Volume Heatmap, Divergence finder, Relative Strength Index of Net Longs and Net Shorts, EMAs and VWMAs and more.
To avoid misinterpretation, it's important to understand some basics. The “real” ratio between net long and net short positions in a given market is always 1:1. A futures contract is an agreement between two parties to buy or sell an underlying asset at an agreed-upon price. Each contract has a long side and a short side, with one party agreeing to buy (long) and the other party agreeing to sell (short) the asset at the agreed-upon price. The long position holder anticipates that the asset's price will rise, while the short position holder expects it to fall. Because every futures contract involves both a buyer and a seller, it is impossible to have more net longs than net shorts or vice versa (in terms of the net value). For every long position opened, there must be a corresponding short position taken by another market participant (and vice versa), thus maintaining the 1:1 ratio between longs and shorts. While there can be an imbalance in the number of traders/accounts holding long and short contracts, the net value of positions held on each side remains 1 to 1.
Open Interest (OI) is a metric that tracks the number of open (unsettled) contracts in a given market. For example, Open Interest of 100 BTC means that there are currently 100 BTC worth of longs and 100 BTC worth of shorts open in the market. There may be more traders on one side holding smaller positions, and fewer traders on the other side holding larger positions, but the net value of positions on one side is equal to the net value of positions on the other side → 100 BTC in longs and 100 BTC in shorts (1:1). Consider a scenario in which a trader decides to open a long position for 1 BTC at a price of HKEX:30 ,000. For this long order to be executed, a counterparty must take the opposite side of the contract by placing an order to short 1 BTC at the same price of HKEX:30 ,000. When both the long and short orders are matched and executed, the open interest increases by 1 BTC, reflecting the addition of this new contract to the market.
Changes in Open Interest essentially tell us 3 things:
- OI Increase - new positions entered the market (both longs and shorts!)
- OI Decrease - positions exited the market (both longs and shorts!)
- OI Flat - no change in open positions due to low activity or simply lots of transfers of contracts
However, different concepts can be used to analyze sentiment, aggressiveness, and activity in the market by analyzing data such as Open Interest, price, volume, etc. This indicator combines Open Interest data and price action to simplify the visualization of positions entering and exiting the market. It is based on the following concept:
Increase in Open Interest + Increase in price = Longs Opening
Decrease in Open Interest + Decrease in price = Longs Closing
Increase in Open Interest + Decrease in price = Shorts Opening
Decrease in Open Interest + Increase in price = Shorts Closing
When "Longs Opening" occurs, the OI Delta value is added to the running total of Net Longs, and when "Longs Closing" occurs, the OI Delta value is subtracted from the running total of Net Longs.
When "Shorts Opening" occurs, the OI Delta value is added to the running total of Net Shorts, and when "Shorts Closing" occurs, the OI Delta value is subtracted from the running total of Net Shorts.
To summarize:
Net Longs: Cumulative value of Longs Opening and Longs Closing (LO - LC)
Net Shorts: Cumulative value of Shorts Opening and Shorts Closing (SO - SC)
Net Delta: Net Longs - Net Shorts
Net Ratio: Net Longs / Net Shorts
This is the fundamental logic of how this script functions, but it also includes several other tools and options. Here is an overview of the settings:
Type:
- Net Positions (display values of Net Longs, Net Shorts, Net Delta, Net Ratio as described above)
- Relative Strength (display Net Longs, Net Shorts, Net Delta, Net Ratio in the form of a momentum oscillator that measures the speed and change of movements. Same logic as RSI for price)
Display as:
- Candles (display the data in the form of candlesticks)
- Lines (display the data in the form of candlesticks)
- Columns (display the data in the form of columns)
Cumulation:
- Visible Range (data is cumulated from the first visible bar on your chart)
- Full Data (data is cumulated from the beginning)
Quoted in:
- Base Currency (all data is presented in the pair’s base currency eg. BTC)
- Quote Currency (all data is presented in the pair’s quote currency eg USDT)
OI Sources
- Pick the sources from where the data is collected (if available).
Net Positions:
- NET LONGS (show/hide Net Longs plot, choose candle colors, choose line color)
- NET SHORTS (show/hide Net Shorts plot, choose candle colors, choose line color)
- NET DELTA (show/hide Net Delta plot, choose candle colors, choose line color)
- NET RATIO (show/hide Net Ratio plot, choose candle colors, choose line color)
Moving Averages:
- Type (choose between EMA and Volume Weighted Moving Average)
- NET LONGS (show/hide NL moving average plot, choose length, choose color)
- NET SHORTS (show/hide NS moving average plot, choose length, choose color)
- NET DELTA (show/hide ND moving average plot, choose length, choose color)
- NET RATIO (show/hide NR moving average plot, choose length, choose color)
Profile:
- Profile Data (choose the source data of the profile)
- Value Area % (set the percentage width of profile’s value area)
- Positions (set the position of the profile to left or right of the visible range)
- Node Size (set the relative size of nodes to make them appear smaller or larger)
- Rows (select the amount of rows displayed by the profile to control granularity)
- POC (show/hide POC- Point Of Control and select its color)
- VA (show/hide VA- Value Area and select its color)
Divergence finder
- Source (choose the source data used by the script to compare it with price pivot points)
- Maximum distance (the maximum distance between two divergent pivot points)
- Lookback Bars Left (the number of bars to the left of the current bar that the function will consider when looking for a pivot point)
- Lookback Bars Right (the number of bars to the right of the current bar that the function will consider when looking for a pivot point)
Stats:
- Show/Hide the Stats table
- Bars Back (choose the length of data analyzed for stats in number of bars)
- Position (choose the position of the Stats table)
- Select Data you want to display in the Stats table
Additional Settings:
- Volume Heatmap (show/hide volume heatmap and select its color)
- Label Offset (select how much the plot label is shifted to the right
- Position Relative Strength Length (select the length used in the calculation)
- Value Label (show/hide OI Delta values when candles are displayed)
- Plot Labels (show/hide the labels next to the plot)
- Wicks (show/hide wick when candles are displayed)
Code used for generating profiles is taken from @KioseffTrading's "Profile Any Indicator" script (used with author's permission)
Market Structure & Liquidity: CHoCHs+Nested Pivots+FVGs+Sweeps//Purpose:
This indicator combines several tools to help traders track and interpret price action/market structure; It can be divided into 4 parts;
1. CHoCHs, 2. Nested Pivot highs & lows, 3. Grade sweeps, 4. FVGs.
This gives the trader a toolkit for determining market structure and shifts in market structure to help determine a bull or bear bias, whether it be short-term, med-term or long-term.
This indicator also helps traders in determining liquidity targets: wether they be voids/gaps (FVGS) or old highs/lows+ typical sweep distances.
Finally, the incorporation of HTF CHoCH levels printing on your LTF chart helps keep the bigger picture in mind and tells traders at a glance if they're above of below Custom HTF CHoCH up or CHoCH down (these HTF CHoCHs can be anything from Hourly up to Monthly).
//Nomenclature:
CHoCH = Change of Character
STH/STL = short-term high or low
MTH/MTL = medium-term high or low
LTH/LTL = long-term high or low
FVG = Fair value gap
CE = consequent encroachement (the midline of a FVG)
~~~ The Four components of this indicator ~~~
1. CHoCHs:
•Best demonstrated in the below charts. This was a method taught to me by @Icecold_crypto. Once a 3 bar fractal pivot gets broken, we count backwards the consecutive higher lows or lower highs, then identify the CHoCH as the opposite end of the candle which ended the consecutive backwards count. This CHoCH (UP or DOWN) then becomes a level to watch, if price passes through it in earnest a trader would consider shifting their bias as market structure is deemed to have shifted.
•HTF CHoCHs: Option to print Higher time frame chochs (default on) of user input HTF. This prints only the last UP choch and only the last DOWN choch from the input HTF. Solid line by default so as to distinguish from local/chart-time CHoCHs. Can be any Higher timeframe you like.
•Show on table: toggle on show table(above/below) option to show in table cells (top right): is price above the latest HTF UP choch, or is price below HTF DOWN choch (or is it sat between the two, in a state of 'uncertainty').
•Most recent CHoCHs which have not been met by price will extend 10 bars into the future.
• USER INPUTS: overall setting: SHOW CHOCHS | Set bars lookback number to limit historical Chochs. Set Live CHoCHs number to control the number of active recent chochs unmet by price. Toggle shrink chochs once hit to declutter chart and minimize old chochs to their origin bars. Set Multi-timeframe color override : to make Color choices auto-set to your preference color for each of 1m, 5m, 15m, H, 4H, D, W, M (where up and down are same color, but 'up' icon for up chochs and down icon for down chochs remain printing as normal)
2. Nested Pivot Highs & Lows; aka 'Pivot Highs & Lows (ST/MT/LT)'
•Based on a seperate, longer lookback/lookforward pivot calculation. Identifies Pivot highs and lows with a 'spikeyness' filter (filtering out weak/rounded/unimpressive Pivot highs/lows)
•by 'nested' I mean that the pivot highs are graded based on whether a pivot high sits between two lower pivot highs or vice versa.
--for example: STH = normal pivot. MTH is pivot high with a lower STH on either side. LTH is a pivot high with a lower MTH on either side. Same applies to pivot lows (STL/MTL/LTL)
•This is a useful way to measure the significance of a high or low. Both in terms of how much it might be typically swept by (see later) and what it would imply for HTF bias were we to break through it in earnest (more than just a sweep).
• USER INPUTS: overall setting: show pivot highs & lows | Bars lookback (historical pivots to show) | Pivots: lookback/lookforward length (determines the scale of your pivot highs/lows) | toggle on/off Apply 'Spikeyness' filter (filters out smooth/unimpressive pivot highs/lows). Set Spikeyness index (determines the strength of this filter if turned on) | Individually toggle on each of STH, MTH, LTH, STL, MTL, LTL along with their label text type , and size . Toggle on/off line for each of these Pivot highs/lows. | Set label spacer (atr multiples above / below) | set line style and line width
3. Grade Sweeps:
•These are directly related to the nested pivots described above. Most assets will have a typical sweep distance. I've added some of my expected sweeps for various assets in the indicator tooltips.
--i.e. Eur/Usd 10-20-30 pips is a typical 'grade' sweep. S&P HKEX:5 - HKEX:10 is a typical grade sweep.
•Each of the ST/MT/LT pivot highs and lows have optional user defined grade sweep boxes which paint above until filled (or user option for historical filled boxes to remain).
•Numbers entered into sweep input boxes are auto converted into appropriate units (i.e. pips for FX, $ or 'handles' for indices, $ for Crypto. Very low $ units can be input for low unit value crypto altcoins.
• USER INPUTS: overall setting: Show sweep boxes | individually select colors of each of STH, MTH, LTH, STL, MTL, LTL sweep boxes. | Set Grade sweep ($/pips) number for each of ST, MT, LT. This auto converts between pips and $ (i.e. FX vs Indices/Crypto). Can be a float as small or large as you like ($0.000001 to HKEX:1000 ). | Set box text position (horizontal & vertical) and size , and color . | Set Box width (bars) (for non extended/ non-auto-terminating at price boxes). | toggle on/off Extend boxes/lines right . | Toggle on/off Shrink Grade sweeps on fill (they will disappear in realtime when filled/passed through)
4. FVGs:
•Fair Value gaps. Represent 'naked' candle bodies where the wicks to either side do not meet, forming a 'gap' of sorts which has a tendency to fill, or at least to fill to midline (CE).
•These are ICT concepts. 'UP' FVGS are known as BISIs (Buyside imbalance, sellside inefficiency); 'DOWN' FVGs are known as SIBIs (Sellside imbalance, buyside inefficiency).
• USER INPUTS: overall setting: show FVGs | Bars lookback (history). | Choose to display: 'UP' FVGs (BISI) and/or 'DOWN FVGs (SIBI) . Choose to display the midline: CE , the color and the line style . Choose threshold: use CE (as opposed to Full Fill) |toggle on/off Shrink FVG on fill (CE hit or Full fill) (declutter chart/see backtesting history)
////••Alerts (general notes & cautionary notes)::
•Alerts are optional for most of the levels printed by this indicator. Set them via the three dots on indicator status line.
•Due to dynamic repainting of levels, alerts should be used with caution. Best use these alerts either for Higher time frame levels, or when closely monitoring price.
--E.g. You may set an alert for down-fill of the latest FVG below; but price will keep marching up; form a newer/higher FVG, and the alert will trigger on THAT FVG being down-filled (not the original)
•Available Alerts:
-FVG(BISI) cross above threshold(CE or full-fill; user choice). Same with FVG(SIBI).
-HTF last CHoCH down, cross below | HTF last CHoCH up, cross above.
-last CHoCH down, cross below | last CHoCH up, cross above.
-LTH cross above, MTH cross above, STH cross above | LTL cross below, MTL cross below, STL cross below.
////••Formatting (general)::
•all table text color is set from the 'Pivot highs & Lows (ST, MT, LT)' section (for those of you who prefer black backgrounds).
•User choice of Line-style, line color, line width. Same with Boxes. Icon choice for chochs. Char or label text choices for ST/MT/LT pivot highs & lows.
////••User Inputs (general):
•Each of the 4 components of this indicator can be easily toggled on/off independently.
•Quite a lot of options and toggle boxes, as described in full above. Please take your time and read through all the tooltips (hover over '!' icon) to get an idea of formatting options.
•Several Lookback periods defined in bars to control how much history is shown for each of the 4 components of this indicator.
•'Shrink on fill' settings on FVGs and CHoCHs: Basically a way to declutter chart; toggle on/off depending on if you're backtesting or reading live price action.
•Table Display: applies to ST/MT/LT pivot highs and to HTF CHoCHs; Toggle table on or off (in part or in full)
////••Credits:
•Credit to ICT (Inner Circle Trader) for some of the concepts used in this indicator (FVGS & CEs; Grade sweeps).
•Credit to @Icecold_crypto for the specific and novel concept of identifying CHoCHs in a simple, objective and effective manner (as demonstrated in the 1st chart below).
CHoCH demo page 1: shifting tweak; arrow diagrams to demonstrate how CHoCHs are defined:
CHoCH demo page 2: Simplified view; short lookback history; few CHoCHs, demo of 'latest' choch being extended into the future by 10 bars:
USAGE: Bitcoin Hourly using HTF daily CHoCHs:
USAGE-2: Cotton Futures (CT1!) 2hr. Painting a rather bullish picture. Above HTF UP CHoCH, Local CHoCHs show bullish order flow, Nice targets above (MTH/LTH + grade sweeps):
Full Demo; 5min chart; CHoCHs, Short term pivot highs/lows, grade sweeps, FVGs:
Full Demo, Eur/Usd 15m: STH, MTH, LTH grade sweeps, CHoCHs, Usage for finding bias (part A):
Full Demo, Eur/Usd 15m: STH, MTH, LTH grade sweeps, CHoCHs, Usage for finding bias, 3hrs later (part B):
Realtime Vs Backtesting(A): btc/usd 15m; FVGs and CHoCHs: shrink on fill, once filled they repaint discreetly on their origin bar only. Realtime (Shrink on fill, declutter chart):
Realtime Vs Backtesting(B): btc/usd 15m; FVGs and CHoCHs: DON'T shrink on fill; they extend to the point where price crosses them, and fix/paint there. Backtesting (seeing historical behaviour):
Variety MA Cluster Filter Crosses [Loxx]What is a Cluster Filter?
One of the approaches to determining a useful signal (trend) in stream data. Small filtering (smoothing) tests applied to market quotes demonstrate the potential for creating non-lagging digital filters (indicators) that are not redrawn on the last bars.
Standard Approach
This approach is based on classical time series smoothing methods. There are lots of articles devoted to this subject both on this and other websites. The results are also classical:
1. The changes in trends are displayed with latency;
2. Better indicator (digital filter) response achieved at the expense of smoothing quality decrease;
3. Attempts to implement non-lagging indicators lead to redrawing on the last samples (bars).
And whereas traders have learned to cope with these things using persistence of economic processes and other tricks, this would be unacceptable in evaluating real-time experimental data, e.g. when testing aerostructures.
The Main Problem
It is a known fact that the majority of trading systems stop performing with the course of time, and that the indicators are only indicative over certain intervals. This can easily be explained: market quotes are not stationary. The definition of a stationary process is available in Wikipedia:
A stationary process is a stochastic process whose joint probability distribution does not change when shifted in time.
Judging by this definition, methods of analysis of stationary time series are not applicable in technical analysis. And this is understandable. A skillful market-maker entering the market will mess up all the calculations we may have made prior to that with regard to parameters of a known series of market quotes.
Even though this seems obvious, a lot of indicators are based on the theory of stationary time series analysis. Examples of such indicators are moving averages and their modifications. However, there are some attempts to create adaptive indicators. They are supposed to take into account non-stationarity of market quotes to some extent, yet they do not seem to work wonders. The attempts to "punish" the market-maker using the currently known methods of analysis of non-stationary series (wavelets, empirical modes and others) are not successful either. It looks like a certain key factor is constantly being ignored or unidentified.
The main reason for this is that the methods used are not designed for working with stream data. All (or almost all) of them were developed for analysis of the already known or, speaking in terms of technical analysis, historical data. These methods are convenient, e.g., in geophysics: you feel the earthquake, get a seismogram and then analyze it for few months. In other words, these methods are appropriate where uncertainties arising at the ends of a time series in the course of filtering affect the end result.
When analyzing experimental stream data or market quotes, we are focused on the most recent data received, rather than history. These are data that cannot be dealt with using classical algorithms.
Cluster Filter
Cluster filter is a set of digital filters approximating the initial sequence. Cluster filters should not be confused with cluster indicators.
Cluster filters are convenient when analyzing non-stationary time series in real time, in other words, stream data. It means that these filters are of principal interest not for smoothing the already known time series values, but for getting the most probable smoothed values of the new data received in real time.
Unlike various decomposition methods or simply filters of desired frequency, cluster filters create a composition or a fan of probable values of initial series which are further analyzed for approximation of the initial sequence. The input sequence acts more as a reference than the target of the analysis. The main analysis concerns values calculated by a set of filters after processing the data received.
In the general case, every filter included in the cluster has its own individual characteristics and is not related to others in any way. These filters are sometimes customized for the analysis of a stationary time series of their own which describes individual properties of the initial non-stationary time series. In the simplest case, if the initial non-stationary series changes its parameters, the filters "switch" over. Thus, a cluster filter tracks real time changes in characteristics.
Cluster Filter Design Procedure
Any cluster filter can be designed in three steps:
1. The first step is usually the most difficult one but this is where probabilistic models of stream data received are formed. The number of these models can be arbitrary large. They are not always related to physical processes that affect the approximable data. The more precisely models describe the approximable sequence, the higher the probability to get a non-lagging cluster filter.
2. At the second step, one or more digital filters are created for each model. The most general condition for joining filters together in a cluster is that they belong to the models describing the approximable sequence.
3. So, we can have one or more filters in a cluster. Consequently, with each new sample we have the sample value and one or more filter values. Thus, with each sample we have a vector or artificial noise made up of several (minimum two) values. All we need to do now is to select the most appropriate value.
An Example of a Simple Cluster Filter
For illustration, we will implement a simple cluster filter corresponding to the above diagram, using market quotes as input sequence. You can simply use closing prices of any time frame.
1. Model description. We will proceed on the assumption that:
The aproximate sequence is non-stationary, i.e. its characteristics tend to change with the course of time.
The closing price of a bar is not the actual bar price. In other words, the registered closing price of a bar is one of the noise movements, like other price movements on that bar.
The actual price or the actual value of the approximable sequence is between the closing price of the current bar and the closing price of the previous bar.
The approximable sequence tends to maintain its direction. That is, if it was growing on the previous bar, it will tend to keep on growing on the current bar.
2. Selecting digital filters. For the sake of simplicity, we take two filters:
The first filter will be a variety filter calculated based on the last closing prices using the slow period. I believe this fits well in the third assumption we specified for our model.
Since we have a non-stationary filter, we will try to also use an additional filter that will hopefully facilitate to identify changes in characteristics of the time series. I've chosen a variety filter using the fast period.
3. Selecting the appropriate value for the cluster filter.
So, with each new sample we will have the sample value (closing price), as well as the value of MA and fast filter. The closing price will be ignored according to the second assumption specified for our model. Further, we select the МА or ЕМА value based on the last assumption, i.e. maintaining trend direction:
For an uptrend, i.e. CF(i-1)>CF(i-2), we select one of the following four variants:
if CF(i-1)fastfilter(i), then CF(i)=slowfilter(i);
if CF(i-1)>slowfilter(i) and CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i)).
For a downtrend, i.e. CF(i-1)slowfilter(i) and CF(i-1)>fastfilter(i), then CF(i)=MAX(slowfilter(i),fastfilter(i));
if CF(i-1)>slowfilter(i) and CF(i-1)fastfilter(i), then CF(i)=fastfilter(i);
if CF(i-1)<slowfilter(i) and CF(i-1)<fastfilter(i), then CF(i)=MIN(slowfilter(i),fastfilter(i)).
Where:
CF(i) – value of the cluster filter on the current bar;
CF(i-1) and CF(i-2) – values of the cluster filter on the previous bars;
slowfilter(i) – value of the slow filter
fastfilter(i) – value of the fast filter
MIN – the minimum value;
MAX – the maximum value;
What is Variety MA Cluster Filter Crosses?
For this indicator we calculate a fast and slow filter of the same filter and then we run a cluster filter between the fast and slow filter outputs to detect areas of chop/noise. The output is the uptrend is denoted by green color, downtrend by red color, and chop/noise/no-trade zone by white color. As a trader, you'll likely want to avoid trading during areas of chop/noise so you'll want to avoid trading when the color turns white.
Extras
Bar coloring
Alerts
Loxx's Expanded Source Types, see here:
Loxx's Moving Averages, see here:
An example of filtered chop, see the yellow circles. The cluster filter identifies chop zones so you don't get stuck in a sideways market.
na_skip_highestLibrary "na_skip_highest"
Finds the highest historic value over len bars but skip na valued bars (eg, off days). In other words, this will ensure we find the highest value over len bars with a real value, and if there are any na bars in-between, we skip over but the loop will continue. This allows to mimic calculations on markets with off days (eg, weekends).
na_skip_highest(src, len)
Finds the highest historic value over len bars but skip na valued bars (eg, off days). In other words, this will ensure we find the highest value over len bars with a real value, and if there are any na bars in-between, we skip over but the loop will continue. This allows to mimic calculations on markets with off days (eg, weekends).
Parameters:
src : series float source (eg, close)
len : int length, number of recent bars to consider in the window to find the highest value
Returns: highest float highest value found over the len window
Chart VWAP█ OVERVIEW
This indicator displays a Volume-Weighted Average Price anchored to the leftmost visible bar of the chart. It dynamically recalculates when the chart's visible bars change because you scroll or zoom your chart.
If you are not already familiar with VWAP, our Help Center will get you started. The typical VWAP is designed to be used on intraday charts, as it resets at the beginning of the day. Our Rolling VWAP , instead, resets on a rolling time window. You may also find the VWAP Auto Anchored built-in indicator worth a try.
█ HOW TO USE IT
Load the indicator on an active chart (see the Help Center if you don't know how). By default, it displays the chart's VWAP in orange and a simple average of the chart's visible close values in gray. This average can be used as a companion to the VWAP, since both are calculated from the same set of bars. The script's settings allow you to hide it.
You may also use the script's settings to enable the display of the chart's OHLC (open, high, low, close) levels and the values of the high and low. These are also calculated from the range of visible bars. You can complement the high and low lines with their price and their distance in percent from the chart's latest visible close . You can use the levels to quickly identify the distances from extreme points in the visible price range, as well as observe the visible chart's beginning and end prices.
█ NOTES FOR Pine Script™ CODERS
This script showcases three novelties:
• Dynamic recalculation on visible bars
• The VisibleChart library by PineCoders
• The new `anchor` parameter of ta.vwap()
Dynamic recalculation on visible bars
This script behaves in a novel way made possible by the recent introduction of two new built-in variables: chart.left_visible_bar_time and chart.right_visible_bar_time , which return the opening time of the leftmost and rightmost visible bars on the chart. These are only two of many new built-ins in the `chart.*` namespace. See this blog post for more information, or look up them up by typing "chart." in the Pine Script™ Reference Manual .
Any script using chart.left_visible_bar_time or chart.right_visible_bar_time acquires a unique property, which triggers its recalculation when traders scroll or zoom their chart, causing the range of visible bars to change. This new capability is what makes it possible for this script to calculate its VWAP on the chart's visible bars only, and dynamically recalculate if the user scrolls or zooms their chart.
This script is just a start to the party; endless uses for indicators that redraw on changes to the chart will no doubt emerge through the hands of our community's Pine Script™ programmers.
The VisibleChart library by PineCoders
The newly published VisibleChart library is designed to help programmers benefit from the new capabilities made possible by the fact that Pine Script™ code can now tell when it is executing on visible bars. The library's description, functions and example code will help programmers make the most of the new feature.
This script uses three of the library's functions:
• `PCvc.vVwap()` calculates a VWAP for visible bars.
• `PCvc.avg()` calculates the average of a source value for visible bars only. We use it to calculate the average close (the default source).
• `PCvc.chartXTimePct(25)` calculates a time value corresponding to 25% of the horizontal distance between visible bars, starting from the left.
The new `anchor` parameter of ta.vwap()
Our script also uses this new `anchor` parameter to reset the VWAP at the leftmost visible bar. See how simple the code is for the VisibleChart library's `vVwap()` function.
Look first. Then leap.
rzigzagLibrary "rzigzag"
Recursive Zigzag Using Matrix allows to create zigzags recursively on multiple levels. After bit of consideration, decided to make this public.
zigzag(length, ohlc, numberOfPivots, offset)
calculates plain zigzag based on input
Parameters:
length : Zigzag Length
ohlc : Array containing ohlc values. Can also contain custom series
numberOfPivots : Number of max pivots to be returned
offset : Offset from current bar. Can be used for calculations based on confirmed bars
Returns:
nextlevel(zigzagmatrix, numberOfPivots)
calculates next level zigzag based on present zigzag coordinates
Parameters:
zigzagmatrix : Matrix containing zigzag pivots, bars, bar time, direction and level
numberOfPivots : Number of max pivots to be returned
Returns: matrix zigzagmatrix
draw(zigzagmatrix, newPivot, doublePivot, lineColor, lineWidth, lineStyle, showLabel, xloc)
draws zigzag based on the zigzagmatrix input
Parameters:
zigzagmatrix : Matrix containing zigzag pivots, bars, bar time, direction and level
newPivot : Flag indicating there is update in the pivots
doublePivot : Flag containing there is double pivot update on same bar
lineColor : Zigzag line color
lineWidth : Zigzag line width
lineStyle : Zigzag line style
showLabel : Flag to indicate display pivot labels
xloc : xloc preference for drawing lines/labels
Returns:
draw(length, ohlc, numberOfPivots, offset, lineColor, lineWidth, lineStyle, showLabel, xloc)
calculates and draws zigzag based on zigzag length and source input
Parameters:
length : Zigzag Length
ohlc : Array containing ohlc values. Can also contain custom series
numberOfPivots : Number of max pivots to be returned
offset : Offset from current bar. Can be used for calculations based on confirmed bars
lineColor : Zigzag line color
lineWidth : Zigzag line width
lineStyle : Zigzag line style
showLabel : Flag to indicate display pivot labels
xloc : xloc preference for drawing lines/labels
Returns:
drawfresh(zigzagmatrix, zigzaglines, zigzaglabels, lineColor, lineWidth, lineStyle, showLabel, xloc)
draws fresh zigzag for all pivots in the input matrix.
Parameters:
zigzagmatrix : Matrix containing zigzag pivots, bars, bar time, direction and level
zigzaglines : array to which all newly created lines will be added
zigzaglabels : array to which all newly created lables will be added
lineColor : Zigzag line color
lineWidth : Zigzag line width
lineStyle : Zigzag line style
showLabel : Flag to indicate display pivot labels
xloc : xloc preference for drawing lines/labels
Returns:
Bjorgum MTF MAScope:
Up to 3 MA's can be applied at the users discretion
Choose between 10 different average types including favorites from the Bjorgum series from HEMA to Reversal T3's
Each MA can be independently set
Go Multi-timeframe! Any MA can be set to any timeframe of reference you choose (ex. using 3 different timeframes of higher resolution to your chart reference to establish a multi-time frame trend)
RSI HEATMAP. Use the bar color or the MA color selection toggle to set your color to reference RSI on a gradient. This helps to establish clear visual reference to momentum on top of trend analysis
Assigning RSI bar color to an MA of a higher time frame can allow you to see visual reference of momentum of the greater trend that may be at play.
Example: trying to get short on a 15min while your 1hr and 4hr RSI Heatmap burns deep in oversold.
RSI color can be assigned to the bar color, the MA (1,2 or 3), or both. Alternatively, bar color can be assigned to a more simple rising/ falling MA color and price above/ below the MA for bar color.
ALL MTF FUNCTIONS ARE NON_REPAINTING.
The Idea
The original inspiration behind the script came from an observation of a constant struggle of Pinecoders of both youth or experience to find accurate multi-timeframe indicators that do not repaint, and appear as should on historical bars, while performing reliably in real time. I encourage you to scroll the Pinecoders FAQ on a recent piece explaining the difficulties and caveats of different approaches, but I would like to reference the elimination of the historical bar offset for THIS purpose. MA's are based on closing prices, that is to say they are confirmed and will not change once the bar has closed. There is no need to offset these for historical reference. The purpose of the historical offset is best exemplified, for example, with an intraday strategy involving daily breakouts. Let's entertain going long on a break to a new daily high. We would not know that in real time so we need to reference the previous bars close for BACKTESTING purposes, otherwise we get "lookahead bias". There is no shortage of strategies unintentionally employing this bias out there (I'm sure you have come across them with their unrealistic results).
There is no worry of repainting with the MTF security function included within this script, nor will it offset for something involving lookahead bias. I encourage those that are playing with the code or perhaps writing strategies of their own to borrow the functions within. There is also a function that will return the 10 MA variable selection - yours to keep.
With all that in mind, I wanted a practical script that is easily deployable in everyday trading for the average trader that gives the user a firm grip on their trading steering wheel equipped with the feel of the road. Incorporating several MA's of differing times with the RSI heatmap gives a good visual reference and feel to your trading environment, while offering a level of customization that will fit an individuals personal trading style. The RSI heatmap gradient is per percentage between 30 and 70 and your 2 colors - anything outside of those levels gives you the vibrant bias color
Below I walk through 2 examples of live trades scenarios I made using the mindset the script offers.
The Trade
LONG IZEA
Timeframe: 4hr chart
- 3 Tilson MA's of varying length are deployed at varying intraday time frames
- A bullish pattern in an uptrend offers a possible trade allowing entry from a low risk point from the pattern low
- See the chart for notes and observations using the script
- Notice how the heatmap brightens up as price extends far away from the averages - your risk has elevated for a new position
- Notice the heatmap cool off while price action consolidates sideways
The Trade
SHORT BTCUSDT
Timeframe: 4hr chart
- 3 EMAs are employed - same length (50), with 3 successive timeframe resolutions
- A downtrend is formed with a sharp move to stack the EMAs into layers
- A pull back opportunity presents itself in bearish consolidation
- Notice a Doji star at resistance establishing a swing high as RSI cools off into the EMA dynamic resistance for entry
- An '"equal legs" measured move can be used for a trade target with a stop out above the swing high.
- Again, take note of distance from EMA's, the heatmap in combination with trend development surrounding the MA's
These were just two ideas to show you an example of how to implement some strategy into your trading and to get some interesting use from the indicator. Hope you enjoyed the read and happy trading.
[blackcat] L2 Ehlers Hilbert Channel Breakout Trading SystemLevel: 2
Background
John F. Ehlers introuced Hilbert Channel Breakout Trading System in Nov, 2000.
Function
This indicator will show how the adaptive filter is being applied to a trading strategy. After the Hilbert Channel Breakout Signal is optimized, set the inputs for this indicator to match the corresponding inputs for the signal.
In the March 2000 STOCKS & COMMODITIES, John Ehlers published a algorithm for the Hilbert cycle period, an indicator that plots the length of the current market cycle. The Hilbert transform achieved computational efficiency by using a two-dimensional numbering system. Unfortunately, this introduces amplitude error in calculating the quadrature component. Dr. Ehlers compensated for this error. He have updated the method of compensating for the amplitude error by applying a straight-line compensation term using the frequency calculation from one bar ago. This is possible because the cycle period cannot change drastically from bar to bar. The slowly varying cycle period is adequate to do a good job of amplitude compensation.
In addition, Dr. Ehlers have used a different way to compute the cycle period. He used a homodyne discriminator because it exhibits superior performance in a low signal-to-noise environment. Homodyne means he used the signal multiplied by itself one bar ago to produce a zero-frequency beat note. This beat note carries the phase angle of the one-bar change. Still using the basic definition of a cycle, the one-bar rate of change of phase is exactly the cycle period.
Here is the pine v4 code to generate the signals in the Hilbert channel breakout trading system, as discussed in Dr. Ehlers article in this issue, "Optimizing With Hilbert Indicators." The signal itself is a simple channel breakout system that generates buy and exit signals, that shows whether the system is long or flat; the high of the bar and the value of the entry channel; and the low of the bar and the value of the exit channel. This helps you see on a bar-by-bar basis exactly how the system is behaving.
Key Signal
longcond--> when high breakouts EntryChannel to long
shortcond--> when low breakouts ExitChannel to short
Pros and Cons
100% John F. Ehlers definition translation, even variable names are the same. This help readers who would like to use pine to read his book.
Remarks
The 66th script for Blackcat1402 John F. Ehlers Week publication.
I tested it and believe it work better in small time frame e.g. 15m than large time frames.
Readme
In real life, I am a prolific inventor. I have successfully applied for more than 60 international and regional patents in the past 12 years. But in the past two years or so, I have tried to transfer my creativity to the development of trading strategies. Tradingview is the ideal platform for me. I am selecting and contributing some of the hundreds of scripts to publish in Tradingview community. Welcome everyone to interact with me to discuss these interesting pine scripts.
The scripts posted are categorized into 5 levels according to my efforts or manhours put into these works.
Level 1 : interesting script snippets or distinctive improvement from classic indicators or strategy. Level 1 scripts can usually appear in more complex indicators as a function module or element.
Level 2 : composite indicator/strategy. By selecting or combining several independent or dependent functions or sub indicators in proper way, the composite script exhibits a resonance phenomenon which can filter out noise or fake trading signal to enhance trading confidence level.
Level 3 : comprehensive indicator/strategy. They are simple trading systems based on my strategies. They are commonly containing several or all of entry signal, close signal, stop loss, take profit, re-entry, risk management, and position sizing techniques. Even some interesting fundamental and mass psychological aspects are incorporated.
Level 4 : script snippets or functions that do not disclose source code. Interesting element that can reveal market laws and work as raw material for indicators and strategies. If you find Level 1~2 scripts are helpful, Level 4 is a private version that took me far more efforts to develop.
Level 5 : indicator/strategy that do not disclose source code. private version of Level 3 script with my accumulated script processing skills or a large number of custom functions. I had a private function library built in past two years. Level 5 scripts use many of them to achieve private trading strategy.
Neglected Volume by DGTVolume is one piece of information that is often neglected, however, learning to interpret volume brings many advantages and could be of tremendous help when it comes to analyzing the markets. In addition to technicians, fundamental investors also take notice of the numbers of shares traded for a given security.
What is Volume?
The volume represents all the recorded trades for a security that occurs in a given time interval. It is a measurement of the participation, enthusiasm, and interest in a given security. Think of volume as the force that drives the market. Volume substantiates, energizes, and empowers price. When volume increases, it confirms price direction; when volume decreases, it contradicts price direction.
In theory, increases in volume generally precede significant price movements. However, If the price is rising in an uptrend but the volume is reducing or unchanged, it may show that there’s little interest in the security, and the price may reverse.
A high volume usually indicates more interest in the security and the presence of institutional traders. However, a rapidly rising price in an uptrend accompanied by a huge volume may be a sign of exhaustion.
Traders usually look for breaks of support and resistance to enter positions. When security break critical levels without volume, you should consider the breakout suspect and prime for a reversal off the highs/lows
Volume spikes are often the result of news-driven events. Volume spike will often lead to sharp reversals since the moves are unsustainable due to the imbalance of supply and demand
note : there’s no centralized exchange where trades are recorded, so the volume data represents what happens at a particular exchange only
In most charting platforms, the volume indicator is presented as color-coded bars, green if the security closes up and red if the security closed lower, where the height of the bars show the amount of the recorded trades
Within this study, Relative Volume , Volume Weighted Bars and Volume Moving Average are presented, where Relative Volume relates current trading volume to past trading volume over long period, Volume Weighted Bars presents price bars colored based on short period past trading volume average, and Volume Moving Average is average of volume over shot period
Relative Volume is presented as color-coded bars similar to regular Volume indicator but uses four color codes instead two. Notable increases of volume are presented in green and red while average values with back and gray, hence adding ability to emphasis notable increases in the volume. It is kind of a like a radar for how "in-play" a security is. Users are allowed to change the threshold, default value is set to Fibonacci golden ration standard deviation away from its moving average.
Volume Weighted Bars, a study of Kıvanç Özbilgiç, aims to present if price movements are supported by Volume. Volume Weighted Bars are calculated based on shot period volume moving average which will reflect more recent changes in volume. Price actions with high volume will be displayed with darker colors, average volume values will remain as they are and low volume values will be indicated with lighter colors.
Volume Moving Average, Is short period volume moving average, aims to display visually the volume changes. Please not that Relative Volume bars are calculated based on standard deviation of long volume moving average.
What Else?
Apart from the volume itself, your ability to assess what volume is telling you in conjunction with price action can be a key factor in your ability to turn a profit in the market. It makes little sense to analyze the volume alone. To correctly interpret the volume data, it shall be seen in the light of what the price is doing. there are a lot of other indicators that are based on the volume data as well as price action. Analysing those volume indicators has always helped traders and investors to better understand what is happening in the market.
Here are the ones adapted with this study. Some of them used as a source for our aim, some adapted as they are with slight changes to fit visually to this study and please note that the numerical presentation may differ from their regular use
• On Balance Volume
• Divergence Indicator
• Correlation Coefficient
• Chaikin Money Flow
Shortly;
On Balance Volume
The On Balance Volume indicator, is a technical analysis indicator that relates volume flow to changes in a security’s price. It uses a cumulative total of positive and negative trading volume to predict the direction of price. The OBV is a volume-based momentum oscillator, so it is a leading indicator — it changes direction before the price
Granville, creator of OBV, proposed the theory that changes in volume precede price movements in a measurable way. He believed that volume was the main force behind major market moves and thought of OBV’s prediction of price changes as a compressed spring that expands rapidly when released.
It is believed that the OBV shows the interactions between the institutional and retail traders in the market
If the price makes a new high, the OBV should also make a new high. If the OBV makes a lower high when the price makes a higher high, there’s a classical bearish divergence — indicating that only the retail traders are buying. Another type of bearish divergence occurs when the price remains relatively quiet and fails to make a higher high but the OBV soars higher than the previous high — indicating that the institutional traders are accumulating short positions. On the other hand, if the price makes a lower low and the OBV makes a higher low, there is a classical bullish divergence, showing that the institutional traders don’t believe in that move
With this study, Momentum and Acceleration (optional) of OBV is calculated and presented, where momentum is most commonly referred to as a rate and measures the acceleration of the price and/or volume of a security. It is also referred to as a technical analysis indicator and oscillator that is able to determine market trends.
Additionally, smoothing functionality with Least Squares Method is added
Divergences especially, should always be noted as a possible reversal in the current trend, so the divergence indicator is adapted with this study where the Momentum of OBV is assumed as Oscillator with similar usages as to RSI. Divergence is most often used to track and analyze the momentum in an asset’s price and the odds of a price reversal within the current trend. The divergence indicator warns traders and technical analysts of changes in a price/volume trend, oftentimes that it is weakening or changing direction.
Correlation Coefficient
The correlation coefficient is a statistical measure of the strength of the relationship between the relative movements of two variables. A correlation of -1.0 shows a perfect negative correlation, while a correlation of 1.0 shows a perfect positive correlation. A correlation of 0.0 shows no linear relationship between the movement of the two variables. In other words, the closer the Correlation Coefficient is to 1.0, indicates the instruments will move up and down together as it is mostly expected with volume and price. So the Correlation Coefficient Indicator aims to display when the price and volume (on balance volume) is in correlation and when not. With this study blue represent positive correlation while orange negative correlation. The strength of the correlation is determined by the width of the bands, to emphasis the effect horizontal lines are drawn with values set to 0.5 and -0.5. the values above 0.5 (or below -0.5) shows stronger correlation.
Chaikin Money Flow , provide optionally as a companion indicator
The Chaikin money flow indicator (CMF) is a volume indicator that measures the money flow volume over a chosen period. The money flow volume is a measure of the volume and where the price closed relative to the trading session’s range. It comes from the idea that buying pressure is indicated by a rising volume and recurrent closes in the upper part of the session’s price range while selling pressure is demonstrated by an increasing volume and repeated closes in the lower part of the price range.
Both buying and selling pressures are accompanied by an increase in volume, but the location of the closing prices are in accordance with the direction of price
Special thanks to @InvestCHK and @hjsjshs , who have enormously contributed while preparing this study
related studies:
Disclaimer:
Trading success is all about following your trading strategy and the indicators should fit within your trading strategy, and not to be traded upon solely
The script is for informational and educational purposes only. Use of the script does not constitute professional and/or financial advice. You alone have the sole responsibility of evaluating the script output and risks associated with the use of the script. In exchange for using the script, you agree not to hold dgtrd TradingView user liable for any possible claim for damages arising from any decision you make based on use of the script
Freedom of MovementFreedom of Movement Indicator
---------------------------------------------------------
In “Evidence-Based Support & Resistance” article, author Melvin Dickover introduces two new indicators to help traders note support and resistance areas by identifying supply and demand pools. Here you can find the support-resistance technical indicator called "Freedom of Movement".
The indicator takes into account price-volume behavior in order to detect points where movement of price is suddenly restricted, the possible supply and demand pools. These points are also marked by Defended Price Lines (DPLs).
DPLs are horizontal lines that run across the chart at levels defined by following conditions:
* Overlapping bars: If the indicator spike (i.e., indicator is above 2.0 or a custom value) corresponds to a price bar overlapping the previous one, the previous close can be used as the DPL value.
* Very large bars: If the indicator spike corresponds to a price bar of a large size, use its close price as the DPL value.
* Gapping bars: If the indicator spike corresponds to a price bar gapping from the previous bar, the DPL value will depend on the gap size. Small gaps can be ignored: the author suggests using the previous close as the DPL value. When the gap is big, the close of the latter bar is used instead.
* Clustering spikes: If the indicator spikes come in clusters, use the extreme close or open price of the bar corresponding to the last or next to last spike in cluster.
DPLs can be used as support and resistance levels. In order confirm and refine them, FoM (Freedom of Movement) is used along with the Relative Volume Indicator (RVI), which you can find here:
Clustering spikes provide the strongest DPLs while isolated spikes can be used to confirm and refine those provided by the RVI. Coincidence of spikes of the two indicator can be considered a sign of greater strength of the DPL.
More info:
S&C magazine, April 2014.
WWV_LB zigzag pivot fix jayyThis is a zigzag version of LazyBear's WWV_LB. In order to plot the WWV_LB as a zigzag, it made sense to me to set the zigzag pivot at the true WWV_LB low or high pivot bars as opposed to the "pivot" bars plotted by the original WWV_LB script. The pivot point identified in the WWV_LB script is actually the point at which a wave reversal is confirmed as opposed to the true script pivot point. Confirmation of a wave reversal can, at times, lag the true pivot by a few bars especially as trendDetectionLength values increase above "1". The WWV_LB script calculates cumulative volume from wave reversal confirmation bar to wave reversal confirmation bar as opposed to the actual/true WWV_LB reversal pivot bar to reversal pivot bar. As such the waves plotted by the original and this pivot fixed scripts not only look slightly different but can also have different cumulative volumes. Confirmation of a wave reversal can lag a few bars behind the true pivot point.
The following critical lines of the original WWV_LB script determine when a wave reverses, both the true pivot and the confirmation point:mov = close>close ? 1 : close<close ? -1 : 0
trend= (mov != 0) and (mov != mov ) ? mov : nz(trend )
isTrending = rising(close, trendDetectionLength) or falling(close, trendDetectionLength)
wave=(trend != nz(wave )) and isTrending ? trend : nz(wave ) These original script lines are replicated in lines 62 to 65 of my script and are used to define wave reversal pivot bars and wave reversal confirmation bars. The original WWV_LB script does not track potential or actual pivot bars. The information can be extracted and tracked from the original script and then used to plot the actual reversal pivot bars. This allows the volume to be tracked from the actual/true pivot bars.Instead of "trendDetectionLength" I have inserted "Trend Detection Length" in the dialogue boxes. You can of course change the descriptor to what you wish by editing script line 33 to the original term or whatever you wish. You might also wish to set the default to the value "2" as per the original script. I have set the default to "3".
If you use a dark background I suggest you edit script line 4 from blackr=black to something such as blackr=yellow The volume values are shown in a vertical column of 3 numbers. Given the limitations of Pinescript Version 3 relative to V4, they are plotted at the point where the wave reversal is confirmed as opposed to the true pivot point. The zigzag lines plot the true pivot points. The plot location of numbers could be improved in Pinescript Version 4. I explain below why I have not published the Pinescript version 4 scripThe volume values plotted on the chart are calculated to be relative numbers. The script is limited to showing only three numbers vertically. Only the highest three values of a number are shown. For example, if the highest recent pip value is 12,345 only the first 3 numerals would be displayed ie 123. But suppose there is a recent value of 691. It would not be helpful to display 691 if the other wave size is shown as 123. To give the appropriate relative value the script will show a value of 7 instead of 691. This informs you of the relative magnitude of the values. This is done automatically within the script. There is likely no need to manually override the automatically calculated value. I will create a video that demonstrates the manual override method.
Should you update to Pinescript version 4? You could but if you do you will need to change the "plotchar" criteria since this script will exceed the 64 plot limit when converted to version 4. Version 4 would also allow the zigzags lines to be straight lines. However, the 50 label and line plot limit (Pinescript calls this resource sparing feature "garbage collection") significantly truncates the screen available information provided on screen. This algo optionally allows the plotting of zigzags as calculated by the original WWV_LB script. Toggling between the two script versions allows you to see the zigzag plot differences. I have also made some modifications to the original WWV_LB histogram script to adjust the pivot points.This zigzag script should be used in conjunction with the "WWV_LB pivot fix histogram jayy" shown in the panel below the main screen.
Here is a link to the original LazyBear histogram script which can be used for comparison. The differences are subtle, however, the histograms will regularly be different by a bar or two:
The lowest panel has the original LazyBear WWV_LB script for comparison. All three scripts have been set to a Trend Detection Length of 3.
jayy
Spread for VSAЭтот индикатор сравнивает спрэд (расстояние от закрытия предыдущего бара до закрытия текущего бара или индикатор Momentum = 1) на периоде для сравнения.
На графике за 100 % принимается среднее значение спрэда за период для сравнения - красная линия. (по умолчанию период сравнения равен 3 - то есть три последних бара)
Размер бара на графике равен текущему спрэду по отношению к 100 %.
Если бар меньше 100 % то он ниже среднего, и наоборот если больше 100% то он больше среднего.
Если бар красный - спрэд отрицательный (текущее закрытие меньше предыдущего закрытия)
Если бар зелёный - спрэд положительный (текущее закрытие больше предыдущего закрытия)
Если бар меньше 75% то он будет окрашен в тусклый цвет (этот процент можно менять в настройках)
Если в настройках период спрэда указать больше 1, например 2, то спрэд будет равен закрытие мину закрытие через 1 бар назад. (это для экспериментов).
Примечание:
по умолчанию период для сравнения равен 3, но также интересен график и при значениях 15 и больше. Экспериментируйте.
По вопросам и предложениям пишите в комментариях.
Automatic translation google translate.
This indicator compares the spread (the distance from the closing of the previous bar to the closing of the current bar or the Momentum indicator = 1) on the period for comparison.
On the chart, the average spread value for the period for comparison is the red line, taken as 100%. (by default, the comparison period is 3 - that is, the last three bars)
The size of the bar on the chart is equal to the current spread with respect to 100%.
If the bar is less than 100%, then it is below average, and vice versa, if more than 100%, then it is more than average.
If the bar is red, the spread is negative (the current close is less than the previous close)
If the bar is green, the spread is positive (the current close is greater than the previous close)
If the bar is less than 75%, then it will be painted in a dull color (this percentage can be changed in the settings)
If in the settings the period of the spread is specified more than 1, for example 2, then the spread will be equal to closing mine closing after 1 bar back. (this is for experimentation).
Note:
the default period for comparison is 3, but the chart is also interesting for values of 15 or more. Experiment.
For questions and suggestions, write in the comments.
Demonstration of how history length affects all EMA valuesI saw some discussion of this so I whipped up an example to prove the that effect of history length on EMA values is pronounced, even for bars much further than the EMA length from the first candle of the chart.
This chart has two 89-bar EMAs of the close: a green one and a red one. However, for the red one, the first 89 bars of the graph are considered to have a close of "0", which is exactly whatTradingView's EMA calculation uses for bars before the start of the graph.
This is because unlike other moving averages, which reference the price of previous bars, the EMA references the EMA of previous bars. Therefore, bars closer to the beginning of the chart, where TradingView can't calculate an EMA because there is no previous EMA and therefore uses 0, will return substantially different values for the EMA() function that the same cart would with more history.
The further a bar is back in history, the less influence it has. However, every single historical bar has some influence on the EMA of every later bar.
To allow you to see this for yourself, this script contains the following inputs which you can change to see the effect:
-EMA period (default 89)
-Number of bars to ignore for EMA2 (default 89)
-decimal precision to show differences in. By making this a large number you can see that, although the effects diminish, history length affects all EMA values for the char.
-label spacing (increase this if you have a long history and run into TV's 50-label limit)
Volatility Stop MTFThis is a multi-timeframe version of our Volatility Stop , an ATR-based trend detector that can be used as a stop.
► Timeframe selection
The higher timeframe can be selected using 3 different ways:
• By steps (60 min., 1D, 3D, 1W, 1M, 1Y).
• As a multiple of the current chart's resolution, which can be fractional, so 3.5 will work.
• Fixed.
Note that you can also use this indicator without the higher timeframe functionality. It will then behave as our normal Volatility Stop would.
► Stop breaches
Two modes of stop-breaching logic can be selected.
• In the default, Early Breach mode, the stop is considered breached when a bar at the chart's current resolution breaches the higher timeframe stop.
• You may also choose to calculate breaches on the higher timeframe information only.
Choosing the Early Breach mode has the advantage of generating faster exits. It will create a state of limbo where the stop has been breached but the Volatility Stop trend has not yet reversed. The impact of detecting earlier exits to minimize losses comes, as is usually the case, at the cost of a compromise: if the stop is breached early in a long trend, the indicator will then spend most of that trend in limbo. Sizeable portions of a trend can thus be missed.
A few options are provided when you use Early Breach mode:
• A red triangle can identify early breaches (default).
• You can color bars or the background to identify limbo states.
When in limbo, the color used to plot the indicator's line or shapes will always be darker.
► Alerts
Five pre-defined alerts are supplied:
• #1: On any trend change.
• #2: On changes into an uptrend.
• #3: On changes into a downtrend.
• #4: Only on breaches of the uptrend by the chart's bars (Early Breach mode). Will not trigger on a trend change.
• #5: Only on breaches of the downtrend by the chart's bars (Early Breach mode). Will not trigger on a trend change.
As usual, alerts should be configured to trigger Once Per Bar Close . When creating alerts, you will see a warning to the effect that potentially repainting code is used, even if the indicator's default non-repainting mode is active. The warning is normal.
► Other features
• You can color bars using the indicator's up/down state. When bars are colored, up bars are more brightly colored.
• The HTF line is non-repainting by default, but you can allow it to repaint.
• You can confirm the higher timeframe used by displaying it at a selectable distance from the last bar on the chart.
• Choice of 2 color themes.
• Choice of display as a line, circles, diamonds or arrows. The line can be used with the other shapes. If no line is required, set its thickness to zero.
Enjoy!
Look first. Then leap.
Backtesting on Non-Standard Charts: Caution! - PineCoders FAQMuch confusion exists in the TradingView community about backtesting on non-standard charts. This script tries to shed some light on the subject in the hope that traders make better use of those chart types.
Non-standard charts are:
Heikin Ashi (HA)
Renko
Kagi
Point & Figure
Range
These chart types are called non-standard because they all transform market prices into synthetic views of price action. Some focus on price movement and disregard time. Others like HA use the same division of bars into fixed time intervals but calculate artificial open, high, low and close (OHLC) values.
Non-standard chart types can provide traders with alternative ways of interpreting price action, but they are not designed to test strategies or run automated traded systems where results depend on the ability to enter and exit trades at precise price levels at specific times, whether orders are issued manually or algorithmically. Ironically, the same characteristics that make non-standard chart types interesting from an analytical point of view also make them ill-suited to trade execution. Why? Because of the dislocation that a synthetic view of price action creates between its non-standard chart prices and real market prices at any given point in time. Switching from a non-standard chart price point into the market always entails a translation of time/price dimensions that results in uncertainty—and uncertainty concerning the level or the time at which orders are executed is detrimental to all strategies.
The delta between the chart’s price when an order is issued (which is assumed to be the expected price) and the price at which that order is filled is called slippage . When working from normal chart types, slippage can be caused by one or more of the following conditions:
• Time delay between order submission and execution. During this delay the market may move normally or be subject to large orders from other traders that will cause large moves of the bid/ask levels.
• Lack of bids for a market sell or lack of asks for a market buy at the current price level.
• Spread taken by middlemen in the order execution process.
• Any other event that changes the expected fill price.
When a market order is submitted, matching engines attempt to fill at the best possible price at the exchange. TradingView strategies usually fill market orders at the opening price of the next candle. A non-standard chart type can produce misleading results because the open of the next candle may or may not correspond to the real market price at that time. This creates artificial and often beneficial slippage that would not exist on standard charts.
Consider an HA chart. The open for each candle is the average of the previous HA bar’s open and close prices. The open of the HA candle is a synthetic value, but the real market open at the time the new HA candle begins on the chart is the unrelated, regular open at the chart interval. The HA open will often be lower on long entries and higher on short entries, resulting in unrealistically advantageous fills.
Another example is a Renko chart. A Renko chart is a type of chart that only measures price movement. The purpose of a Renko chart is to cluster price action into regular intervals, which consequently removes the time element. Because Trading View does not provide tick data as a price source, it relies on chart interval close values to construct Renko bricks. As a consequence, a new brick is constructed only when the interval close penetrates one or more brick thresholds. When a new brick starts on the chart, it is because the previous interval’s close was above or below the next brick threshold. The open price of the next brick will likely not represent the current price at the time this new brick begins, so correctly simulating an order is impossible.
Some traders have argued with us that backtesting and trading off HA charts and other non-standard charts is useful, and so we have written this script to show traders what happens when order fills from backtesting on non-standard charts are compared to real-world fills at market prices.
Let’s review how TV backtesting works. TV backtesting uses a broker emulator to execute orders. When an order is executed by the broker emulator on historical bars, the price used for the fill is either the close of the order’s submission bar or, more often, the open of the next. The broker emulator only has access to the chart’s prices, and so it uses those prices to fill orders. When backtesting is run on a non-standard chart type, orders are filled at non-standard prices, and so backtesting results are non-standard—i.e., as unrealistic as the prices appearing on non-standard charts. This is not a bug; where else is the broker emulator going to fetch prices than from the chart?
This script is a strategy that you can run on either standard or non-standard chart types. It is meant to help traders understand the differences between backtests run on both types of charts. For every backtest, a label at the end of the chart shows two global net profit results for the strategy:
• The net profits (in currency) calculated by TV backtesting with orders filled at the chart’s prices.
• The net profits (in currency) calculated from the same orders, but filled at market prices (fetched through security() calls from the underlying real market prices) instead of the chart’s prices.
If you run the script on a non-standard chart, the top result in the label will be the result you would normally get from the TV backtesting results window. The bottom result will show you a more realistic result because it is calculated from real market fills.
If you run the script on a normal chart type (bars, candles, hollow candles, line, area or baseline) you will see the same result for both net profit numbers since both are run on the same real market prices. You will sometimes see slight discrepancies due to occasional differences between chart prices and the corresponding information fetched through security() calls.
Features
• Results shown in the Data Window (third icon from the top right of your chart) are:
— Cumulative results
— For each order execution bar on the chart, the chart and market previous and current fills, and the trade results calculated from both chart and market fills.
• You can choose between 2 different strategies, both elementary.
• You can use HA prices for the calculations determining entry/exit conditions. You can use this to see how a strategy calculated from HA values can run on a normal chart. You will notice that such strategies will not produce the same results as the real market results generated from HA charts. This is due to the different environment backtesting is running on where for example, position sizes for entries on the same bar will be calculated differently because HA and standard chart close prices differ.
• You can choose repainting/non-repainting signals.
• You can show MAs, entry/exit markers and market fill levels.
• You can show candles built from the underlying market prices.
• You can color the background for occurrences where an order is filled at a different real market price than the chart’s price.
Notes
• On some non-standard chart types you will not obtain any results. This is sometimes due to how certain types of non-standard types work, and sometimes because the script will not emit orders if no underlying market information is detected.
• The script illustrates how those who want to use HA values to calculate conditions can do so from a standard chart. They will then be getting orders emitted on HA conditions but filled at more realistic prices because their strategy can run on a standard chart.
• On some non-standard chart types you will see market results surpass chart results. While this may seem interesting, our way of looking at it is that it points to how unreliable non-standard chart backtesting is, and why it should be avoided.
• In order not to extend an already long description, we do not discuss the particulars of executing orders on the realtime bar when using non-standard charts. Unless you understand the minute details of what’s going on in the realtime bar on a particular non-standard chart type, we recommend staying away from this.
• Some traders ask us: Why does TradingView allow backtesting on non-standard chart types if it produces unrealistic results? That’s somewhat like asking a hammer manufacturer why it makes hammers if hammers can hurt you. We believe it’s a trader’s responsibility to understand the tools he is using.
Takeaways
• Non-standard charts are not bad per se, but they can be badly used.
• TV backtesting on non-standard charts is not broken and doesn’t require fixing. Traders asking for a fix are in dire need of learning more about trading. We recommend they stop trading until they understand why.
• Stay away from—even better, report—any vendor presenting you with strategies running on non-standard charts and implying they are showing reliable results.
• If you don’t understand everything we discussed, don’t use non-standard charts at all.
• Study carefully how non-standard charts are built and the inevitable compromises used in calculating them so you can understand their limitations.
Thanks to @allanster and @mortdiggiddy for their help in editing this description.
Look first. Then leap.
Elder ray ( Bull power and bear power combined )Elder-ray is an indicator named for its similarity to x-rays.
It shows the structure of bullish and bearish
power below the surface of the markets. Elder-ray combines a trend-
following moving average with two oscillators to show when to enter
and exit long or short positions.
A moving average reflects the average consensus of value. The high of
each bar reflects the maximum power of bulls during that bar. The low of
each bar marks the maximum power of bears during that bar.
Elder-ray works by comparing the power of bulls and bears during each
bar with the average consensus of value. Bull Power reflects the maximum
power of bulls relative to the average consensus, and Bear Power the max-
imum power of bears relative to that consensus.
When the high of a bar is above the EMA, Bull Power is positive. When
the entire bar sinks below the EMA, which happens during severe de-
clines, Bull Power becomes negative. When the low of a bar is below the
EMA, Bear Power is negative. When the entire bar rises above the EMA,
which happens during wild rallies, Bear Power becomes positive.
The slope of a moving average identifies the current trend of the mar-
ket. When it rises, it shows that the crowd is becoming more bullish; it is
a good time to be long. When it falls, it shows that the crowd is becoming
more bearish; it is a good time to be short. Prices keep getting away from
a moving average but snap back to it, as if pulled by a rubber band. Bull
Power and Bear Power show the length of that rubber band. Knowing the
“Buy low, sell high” sounds good, but traders and investors seem to have
been more comfortable buying Lucent above 70 than below 7. Perhaps they
are not as rational as the efficient market theorists would like us to believe?
Elder-ray gives rational traders a glimpse into what is going on below the sur-
face of the market.
When the trend, identified by the 22-day EMA, is down and bulls are
under water, the rallies back to the surface mark shorting opportunities
normal height of Bull or Bear Power reveals how far prices are likely to get
away from their moving average before returning. Elder-ray offers one of
the best insights into where to take profits—at a distance away from the
moving average that equals the average Bull Power or Bear Power.
Elder-ray gives buy signals in uptrends when Bear Power turns nega-
tive and then ticks up. A negative Bear Power means that the bar is strad-
dling the EMA, with its low below the average consensus of value. Waiting
for Bear Power to turn negative forces you to buy value rather than chase
runaway moves. The actual buy signal is given by an uptick of Bear Power,
which shows that bears are starting to lose their grip and the uptrend is
about to resume. Take profits at the upper channel line or when a trend-
following indicator stops rising. Profits may be greater if you ride the
uptrend to its conclusion, but taking profits at the upper channel line is
more reliable.
Elder-ray gives shorting signals in downtrends when Bull Power turns
positive and then ticks down. We can identify the downtrend by a declin-
ing daily or weekly EMA. A positive Bull Power shows that the bar is strad-
dling the EMA, with its high above the average consensus of value.
Waiting for Bull Power to turn positive before shorting forces you to sell
at or above value instead of chasing waterfall declines. The actual short-
ing signal is given by a downtick of Bull Power, which shows that bulls
are starting to slip and the downtrend is about to resume. Once short, take
profits at the lower channel line or when the trend-following indicator
stops falling, depending on your style.