Realtime FootprintThe purpose of this script is to gain a better understanding of the order flow by the footprint. To that end, i have added unusual features in addition to the standard features.
I use "Real Time 5D Profile by LucF" main engine to create basic footprint(profile type) and added some popular features and my favorites.
This script can only be used in realtime, because tradingview doesn't provide historical Bid/Ask date.
Bid/Ask date used this script are up/down ticks.
This script can only be used by time based chart (1m, 5m , 60m and daily etc)
This script use many labels and these are limited max 500, so you can't display many bars.
If you want to display foot print bars longer, turn off the unused sub-display function.
Default setting is footprint is 25 labels, IB count is 1, COT high and Ratio high is 1, COT low and Ratio low is 1 and Delta Box Ratio Volume is 1 , total 29.
plus UA , IB stripes , ladder fading mark use several labels.
///////// General Setting ///////////
Resets on Volume / Range bar
: If you want to use simple time based Resets on, please set Total Volume is 0.
Your timeframe is always the first condition. So if you set Total Volume is 1000, both conditions(Volume >= 1000 and your timeframe start next bar) must be met. (that is, new footprint bar doesn't start at when total volume = exactly 1000).
Ticks per row and Maximum row of Bar
: 1 is minimum size(tick). "Maximum row of Bar" decide the number of rows used in one footprint. 1 row is created from 1 label, so you need to reduce this number to display many footprints (Max label is 500).
Volume Filter and For Calculation and Display
: "Volume Filter" decide minimum size of using volume for this script.
"For Calculation and Display" is used to convert volume to an integer.
This script only use integer to make profile look better (I contained Bid number and Ask number in one row( one label) to saving labels. This require to make no difference in width by the number of digits and this script corresponds integers from 0 to 3 digits).
ex) Symbol average volume size is from 0.0001 to 0.001. You decide only use Volume >= 0.0005 by "Volume Filter".
Next, you convert volume to integer, by setting "For Calculation and Display" is 1000 (0.0005 * 1000 = 5).
If 0.00052 → 5.2 → 5, 0.00058 → 5.8 → 6 (Decimal numbers are rounded off)
This integer is used to all calculation in this script.
//////// Main Display ///////
Footprint, Total, Row Delta, Diagonal Delta and Profile
: "Footprint" display Ask and Bid per row. "Total" display Ask + Bid per row.
"Row Delta" display Ask - Bid per row. "Diagonal Delta" display Ask(row N) - Bid(row N -1) per row.
Profile display Total Volume(Ask + Bid) per row by using Block. Profile Block coloring are decided by Row Delta value(default: positive Row Delta (Ask > Bid) is greenish colors and negative Row Delta (Ask < Bid) is reddish colors.)
Volume per Profile Block, Row Imbalance Ratio and Delta Bull/Bear/Neutral Colors
: "Volume per Profile Block" decide one block contain how many total volume.
ex) When you set 20, Total volume 70 display 3 block.
The maximum number of blocks that can be used per low is 20.
So if you set 20, Total volume 400 is 20 blocks. total volume 800 is 20 blocks too.
"Row Imbalance Ratio" decide block coloring. The row imbalance is that the difference between Ask and Bid (row delta) is large.
default is x3, x2 and x1. The larger the difference, the brighter the color.
ex) Ask 30 Bid 10 is light green. Ask 20 Bid 10 is green. Ask 11 Bid 10 is dark green.
Ask 0 Bid 1 is light red. Ask 1 Bid 2 is red. ask 30 Bid 59 is dark green.
Ask 10 Bid 10 is neutral color(gray)
profile coloring is reflected same row's other elements(Ask, Bid, Total and Delta) too.
It's because one label can only use one text color.
/////// Sub Display ///////
Delta, total and Commitment of Traders
: "Delta" is total Ask - total Bid in one footprint bar. Total is total Ask + total Bid in one footprint bar.
"Commitment of traders" is variation of "Delta". COT High is reset to 0 when current highest is touched. COT Low is opposite.
Basic concept of Delta is to compare price with Delta. Ordinary, when price move up, delta is positive. Price move down is negative delta.
This is because market orders move price and market orders are counted by Delta (although this description is not exactly correct).
But, sometimes prices do not move even though many market orders are putting pressure on price , or conversely, price move strongly without many market orders.
This is key point. Big player absorb market orders by iceberg order(Subdivide large orders and pretend to be small limit orders.
Small limit orders look weak in the order book, but they are added each time you fill, so they are more powerful than they look.), so price don't move.
On the other hand, when the price is moving easily, smart players may be aiming to attract and counterattack to a better price for them.
It's more of a sport than science, and there's always no right response. Pay attention to the relationship between price, volume and delta.
ex) If COT Low is large negative value, it means many sell market orders is coming, but iceberg order is absorbing their attack at limit order.
you should not do buy entry, only this clue. but this is one of the hints.
"Delta, Box Ratio and Total texts is contained same label and its color are "Delta" coloring. Positive Delta is Delta Bull color(green),Negative Delta is Delta Bear Color
and Delta = 0 is Neutral Color(gray). When Delta direction and price direction are opposite is Delta Divergence Color(yellow).
I didn't add the cumulative volume delta because I prefer to display the CVD line on the price chart rather than the number.
Box Ratio , Box Ratio Divisor and Heavy Box Ratio Ratio
: This is not ordinary footprint features, but I like this concept so I added.
Box Ratio by Richard W. Arms is simple but useful tool. calculation is "total volume (one bar) divided by Bar range (highest - lowest)."
When Bull and bear are fighting fiercely this number become large, and then important price move happen.
I made average BR from something like 5 SMA and if current BR exceeds average BR x (Heavy Box Ratio Ratio), BR box mark will be filled.
Box Ratio Divisor is used to good looking display(BR multiplied by Box Ratio Divisor is rounded off and displayed as an integer)
Diagonal Imbalance Count , D IB Mark and D IB Stripes
: Diagonal Imbalance is defined by "Diagonal Imbalance Ratio".
ex) You set 2. When Ask(row N) 30 Bid(row N -1)10, it's 30 > 10*2, so positive Diagonal Imbalance.
When Ask(row N) 4 Bid(row N -1)9, it's 4*2 < 9, so negative Diagonal Imbalance.
This calculation does not use equals to avoid Ask(row N) 0 Bid(row N -1)0 became Diagonal Imbalance.
Ask(row N) 0 Bid(row N -1)0, it's 0 = 0*2, not Diagonal Imbalance. Ask(row N) 10 Bid(row N -1)5, it's 10 = 5*2, not Diagonal Imbalance.
"D IB Mark" emphasize Ask or Bid number which is dominant side(Winner of Diagonal Imbalance calculation), by under line.
"Diagonal Imbalance Count" compare Ask side D IB Mark to Bid side D IB Mark in one footprint.
Coloring depend on which is more aggressive side (it has many IB Mark) and When Aggressive direction and price direction are opposite is Delta Divergence Color(yellow).
"D IB Stripes" is a function that further emphasizes with an arrow Mark, when a DIB mark is added on the same side for three consecutive row. Three consecutive arrow is added at third row.
Unfinished Auction, Ratio Bounds and Ladder fading Mark
: "Unfinished Auction" emphasize highest or lowest row which has both Ask and Bid, by Delta Divergence Color(yellow) XXXXXX mark.
Unfinished Auction sometimes has magnet effect, price may touch and breakout at UA side in the future.
This concept is famous as profit taking target than entry decision.
But, I'm interested in the case that Big player make fake breakout at UA side and trapped retail traders, and then do reversal with retail traders stop-loss hunt.
Anyway, it's not stand alone signal.
"Ratio Bounds" gauge decrease of pressure at extreme price. Ratio Bounds High is number which second highest ask is divided by highest ask.
Ratio Bounds Low is number which second lowest bid is divided by lowest bid. The larger the number, the less momentum the price has.
ex)first footprint bar has Ratio Bounds Low 2, second footprint bar has RBL 4, third footprint bar has RBL 20.
This indicates that the bear's power is gradually diminishing.
"Ladder fading mark" emphasizes the decrease of the value in 3 consecutive row at extreme price. I added two type Marks.
Ask/Bid type(triangle Mark) is Ask/Bid values are decreasing of three consecutive row at extreme price.
Row Imbalance type(Diamond Mark) are row Imbalance values are decreasing of three consecutive row at extreme price.
ex)Third lowest Bid 40, second lowest Bid 10 and lowest Bid 5 have triangle up Mark. That is bear's power is gradually diminishing.
(This Mark only check Bid value at lowest price and Ask value at highest price).
Third highest row delta + 60, second highest row delta + 5, highest delta - 20 have diamond Mark. That is Bull's power is gradually diminishing.
Sub display use Delta colors at bottom of Sub display section.
////// Candle & POC /////////
candle and POC
: Ordinary, "POC" Point of Control is row of largest total volume, but this script'POC is volume weighted average.
This is because the regular POC was visually displayed by the profile ,and I was influenced LucF's ideas.
POC coloring is decided in relation to the previous POC. When current POC is higher than previous POC, color is UP Bar Color(green).
In the opposite case, Down Bar color is used.
POC Divergence Color is used when Current POC is up but current bar close is lower than open (Down price Bar),or in the opposite case.
POC coloring has option also highlight background by Delta Divergence Color(yellow). but bg color is displayed at your time frame current price bar not current footprint bar.
The basic explanation is over.
I add some image to promote understanding basic ideas.
在脚本中搜索"哪吒2票房破25亿"
BLSHBuy Low Sell High Strategy for Top Market Cap Stocks from Nifty 50. Buy only after price recovery of 5% from it's 25 Days Lowest price for a small target of 5%. It confirms the trend reversal
Money Flow Index With Bullish & Bearish SignalsMONEY FLOW INDEX WITH BULLISH AND BEARISH SIGNALS
Money Flow Index shows whether money is coming into the market or going out of the market. This can be used to gauge market sentiment and whether people are buying or selling at the current price.
***HOW TO USE***
If the MFI line is green, it is above the 50 line and in a bullish trend.
If the MFI line is red, it is below the 50 line and in a bearish trend.
If the background color is green, Money Flow is in a bullish trend, holding above the 50 line.
If the background color is red, Money Flow is in a bearish trend, holding below the 50 line.
If the MFI is above the 75 level it indicates a possible top or overbought conditions.
If the MFI is below the 25 level it indicates a possible bottom or oversold conditions.
***BULLISH/BEARISH LABELS***
There is also a label on the right side that tells you whether the overall trend is bullish or bearish, if there is a possible bottom or top and if the current money flow index is going up or down. This table updates in real time and changes colors so you can get an easy, quick interpretation of the current money flow without having to look at the data so you can make faster decisions on whether to enter or exit a trade. The flashing from red to green or the opposite also grabs your attention so you know immediately if there is a change in trend. The table changes colors in sync with the MFI line and it's trends and bottom/top areas. Green means money is coming in. Red means money is going out. Blue means a neutral amount of money flow.
***MARKETS***
This indicator can be used as a signal on all markets, including stocks, crypto, futures and forex.
***TIMEFRAMES***
This Money Flow Index indicator can be used on all timeframes.
***TIPS***
Try using numerous indicators of ours on your chart so you can instantly see the bullish or bearish trend of multiple indicators in real time without having to analyze the data. Some of our favorites are our Auto Fibonacci, DMI, Momentum, Auto Support And Resistance and Volume Profile in combination with this Money Flow Index. They all have real time Bullish and Bearish labels as well so you can immediately understand each indicator's trend.
Measure Volume, Momentum, Trend, VolatilityThis script displays the following indicators in one pane to quickly determine several important factors regarding price action. It allows the user to quickly see all of most important factors surrounding price action in one pane with one quick glance. This should be incredibly helpful and allow things like double divergence and trend confirmation to be spotted much more quickly. I personally use the data in this indicator to replace four separate indicators and it has brought my win rate and profit factor significantly higher. I hadn't seen any place where all of the best J. Welles Wilder indicators such as RSI, Parabolic SAR, and DMI/ADX were brought into one easy to use interface. This is my attempt at fixing that gap. For a much deeper understanding of how to use these indicators, I recommend reading New Concepts in Technical Trading Systems written by J. Welles Wilder.
Momentum via RSI (Relative Strength Index)
Volume via MFI (Money Flow Index)
Volatility via DMI/ADX (Direction Movement Index/Average Directional Index)
Trend via Parabolic SAR (Parabolic Stop and Reverse)
It is worth noting that DMI/ADX and Parabolic SAR can both help determine trend strength and volatility.
The Volatility mechanism is measured by DMI and ADX and displayed at the top of the pane using circles. The top, tiny circles reflect if show if positive DI or negative DI has a higher value. The small circles directly underneath indicate whether or not the ADX is above 20 (configurable, some may choose to increase this to 25 or even 30).
The Momentum mechanism is shown as standard RSI with the default being a white line and default period of 14, which is all configurable.
The Volume mechanism is shown as standard MFI with the default being a fuchsia line and default period of 14, which is also configurable.
The momentum and volume oscillators should be used in conjunction to help spot whether the trend is strong or weak using divergences and the middle, overbought, and oversold levels. These levels are also configurable.
The Trend mechanism is measured by Parabolic SAR and displayed at the bottom of the pane using diamonds. The default is red diamonds when in a bear trend, green when in an uptrend which is configurable. When price is above the Parabolic SAR, it is considered to be an uptrend. When price is below the Parabolic SAR, it is considered to be a downtrend. The way price is measured is also configurable (i.e. open, close, ohlc4, hlc3, etc.). When price crossed above or below the Parabolic SAR, the diamonds will change colors.
All the indicators displayed should be used in a well rounded strategy. For instance, I only trade when ADX is above 20 and rarely trade against the trend shown via PSAR. When trend shifts and divergences helped indicate a trend shift would occur using the RSI and MFI, it can be a great spot to take an entry. RSI/MFI can also confirm the trend is strong when they are not showing divergences and inline with price action. All of this data should be used in conjunction with good fundamental data and technical levels. Divergences with RSI and MFI on double tops or bottoms can also be incredibly powerful. There is no right or wrong way to use all the data displayed in this indicator, however using all four pillars of trading (Momentum, Volume, Trend, Volatility) will help ensure only the best trades are taken.
Awen1s EMA FiboEMA based on Fibonacci sequence starting at 5 hours.
Hours: 5, 10, 15, 25, 40, 65, 105, 170, 275, 445, 720, 1165, 1885, 3050, 4935
TASC 2022.04 S&P500 Hybrid Seasonal System█ OVERVIEW
TASC's April 2022 edition of Traders' Tips includes the "Sell In May? Stock Market Seasonality" article authored by Markos Katsanos. This is the code implementing the "Hybrid Seasonal System" from the article.
█ CONCEPTS
In his article, Markos Katsanos takes an updated look at the "Sell in May" adage by reviewing recent historical data for seasonal equity market tendencies. The author explores the development of a trading strategy (a set of buy and sell rules) based on this research.
He starts from the enhanced buy & hold system featured in his July 2021 TASC article, and adds additional technical conditions. These include volatility conditions ( VIX and ATR ) plus the "Volume Flow Indicator" (VFI), which is a custom money flow indicator that Katsanos introduced in his June 2004 TASC article. He provides an example of a trading system that others can test for themselves and modify as they see fit. The author notes that the system could likely be improved further by adding money management conditions (such as a stop-loss), or by adding more technical conditions not considered in the scope of this article.
█ CALCULATIONS
The entry and exit rules that constitute the trading system are defined below. The critical values of VIX, ATR and VFI (specified below) used in the calculations were determined by optimization for a daily chart of the SPY ETF . By default, the strategy only allows long entries. However, the script offers the possibility to initiate short entries upon exiting long trades through the "Long Only" toggle in the script's inputs.
Long Entry Rules
• Seasonal: The seasonal trade is initiated on the first business day October at the open.
• Volatility: In case of high volatility, that is if the VIX is above 60% or the 15-day ATR was above 90% over the past 25 days, the seasonal trade is deferred until later in the month or year, when the volatility subsides.
Exit/Short Entry Rules
• Seasonal: The exit/short signal is triggered on the first business day of August at the open.
• Volatility: The exit/short signal is triggered if VIX is above 120 % (i.e. 2 times the corresponding threshold parameter).
• Money flow (VFI): The exit/short signal is triggered if the VFI crosses under a critical value (-20) while its 10-day moving average is pointing down.
Join TradingView!
Stochastic & MAThis trading system comes from the experience of having a "fast" signal for entry at low prices (such as the stoscastic) and then "following" the stock with a "slower" indicator such as the exponential moving average. Both the input and output signals are filtered.
The use of the trading system only carries out long operations and has been tested on shares and ETFs, including indices, on daily bases (End Of Day).
ENTRY CONDITION: when stochastic's k is higher than d (on the default value of 21 periods) we enter the lower part of the oversold, to which we apply a filter or the confirmation that the closing of the day of the crossing is higher than that of the n -th previous bar (the 2nd previous bar recommended).
Other default settings are k = 6 and d = 4; the oversold level is also customizable (recommended = 25).
EXIT CONDITIONS: once the entry has "gone well", we follow the upward trend of the stock not with a stochastic oscillator - which tends to exit too soon, especially in case of strong trends - but with a simple moving average exponential (by default at 38 periods). Also in this case a filter is added, that is, k must be> to a filter threshold (recommended = 65) which is used to distinguish the decline between a "physiological" tracking. "(k drops" slowly "together with the approach of prices to the moving average) from a more" violent "tracking (prices are below the moving average and k consequently fall" suddenly ", in a few bars).
MONEY MANAGEMENT: 13% stop loss inserted (the physiological level of tracking of the shares is generally max 8-12% so we also consider a 1% margin due to trading). For more volatile stocks, the level can be extended to 20%.
LEVERAGE: the default value is equal to 1, but it is advisable, for simulations on shares, to use higher levers (x2, x3, ...) if you trade the relative CFD or on the index in case of buying and selling of Leveraged ETFs (e.g. LEVMIB which is 2x leveraged ETFs on Italian index).
ADR label/
// To quote @qullamaggie: " High ADR is Gold, low ADR is shit..."
// Hence we display the ADR (Average Daily Range) in percent.
//
// We also calculate and display Long Stop-Loss suggestions.
// 1. Using the ATR times a multiple.
// 2. Using a percentage.
//
// We also calculates the Trend Template as described by Mark Minervini in his book: "Trade like a stock market wizard"
// For a stock to be considered all the rules has to be fullfilled.
// The only rule this indicator doesn't implement is the IBD Relative Strength ranking.
//
// Rules:
// close > MA-50 > MA-150 > MA-200 , each condition that is true gets one point.
// The current stock price is at least 30 percent above its 52-week low, gets one point
// The current stock price is within at least 25 percent of its 52-week high, gets one point.
// The 200-day moving average line is trending up for at least 1 month (preferably 4–5 months), gets one point.
//
// When we get 6 points, all the rules are fullfilled and we display an OK;
// else we show the number of points (X).
//
[blackcat] L3 DMIQLevel: 3
Background
The directional movement index (DMI) is an indicator developed by J. Welles Wilder in 1978 that identifies in which direction the price of an asset is moving. The indicator does this by comparing prior highs and lows and drawing two lines: a positive directional movement line (+DI) and a negative directional movement line (-DI). An optional third line, called the average directional index (ADX), can also be used to gauge the strength of the uptrend or downtrend.
Function
When +DI is above -DI, there is more upward pressure than downward pressure in the price. Conversely, if -DI is above +DI, then there is more downward pressure on the price. This indicator may help traders assess the trend direction. Crossovers between the lines are also sometimes used as trade signals to buy or sell.
The directional movement index (DMI) is a technical indicator that measures both the strength and direction of a price movement and is intended to reduce false signals.
The DMI utilizes two standard indicators, one negative (-DM) and one positive (+DN), in conjunction with a third, the average directional index (ADX), which is non-directional but shows momentum.
The larger the spread between the two primary lines, the stronger the price trend. If +DI is way above -DI the price trend is strongly up. If -DI is way above +DI then the price trend is strongly down.
ADX measures the strength of the trend, either up or down; a reading above 25 indicates a strong trend.
Remarks
Free and Open Source
Alerts are added.
Overbought & Oversold TrackerAbout this indicator:
- This indicator is basically a stochastic indicator that shows to you the crossover in an Overbought or Oversold area DIRECTLY on the chart
How does it works:
- When Stochastic crosses at Oversold area, a Blue Triangle will appear below the candle with a Blue Dotted Line at the low of the current candle
- The Blue Triangle is to help you to see easily the candle where the crossover is occurring
- At the same time, the Blue Dotted Line will act as a minor Support for the current price
- If the current candle breaks the Blue Dotted Line (minor Support), the candle will be displayed in a red color
- Same things will occur if Stochastic crosses at the Overbought area, but at this time, a Red Triangle with Red Dotted Line will appear just to differentiate between Overbought and Oversold crossover
The advantage of using this indicator:
- You can easily see the point of stochastic crossover DIRECTLY on the chart without analyzing the stochastic indicator
- At the same time, it helps you to see clearly either the price is at the bottom / reversal by combining it with S&R / trendlines or other indicators
Personally, I will combine this indicator with:
a. Support and Resistance or Trendlines
b. Fibonacci retracement
c. Candlestick indicator (see my script list)
d. Ultimate MACD (see my script list)
e. Volume indicator
These combinations personally increase the possibility for me to buy exactly at the point of reversal in a pullback
- This indicator is preset at the value of 25 (oversold) and 75 (overbought) k line, it's my own preference. You can change these values at the setting menu to suit your trading style.
- Once again, I am opening the script for anyone to modify/alter it based on you own preference. Have a good day!
Daily Sun Flares Class XThe classification system for solar flares uses the letters A, B, C, M or X, according to the peak flux as measured at the Earth by the GOES spacecraft.
These are daily Class X sun flares. The data was created by counting daily flares of this class based on the peak time of the flare.
2015-01-01 until 2021-08-25
Relative Strength Exponential Moving Average [CC]The Relative Strength Exponential Moving Average was created by Vitali Apirine (Stocks and Commodities Jan 2022 pgs 22-25) and this is a handy moving average that combines a typical overbought/oversold mechanic with an overall trend indicator. Even though the typical length is so large it reacts extremely quickly when the stock becomes overbought or oversold. Because of this the indicator by itself doesn't work as well during choppy periods so Vitali recommends using a moving average crossover system during choppy so do one indicator with the default length of 50 and use a different length of 10 so when the shorter length crosses over the longer length then buy and vice versa you would sell. Generally speaking buy when the line turns green and sell when it turns red. I have used strong buy and sell signals in addition to normal signals so strong signals are darker in color and normal signals are lighter in color.
Let me know if there are any other scripts or indicators you would like me to publish!
Value-at-Risk Value-at-Risk is a risk measurement tool widely used by banks and institutions.
This script uses historical simulation method for the calculation of VaR. The default settings are 250-days period. 1 percentile (or 99 percentile confidence level.)
This means the daily loss for the past 250 days should not exceed the risk measure 99% of the time.
traders can calculate the desired level of risk by converting the timeframe OR by multiplying the square root (expected holding period) to find out the VaR value for 5 days, 25 days, 250 days etc.
Do take note that the default assumes a long position, if you are taking a short position, the percentile value has to be adjusted accordingly (to find the worst 1 percent loss for shorts will require changing the input to 99)
Linear Regression 200/100/50/20Four time frames in one indicator in different colors, showing current price trend in different scopes.
If the slope of the smaller time frame is in a (0,75;1,25) interval of some of the bigger ones the smaller one is omitted (different signs near zero are not coalesced in that way though).
Every time frame has four deltas of range in trend lines of different grade of transparency (2-1-4-3), as well as a vertical line denoting regression date range start, also bearing the same color (blue-red-green-gray for 200/100/50/20).
On the right of the latest bar are Pearson coefficients and slopes of the regressions, 200/100/50/20 bottom-up, also appropriately colored.
BUY/SELL SIGNALS from LSMA/ALMA/HMAThis indicator uses the Least Squares Moving Average (LSMA) in tandem with the Arnaud Legoux Moving Average (ALMA) and Hull Moving Average (HMA) to generate buy-sell signals, represented by the light blue and orange crosses respectively.
The yellow lines produced by the indicator show periods of market uncertainty and possible reversal, and a modified, user-defined VWAP is given along with a 200 EMA. The point of this indicator was to create a smoother, more visually appealing moving-average, price action-based indicator when compared to the trend-step and simple moving average indicators available. This indicator uses a fast (25 period) LSMA coupled with a slower (50 period) HMA and ALMA in order to make signals both smooth and fast.
This indicator will work on all markets, except the modified VWAP will naturally not function if the volume is unpublished for that market. Use of this indicator will be very strong in trending markets, as the yellow line will spot possible reversals quite early, meaning the trader can be ready early for the buy/sell signal to appear. Use of this indicator in sideways market conditions will be limited, as it is for all moving average-based indicators, but the damage will be minimal as bad trades will be quickly realized by the indicator and the color will switch to yellow, this is possible because of the settings differences between the period lengths of the LSMA vs the ALMA + HMA.
Percentage Levels by TimeframePlots the positive and negative percentage levels from a selection of timeframes and sources for any ticker. You can use this within a pullback trading system. For example, if you historically look at the average pullback of large cap stocks and ETF's, you can use this indicator to plot the levels it could pullback to for an entry to go long. It can be used as potential targets when trading a ticker short. Another use for this is to backtest the set percentage targets using TradingView's bar replay feature to see how ETF's and large cap stocks have reacted at these levels. Note: This is intended to be used at timeframes equal to higher than the chart's as it may cause re-painting issues.
Currently percentage levels are statically set to 1, 3, 5, 10, 15, 20, 25, and 30% levels above and below the chosen source (open, high, low, close). You can also display the data based on timeframes from Daily (1D) all the way up to Yearly (12M)
*Not financial advice but in my opinion the current percentage levels set (see above) are best used for ETF's and Large Cap Stocks.
Jan 2
Release Notes: Added the ability to select the historical bars to look back when plotting levels
Jan 2
Release Notes: To get a better display or proper resolution on your charts, change the view settings to "Scale Price Chart Only"
Jan 2
Release Notes: To add % labels for this indicator on the price axis, change your chart settings to include "Indicator Name Label" & "Indicator Last Value". You can find this under the Label section after hitting the gear icon in the bottom right of your chart.
Jan 2
Release Notes: Added: Custom Line Plot Extension Settings. Ideally both values should be equal to display optimal extended lines. To return to a base setting: '1' = Historical Lookback & '0' = Offset Lines. Also note this is dependent on the timeframe you are viewing on the chart.
Jan 2
Release Notes: Removed indicator from example chart that was not needed.
Jan 2
Release Notes: Updated some comments in the Pine Script
Jan 2
Release Notes: Update: Added commentary and instructions in the indicator settings to address recommended line plot settings for Stocks/ETF's vs Futures
Jan 2
Release Notes: Changed title from "Calculation Method" to "Calculation Source"
Jan 4 2021
Normal use of security() dictates that it only be used at timeframes equal to or higher than the chart's as it may cause re-painting
Slope Adaptive Moving Average (MZ SAMA)INTRODUCTION
This script is inspired from "Vitali Apirine (Stocks & Commodities V.36:5: Adaptive Moving Averages)" and a correction to Dynamic Volume Adaptive Moving Average (MZ DVAMA) . I have used slope filtering in order to adapt trends more precisely for better trades.
Slope adaption makes it better for adaptive moving average to detect trend health; making it easier to make decisions based on market strong price momentums, consolidations or breakouts. This isn’t possible with only using simply Adaptive Moving Averages .
Adaptive Moving Averages curve doesn’t change its length based on Slope but it uses slope adaptive color for trend strength detection.
TREND DETECTION
Green Color:
Strong Uptrend with good price momentum.
Red Color:
Strong Downtrend.
Yellow Color:
Market is either choppy, sideways or consolidating. Better to avoid taking new positions and if trade is running then its good to carry it on.
DEFAULTS SETTINGS
AMA length is 200 (Better for timeframes higher than 1H)
Minor length is 6
Major length is 14
Slope period is set to 34 with 25 of initial range. Consolidation is always below 17.
ALERTS
Buy/Sell Alerts will follow on when slope is out of consolidation/choppiness area. Best entry is at absolute alerts timing but other trades can be started midway based on trend condition.
Circular Candlestick ChartAn original (but impractical) way to represent a candlestick chart using circles arc.
The most recent candles are further away from the circle origin. Note that OHLC values follow a clockwise direction. A higher arc length would indicate candles with a higher body or wick range.
The Length settings determine the number of past candles to be included in the circular candlestick chart. The Width setting control the width of the circular chart. The Spacing setting controls the space between each arcs. Finally, the Precision settings allow obtaining a more precise representation of candles, with lower values returning more precise results, however, more precision requires a higher amount of lines. Settings are quite hard to adjust, using a higher length might require a lower spacing value.
Additionally, the script includes two pointers indicating the location of the 75 (in blue) and 25 (in orange) percentiles. This allows obtaining an estimate of the current market sentiment, with the most recent arcs laying closer to the 75 percentile pointer indicating an up-trend.
This new way to represent candlesticks might be useful to more easily identify candles clusters or to find new price patterns. Who knows, we know that new ways to see prices always stimulate traders imagination.
See you next year.
ROC PercentileRate Of Change Percentile calculates the current ROC (user defined length) as a percentile rank.
We use 2 separate arrays, one for all positive ROC values and one for all negative values within a defined lookback period. Then the current ROC value is compared to those arrays to find it's percentile ranking.
For example, a ranking of 75 means the ROC is in the 75th percentile of all POSITIVE ROC values over the lookback period.
A ranking of -80 is in the 80th percentile of all NEGATIVE ROC values over the lookback period.
Most ROC scripts use raw ROC values (or smoothed or otherwise altered), or have stochastic formula applied to them, I've not seen one that displays ROC as percentile ranking of previous positive/negative values.
What is the advantage?
Raw ROC data only gives half the picture. What we want to do is compare the ROC to previous ROC values, to give a sense of scale. Raw ROC values don't give you that context and you can only compare visually, usually limited to the number of bars you can see on your screen.
Using a percentile ranking gives us the context of current Rate of Change relative to the previous Rate of Change over a large lookback period, and not just visually but mathematically.
Why not using a long stochastic ROC? The problem with stochastics in general is that an outlier data point can ruin the data for the rest of the lookback period.
For example, imagine a huge outlier 8% ROC. The 2nd largest ROC is 4% and the 3rd largest is 2%, with all other values below this.
In this example, a stochastic ROC would display the 8% outlier as 100, the 4% as 50, the 2% as 25 and all other data would be squeezed down between 0-25.
Additionally, a value of 60 may have vastly different meaning depending on whether the lookback period contains a large outlier or not.
With a percentile ranking, that 8% outlier would still have a value of 100. But the 4% and 2% would be 99 and 98 respectively (this assumes 100 data points in the series, in reality values will usually be decimals).
This effectively flattens the curve and gives a more consistent and dependable experience, allowing you to more accurately assess the relative importance of the current ROC.
The line of circles is set at the 50 and -50 values for quick comparison.
Values > 50 represent ROC greater than 50% of previous positive ROC values.
Values < -50 represent ROC greater than 50% of previous negative ROC values.
Pivots High-Low Screener & AlertsHi fellow traders ,
Pleased to share a Pivot High - Low Screener.
The script uses the TV inbuilt Pivot function.
It Screens 25 tickers default set, these can be modified in the input dialog box.
All you need to do is attach to any chart and set the periodicity or the resolution of the chart to your desired alert() frequency requirement.
Now go to the input settings icon of the script and set your Pivot right and left parameters!
Set the alert from the menu as usual click - Any alert() function call and bingo you are done!!
Similarily change the chart periodicity to the next timeframe and set the next alert.
No more opening multiple charts and setting individual time consuming alerts().
You will get concatenated alerts or summary alerts for your tickers.
Track 25tickers with a single alert for each timeframe(Supports 40 tickers).
Happy trading with TV..
Mazuuma Churn IndicatorThis indicator was specifically made to confirm a periode of sideways movement (churn) on Bitcoin. It can probably be used for other cryptocurrencies as well. I use it on the daily timeframe.
Yellow means "Unconfirmed".
Orange means "Partially Confirmed".
Red means "Confirmed"
The indicator is not perfect, so use your common sense.
Churn starts when at least 2 of the conditions below are met (use also your common sense):
1. ATR < MA 20 on ATR
2. Distance to EMA 200 must be ≤ 16% at “Open churn”
3. EMA 12 on RSI between 40 and 60
4. ADX < 25
The above are weighted. Meaning no 1 has most significance. The numbers can be tweaked.
Reversal coming
* The indicators above break out, especially the ATR
* Color shift of the Heikin Ashi candle on weekly timeframe
* Engulfing candle on weekly timeframe
Because of the offset of the EMA 200, the precision of the Churn predictor can be off after a VERY big spike up or down, e.g. dec 2017. After such a spike use your common sense.
Personally I use this for bot trading, i.e. turn off trend following bots when in sideways market and use grid bots or other means of trading instead.
Trading Made Easy ATR BandsAs always, this is not financial advice and use at your own risk. Trading is risky and can cost you significant sums of money if you are not careful. Make sure you always have a proper entry and exit plan that includes defining your risk before you enter a trade.
Background:
This is my take on two relatively famous indicators that paint the colour of your candles in order to help identify trend direction and smooth out market noise. The Elder Impulse System was designed by Dr . Alexander Elder in his book Come Into My Trading Room and attempts to identify the change of trends and when these trends speed up and slow down (school.stockcharts.com). The system used a 13 period EMA and a MACD histogram, and compared each of these indicators to the previous period. In short, when both the histogram and the EMA were rising, the trend was accelerating to the upside and when both were falling, accelerating to the downside. Conversely, when the indicators were not in alignment, say the MACD falling but the EMA rising, it signaled a slowing down of momentum. The downside of this indicator is that it be can rather jumpy, focusing on a short period EMA for 50% of its calculation, leaving a trader to potentially sit on the sidelines during opportune pull backs to enter winning positions, or exit early when there is still a lot of gas left in the tank.
A similar concept has been employed by John Carter and his organization, SimplerTrading, with the 10X bars indicator. However, here they use the famous Directional Movement Index (DMI) created by J. Welles Wilder as the basis for their bars (www.simplertrading.com). John Carter states that the use of this indicator can lead to getting in earlier on more, bigger, and faster setups. The downside of this indicator is the reliance on the ADX calculations to keep you out of rangebound trades. Anyone who is familiar with the DMI system understands it has unparalleled ability to identify longer term trends, but it is also quite slow, leaving the trader to miss a good portion of the initial runup due to this ADX portion that is very slow to get moving and also slow to signal exits.
In short, both of these systems are designed with one thing in mind: keeping the trader on the right side of the move --- but both suffer from the same issue but on opposite sides of the spectrum. One is too fast and the other is too slow. Ultimately, leaving profits on the table for the trader when such a situation could be avoided.
Here I present my own take on these and have made the “Trading Made Easy ATR Bands”. I name it this because trading is much easier when you trade with the prevailing trend, and this system identifies these periods quite effectively while doing a better job of handling the speed flux of most markets. The base formula uses the DMI as its main calculation and the relationship between the DMI+ and DMI- lines, respectively, like the 10X bars. While the trader can investigate these on their own to understand these more intimately, essentially the DMI+ and DMI- lines are calculating the highs and lows respectively of each bar compared to a period in the past and smoothed with the true range, a measurement of volatility . What this ultimately presents is a picture of uptrends and downtrends, where price is making consistently more highs or more lows over a period of time. Where I have modified this relative to the 10X bars is I have ignored the ADX calculations. Further, values over 25 have been discussed as “strong” momentum, in my calculations, I have sped this up to 20 to get a trader into the move earlier. Second, I have added an additional calculation based around the 21-period exponential moving average calculated against its previous output. This then, like the Elder Impulse System, has two forms of market momentum as its calculation to smooth out noise, but has the benefit of being less jumpy, like the original 10X bar system. I have added a series of exponential moving averages following the Fibonacci sequence from 8-144 as a system of dynamic support and resistance showing the sentiment of both the shorter and longer term market participants. Last, I have added a series of Keltner Channels , from 1X-4X, that encompass the 21 period EMA as a base line. The 21 EMA is a stable in all of John Carter’s work and I do believe he is correct that the market is mostly structured around this line, since it roughly approximates one month of trading data. It is not uncommon to see price expand and contract back to this line over and over again.
Trade Signals:
Strong Bullish Momentum – The system will generate a green bar when the DMI+ line is over the DMI- line, the DMI+ line is equal or greater than 20 and the 21 EMA has increased relative to its last close.
Weak Bullish Momentum – The system will generate a blue bar in several scenarios. First, when the DMI+ line is over the DMI- line but the DMI+ line is not over 20 and the EMA is equal or less than the previous close. It will also print a blue bar if either the DMI or the EMA are not aligned, such as the DMI+ is over the DMI- but not over 20 but the EMA has risen compared to the last bar. Last, it will also print a blue bar if the DMI- is over the DMI+ but the EMA is rising.
Strong Bearish Momentum – The system will generate a red bar when the DMI- line is over the DMI+ line, the DMI- line is equal or greater than 20, and the 21 EMA has fallen relative to its last close.
Weak Bearish Momentum – The system will generate an orange bar in several scenarios. First when the DMI- line is over the DMI+ line but the DMI- line is not over 20 and the EMA is equal or greater than the last bar. It will also print an orange bar if either the DMI or the EMA are not aligned, such as the DMI- is over the DMI+ but not over 20 but the EMA has fallen. Lastly, it will also print an orange bar if the DMI+ line is over the DMI- and the EMA has fallen relative to the last bar.
Uses:
1) Like the Elder Impulse System and 10X Bar systems, these should be used as trade filters only.. It is in the trader’s best interest to trade with the trends and these bars identify these periods but may not always generate the most opportune time to enter a market. For instance, trying to short a market when the market is in a phase of Strong Bullish Momentum would not be wise, and vice versa with trying to open long positions when the market is exhibiting Strong Bearish Momentum. Use multiple forms of evidence to confirm the signals shown before entering any trade and to not take these signals on their without confluence of ideas. A viable system could use the Elder Triple Screen System (for reference, see this decent write up --- www.dailyforex.com) with the Trading Made Easy Bands as your “Tide” or longer term filter, and a further trading plan to establish an entry on a short time frame pull back.
2) Interim Trend Exhaustion – Keltner channels work as moving standard deviations from the 21 EMA . 3X multipliers will encompass 99.7% of price and 4X will encompass 99.9% of price away from the 21 EMA . During a trend it would be a good idea to lock in partial profits when price reaches these outer extrema as it is very highly probable that a retracement back to the mean is approaching. While not part of the system, and not recommended to be used by this system, a mean reversion trader could in theory look for reversals at these extrema points and trade a mean reversion strategy back to the 21EMA, but is a much riskier trade with lower probability of success. A trend trader should look to enter trades when a signal is given within the 1ATR or 2ATR zone as this is when price has not really started accelerating yet and is likely to see continued momentum in that direction.
Dictionary/Object LibraryThis Library is aimed to mitigate the limitation of Pinescript having only one structured data type which is only arrays.
It lacks data types like Dictionaries(in Python) or Object (in JS) that are standard for other languages. Tuples do exist, but it hardly solves any problem.
Working only with Arrays could be overwhelming if your codebase is large. I looked for alternatives to arrays but couldn't find any library.
So I coded it myself and it's been working good for me. So I wanted to share it with you all.
What does it do:
==================
If you are familiar with Python or Javascript, this library tries to immimate Object/Dictonary like structure with Key Value Pairs.
For Example:
object= {name:"John Doe", age: 28 , org: "PineCoders"}
And then it also tries to immitate the Array of Objects (I call it Stack)
like this:
stack= Array({name:"John Doe", age: 28 , org: "PineCoders"},
{name:"Adam Smith", age: 32 , org: "PineCoders"},
{name:"Paragjyoti Deka", age: 25 , org: "PineCoders"})
So there are basically two ideas: Objects and Stacks.
But it looks whole different in Pinescript for obvious reasons.
Limitation:
The major limitation I couldn't overcome was that, for all of the values: both input and return values for properties will be of string type.
This is due to the limiation of Pinecsript that there is no way to return a value on a if-else statement dynamically with different data types.
And as the input data type must be explicitly defined when exporting the library functions, only string inputs are allowed.
Now that doesn't mean you won't be able to use integer, float or boolens, you just need to pass the string value for it using str.tostring() method.
And the output for the getter functions will be in strings as well. But I have added some type conversion methods that you could use from this library itself.
From String to Float, String To Integer and String to Boolean: these three methods are included in this library.
So basically the whole library is based on a manipulatiion of Array of strings under the hood.
///////////////
Usage
///////////////
Import the library using this statement:
import paragjyoti2012/STR_Dict_Lib/4 as DictLib
Objects
First define an object using this method:
for eample:
object1= DictLib.init("name=John,age=26,org=")
This is similar to
object1= {name:"John",age:"26", org:""} in JS or Python
Just like we did here in for "org", you can set initital value to "". But remember to pass string values, even for a numerical properties, like here in "age".
You can use "age="+str.tostring(age). If you find it tedious, you can always add properties later on using .set() method.
So it could also be initiated like this
object= DictLib.init("name=John")
and later on
DictLib.set(object1,"age", str.toString(age))
DictLib.set(object1,"org", "PineCoders")
The getter function looks like this
age= DictLib.get(object1,"age")
name=DictLib.get(object1,"name")
The first argument for all methods .get, .set, and .remove is the pointer (name of the object).
///////////////////////////
Array Of Objects (Stacks)
///////////////////////////
As I mentioned earlier, I call the array of objects as Stack.
Here's how to initialize a Stack.
stack= DictLib.initStack(object1)
The .initStack() method takes an object pointer as argument. It simply converts the array into a string and pushes it into the newly created stack.
Rest of all the methods for Stacks, takes the stack pointer as it's first arument.
For example:
DictLib.pushStack(stack,object2)
The second argument here is the object pointer. It adds the object to it's stack. Although it might feel like a two dimentional array, it's actually an one dimentional array with string values.
Under the hood, it looks like this
////////////////////
Methods
////////////////////
For Objects
-------------------
init() : Initializes the object.
params: (string) e.g
returns: The object ( )
example:
object1=DictLib.init("name=John,age=26,org=")
...................
get() : Returns the value for given property
params: (string object_pointer, string property)
returns: string
example:
age= DictLib.get(object1,"age")
.......................
set() : Adds a new property or updates an existing property
params: (string object_pointer, string property, string value)
returns: void
example:
DictLib.set(object1,"age", str.tostring(29))
........................
remove() : Removes a property from the object
params : (string object_pointer, string property)
returns: void
example:
DictLib.set(object1,"org")
........................
For Array Of Objects (Stacks)
-------------------------------
initStack() : Initializes the stack.
params: (string object_pointer) e.g
returns: The Stack
example:
stack= DictLib.initStack(object1)
...................
pushToStack() : Adds an object at at last index of the stack
params: (string stack_pointer, string object_pointer)
returns: void
example:
DictLib.pushToStack(stack,object2)
.......................
popFromStack() : Removes the last object from the stack
params: (string stack_pointer)
returns: void
example:
DictLib.popFromStack(stack)
.......................
insertToStack() : Adds an object at at the given index of the stack
params: (string stack_pointer, string object_pointer, int index)
returns: void
example:
DictLib.insertToStack(stack,object3,1)
.......................
removeFromStack() : Removes the object from the given index of the stack
params: (string stack_pointer, int index)
returns: void
example:
DictLib.removeFromStack(stack,2)
.......................
getElement () : Returns the value for given property from an object in the stack (index must be given)
params: (string stack_pointer, int index, string property)
returns: string
example:
ageFromObject1= DictLib.getElement(stack,0,"age")
.......................
setElement() : Updates an existing property of an object in the stack (index must be given)
params: (string stack_pointer, int index, string property, string value)
returns: void
example:
DictLib.setElement(stack,0,"age", str.tostring(32))
........................
includesElement() : Checks if any object exists in the stack with the given property-value pair
params : (string stack_pointer, string property, string value)
returns : Boolean
example:
doesExist= DictLib.includesElement(stack,"org","PineCoders")
........................
searchStack() : Search for a property-value pair in the stack and returns it's index
params: (stringp stack_pointer, string property, string value)
returns: int (-1 if doesn't exist)
example:
index= DictLib.searchElement(stack,"org","PineCoders")
///////////////////////
Type Conversion Methods
///////////////////////
strToFloat() : Converts String value to Float
params: (string value)
returns: float
example:
floatVal= DictLib.strToFloat("57.96")
.............................
strToInt() : Converts String value to Integer
params: (string value)
returns: int
example:
intVal= DictLib.strToFloat("45")
.............................
strToBool() : Converts String value to Boolean
params: (string value)
returns: boolean
example:
boolVal= DictLib.strToBool("true")
.............................
Points to remember
...............
1. Always pass string values as arguments.
2. The return values will be of type string, so convert them before to avoid typecasting conflict.
3. Horses can't vomit.
More Informations
====================
Yes, You can store this objects and stacks for persisting through the iterations of a script across successive bars.
You just need to set the variable using "var" keyword. Remember this objects and stacks are just arrays,
so any methods and properties an array have it pinescript, would be applicable for objects and stacks.
It can also be used in security functions without any issues for MTF Analysis.
If you have any suggestions or feedback, please comment on the thread, I would surely be happy to help.