[@btc_charlie] Trader XO Macro Trend ScannerWhat is this script?
This script has two main functions focusing on EMAs (Exponential Moving Average) and Stochastic RSI.
EMAs
EMAs are typically used to give a view of bullish / bearish momentum. When the shorter EMA (calculated off more recent price action) crosses, or is above, the slower moving EMA (calculated off a longer period of price action), it suggests that the market is in an uptrend. This can be an indication to either go long on said asset, or that it is more preferable to take long setups over short setups. Invalidation on long setups is usually found via price action (e.g. previous lows) or simply waiting for an EMA cross in the opposite direction (i.e. shorter EMA crosses under longer term EMA).
This is not a perfect system for trade entry or exit, but it does give a good indication of market trends. The settings for the EMAs can be changed based on user inputs, and by default the candles are coloured based on the crosses to make it more visual. The default settings are based on “Trader XO’s” settings who is an exceptional swing trader.
RSI
Stochastic RSI is a separate indicator that has been added to this script. RSI measures Relative Strength (RSI = Relative Strength Index). When RSI is <20 it is considered oversold, and when >80 it is overbought. These conditions suggests that momentum is very strong in the direction of the trend.
If there is a divergence between the price (e.g. price is creating higher highs, and stoch RSI is creating lower highs) it suggests the strength of the trend is weakening. Whilst this script does not highlight divergences, what it does highlight is when the shorter term RSI (K) crosses over D (the average of last 3 periods). This can give an indication that the trend is losing strength.
Combination
The EMAs indicate when trend shifts (bullish or bearish).
The RSI indicates when the trend is losing momentum.
The combination of the two can be used to suggest when to prefer a directional bias, and subsequently shift in anticipation of a trend reversal.
Note that no signal is 100% accurate and an interpretation of market conditions and price action will need to be overlayed to
Why is it different to others?
I have not found other scripts that are available in this way visually including alerts when Stoch RSI crosses over/under the extremes; or the mid points.
Whilst these indicators are default, the combination of them and how they are presented is not and makes use of the TradingView colouring functionalities.
What are the features?
Customise the variables (averages) used in the script.
Display as one EMA or two EMAs (the crossing ones).
Alerts on EMA crosses.
Alerts on Stoch RSI crosses - slow/fast, upper, lower areas.
- Currently set on the chart to show alerts when Stoch RSI is above 80, then falls below 80 (and colours it red).
Customisable colours.
What are the best conditions for this?
It is designed for high timeframe charts and analysis in crypto, since crypto tends to trend.
It can however be used for lower timeframes.
Disclaimer/Notes:
I have noticed several videos appearing suggesting that this is a "100% win rate indicator" .
NO indicator has 100% win rate.
An indicator is an *indicator* that is all.
Please use responsibly and let me know if there are any mods or updates you would like to see.
스크립트에서 "THE SCRIPT"에 대해 찾기
Trend Line Adam Moradi v1 (Tutorial Content)
The Pine Script strategy that plots pivot points and trend lines on a chart. The strategy allows the user to specify the period for calculating pivot points and the number of pivot points to be used for generating trend lines. The user can also specify different colors for the up and down trend lines.
The script starts by defining the input parameters for the strategy and then calculates the pivot high and pivot low values using the pivothigh() and pivotlow() functions. It then stores the pivot points in two arrays called trend_top_values and trend_bottom_values. The script also has two arrays called trend_top_position and trend_bottom_position which store the positions of the pivot points.
The script then defines a function called add_to_array() which takes in three arguments: apointer1, apointer2, and val. This function adds val to the beginning of the array pointed to by apointer1, and adds bar_index to the beginning of the array pointed to by apointer2. It then removes the last element from both arrays.
The script then checks if a pivot high or pivot low value has been calculated, and if so, it adds the value and its position to the appropriate arrays using the add_to_array() function.
Next, the script defines two arrays called bottom_lines and top_lines which will be used to store trend lines. It also defines a variable called starttime which is set to the current time.
The script then enters a loop to calculate and plot the trend lines. It first deletes any existing trend lines from the chart. It then enters two nested loops which iterate over the pivot points stored in the trend_bottom_values and trend_top_values arrays. For each pair of pivot points, the script calculates the slope of the line connecting them and checks if the line is a valid trend line by iterating over the price bars between the two pivot points and checking if the line is above or below the close price of each bar. If the line is found to be a valid trend line, it is plotted on the chart using the line.new() function.
Finally, the script colors the trend lines using the colors specified by the user.
Tutorial Content
'PivotPointNumber' is an input parameter for the script that specifies the number of pivot points to consider when calculating the trend lines. The value of 'PivotPointNumber' is set by the user when they configure the script. It is used to determine the size of the arrays that store the values and positions of the pivot points, as well as the number of pivot points to loop through when calculating the trend lines.
'up_trend_color' is an input parameter for the script that specifies the color to use for drawing the trend lines that are determined to be upward trends. The value of 'up_trend_color' is set by the user when they configure the script and is passed to the color parameter of the line.new() function when drawing the upward trend lines. It determines the visual appearance of the upward trend lines on the chart.
'down_trend_color' is an input parameter for the script that specifies the color to use for drawing the trend lines that are determined to be downward trends. The value of 'down_trend_color' is set by the user when they configure the script and is passed to the color parameter of the line.new() function when drawing the downward trend lines. It determines the visual appearance of the downward trend lines on the chart.
'pivothigh' is a variable in the script that stores the value of the pivot high point. It is calculated using the pivothigh() function, which returns the highest high over a specified number of bars. The value of 'pivothigh' is used in the calculation of the trend lines.
'pivotlow' is a variable in the script that stores the value of the pivot low point. It is calculated using the pivotlow() function, which returns the lowest low over a specified number of bars. The value of 'pivotlow' is used in the calculation of the trend lines.
'trend_top_values' is an array in the script that stores the values of the pivot points that are determined to be at the top of the trend. These are the pivot points that are used to calculate the upward trend lines.
'trend_top_position' is an array in the script that stores the positions (i.e., bar indices) of the pivot points that are stored in the 'trend_top_values' array. These positions correspond to the locations of the pivot points on the chart.
'trend_bottom_values' is an array in the script that stores the values of the pivot points that are determined to be at the bottom of the trend. These are the pivot points that are used to calculate the downward trend lines.
'trend_bottom_position' is an array in the script that stores the positions (i.e., bar indices) of the pivot points that are stored in the 'trend_bottom_values' array. These positions correspond to the locations of the pivot points on the chart.
apointer1 and apointer2 are variables used in the add_to_array() function, which is defined in the script. They are both pointers to arrays, meaning that they hold the memory addresses of the arrays rather than the arrays themselves. They are used to manipulate the arrays by adding new elements to the beginning of the arrays and removing elements from the end of the arrays.
apointer1 is a pointer to an array of floating-point values, while apointer2 is a pointer to an array of integers. The specific arrays that they point to depend on the arguments passed to the add_to_array() function when it is called. For example, if add_to_array(trend_top_values, trend_top_posisiton, pivothigh) is called, then apointer1 would point to the tval array and apointer2 would point to the tpos array.
'bottom_lines' (short for "Bottom Lines") is an array in the script that stores the line objects for the downward trend lines that are drawn on the chart. Each element of the array corresponds to a different trend line.
'top_lines' (short for "Top Lines") is an array in the script that stores the line objects for the upward trend lines that are drawn on the chart. Each element of the array corresponds to a different trend line.
Both 'bottom_lines' and 'top_lines' are arrays of type "line", which is a data type in PineScript that represents a line drawn on a chart. The line objects are created using the line.new() function and are used to draw the trend lines on the chart. The variables are used to store the line objects so that they can be manipulated and deleted later in the script.
Loops
maxline is a variable in the script that specifies the maximum number of trend lines that can be drawn on the chart. It is used to determine the size of the bottom_lines and top_lines arrays, which store the line objects for the trend lines.
The value of maxline is set to 3 at the beginning of the script, meaning that at most 3 trend lines can be drawn on the chart at a time. This value can be changed by the user if desired by modifying the assignment statement "maxline = 3".
'count_line_low' (short for "Count Line Low") is a variable in the script that keeps track of the number of downward trend lines that have been drawn on the chart. It is used to ensure that the maximum number of trend lines (as specified by the maxline variable) is not exceeded.
'count_line_high' (short for "Count Line High") is a variable in the script that keeps track of the number of upward trend lines that have been drawn on the chart. It is used to ensure that the maximum number of trend lines (as specified by the maxline variable) is not exceeded.
Both 'count_line_low' and 'count_line_high' are initialized to 0 at the beginning of the script and are incremented each time a new trend line is drawn. If either variable exceeds the value of maxline, then no more trend lines are drawn.
'pivot1', 'up_val1', 'up_val2', up1, and up2 are variables used in the loop that calculates the downward trend lines in the script. They are used to store intermediate values during the calculation process.
'pivot1' is a loop variable that is used to iterate through the pivot points (stored in the trend_bottom_values and trend_bottom_position arrays) that are being considered for use in the trend line calculation.
'up_val1' and 'up_val2' are variables that store the values of the pivot points that are used to calculate the downward trend line.
up1 and up2 are variables that store the positions (i.e., bar indices) of the pivot points that are stored in 'up_val1' and 'up_val2', respectively. These positions correspond to the locations of the pivot points on the chart.
'value1' and 'value2' are variables that are used to store the values of the pivot points that are being compared in the loop that calculates the trend lines in the script. They are used to determine whether a trend line can be drawn between the two pivot points.
For example, if 'value1' is the value of a pivot point at the top of the trend and 'value2' is the value of a pivot point at the bottom of the trend, then a trend line can be drawn between the two points if 'value1' is greater than 'value2'. The values of 'value1' and 'value2' are used in the calculation of the slope and intercept of the trend line.
'position1' and 'position2' are variables that are used to store the positions (i.e., bar indices) of the pivot points that are being compared in the loop that calculates the trend lines in the script. They are used to determine the distance between the pivot points, which is necessary for calculating the slope of the trend line.
For example, if 'position1' is the position of a pivot point at the top of the trend and 'position2' is the position of a pivot point at the bottom of the trend, then the distance between the two points is given by 'position1' - 'position2'. This distance is used in the calculation of the slope of the trend line.
'different', 'high_line', 'low_location', 'low_value', and 'valid' are variables that are used in the loop that calculates the downward trend lines in the script. They are used to store intermediate values during the calculation process.
'different' is a variable that stores the slope of the downward trend line being calculated. It is calculated as the difference in value between the two pivot points (stored in up_val1 and up_val2) divided by the distance between the pivot points (calculated using their positions, stored in up1 and up2).
'high_line' is a variable that stores the current value of the trend line being calculated at a given point in the loop. It is initialized to the value of the second pivot point (stored in up_val2) and is updated on each iteration of the loop using the value of different.
'low_location' is a variable that stores the position (i.e., bar_index) on the chart of the point where the trend line being calculated first touches the low price. It is initialized to the position of the second pivot point (stored in up2) and is updated on each iteration of the loop if the trend line touches a lower low.
'low_value' is a variable that stores the value of the trend line at the point where it first touches the low price. It is initialized to the value of the second pivot point (stored in up_val2) and is updated on each iteration of the loop if the trend line touches a lower low.
'valid' is a Boolean variable that is used to indicate whether the trend line being calculated is valid. It is initialized to true and is set to false if the trend line does not pass through all the lows between the pivot points. If valid is still true after the loop has completed, then the trend line is considered valid and is drawn on the chart.
d_value1, d_value2, d_position1, and d_position2 are variables that are used in the loop that calculates the upward trend lines in the script. They are used to store intermediate values during the calculation process.
d_value1 and d_value2 are variables that store the values of the pivot points that are used to calculate the upward trend line.
d_position1 and d_position2 are variables that store the positions (i.e., bar indices) of the pivot points that are stored in d_value1 and d_value2, respectively. These positions correspond to the locations of the pivot points on the chart.
The variables d_value1, d_value2, d_position1, and d_position2 have the same function as the variables uv1, uv2, up1, and up2, respectively, but for the calculation of the upward trend lines rather than the downward trend lines. They are used in a similar way to store intermediate values during the calculation process.
thank you.
Stoch/RSI with EMA50 Cross & HHLLA hybrid but simple indicator that plots 4 strategies in one pane .
1) RSI Indicator
2) Stoch RSI
3) EMA50 Cross (To determine direction in current timeframe)
4) Higher Highs & Lower Lows to analyze the trend and break of trend
The relative strength index (RSI) is a momentum indicator used in technical analysis. It is displayed as an oscillator (a line graph) on a scale of zero to 100. When the RSI indicator crosses 30 on the RSI chart, it is a bullish sign and when it crosses 70, it is a bearish sign.
The Stochastic RSI (StochRSI) is also a momentum indicator used in technical analysis. It is displayed as an oscillator (a line graph) on a scale of zero to 100. When the StochRSI indicator crosses 20 on the RSI chart, it is a bullish sign and when it crosses 80, it is a bearish sign.
The EMA50Cross denotes two cases in the script:
a) A crossover of CMP on the EMA50 is highlighted by a green bar signals a possible bullish trend
b) A crossunder of CMP on the EMA50 is highlighted by a red bar signals a possible bearish trend
The HHLL is denoted by mneumonics HH, HL,LH, LL. A combination of HHs and HLs denotes a uptrend while the combination of LLs and LHs denoted a downtrend
The current script should be used in confluence of other trading strategies and not in isolation.
Scenario 1:
If a EMA50Cross over bar (GREEN) is highlighted with the StochRSI below 20 and the given script is plotting HHs and HLs, we are most likely in a bullish trend for the given timeframe and a long can be initiated in confluence with other trading strategies used by the user. The RSI signal may now be utilized to determine a good range of entry/exit.
Scenario 2:
If a EMA50Cross under bar (RED) is highlighted with the StochRSI above 80 and the given script is plotting LLs and LHs, we are most likely in a bearish trend for the given timeframe and a short can be initiated in confluence with other trading strategies used by the user. The RSI signal may now be utilized to determine a good range of entry/exit.
Disclaimer:
The current script should be used in confluence with other trading strategies and not in isolation. The scripts works best on 4H and 1D Timeframes and should be used with caution on lower timeframes.
This indicator is not intended to give exact entry or exit points for a trade but to provide a general idea of the trend & determine a good range for entering or exiting the trade. Please DYOR
Credit & References:
This script uses the default technical analysis reference library provided by PineScript (denoted as ta)
Exponential MA Channel, Daily Timeframe (Crypto)Moving averages are some of the most common tools for traders. Some of the most widely used ones are simple moving averages (e.g. 20SMA, 50 SMA, 100 SMA, 200SMA,...). There are endless combinations of moving averages that can be used. I prefer to use exponential moving averages because they react more quickly to price data (essentially they filter back through the data over a discrete number of timesteps, with more recent history receiving the highest weighting in the final calculation).
This script uses a combination of the 21EMA, 53 EMA, and 100EMA. The idea of this script is to provide insight into when an asset might be close to a local top/bottom by monitoring price within the middle channel (yellow, blue, and orange lines), as well as identifying longer timeframe opportunities to buy/sell by examining the upper (green) and lower (red) bands. Disclaimer: this is not a guarantee that if price enters a region, that it will be a top or bottom, it is simply an indicator to get an idea based on price history.
As far as I know, this particular combination of exponential moving averages has not yet been published. I do not have an infinite amount of time to check through the entire library of published scripts. If someone else has already done this, I was unaware. Numerical computations were performed on ETHBTC price data in order to find the coefficients used in this script. Essentially, each EMA has a multiplier of either 1, a fraction of 1, or a number larger than 1 (these are the numbers in the script being multiplied by 'out1', 'out2', 'out3'; feel free to change these and see how this changes the indicator). I have found it to be useful for myself, and hope other people can tinker with this idea. My only wish is to allow other people to use this starting point to explore for themselves. I hope that I am allowed to publish this script without it being taken down so that others can freely use it.
Recommendations: although this was fit specifically for ETHBTC, it appears useful for many crypto pairs, specifically alt-BTC pairs and crypto-USD pairs. For example, I have found it useful for BTCUSD, ETHUSD, LINKUSD, LINKBTC, ETHBTC, ADABTC, etc. Only use on the DAILY timeframe.
Previous 5 Day Market CloseThis indicator can be used with a strategy known as gap close reversal. Gap close reversal is a trading strategy based on the idea that when a market experiences a gap (a significant difference between the previous day's close and the current day's open), there's a tendency for the price to fill or "close" the gap by moving back to the previous day's closing price. Traders often look for such opportunities as potential entry or exit points.
Here's how you can use this script for gap close reversal trading:
Identify Gaps: Look for instances where the current day's open price significantly deviates from the previous day's close, resulting in a gap on the chart. This could be a gap-up (where the open is higher than the previous close) or a gap-down (where the open is lower than the previous close).
Plot the Script: Apply the "Past 5 Days Close" script to your chart. This will plot the closing prices of the past five trading days as lines on the chart. These lines will serve as reference points for potential gap close levels.
Look for Reversal Signals: Monitor the price action as the market opens and observe how it behaves in relation to the previous day's close and the lines plotted by the script. If the price starts to move towards one of the past closing prices after a gap, it could indicate a potential reversal.
Confirm with Other Indicators: Use additional technical indicators or chart patterns to confirm the potential reversal signal. For example, you might look for bullish or bearish candlestick patterns, support or resistance levels, or momentum indicators aligning with the reversal.
Barholle eMA and RSI Movement TestThis is a test that offers insight into whether and asset is heading into bullish or bearish territory.
This indicator/test offers insight into the Exponential Moving Average's velocity and acceleration as well as the Stochastic RSI's velocity, acceleration and jerk. Included is a 'Stochastic Difference' and 'Stochastic Growth' indicators (commented out) that measure the difference between K and D in the Stoch RSI as well as the rate of it's change. This test is all about crossovers - the best leading indicator is a downward cross of the eMA velocity over the eMA acceleration, indicating a drop in price in the current or next bar.
The lines or importance have been set to -2 and 5, but these should be adjusted to suit your preferences. These numbers were chosen in order to try and create some kind of threshold after which action might be suggested. Backtesting is highly recommended so you can see how the test does and does not work. It is super powerful, but it is not omniscient - its an RSI and eMA derivative, past success does not necessarily dictate future success.
Please look at the code for several more plots you can use of derivatives and other ideas explore but commented out for greater legibility of the graph. Commenting and commenting (or uncommenting all and just disabling some in the settings) and comparing the graphs and crossovers is a useful exercise. To that end, one last concept - the MARSI - a combined moving averages and RSI measurement - was abandoned because it didn't appear to indicate anything of use, however you may find crossovers or patterns with it comparing it to other graphs, so it was left in but commented.
Please take a look at the comments and all the math and indicators 'left on the cutting room floor' in the script. Maybe you'll find a gem in the redux version of this script.
Outreach regarding the script, patterns noticed and full-on stealing of the script are all permitted. Many elements of this script were nabbed from other scripts - thank you to a community of coders who put it all out there.
Tick Data DetailedHello All,
After Tick Chart and Tick Chart RSI scripts, this is Tick Data Detailed script. Like other tick scrips this one only works on real-time bars too. it creates two tables: the table at the right shows the detailed data for Current Bar and the table at the left shows the detailed data for all calculated bars (cumulative). the script checks the volume on each tick and add the tick and volume to the specified level (you can set/change levels)
The volume is multiplied by close price to calculate real volume .There are 7 levels/zones and the default levels are:
0 - 10.000
10.000 - 20.000
20.000 - 50.000
50.000 - 100.000
100.000 - 200.000
200.000 - 400.000
> 400.000
With this info, you will get number of ticks and total volumes on each levels. The idea to separate this levels is in order to know which type of traders trade at that moment. for example volume of whale moves are probably greater than 400.000 or at least 100.000. Or volume of small traders is less than 10.000 or between 20.000-50.000.
You will get info if there is anomaly on each candle as well. what is anomaly definition? Current candle is green but Sell volume is greater than Buy volume or current candle is red but Buy volume is greater than Sell volume . it is shown as (!). you should think/search why/how this anomaly occurs. You can see screenshot about it below.
also "TOTAL" text color changes automatically. if Buy volume is greater than Sell volume then its color becomes Green, if Sell volume is greater than Buy volume then its color becomes Red (or any color you set)
Optionally you can change background and text colors as shown in the example below.
Explanation:
How anomaly is shown:
You can enable coloring background and set the colors as you wish:
And Thanks to @Duyck for letting me use the special characters from his great script.
Enjoy!
Standard Deviation Measurement ToolIf you like the script please come back and leave me a comment or find me on the interwebs. I get notified you "liked" it... but I have no idea if you actually use it. So, let me know =)
The script uses the open price as the mean and calculates the standard deviation from the open price on a per candle basis
- Goal: -
To establish a mean based on the Open Price and calculate the standard deviation.
The reason for this is if the Open is the mean, then the Standard deviation implies a standardized distance a given candle can be expected to travel
from the open price
- Edge: -
If you know that there is a 68%/95%/99.7% probability that price will NOT move more than
One Standard Deviation/Two Standard Deviations/Three Standard Deviations from the open price respectively
you can set reasonable price targets that relate to those probabilities in a given timeframe.
e.g. if you're on a 1h chart and your target is 3.5% from the open price, but 1 standard deviation of the hourly candle is equal to 0.78%.
You can make assumptions on either:
- The reasonableness of your target
or
- The holding period likely required for the trade.
Also, Standard Deviation is a function of volatility and this tool provides a unique mechanism for measuring volatility as well on a candle by candle basis
- Customization Options-
- Set 3 independent upper and lower standard deviations.
- Each set of standard deviations are on a switch so you can show 1, 2, or 3 sets of standard deviations
- You can set the distribution width
- Though it's not recommended, you can change the mean source.
- There is a switch to show the standard deviation on only the real-time bar or real-time and historical bars.
- How I Think About This Script -
This strategy is predicated the same principle as Bollinger Bands: the reality that 68% of all data points will fall within one standard deviation of the mean, 96% of all data points will fall within two standard deviations, and 98% of al data points will fall within 3 standard deviations. By understanding the standard deviation, you can possibly infer an edge by understanding the probabilistic range price will be bound to the limits of standard deviation rules according to their probabilistic outcomes for the single candle on any given timeframe. Bollinger Bands are designed to provide this information with the mean being a 20-period moving average and this indicator.
This indicator is designed to provide standard deviation information with the mean being based on the distance price travels away from the open of individual candles in the lookback period.
If you use a strategy where you enter on major candle closes, this can be useful to set targets for those entries based on the intended hold period or at least add/remove validity to other target metrics.
Example:
Your target is at the 1.618 Fibonacci level and your confirmation triggers on the 4h candle close (H4 if that's your thing lol). You set up the indicator based on the standard deviation of price movement in 4h candles over the last week.
Let's say the indicator shows that the 1.618 Fibonacci level is 3 standard deviations away.
This being the case this statistically indicates that within the next 4 hours, you have a very low probability of achieving your target (>2%). This doesn't invalidate your target, but it does indicate a low probability of achieving it in the next 4hrs. With this information, you can infer that you are either going to be (a) really lucky (b) in this trade for a lot longer than 4hrs or (c) your target is unrealistic given your intended hold period.
You can develop a more probabilistically favorable hold period calculation by looking at the standard deviation on a higher time frame (e.g. 1d-1w).
Bonus feature: You'll find that the 2 and 3 standard deviations will often "cluster" and these clusters often provide future S/R levels. That's a pretty sweet feature no one things to look for. But, try it. Find a cluster of 2nd and 3rd stdevs that are in somewhat of a horizontal pattern (usually the result of a range) and you'll find that to be a good s/r area. Even better if you use the 3.2 standard deviation, you'll find that is a fantastic breakout signal!
Summary
So, you can use it for target setting, a confluence test, a reasonableness test, or just a measurement tool.
This was the first TV script I ever wrong.. Got taken down. But, I've re-released it because there are other TV scripts that attempt to do this but are completely wrong.
Please be careful about using other people's scripts. Always validate the math of the script before you use it if possible.
Stay safe out there and I hope all your dreams come true.
Moving Average Trend ToolsI. How M.A.T.T. Adds Value to the TradingView Community:
The "Moving Average Trend Tools" (M.A.T.T.) is a versatile Pine Script v6 indicator that empowers traders with clear trend analysis, reliable trade signals, and real-time insights. Its intuitive design and robust features make it a valuable addition to the TradingView Community Scripts by catering to traders of all levels. Here’s why it stands out:
Clear Trend Visualization: M.A.T.T. plots a moving average (MA) with dynamic coloring—green for rising, red for falling, and gray for flat—based on a user-defined lookback period. This simplifies trend interpretation, helping traders quickly assess market momentum.
Reliable Trade Signals : The script identifies price crossovers above or below the MA, plotting green circles for bullish crosses and red for bearish, confirmed on closed bars to prevent repainting. These signals guide entry and exit points for trend-following or reversal strategies.
Real-Time Extension Detection : M.A.T.T. calculates percentage price deviations from the MA, displaying real-time labels when thresholds (e.g., 6%) are exceeded. This highlights overextended moves, ideal for spotting reversals or pullbacks, with alerts to keep traders informed.
Extensive Customization : Traders can tailor the MA type (SMA, EMA, WMA, HMA), length, colors, line width, and label sizes. This flexibility supports diverse strategies across markets like stocks, forex, and crypto, from scalping to swing trading.
Automated Alerts : Alert conditions for crossovers and extensions integrate seamlessly with TradingView’s system, enabling traders to stay updated without constant chart monitoring.
M.A.T.T. combines trend analysis, signal generation, and overextension detection into a single, user-friendly tool. Its accessibility, reliability, and educational value for Pine Script learners make it a compelling contribution to the community.
II. What M.A.T.T. Does, How It Works, and Its Originality:
What It Does :
M.A.T.T. enhances trend analysis and trade decision-making through three core features:
Dynamic MA Visualization: Plots a customizable MA (SMA, EMA, WMA, or HMA) with trend-based coloring to reflect rising, falling, or flat market conditions.
Price Crossover Signals : Marks bullish (green circles) and bearish (red circles) crossovers, confirmed on closed bars, with alerts for trade opportunities.
Price Extension Labels : Displays real-time percentage deviations of price from the MA, with alerts when user-defined thresholds are breached, signaling potential reversals.
How It Works :
M.A.T.T. leverages Pine Script v6 for precise calculations and user-friendly outputs:
Inputs: Users select MA type, length, lookback period, colors, and thresholds for extensions, plus label styles and sizes for customization.
MA Calculation : A switch function computes the chosen MA (e.g., ta.ema(close, 21) for EMA). Trend direction is determined using ta.rising or ta.falling over the lookback period, coloring the MA accordingly.
Crossover Logic : Bullish crossovers (close > ma and close < ma ) and bearish crossovers (close < ma and close > ma ) are plotted as circles on confirmed bars (barstate.isconfirmed) to ensure reliability. Alerts trigger only on the first bar of a crossover.
Extension Logic : Percentage deviations are calculated as ((price - ma) / ma) * 100, using the high for above-MA extensions and low for below. Labels appear in real-time when thresholds are exceeded, with alerts on transitions to avoid noise.
Why It’s Original
M.A.T.T. distinguishes itself through a unique blend of features and thoughtful design:
All-in-One Design : It integrates dynamic MA coloring, non-repainting crossover signals, and real-time extension detection, addressing trend identification, trade signals, and overextension warnings in one tool—unlike most MA indicators that focus on a single aspect.
Real-Time Extension Labels : Displaying percentage deviations with customizable thresholds is a rare feature, ideal for volatile markets and not commonly found in standard scripts.
Non-Repainting Signals : Confirmed crossover signals enhance reliability for live trading, setting M.A.T.T. apart from less rigorous indicators.
Optimized Alert Condtions : Alerts trigger only on transitions (e.g., first bar of a crossover or extension), reducing noise and improving usability.
Visual and Functional Flexibility : Support for four MA types, extensive customization, and a clean interface (dynamic colors, tiny circles, clear labels) make it adaptable and user-friendly.
While MA plotting or crossovers exist elsewhere, M.A.T.T.’s seamless integration, real-time extension detection, alert conditions, and focus on reliability and customization create a distinctive, practical tool. Its balance of simplicity and sophistication makes it a unique asset for the TradingView community.
Fibonacci Retracement MTF/LOGIn Pine Script, there’s always a shorter way to achieve a result. As far as I can see, there isn’t an indicator among the community scripts that can produce Fibonacci Retracement levels (linear and logarithmic) as multiple time frame results based on a reference 🍺 This script, which I developed a long time ago, might serve as a starting point to fill this gap.
OVERVIEW
This indicator is a short and simple script designed to display Fibonacci Retracement levels on the chart according to user preferences, aiming to build the structure of support and resistance.
ORIGINALITY
This script:
Can calculate 'retracement' results from higher time frames.
Can recall previous time frame results using its reference parameter.
Performs calculations based on both linear and logarithmic scales.
Offers optional multipliers and appearance settings to simplify users’ tasks
CONCEPTS
Fibonacci Retracement is a technical analysis tool used to predict potential reversal points in an asset's price after a significant movement. This indicator identifies possible support and resistance levels by measuring price movements between specific points in a trend, using certain ratios derived from the Fibonacci sequence. It is based on impulsive price actions.
MECHANICS
This indicator first identifies the highest and lowest prices in the time frame specified by the user. Next, it determines the priority order of the bars where these prices occurred. Finally, it defines the trend direction. Once the trend direction is determined, the "Retracement" levels are constructed.
FUNCTIONS
The script contains two functions:
f_ret(): Generates levels based on the multiplier parameter.
f_print(): Handles the visualization by drawing the levels on the chart and positioning the labels in alignment with the levels. It utilizes parameters such as ordinate, confirmation, multiplier, and color for customization
NOTES
The starting bar for the time frame entered by the user must exist on the chart. Otherwise, the trend direction cannot be determined correctly, and the levels may be drawn inaccurately. This is also mentioned in the tooltip of the TimeFrame parameter.
I hope it helps everyone. Do not forget to manage your risk. And trade as safely as possible. Best of luck!
Helacator Ai ThetaHelacator Ai Theta is a state-of-the-art advanced script. It helps the trader find the possibility of a trend reversal in the market. By finding that point at which the three black crows pattern combines with the three white soldiers pattern, it is the most cherished pattern in technical analysis for its signal of strong bullish or bearish momentum. Therefore, it is a very strong predictive tool in the ability of shifting markets.
Key Highlights: Three White Soldiers and Three Black Crows Patterns
The script identifies these candlestick formations that consist of three consecutive candles, either bullish (Three White Soldiers) or bearish (Three Black Crows). These patterns help the trader identify possible trend reversal points as they provide an early signal of a change in the market direction. It is with great care that the script is written to evaluate the position and relationship between the candlesticks for maintaining the accuracy of pattern recognition. Moving Averages for Trend Filtering:
Two important ones used are moving averages for filtering any signals not in accordance with the general trend. The length of these MAs is variable, allowing the traders to be in a position to adapt the script for use under different market conditions. The moving averages ensure that signals are only taken in the direction that supports the general market flow, so it leads to more reliability within the signals. The MAs are not plotted on the chart for the sake of clarity, but they still perform a crucial function in signal filtering and can be displayed optionally for a more detailed investigation. Cooldown filter to reduce over-trading
This is part of what is implemented in the script to prevent generation of consecutive signals too quickly. All this helps to reduce market noise and not overtrade—only when market conditions are at their best. The cooldown period can be set to be adjusted according to the trader's preference, making the script more versatile in its use. Practical Considerations: Educational Purpose: This script is for educational purposes only and should be part of a comprehensive trading approach. Proper risk management techniques should be observed while at the same time taking into consideration prevailing market conditions before making any trading decision.
No Guaranteed Results: The script is aimed at bringing signal accuracy into improvement to align with the broader market trend and reducing noise, but past performance cannot guarantee future success. Traders should use this script within their broad trading approach. Clean and Simple Chart Display: The primary goal of this script is to have a clear and simple display on the chart. The signals are prominently marked with "BUY" and "SELL," and the color of the bars has changed according to the last signal, thus traders can easily read the output. Community and Open Source Open Source Contribution: This script is open for contribution by the TradingView community. Any suggestions regarding improvements are highly welcomed. Candlestick patterns, moving averages, and the combination of the cooldown filter are presented in such a way as to give traders something special, and any modifications or extra touch by the community is appreciated. Attribution and Transparency: The script is based on standard technical analysis principles and for all parts inspired by or derivated from other available open-source scripts, credit is given where it is due. In this way, transparency ensures that the script adheres to TradingView's standards and promotes a collaborative community environment.
Correlation Analysis Tool📈 What Does It Do?
Correlation Calculation: Measures the correlation between a selected asset (Asset 1) and up to four additional assets (Asset 2, Asset 3, Asset 4, Asset 5).
User Inputs: Allows you to define the primary asset and up to four comparison assets, as well as the period for correlation calculations.
Correlation Matrix: Displays a matrix of correlation coefficients as a text label on the chart.
🔍 How It Works
Inputs: Enter the symbols for Asset 1 (main asset) and up to four other assets for comparison.
Correlation Period: Specify the period over which the correlations are calculated.
Calculations: Computes log returns for each asset and calculates the correlation coefficients.
Display: Shows a textual correlation matrix at the top of the chart with percentage values.
⚙️ Features
Customizable Assets: Input symbols for one primary asset and up to four other assets.
Flexible Period: Choose the period for correlation calculation.
Correlation Coefficients: Outputs correlation values for all asset pairs.
Textual Correlation Matrix: Provides a correlation matrix with percentage values for quick reference.
🧩 How to Use
Add the Script: Apply the script to any asset’s chart.
Set Asset Symbols: Enter the symbols for Asset 1 and up to four other assets.
Adjust Correlation Period: Define the period for which correlations are calculated.
Review Results: Check the correlation matrix displayed on the chart for insights.
🚨 Limitations
Historical Data Dependency: Correlations are based on historical data and might not reflect future market conditions.
No Visual Plots Yet: This script does not include visual plots; it only provides a textual correlation matrix.
💡 Best Ways To Use
Sector Comparison: Compare assets within the same sector or industry for trend analysis.
Diversification Analysis: Use the correlations to understand how different assets might diversify or overlap in your portfolio.
Strategic Decision Making: Utilize correlation data for making informed investment decisions and portfolio adjustments.
📜 Disclaimer
This script is for educational and informational purposes only. Please conduct your own research and consult with a financial advisor before making investment decisions. The author is not responsible for any losses or damages resulting from the use of this script.
Machine Learning : Cosine Similarity & Euclidean DistanceIntroduction:
This script implements a comprehensive trading strategy that adheres to the established rules and guidelines of housing trading. It leverages advanced machine learning techniques and incorporates customised moving averages, including the Conceptive Price Moving Average (CPMA), to provide accurate signals for informed trading decisions in the housing market. Additionally, signal processing techniques such as Lorentzian, Euclidean distance, Cosine similarity, Know sure thing, Rational Quadratic, and sigmoid transformation are utilised to enhance the signal quality and improve trading accuracy.
Features:
Market Analysis: The script utilizes advanced machine learning methods such as Lorentzian, Euclidean distance, and Cosine similarity to analyse market conditions. These techniques measure the similarity and distance between data points, enabling more precise signal identification and enhancing trading decisions.
Cosine similarity:
Cosine similarity is a measure used to determine the similarity between two vectors, typically in a high-dimensional space. It calculates the cosine of the angle between the vectors, indicating the degree of similarity or dissimilarity.
In the context of trading or signal processing, cosine similarity can be employed to compare the similarity between different data points or signals. The vectors in this case represent the numerical representations of the data points or signals.
Cosine similarity ranges from -1 to 1, with 1 indicating perfect similarity, 0 indicating no similarity, and -1 indicating perfect dissimilarity. A higher cosine similarity value suggests a closer match between the vectors, implying that the signals or data points share similar characteristics.
Lorentzian Classification:
Lorentzian classification is a machine learning algorithm used for classification tasks. It is based on the Lorentzian distance metric, which measures the similarity or dissimilarity between two data points. The Lorentzian distance takes into account the shape of the data distribution and can handle outliers better than other distance metrics.
Euclidean Distance:
Euclidean distance is a distance metric widely used in mathematics and machine learning. It calculates the straight-line distance between two points in Euclidean space. In two-dimensional space, the Euclidean distance between two points (x1, y1) and (x2, y2) is calculated using the formula sqrt((x2 - x1)^2 + (y2 - y1)^2).
Dynamic Time Windows: The script incorporates a dynamic time window function that allows users to define specific time ranges for trading. It checks if the current time falls within the specified window to execute the relevant trading signals.
Custom Moving Averages: The script includes the CPMA, a powerful moving average calculation. Unlike traditional moving averages, the CPMA provides improved support and resistance levels by considering multiple price types and employing a combination of Exponential Moving Averages (EMAs) and Simple Moving Averages (SMAs). Its adaptive nature ensures responsiveness to changes in price trends.
Signal Processing Techniques: The script applies signal processing techniques such as Know sure thing, Rational Quadratic, and sigmoid transformation to enhance the quality of the generated signals. These techniques improve the accuracy and reliability of the trading signals, aiding in making well-informed trading decisions.
Trade Statistics and Metrics: The script provides comprehensive trade statistics and metrics, including total wins, losses, win rate, win-loss ratio, and early signal flips. These metrics offer valuable insights into the performance and effectiveness of the trading strategy.
Usage:
Configuring Time Windows: Users can customize the time windows by specifying the start and finish time ranges according to their trading preferences and local market conditions.
Signal Interpretation: The script generates long and short signals based on the analysis, custom moving averages, and signal processing techniques. Users should pay attention to these signals and take appropriate action, such as entering or exiting trades, depending on their trading strategies.
Trade Statistics: The script continuously tracks and updates trade statistics, providing users with a clear overview of their trading performance. These statistics help users assess the effectiveness of the strategy and make informed decisions.
Conclusion:
With its adherence to housing trading rules, advanced machine learning methods, customized moving averages like the CPMA, and signal processing techniques such as Lorentzian, Euclidean distance, Cosine similarity, Know sure thing, Rational Quadratic, and sigmoid transformation, this script offers users a powerful tool for housing market analysis and trading. By leveraging the provided signals, time windows, and trade statistics, users can enhance their trading strategies and improve their overall trading performance.
Disclaimer:
Please note that while this script incorporates established tradingview housing rules, advanced machine learning techniques, customized moving averages, and signal processing techniques, it should be used for informational purposes only. Users are advised to conduct their own analysis and exercise caution when making trading decisions. The script's performance may vary based on market conditions, user settings, and the accuracy of the machine learning methods and signal processing techniques. The trading platform and developers are not responsible for any financial losses incurred while using this script.
By publishing this script on the platform, traders can benefit from its professional presentation, clear instructions, and the utilisation of advanced machine learning techniques, customised moving averages, and signal processing techniques for enhanced trading signals and accuracy.
I extend my gratitude to TradingView, LUX ALGO, and JDEHORTY for their invaluable contributions to the trading community. Their innovative scripts, meticulous coding patterns, and insightful ideas have profoundly enriched traders' strategies, including my own.
Trend Reversal System with SR levelsHello All,
This is the Trend Reversal System with Support/Resistance levels script. long time ago I published it as closed source but now I upgraded it and and published as open-source with a different name. I hope it would be useful for you all while trading/analyzing.
The script has some parts in it: Setup, Count, SR levels, Risk levels & Targets . Now lets check them:
Setup Part: it has two part, Buy or Sell Setup. one of them can be active only. Buy setup: if current close checks if current is lower/equal than the close of the 5. bar. if yes then the script increases number of buy setup. and if it reaches 9 then the script checks if current low is lower/equal than the lows of last 3. and 4. bars, or if the low of the last bar is lower/equal than the lows of last 3. and 4. bars. if yes then the script increases the buy setup by 1. if these conditions met then it puts the label 'S' , same for Sell setup. S labels on both setup are potential reversals.
Count Part: If buy or sell setup reaches the 9 then Count part starts from 1. lets see buy count: If current close is lower/equal than the low of the 3. bar and buy count is lower than 12 or low of the bar 13 is less than or equal to the close of bar 8 then buy count increase or it's completed. if it's completed then the script puts C label, and it's potential reversal. of course there are some conditions that can cancel the count buy/sell or recycle/restart.
By using Setup and Count levels the script can show Support/Resistance Levels, Risk levels & Targets. SR levels are potential reversal levels.
Lets see some example screenshots:
Support/Resistance levels:
Potential Reversal levels and how setup/counts are shown:
Count part can recycle and the script shows it as 'R' , ( you can see the conditions for Recycle in the script ):
Count can be cancelled and and it's shown as 'x'
If the scripts find 9 on Setup or 13 on Count then it checks if it's a good level to buy/sell and if it decides it's good level then it shows TRSSetup Buy/Sell or TRSCount Buy/Sell and also shows the target. in following example the script checks and decide it's a good level to take long position. it can be aggressive or conservative, Conservative is recommended.
Enjoy!
Tape [LucF]█ OVERVIEW
This script prints an ersatz of a trading console's "tape" section to the right of your chart. It displays the time, price and volume of each update of the chart's feed. It also calculates volume delta for the bar. As it calculates from realtime information, it will not display information on historical bars.
█ FEATURES
Calculations
Each new line in the tape displays the last price/volume update from the TradingView feed that's building your chart. These updates do not necessarily correspond to ticks from the originating broker/exchange's matching engine. Multiple broker/exchange ticks are often aggregated in one chart update.
The script first determines if price has moved up or down since the last update. The polarity of the price change, in turn, determines the polarity of the volume for that specific update. If price does not move between consecutive updates, then the last known polarity is used. Using this method, we can calculate a running volume delta accumulation for the bar, which becomes the bar's final volume delta value when the bar closes (you can inspect values of elapsed realtime bars in the Data Window or the indicator's values). Note that these values will all reset if the script re-executes because of a change in inputs or a chart refresh.
While this method of calculating volume delta is not perfect, it is currently the most precise way of calculating volume delta available on TradingView at the moment. Calculating more precise results would require scripts to have access to bid/ask levels from any chart timeframe. Charts at seconds timeframes do use exchange/broker ticks when the feeds you are using allow for it, and this indicator will run on them, but tick data is not yet available from higher timeframes, for now. Also note that the method used in this script is far superior to the intrabar inspection technique used on historical bars in my other "Delta Volume" indicators. This is because volume delta here is calculated from many more realtime updates than the available intrabars in history.
Inputs
You can use the script's inputs to configure:
• The number of lines displayed in the tape.
• If new lines appear at the top or bottom.
• If you want to hide lines with low volume.
• The precision of volume values.
• The size of the text and the colors used to highlight either the tape's text or background.
• The position where you want the tape on your chart.
• Conditions triggering three different markers.
Display
Deltas are shown at the bottom of the tape. They are reset on each bar. Time delta displays the time elapsed since the beginning of the bar, on intraday timeframes only. Contrary to the price change display by TradingView at the top left of charts, which is calculated from the close of the previous bar, the price delta in the tape is calculated from the bar's open, because that's the information used in the calculation of volume delta. The time will become orange when volume delta's polarity diverges from that of the bar. The volume delta value represents the current, cumulative value for the bar. Its color reflects its polarity.
When new realtime bars appear on the chart, a ↻ symbol will appear before the volume value in tape lines.
Markers
There are three types of markers you can choose to display:
• Marker 1 on volume bumps. A bump is defined as two consecutive and increasing/decreasing plus/minus delta volume values,
when no divergence between the polarity of delta volume and the bar occurs on the second bar.
• Marker 2 on volume delta for the bar exceeding a limit of your choice when there is no divergence between the polarity of delta volume and the bar. These trigger at the bar's close.
• Marker 3 on tape lines with volume exceeding a threshold. These trigger in realtime. Be sure to set a threshold high enough so that it doesn't generate too many alerts.
These markers will only display briefly under the bar, but another marker appears next to the relevant line in the tape.
The marker conditions are used to trigger alerts configured on the script. Alert messages will mention the marker(s) that triggered the specific alert event, along with the relevant volume value that triggered the marker. If more than one marker triggers a single alert, they will overprint under the bar, which can make it difficult to distinguish them.
For more detailed on-chart analysis of realtime volume delta, see my Delta Volume Realtime Action .
█ NOTES FOR CODERS
This script showcases two new Pine features:
• Tables, which allow Pine programmers to display tabular information in fixed locations of the chart. The tape uses this feature.
See the Pine User Manual's page on Tables for more information.
• varip -type variables which we can use to save values between realtime updates.
See the " Using `varip` variables " publication by PineCoders for more information.
Risk Management: Position Size & Risk RewardHere is a Risk Management Indicator that calculates stop loss and position sizing based on the volatility of the stock. Most traders use a basic 1 or 2% Risk Rule, where they will not risk more than 1 or 2% of their capital on any one trade. I went further and applied four levels of risk: 0.25%, 0.50%, 1% and 2%. How you apply these different levels of risk is what makes this indicator extremely useful. Here are some common ways to apply this script:
• If the stock is extremely volatile and has a better than 50% chance of hitting the stop loss, then risk only 0.25% of your capital on that trade.
• If a stock has low volatility and has less than 20% change of hitting the stop loss, then risk 2% of your capital on that trade.
• Risking anywhere between 0.25% and 2% is purely based on your intuition and assessment of the market.
• If you are on a losing streak and you want to cut back on your position sizing, then lowering the Risk % can help you weather the storm.
• If you are on a winning streak and your entries are experiencing a higher level of success, then gradually increase the Risk % to reap bigger profits.
• If you want to trade outside the noise of the market or take on more noise/risk, you can adjust the ATR Factor.
• … and whatever else you can imagine using it to benefit your trading.
The position size is calculated using the Capital and Risk % fields, which is the percentage of your total trading capital (a.k.a net liquidity or Capital at Risk). If you instead want to calculate the position size based on a specific amount of money, then enter the amount in the Custom Risk Amt input box. Any amount greater than 0 in the Custom Risk Amt field will override the values in the Capital and Risk % fields.
The stop loss is calculated by using the ATR. The default setting is the 14 RMA, but you can change the length and smoothing of the true range moving average to your liking. Selecting a different length and smoothing affects the stop loss and position size, so choose these values very carefully.
The ATR Factor is a multiplier of the ATR. The ATR Factor can be used to adjust the stop loss and move it outside of the market noise. For the more volatile stock, increase the factor to lower the stop loss and reduce the chance of getting stopped out. For stocks with less volatility , you can lower the factor to raise the stop loss and increase position size. Adjusting the ATR Factor can also be useful when you want the stop loss to be at or below key levels of support.
The Market Session is the hours the market is open. The Market Session only affects the Opening Range Breakout (ORB) option, so it’s important to change these values if you’re trading the ORB and you’re outside of Eastern Standard Time or you’re trading in a foreign exchange.
The ORB is a bonus to the script. When enabled, the indicator will only appear in the first green candle of the day (09:30:00 or 09:30 AM EST or the start time specified in Market Session). When using the ORB, the stop loss is based on the spread of the first candle at the Open. The spread is the difference between the High and Low of the green candle. On 1-day or higher timeframes, the indicator will be the spread of the last (or current) candle.
The output of the indicator is a label overlaying the chart:
1. ATR (14 RMA x2) – This indicated that the stop loss is determined by the ATR. The x2 is the ATR Factor. If ORB is selected, then the first line will show SPREAD, instead of ATR.
2. Capital – This is your total capital or capital at risk.
3. Risk X% of Capital – The amount you’re risking on a % of the Capital. If a Custom Risk Amt is entered, then Risk Amount will be shown in place of Capital and Risk % of Capital.
4. Entry – The current price.
5. Stop Loss – The stop loss price.
6. -1R – The stop loss price and the amount that will be lost of the stop loss is hit.
7. – These are the target prices, or levels where you will want to take profit.
This script is primarily meant for people who are new to active trading and who are looking for a sound risk management strategy based on market volatility . This script can also be used by the more experienced trader who is using a similar system, but also wants to see it applied as an indicator on TradingView. I’m looking forward to maintaining this script and making it better in future revisions. If you want to include or change anything you believe will be a good change or feature, then please contact me in TradingView.
Daily GAP StatsI did not write the script from scratch but rather started editing code of an existing one. The original code came from a script called GAP DETECTOR by @Asch-
First up: I am a trader, not a programmer and therefore my code most likely is inefficient. If someone with more expertise would like to help and optimize it - feel free to get in touch, I am always happy to learn some new tricks. :)
This script does 2 things:
- It shows daily gaps stats based on user inputs
- It shows color coded labels on gap days with additional information in tooltips ( important: make sure to read 'known issues/limitations' at the end )
User Inputs
==========
Although the input dialog is pretty straight forward, I do a quick rundown:
- Length: max lookback time
- Gap Direction: self explanatory
- Show All Gaps | Cont Only | Reversal Only | Off:
This refers to the way labels are displayed on gap days (again: make sure to read known issues/limitations!)
- Show All Gaps: does what it says
- Cont Only: only shows gaps where price continued in the gap direction. If you filter for gap ups and chose 'Cont only' you will only see labels on gap days where price closed above the open (and vice versa if you scan for gap downs).
- Reversal Only: you will only see labels for closes below the open on gap up days (and the opposite on gap down days)
- Off: self explanatory
- Gap Measure in ATR/PCT: self explanatory, ATR is calculated over a 10d period
- Gap Size (Abs Values): no negative values allowed here. If you filter for gap downs and enter 3 it means it will show gaps where the stock fell more than 3 ATR/PCT on the open.
- RVOL Factor: along with significant gaps should come significant volume. RVOL = volume of the gap day / 20d average volume
- Viewing Options: Placing the stats label in the window is a bit tricky (see knonw issues/limitations) and I was not sure which way I liked better. See for yourself what works best for you.
Known Isusses/Limitations:
=======================
- Positioning of the stats table:
As to my knowledge, Tradingview only allows label positioning relative to price and not relative to the chart window. I tried to always display the gap stats table in the upper right corner, using 52wk high as y-coordinate. This works ok most of the time, but is not pretty. If anybody has some fancy way to tag the label in a fixed position, please get in touch.
- Max number of labels per script:
TradingView has a limitation that allows a maxium of ~50 labels per script. If there are more labels, TradingView will automatically cut the oldest ones, without any notification. I have found this behaviour to be rather inconsistent - sometimes it'll dump labels even if there are a lot fewer than 50. Hopefully TradingView will drop this limitation at one point in the future.
Important: The inconsistent display of the gap day labels has NO INFLUENCE on the calculations in the gap stats table - the count and the calculations are complete and correct!
Polynomial Regression Bands + Channel [DW]This is an experimental study designed to calculate polynomial regression for any order polynomial that TV is able to support.
This study aims to educate users on polynomial curve fitting, and the derivation process of Least Squares Moving Averages (LSMAs).
I also designed this study with the intent of showcasing some of the capabilities and potential applications of TV's fantastic new array functions.
Polynomial regression is a form of regression analysis in which the relationship between the independent variable x and the dependent variable y is modeled as a polynomial of nth degree (order).
For clarification, linear regression can also be described as a first order polynomial regression. The process of deriving linear, quadratic, cubic, and higher order polynomial relationships is all the same.
In addition, although deriving a polynomial regression equation results in a nonlinear output, the process of solving for polynomials by least squares is actually a special case of multiple linear regression.
So, just like in multiple linear regression, polynomial regression can be solved in essentially the same way through a system of linear equations.
In this study, you are first given the option to smooth the input data using the 2 pole Super Smoother Filter from John Ehlers.
I chose this specific filter because I find it provides superior smoothing with low lag and fairly clean cutoff. You can, of course, implement your own filter functions to see how they compare if you feel like experimenting.
Filtering noise prior to regression calculation can be useful for providing a more stable estimation since least squares regression can be rather sensitive to noise.
This is especially true on lower sampling lengths and higher degree polynomials since the regression output becomes more "overfit" to the sample data.
Next, data arrays are populated for the x-axis and y-axis values. These are the main datasets utilized in the rest of the calculations.
To keep the calculations more numerically stable for higher periods and orders, the x array is filled with integers 1 through the sampling period rather than using current bar numbers.
This process can be thought of as shifting the origin of the x-axis as new data emerges.
This keeps the axis values significantly lower than the 10k+ bar values, thus maintaining more numerical stability at higher orders and sample lengths.
The data arrays are then used to create a pseudo 2D matrix of x power sums, and a vector of x power*y sums.
These matrices are a representation the system of equations that need to be solved in order to find the regression coefficients.
Below, you'll see some examples of the pattern of equations used to solve for our coefficients represented in augmented matrix form.
For example, the augmented matrix for the system equations required to solve a second order (quadratic) polynomial regression by least squares is formed like this:
(∑x^0 ∑x^1 ∑x^2 | ∑(x^0)y)
(∑x^1 ∑x^2 ∑x^3 | ∑(x^1)y)
(∑x^2 ∑x^3 ∑x^4 | ∑(x^2)y)
The augmented matrix for the third order (cubic) system is formed like this:
(∑x^0 ∑x^1 ∑x^2 ∑x^3 | ∑(x^0)y)
(∑x^1 ∑x^2 ∑x^3 ∑x^4 | ∑(x^1)y)
(∑x^2 ∑x^3 ∑x^4 ∑x^5 | ∑(x^2)y)
(∑x^3 ∑x^4 ∑x^5 ∑x^6 | ∑(x^3)y)
This pattern continues for any n ordered polynomial regression, in which the coefficient matrix is a n + 1 wide square matrix with the last term being ∑x^2n, and the last term of the result vector being ∑(x^n)y.
Thanks to this pattern, it's rather convenient to solve the for our regression coefficients of any nth degree polynomial by a number of different methods.
In this script, I utilize a process known as LU Decomposition to solve for the regression coefficients.
Lower-upper (LU) Decomposition is a neat form of matrix manipulation that expresses a 2D matrix as the product of lower and upper triangular matrices.
This decomposition method is incredibly handy for solving systems of equations, calculating determinants, and inverting matrices.
For a linear system Ax=b, where A is our coefficient matrix, x is our vector of unknowns, and b is our vector of results, LU Decomposition turns our system into LUx=b.
We can then factor this into two separate matrix equations and solve the system using these two simple steps:
1. Solve Ly=b for y, where y is a new vector of unknowns that satisfies the equation, using forward substitution.
2. Solve Ux=y for x using backward substitution. This gives us the values of our original unknowns - in this case, the coefficients for our regression equation.
After solving for the regression coefficients, the values are then plugged into our regression equation:
Y = a0 + a1*x + a1*x^2 + ... + an*x^n, where a() is the ()th coefficient in ascending order and n is the polynomial degree.
From here, an array of curve values for the period based on the current equation is populated, and standard deviation is added to and subtracted from the equation to calculate the channel high and low levels.
The calculated curve values can also be shifted to the left or right using the "Regression Offset" input
Changing the offset parameter will move the curve left for negative values, and right for positive values.
This offset parameter shifts the curve points within our window while using the same equation, allowing you to use offset datapoints on the regression curve to calculate the LSMA and bands.
The curve and channel's appearance is optionally approximated using Pine's v4 line tools to draw segments.
Since there is a limitation on how many lines can be displayed per script, each curve consists of 10 segments with lengths determined by a user defined step size. In total, there are 30 lines displayed at once when active.
By default, the step size is 10, meaning each segment is 10 bars long. This is because the default sampling period is 100, so this step size will show the approximate curve for the entire period.
When adjusting your sampling period, be sure to adjust your step size accordingly when curve drawing is active if you want to see the full approximate curve for the period.
Note that when you have a larger step size, you will see more seemingly "sharp" turning points on the polynomial curve, especially on higher degree polynomials.
The polynomial functions that are calculated are continuous and differentiable across all points. The perceived sharpness is simply due to our limitation on available lines to draw them.
The approximate channel drawings also come equipped with style inputs, so you can control the type, color, and width of the regression, channel high, and channel low curves.
I also included an input to determine if the curves are updated continuously, or only upon the closing of a bar for reduced runtime demands. More about why this is important in the notes below.
For additional reference, I also included the option to display the current regression equation.
This allows you to easily track the polynomial function you're using, and to confirm that the polynomial is properly supported within Pine.
There are some cases that aren't supported properly due to Pine's limitations. More about this in the notes on the bottom.
In addition, I included a line of text beneath the equation to indicate how many bars left or right the calculated curve data is currently shifted.
The display label comes equipped with style editing inputs, so you can control the size, background color, and text color of the equation display.
The Polynomial LSMA, high band, and low band in this script are generated by tracking the current endpoints of the regression, channel high, and channel low curves respectively.
The output of these bands is similar in nature to Bollinger Bands, but with an obviously different derivation process.
By displaying the LSMA and bands in tandem with the polynomial channel, it's easy to visualize how LSMAs are derived, and how the process that goes into them is drastically different from a typical moving average.
The main difference between LSMA and other MAs is that LSMA is showing the value of the regression curve on the current bar, which is the result of a modelled relationship between x and the expected value of y.
With other MA / filter types, they are typically just averaging or frequency filtering the samples. This is an important distinction in interpretation. However, both can be applied similarly when trading.
An important distinction with the LSMA in this script is that since we can model higher degree polynomial relationships, the LSMA here is not limited to only linear as it is in TV's built in LSMA.
Bar colors are also included in this script. The color scheme is based on disparity between source and the LSMA.
This script is a great study for educating yourself on the process that goes into polynomial regression, as well as one of the many processes computers utilize to solve systems of equations.
Also, the Polynomial LSMA and bands are great components to try implementing into your own analysis setup.
I hope you all enjoy it!
--------------------------------------------------------
NOTES:
- Even though the algorithm used in this script can be implemented to find any order polynomial relationship, TV has a limit on the significant figures for its floating point outputs.
This means that as you increase your sampling period and / or polynomial order, some higher order coefficients will be output as 0 due to floating point round-off.
There is currently no viable workaround for this issue since there isn't a way to calculate more significant figures than the limit.
However, in my humble opinion, fitting a polynomial higher than cubic to most time series data is "overkill" due to bias-variance tradeoff.
Although, this tradeoff is also dependent on the sampling period. Keep that in mind. A good rule of thumb is to aim for a nice "middle ground" between bias and variance.
If TV ever chooses to expand its significant figure limits, then it will be possible to accurately calculate even higher order polynomials and periods if you feel the desire to do so.
To test if your polynomial is properly supported within Pine's constraints, check the equation label.
If you see a coefficient value of 0 in front of any of the x values, reduce your period and / or polynomial order.
- Although this algorithm has less computational complexity than most other linear system solving methods, this script itself can still be rather demanding on runtime resources - especially when drawing the curves.
In the event you find your current configuration is throwing back an error saying that the calculation takes too long, there are a few things you can try:
-> Refresh your chart or hide and unhide the indicator.
The runtime environment on TV is very dynamic and the allocation of available memory varies with collective server usage.
By refreshing, you can often get it to process since you're basically just waiting for your allotment to increase. This method works well in a lot of cases.
-> Change the curve update frequency to "Close Only".
If you've tried refreshing multiple times and still have the error, your configuration may simply be too demanding of resources.
v4 drawing objects, most notably lines, can be highly taxing on the servers. That's why Pine has a limit on how many can be displayed in the first place.
By limiting the curve updates to only bar closes, this will significantly reduce the runtime needs of the lines since they will only be calculated once per bar.
Note that doing this will only limit the visual output of the curve segments. It has no impact on regression calculation, equation display, or LSMA and band displays.
-> Uncheck the display boxes for the drawing objects.
If you still have troubles after trying the above options, then simply stop displaying the curve - unless it's important to you.
As I mentioned, v4 drawing objects can be rather resource intensive. So a simple fix that often works when other things fail is to just stop them from being displayed.
-> Reduce sampling period, polynomial order, or curve drawing step size.
If you're having runtime errors and don't want to sacrifice the curve drawings, then you'll need to reduce the calculation complexity.
If you're using a large sampling period, or high order polynomial, the operational complexity becomes significantly higher than lower periods and orders.
When you have larger step sizes, more historical referencing is used for x-axis locations, which does have an impact as well.
By reducing these parameters, the runtime issue will often be solved.
Another important detail to note with this is that you may have configurations that work just fine in real time, but struggle to load properly in replay mode.
This is because the replay framework also requires its own allotment of runtime, so that must be taken into consideration as well.
- Please note that the line and label objects are reprinted as new data emerges. That's simply the nature of drawing objects vs standard plots.
I do not recommend or endorse basing your trading decisions based on the drawn curve. That component is merely to serve as a visual reference of the current polynomial relationship.
No repainting occurs with the Polynomial LSMA and bands though. Once the bar is closed, that bar's calculated values are set.
So when using the LSMA and bands for trading purposes, you can rest easy knowing that history won't change on you when you come back to view them.
- For those who intend on utilizing or modifying the functions and calculations in this script for their own scripts, I included debug dialogues in the script for all of the arrays to make the process easier.
To use the debugs, see the "Debugs" section at the bottom. All dialogues are commented out by default.
The debugs are displayed using label objects. By default, I have them all located to the right of current price.
If you wish to display multiple debugs at once, it will be up to you to decide on display locations at your leisure.
When using the debugs, I recommend commenting out the other drawing objects (or even all plots) in the script to prevent runtime issues and overlapping displays.
Funamental and financialsEarnings and Quarterly reporting and fundamental data at a glance.
A study of the financial data available by the "financial" functions in pinescript/tradingview
As far as I know, this script is unique. I found very few public examples of scripts using the fundamental data. and none that attempt to make the data available in a useful form
as an indicator / chart data. The only fitting category when publishing would be "trend analysis" We are going to look at the trend of the quarterly reports.
The intent is to create an indicator that instantly show the financial health of a company, and the trends in debt, cash and earnings
Normal settings displays all information on a per share basis, and should be viewed on a Daily chart
Percentage of market valuation can be used to compare fundamentals to current share price.
And actual to show the full numbers for verification with quarterly reporting and debuggging (actual is divided by 1.000.000 to keep numbers readable)
Credits to research study by Alex Orekhov (everget) for the Symbol Info Helper script
without it this would still be an unpublished mess, the use of textboxes allow me to remove many squiggly plot lines of fundamental data
Known problems and annoyances
1. Takes a long time to load. probably the amount of financial calls is the culprit. AFAIK not something i can to anything about in the script.
2. Textboxes crowd each other. dirty fix with hardcoded offsets. perhaps a few label offset options in the settings would do?
3. Only a faint idea of how to put text boxes on every quarter. Need time... (pun intended)
Have fun, and if you make significant improvements on this, please publish, or atleast leave a comment or message so I can consider adding it to this script.
© sjakk 2020-june-08
Accumulation/Distribution Open Interest Money Flow Hi, this script is the version of Accumulation / Distribution Money Flow (ADMF) that uses Open Interes ts in the required markets instead of Volume.
Can be set from the menu. (Futures/Others)
NOTE: I only modified this script.
The original script belongs to cl8DH.
Original of the script:
I think it will make a difference in the future and commodity markets.
Since the system uses CFTC data, use only for 1W timeframe.
With my best regards..
BACKTEST SCRIPT 0.999 ALPHATRADINGVIEW BACKTEST SCRIPT by Lionshare (c) 2015
THS IS A REAL ALTERNATIVE FOR LONG AWAITED TV NATIVE BACKTEST ENGINE.
READY FOR USE JUST RIGHT NOW.
For user provided trading strategy, executes the trades on pricedata history and continues to make it over live datafeed.
Calculates and (plots on premise) the next performance statistics:
profit - i.e. gross profit/loss.
profit_max - maximum value of gross profit/loss.
profit_per_trade - each trade's profit/loss.
profit_per_stop_trade - profit/loss per "stop order" trade.
profit_stop - gross profit/loss caused by stop orders.
profit_stop_p - percentage of "stop orders" profit/loss in gross profit/loss.
security_if_bought_back - size of security portfolio if bought back.
trades_count_conseq_profit - consecutive gain from profitable series.
trades_count_conseq_profit_max - maxmimum gain from consecutive profitable series achieved.
trades_count_conseq_loss - same as for profit, but for loss.
trades_count_conseq_loss_max - same as for profit, but for loss.
trades_count_conseq_won - number of trades, that were won consecutively.
trades_count_conseq_won_max - maximum number of trades, won consecutively.
trades_count_conseq_lost - same as for won trades, but for lost.
trades_count_conseq_lost_max - same as for won trades, but for lost.
drawdown - difference between local equity highs and lows.
profit_factor - profit-t-loss ratio.
profit_factor_r - profit(without biggest winning trade)-to-loss ratio.
recovery_factor - equity-to-drawdown ratio.
expected_value - median gain value of all wins and loss.
zscore - shows how much your seriality of consecutive wins/loss diverges from the one of normal distributed process. valued in sigmas. zscore of +3 or -3 sigmas means nonrandom realitonship of wins series-to-loss series.
confidence_limit - the limit of confidence in zscore result. values under 0.95 are considered inconclusive.
sharpe - sharpe ratio - shows the level of strategy stability. basically it is how the profit/loss is deviated around the expected value.
sortino - the same as sharpe, but is calculated over the negative gains.
k - Kelly criterion value, means the percentage of your portfolio, you can trade the scripted strategy for optimal risk management.
k_margin - Kelly criterion recalculated to be meant as optimal margin value.
DISCLAIMER :
The SCRIPT is in ALPHA stage. So there could be some hidden bugs.
Though the basic functionality seems to work fine.
Initial documentation is not detailed. There could be english grammar mistakes also.
NOW Working hard on optimizing the script. Seems, some heavier strategies (especially those using the multiple SECURITY functions) call TV processing power limitation errors.
Docs are here:
docs.google.com
KK_Intraday MAsHey guys,
today I was browsing through intraday Charts looking at some moving averages. Basically what I wanted to see was whether the currency pair was trading below or above the moving average of the day/week/month. For a better understanding: The daily MA on a 15 minute Forex Chart would be the 96 MA.
I encountered the problem that i always had to change the settings for my MAs when changing the Time Interval, so I coded this here up. It is pretty simple but maybe somebody else has the same problem and can put it to use.
The script has some settings as listed below:
Choice which MAs to plot, (Daily, Weekly, Monthly)
Choice which type of MA to use (Simple, Exponential, Weighted)
Neccesary Settings for the correct calculation (e.g. Number of trading hours per day). These settings depend on the instrument you are using and should always be checked before using this script.
There are a few things to Note when using this script:
This script works for intraday charts only.
The monthly MA doesn't work on any Time Interval smaller than 15 minutes. Can't do anything about it unfortunately.
This is my first published Script, use it with caution and let me know what you think about it!
Nef33 Forex & Crypto Trading Signals PRO
1. Understanding the Indicator's Context
The indicator generates signals based on confluence (trend, volume, key zones, etc.), but it does not include predefined SL or TP levels. To establish them, we must:
Use dynamic or static support/resistance levels already present in the script.
Incorporate volatility (such as ATR) to adjust the levels based on market conditions.
Define a risk/reward ratio (e.g., 1:2).
2. Options for Determining SL and TP
Below, I provide several ideas based on the tools available in the script:
Stop Loss (SL)
The SL should protect you from adverse movements. You can base it on:
ATR (Volatility): Use the smoothed ATR (atr_smooth) multiplied by a factor (e.g., 1.5 or 2) to set a dynamic SL.
Buy: SL = Entry Price - (atr_smooth * atr_mult).
Sell: SL = Entry Price + (atr_smooth * atr_mult).
Key Zones: Place the SL below a support (for buys) or above a resistance (for sells), using Order Blocks, Fair Value Gaps, or Liquidity Zones.
Buy: SL below the nearest ob_lows or fvg_lows.
Sell: SL above the nearest ob_highs or fvg_highs.
VWAP: Use the daily VWAP (vwap_day) as a critical level.
Buy: SL below vwap_day.
Sell: SL above vwap_day.
Take Profit (TP)
The TP should maximize profits. You can base it on:
Risk/Reward Ratio: Multiply the SL distance by a factor (e.g., 2 or 3).
Buy: TP = Entry Price + (SL Distance * 2).
Sell: TP = Entry Price - (SL Distance * 2).
Key Zones: Target the next resistance (for buys) or support (for sells).
Buy: TP at the next ob_highs, fvg_highs, or liq_zone_high.
Sell: TP at the next ob_lows, fvg_lows, or liq_zone_low.
Ichimoku: Use the cloud levels (Senkou Span A/B) as targets.
Buy: TP at senkou_span_a or senkou_span_b (whichever is higher).
Sell: TP at senkou_span_a or senkou_span_b (whichever is lower).
3. Practical Implementation
Since the script does not automatically draw SL/TP, you can:
Calculate them manually: Observe the chart and use the levels mentioned.
Modify the code: Add SL/TP as labels (label.new) at the moment of the signal.
Here’s an example of how to modify the code to display SL and TP based on ATR with a 1:2 risk/reward ratio:
Modified Code (Signals Section)
Find the lines where the signals (trade_buy and trade_sell) are generated and add the following:
pinescript
// Calculate SL and TP based on ATR
atr_sl_mult = 1.5 // Multiplier for SL
atr_tp_mult = 3.0 // Multiplier for TP (1:2 ratio)
sl_distance = atr_smooth * atr_sl_mult
tp_distance = atr_smooth * atr_tp_mult
if trade_buy
entry_price = close
sl_price = entry_price - sl_distance
tp_price = entry_price + tp_distance
label.new(bar_index, low, "Buy: " + str.tostring(math.round(bull_conditions, 1)), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bar_index, sl_price, "SL: " + str.tostring(math.round(sl_price, 2)), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bar_index, tp_price, "TP: " + str.tostring(math.round(tp_price, 2)), color=color.blue, textcolor=color.white, style=label.style_label_up, size=size.tiny)
if trade_sell
entry_price = close
sl_price = entry_price + sl_distance
tp_price = entry_price - tp_distance
label.new(bar_index, high, "Sell: " + str.tostring(math.round(bear_conditions, 1)), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bar_index, sl_price, "SL: " + str.tostring(math.round(sl_price, 2)), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bar_index, tp_price, "TP: " + str.tostring(math.round(tp_price, 2)), color=color.blue, textcolor=color.white, style=label.style_label_down, size=size.tiny)
Code Explanation
SL: Calculated by subtracting/adding sl_distance to the entry price (close) depending on whether it’s a buy or sell.
TP: Calculated with a double distance (tp_distance) for a 1:2 risk/reward ratio.
Visualization: Labels are added to the chart to display SL (red) and TP (blue).
4. Practical Strategy Without Modifying the Code
If you don’t want to modify the script, follow these steps manually:
Entry: Take the trade_buy or trade_sell signal.
SL: Check the smoothed ATR (atr_smooth) on the chart or calculate a fixed level (e.g., 1.5 times the ATR). Also, review nearby key zones (OB, FVG, VWAP).
TP: Define a target based on the next key zone or multiply the SL distance by 2 or 3.
Example:
Buy at 100, ATR = 2.
SL = 100 - (2 * 1.5) = 97.
TP = 100 + (2 * 3) = 106.
5. Recommendations
Test in Demo: Apply this logic in a demo account to adjust the multipliers (atr_sl_mult, atr_tp_mult) based on the market (forex or crypto).
Combine with Zones: If the ATR-based SL is too wide, use the nearest OB or FVG as a reference.
Risk/Reward Ratio: Adjust the TP based on your tolerance (1:1, 1:2, 1:3)
VPSA-VTDDear Sir/Madam,
I am pleased to present the next iteration of my indicator concept, which, in my opinion, serves as a highly useful tool for analyzing markets using the Volume Spread Analysis (VSA) method or the Wyckoff methodology.
The VPSA (Volume-Price Spread Analysis), the latest version in the family of scripts I’ve developed, appears to perform its task effectively. The combination of visualizing normalized data alongside their significance, achieved through the application of Z-Score standardization, proved to be a sound solution. Therefore, I decided to take it a step further and expand my project with a complementary approach to the existing one.
Theory
At the outset, I want to acknowledge that I’m aware of the existence of other probabilistic models used in financial markets, which may describe these phenomena more accurately. However, in line with Occam's Razor, I aimed to maintain simplicity in the analysis and interpretation of the concepts below. For this reason, I focused on describing the data using the Gaussian distribution.
The data I read from the chart — primarily the closing price, the high-low price difference (spread), and volume — exhibit cyclical patterns. These cycles are described by Wyckoff's methodology, while VSA complements and presents them from a different perspective. I will refrain from explaining these methods in depth due to their complexity and broad scope. What matters is that within these cycles, various events occur, described by candles or bars in distinct ways, characterized by different spreads and volumes. When observing the chart, I notice periods of lower volatility, often accompanied by lower volumes, as well as periods of high volatility and significant volumes. It’s important to find harmony within this apparent chaos. I think that chart interpretation cannot happen without considering the broader context, but the more variables I include in the analytical process, the more challenges arise. For instance, how can I determine if something is large (wide) or small (narrow)? For elements like volume or spread, my script provides a partial answer to this question. Now, let’s get to the point.
Technical Overview
The first technique I applied is Min-Max Normalization. With its help, the script adjusts volume and spread values to a range between 0 and 1. This allows for a comparable bar chart, where a wide bar represents volume, and a narrow one represents spread. Without normalization, visually comparing values that differ by several orders of magnitude would be inconvenient. If the indicator shows that one bar has a unit spread value while another has half that value, it means the first bar is twice as large. The ratio is preserved.
The second technique I used is Z-Score Standardization. This concept is based on the normal distribution, characterized by variables such as the mean and standard deviation, which measures data dispersion around the mean. The Z-Score indicates how many standard deviations a given value deviates from the population mean. The higher the Z-Score, the more the examined object deviates from the mean. If an object has a Z-Score of 3, it falls within 0.1% of the population, making it a rare occurrence or even an anomaly. In the context of chart analysis, such strong deviations are events like climaxes, which often signal the end of a trend, though not always. In my script, I assigned specific colors to frequently occurring Z-Score values:
Below 1 – Blue
Above 1 – Green
Above 2 – Red
Above 3 – Fuchsia
These colors are applied to both spread and volume, allowing for quick visual interpretation of data.
Volume Trend Detector (VTD)
The above forms the foundation of VPSA. However, I have extended the script with a Volume Trend Detector (VTD). The idea is that when I consider market structure - by market structure, I mean the overall chart, support and resistance levels, candles, and patterns typical of spread and volume analysis as well as Wyckoff patterns - I look for price ranges where there is a lack of supply, demand, or clues left behind by Smart Money or the market's enigmatic identity known as the Composite Man. This is essential because, as these clues and behaviors of market participants — expressed through the chart’s dynamics - reflect the actions, decisions, and emotions of all players. These behaviors can help interpret the bull-bear battle and estimate the probability of their next moves, which is one of the key factors for a trader relying on technical analysis to make a trade decision.
I enhanced the script with a Volume Trend Detector, which operates in two modes:
Step-by-Step Logic
The detector identifies expected volume dynamics. For instance, when looking for signs of a lack of bullish interest, I focus on setups with decreasing volatility and volume, particularly for bullish candles. These setups are referred to as No Demand patterns, according to Tom Williams' methodology.
Simple Moving Average (SMA)
The detector can also operate based on a simple moving average, helping to identify systematic trends in declining volume, indicating potential imbalances in market forces.
I’ve designed the program to allow the selection of candle types and volume characteristics to which the script will pay particular attention and notify me of specific market conditions.
Advantages and Disadvantages
Advantages:
Unified visualization of normalized spread and volume, saving time and improving efficiency.
The use of Z-Score as a consistent and repeatable relative mechanism for marking examined values.
The use of colors in visualization as a reference to Z-Score values.
The possibility to set up a continuous alert system that monitors the market in real time.
The use of EMA (Exponential Moving Average) as a moving average for Z-Score.
The goal of these features is to save my time, which is the only truly invaluable resource.
Disadvantages:
The assumption that the data follows a normal distribution, which may lead to inaccurate interpretations.
A fixed analysis period, which may not be perfectly suited to changing market conditions.
The use of EMA as a moving average for Z-Score, listed both as an advantage and a disadvantage depending on market context.
I have included comments within the code to explain the logic behind each part. For those who seek detailed mathematical formulas, I invite you to explore the code itself.
Defining Program Parameters:
Numerical Conditions:
VPSA Period for Analysis – The number of candles analyzed.
Normalized Spread Alert Threshold – The expected normalized spread value; defines how large or small the spread should be, with a range of 0-1.00.
Normalized Volume Alert Threshold – The expected normalized volume value; defines how large or small the volume should be, with a range of 0-1.00.
Spread Z-SCORE Alert Threshold – The Z-SCORE value for the spread; determines how much the spread deviates from the average, with a range of 0-4 (a higher value can be entered, but from a logical standpoint, exceeding 4 is unnecessary).
Volume Z-SCORE Alert Threshold – The Z-SCORE value for volume; determines how much the volume deviates from the average, with a range of 0-4 (the same logical note as above applies).
Logical Conditions:
Logical conditions describe whether the expected value should be less than or equal to or greater than or equal to the numerical condition.
All four parameters accept two possibilities and are analogous to the numerical conditions.
Volume Trend Detector:
Volume Trend Detector Period for Analysis – The analysis period, indicating the number of candles examined.
Method of Trend Determination – The method used to determine the trend. Possible values: Step by Step or SMA.
Trend Direction – The expected trend direction. Possible values: Upward or Downward.
Candle Type – The type of candle taken into account. Possible values: Bullish, Bearish, or Any.
The last available setting is the option to enable a joint alert for VPSA and VTD.
When enabled, VPSA will trigger on the last closed candle, regardless of the VTD analysis period.
Example Use Cases (Labels Visible in the Script Window Indicate Triggered Alerts):
The provided labels in the chart window mark where specific conditions were met and alerts were triggered.
Summary and Reflections
The program I present is a strong tool in the ongoing "game" with the Composite Man.
However, it requires familiarity and understanding of the underlying methodologies to fully utilize its potential.
Of course, like any technical analysis tool, it is not without flaws. There is no indicator that serves as a perfect Grail, accurately signaling Buy or Sell in every case.
I would like to thank those who have read through my thoughts to the end and are willing to take a closer look at my work by using this script.
If you encounter any errors or have suggestions for improvement, please feel free to contact me.
I wish you good health and accurately interpreted market structures, leading to successful trades!
CatTheTrader