MTF Stochastic ScannerThis Stochastic scanner can be use to identify overbought and oversold of 10 symbols over multiple timeframes
it will give you a quick overview which pair is more overbough or more oversold and also signals tops and bottoms in the AVG row
light red/green cell = weak bearish (Stoch = 30-20) / bullish (Stoch = 70-80)
medium red/green cell = bearish (Stoch = 20-10) / bullish (Stoch = 80-90)
dark red/green cell = strong bearish (Stoch <= 10) / bullish (Stoch >= 90)
gray cell = neutral (Stoch = 30-70)
Usage
If AVG (average of all 4 timeframes) falls below 20, the cell will get green, indicating a good time to enter long (buy)
If AVG (average of all 4 timeframes) rises above 80, the cell will get red, indicating a good time to enter short (sell)
Use the "MTF Stochastic Scanner" in combination with the " MTF RSI Scanner "
to find tops (RSI MTF avg >=70 AND Stochastic MTF avg >= 80)
or bottoms (RSI MTF avg <= 30 AND Stochastic MTF avg <= 20)
Here is how the two MTF scanners looked on Nov 08 2021 (ATH) »
and here how the MTF scanners looked on June 21 2022
use TradingViews Replay function to check how it would have worked in the past and when not.
As always… there NOT a single indicator that can show to the top & bottom 100% every single time. So use with caution, with other indicators and/or deeper understanding of technicals analysis ☝️☝️☝️
Settings
You can change the timeframes, symbols, Stochastic settings, overbought/oversold levels and colors to your liking
Drag the table onto the price chart, if you want to use it as an overlay.
NOTE:
Because of the 4x10 security requests, it can take up to 1 minute for changed settings to take effect! Please be patient 🙃
If you have any idea on how to optimise the code, please feel free to share 🙏
*** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 ***
Komut dosyalarını "top" için ara
MTF RSI ScannerThis RSI scanner can be use to identify the relative strength of 10 symbols over multiple timeframes
it will give you a quick overview which pair is more bearish or more bullish and also signals tops and bottoms in the AVG row
light red/green cell = weak bearish (RSI = 45-35) / bullish (RSI = 55-65)
medium red/green cell = bearish (RSI = 35-25) / bullish (RSI = 65-75)
dark red/green cell = strong bearish (RSI <= 25) / bullish (RSI >= 75)
gray cell = neutral (RSI= 45-55)
Usage
If AVG (average of all 4 timeframes) falls below 30, the cell will get green, indicating a good time to enter long (buy)
If AVG (average of all 4 timeframes) rises above 70, the cell will get red, indicating a good time to enter short (sell)
Use the "MTF RSI Scanner" in combination with the "MTF Stochastic Scanner"
to find tops (RSI MTF avg >=70 AND Stochastic MTF avg >= 80)
or bottoms (RSI MTF avg <= 30 AND Stochastic MTF avg <= 20)
Here is how the two MTF scanners looked on Nov 08 2021 (ATH) »
and here how the MTF scanners looked on June 21 2022
use TradingViews Replay function to check how it would have worked in the past and when not.
As always… there NOT a single indicator that can show to the top & bottom 100% every single time. So use with caution, with other indicators and/or deeper understanding of technicals analysis ☝️☝️☝️
Settings
You can change the timeframes, symbols, RSI settings, overbought/oversold levels and colors to your liking
Drag the table onto the price chart, if you want to use it as an overlay.
NOTE:
Because of the 4x10 security requests, it can take up to 1 minute for changed settings to take effect! Please be patient 🙃
If you have any idea on how to optimise the code, please feel free to share 🙏
*** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 ***
jma + dwma macdThis MACD system was originally conceptualized by Jurik Research and made public to the world on their website .
The indicator consists of the faster Jurik Moving Average ( JMA ) and the slower Double Weighted Moving Average (DWMA). A long signal (green dot at the bottom) is shown when the JMA line crosses above the DWMA line (indicating a possible reversal in trend). A short signal (red dot at the top) is shown when the JMA line crosses below the DWMA line. Take profit signals (tan dot at the top/bottom) are shown when the JMA line reverses directions. Alerts for signals are included in this indicator.
The default settings are not optimized for any timeframe.
For an overlay version of this script, please see the following:
Credit to @everget for the re-creation of the Jurik Moving Average in pinescript.
Market Sector Scanner/Screener With MOM + RSI + MFI + DMI + MACDMARKET SECTOR SCANNER/SCREENER MOM + RSI + MFI + DMI + MACD FOR STOCKS CRYPTO & FOREX
This script scans 9 markets constantly and returns the values of 5 different popular indicators.
This indicator helps you see when one of your favorite stocks is bullish or bearish when you are not watching that chart so you can always catch the big moves as they happen.
***HOW TO USE***
A great way to use this market screener is to set up separate chart layouts for each sector you like to trade. Such as the top 9 stocks in the S & P 500, top 9 stocks in the XLF etf, etc. Make sure to set up separate chart layouts in Tradingview so you don’t have to change the symbols constantly. This will give you a good idea in real time if that entire sector is bullish, bearish or mixed. When the entire grid goes red or green, those are very strong signs of market direction across that entire sector, so trades in the corresponding direction are quite safe.
This can be done for crypto as well, using the top 9 cryptocurrencies by market cap. Watch the grid and wait for the entire lot to turn green or red and then take a position in that direction.
You can also use this with a variety of your favorite tickers so you can see when specific markets are looking strong in either direction, instead of constantly changing charts or missing good opportunities because you weren’t watching that specific chart.
This grid can also be used to determine how long to hold a position as well. If the entire grid is still green or red, according to your trade direction, you can usually expect price to continue in that direction until you see some conflicting colors start to pop up on the grid. As it starts to give mixed signals, you can expect the market to be indecisive or reverse which is a good time to get out.
If you have your scanner setup to show similar markets in one sector, be careful taking trades when the grid is very mixed in color. This shows signs of indecision and will likely have choppy price action until the market decides a direction so make sure to use caution when the grid is mixed. It is best to wait for the entire grid to turn green or red and then take position.
***COLOR MEANINGS***
When each indicator value is in bullish territory, the background of that value will turn green.
When each indicator value is in bearish territory, the background of that value will turn red.
When each indicator value is in neutral territory, the background of that value will turn blue.
When all 5 indicators for a ticker are bullish, the ticker background will turn green.
When all 5 indicators for a ticker are bearish, the ticker background will turn red.
When there is a mixture of bullish and bearish values, the ticker background will turn blue.
***CUSTOMIZATION***
You can customize which tickers are in your scanner including stocks, crypto, futures and forex, the source of the indicators, the length of the indicator settings and the smoothing parameters.
***INDICATORS USED***
The indicators used for each ticker are as follows:
Momentum(MOM) - Default length is 14. Bullish is above zero, bearish is below zero.
Relative Strength Index(RSI) - Default length is 14. Bullish is above 50, bearish is below 50.
Money Flow Index(MFI) - Default length is 14. Bullish is above 50, bearish is below 50.
Directional Movement Index(DMI) - Default length is 14 and smoothing is 14. Calculated by subtracting di minus from di plus. If the value is positive, it is bullish. If the value is negative, it is bearish.
Moving Average Convergence & Divergence(MACD) - Default settings are 12, 26, 9. If the short line is greater than the long line, then it is bullish. If the short line is less than the long line, it is bearish.
***MARKETS***
This market scanner can be used as a signal on all markets, including stocks, crypto, futures and forex.
***TIMEFRAMES***
This scanner can be used on all timeframes and pulls data from other tickers using the same timeframe as what your current chart is set to.
***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 Trend Friend Scalp & Swing Signals, Auto Fibonacci, Directional Movement Index, Volume Profile With Buy/Sell Pressure, Auto Support And Resistance and Money Flow Index in combination with this Scanner. They all have real time Bullish and Bearish labels as well so you can immediately understand each indicator's trend.
Library CommonLibrary "LibraryCommon"
A collection of custom tools & utility functions commonly used with my scripts
@description TODO: add library description here
getDecimals() Calculates how many decimals are on the quote price of the current market
Returns: The current decimal places on the market quote price
truncate(float, float) Truncates (cuts) excess decimal places
Parameters:
float : number The number to truncate
float : decimalPlaces (default=2) The number of decimal places to truncate to
Returns: The given number truncated to the given decimalPlaces
toWhole(float) Converts pips into whole numbers
Parameters:
float : number The pip number to convert into a whole number
Returns: The converted number
toPips(float) Converts whole numbers back into pips
Parameters:
float : number The whole number to convert into pips
Returns: The converted number
getPctChange(float, float, int) Gets the percentage change between 2 float values over a given lookback period
Parameters:
float : value1 The first value to reference
float : value2 The second value to reference
int : lookback The lookback period to analyze
av_getPositionSize(float, float, float, float) Calculates OANDA forex position size for AutoView based on the given parameters
Parameters:
float : balance The account balance to use
float : risk The risk percentage amount (as a whole number - eg. 1 = 1% risk)
float : stopPoints The stop loss distance in POINTS (not pips)
float : conversionRate The conversion rate of our account balance currency
Returns: The calculated position size (in units - only compatible with OANDA)
bullFib(priceLow, priceHigh, fibRatio) Calculates a bullish fibonacci value
Parameters:
priceLow : The lowest price point
priceHigh : The highest price point
fibRatio : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
bearFib(priceLow, priceHigh, fibRatio) Calculates a bearish fibonacci value
Parameters:
priceLow : The lowest price point
priceHigh : The highest price point
fibRatio : The fibonacci % ratio to calculate
Returns: The fibonacci value of the given ratio between the two price points
getMA(int, string) Gets a Moving Average based on type (MUST BE CALLED ON EVERY CALCULATION)
Parameters:
int : length The MA period
string : maType The type of MA
Returns: A moving average with the given parameters
getEAP(float) Performs EAP stop loss size calculation (eg. ATR >= 20.0 and ATR < 30, returns 20)
Parameters:
float : atr The given ATR to base the EAP SL calculation on
Returns: The EAP SL converted ATR size
getEAP2(float) Performs secondary EAP stop loss size calculation (eg. ATR < 40, add 5 pips, ATR between 40-50, add 10 pips etc)
Parameters:
float : atr The given ATR to base the EAP SL calculation on
Returns: The EAP SL converted ATR size
barsAboveMA(int, float) Counts how many candles are above the MA
Parameters:
int : lookback The lookback period to look back over
float : ma The moving average to check
Returns: The bar count of how many recent bars are above the MA
barsBelowMA(int, float) Counts how many candles are below the MA
Parameters:
int : lookback The lookback period to look back over
float : ma The moving average to reference
Returns: The bar count of how many recent bars are below the EMA
barsCrossedMA(int, float) Counts how many times the EMA was crossed recently
Parameters:
int : lookback The lookback period to look back over
float : ma The moving average to reference
Returns: The bar count of how many times price recently crossed the EMA
getPullbackBarCount(int, int) Counts how many green & red bars have printed recently (ie. pullback count)
Parameters:
int : lookback The lookback period to look back over
int : direction The color of the bar to count (1 = Green, -1 = Red)
Returns: The bar count of how many candles have retraced over the given lookback & direction
getBodySize() Gets the current candle's body size (in POINTS, divide by 10 to get pips)
Returns: The current candle's body size in POINTS
getTopWickSize() Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's top wick size in POINTS
getBottomWickSize() Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's bottom wick size in POINTS
getBodyPercent() Gets the current candle's body size as a percentage of its entire size including its wicks
Returns: The current candle's body size percentage
isHammer(float, bool) Checks if the current bar is a hammer candle based on the given parameters
Parameters:
float : fib (default=0.382) The fib to base candle body on
bool : colorMatch (default=false) Does the candle need to be green? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a hammer candle
isStar(float, bool) Checks if the current bar is a shooting star candle based on the given parameters
Parameters:
float : fib (default=0.382) The fib to base candle body on
bool : colorMatch (default=false) Does the candle need to be red? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
isDoji(float, bool) Checks if the current bar is a doji candle based on the given parameters
Parameters:
float : wickSize (default=2) The maximum top wick size compared to the bottom (and vice versa)
bool : bodySize (default=0.05) The maximum body size as a percentage compared to the entire candle size
Returns: A boolean - true if the current bar matches the requirements of a doji candle
isBullishEC(float, float, bool) Checks if the current bar is a bullish engulfing candle
Parameters:
float : allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
isBearishEC(float, float, bool) Checks if the current bar is a bearish engulfing candle
Parameters:
float : allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
isInsideBar() Detects inside bars
Returns: Returns true if the current bar is an inside bar
isOutsideBar() Detects outside bars
Returns: Returns true if the current bar is an outside bar
barInSession(string, bool) Determines if the current price bar falls inside the specified session
Parameters:
string : sess The session to check
bool : useFilter (default=true) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls within the given time session
barOutSession(string, bool) Determines if the current price bar falls outside the specified session
Parameters:
string : sess The session to check
bool : useFilter (default=true) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls outside the given time session
dateFilter(int, int) Determines if this bar's time falls within date filter range
Parameters:
int : startTime The UNIX date timestamp to begin searching from
int : endTime the UNIX date timestamp to stop searching from
Returns: A boolean - true if the current bar falls within the given dates
dayFilter(bool, bool, bool, bool, bool, bool, bool) Checks if the current bar's day is in the list of given days to analyze
Parameters:
bool : monday Should the script analyze this day? (true/false)
bool : tuesday Should the script analyze this day? (true/false)
bool : wednesday Should the script analyze this day? (true/false)
bool : thursday Should the script analyze this day? (true/false)
bool : friday Should the script analyze this day? (true/false)
bool : saturday Should the script analyze this day? (true/false)
bool : sunday Should the script analyze this day? (true/false)
Returns: A boolean - true if the current bar's day is one of the given days
atrFilter()
fillCell()
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.
MACRO BTC HEALTH 1WThis indicator is used as MACRO tool to view the outlook of BTC on the 1W time frame to illustrate (BLX chart works best)
BTC's price action and where it's at, it helps provide an indication of the crypto market's current health as BTC health is an overall indicator in the crypto market as a whole.
This indicator uses historic data to fit between 4 bands fitted to MA, top(red) when BTC is overheated, 2 bands in middle(yellow) when BTC in fair value, and bottom band(blue) when BTC is oversold
I combined MA that fit BTC 1W chart precisely to show when BTC looks overheated vs over sold using historic data.
When BTC is in the top bands historically overheated.
When BTC is in the middle it is fighting at fair value with the 2 yellow lines in the middle, bullish when above yellow lines, as they act as support, and in downtrend when price is below yellow lines and can act as resistance.
Historically the 200W MA is where BTC finds support at an oversold level at the bottom blue line.
When two yellow lines in middle cross downwards historically results in a downtrend to the bottom oversold line (blue). and when two yellow lines cross up and BTC holds them as support bullish trend continues until it is overheated passed the red band.
This indicator is not meant for day trading but is meant to illustrate a MACRO view of BTC current situation from a zoomed-out view, and to help illustrate to investors where things are at so they leave emotions out of the market and can make decisions based on BTC current levels using Historic data. Pro tip use bottom line(blue, oversold) as an opportunity to buy in and top line red(overheated) to scale out of positions, LONG TERM CRYPTO IS BULLISH BUT GREAT TO GET AN OUTLOOK OF THE CURRENT STATE OF BTC, WHILE ALSO USING MACRO ECONOMIC SENTIMENT IRL, FUNDAMENTAL ECONOMIC DECISIONS, ECONOMIC CONDITIONS/ENVIRONMENT, ECONOMIC HEALTH ,FED DECISIONS, INTEREST RATE ENVIRONMENT AND OF COURSE LOOKING AT CRYPTO ADOPTION.
Hope this indicator helps leave emotions out of the market by providing a good guide of BTC sentiment, and its current health to make decisions accordingly. NFA but good to envision the MACRO BTC HEALTH at the 1W timeframe.
Exponentially Deviating Moving Average (MZ EDMA)Exponentially Deviating Moving Average (MZ EDMA) is derived from Exponential Moving Average to predict better exit in top reversal case.
EDMA Philosophy
EDMA is calculated in following steps:
In first step, Exponentially expanding moving line is calculated with same code as of EMA but with different smoothness (1 instead of 2).
In 2nd step, Exponentially contracting moving line is calculated using 1st calculated line as source input and also using same code as of EMA but with different smoothness (1 instead of 2).
In 3rd step, Hull Moving Average with 3/2 of EDMA length is calculated using final line as source input. This final HMA will be equal to Exponentially Deviating Moving Average.
EDMA Advantages
EDMA's main advantage is that in case of top price reversal it deviates from conventional EMA of 2*Length. This benefits in using EDMA for EMA cross with quick signals avoiding unnecessary crossovers. EDMA's deviation in case of top reversal can be seen as below:
EDMA presents better smoothened curve which acts as better Support and resistance. EDMA coparison with conventional EMA of 2*length of EDMA is as follows.
Additional Features
EMA Band: EMA band is shown on chart to better visualize EMA cross with EDMA.
Dynamic Coloring: Chikou Filter library is used for derivation of dynamic coloring of EDMA and its band.
Alerts: Alerts are provided of all trade signals. Weak buy/sell would trigger if EMA of 2*EDMA_length crosses EDMA. Strong buy/sell would trigger if EMA of same length as of EDMA crosses EDMA.
Trade Confirmation with Chikou Filter: Trend filteration from Chikou filter library is used as an option to enhance trades signals accuracy.
Defaults
Currently default EDMA and EMA1 length is set to 20 period which I've found better for higher timeframes but this can be adjusted according to user's timeframe. I would soon add Multi Timeframe option in script too. Chikou filter's period is set to 25.
Stock Value - How Much Stock Should Worth?Stock Value
© danny_peanuts
There are many method of measuring value of stock. However I'm proposing most basic stock valuation based on Book Value, Earnings, Dividends and Money Supply:
SV = (BVPS + EPS + DPS) * (M2/M0)
BVPS = Book Value Per Share (Asset - Liability)
EPS = Earnings Per Share
DPS = Dividends Per Share
M2 = M2 Money Supply (Money Market)
M0 = M0 Money Supply (Base Money)
Fundamental value of a stock should be determine by it's BV which means total asset of a company if were liquidated today and use some of it's asset to pay of the debt. So technically BVPS is the intrinsic value of a stock. However the company is generating an earning which is profit and loss that should be added on top of the fundamental value of company, so thus EPS should be added on top of Book Value Per Share. Aside from earnings, the stock that you purchase give you dividends as your return so DPS also can be included on top of that. So all in all BVPS, EPS and DPS are the primary valuation of the stock. However most of the stock are traded way higher than their fundamental valuation. The main reason of this is the market dynamics which is driven by central banks printing of base money supply M0. The banking credit system then lend out this money to money markets as loan so that peoples can invest and by the company stock. This money supply extension of credit is known as money market M2 which drive the stock inflated price. The ratio between M2 and M0 are the money multiplier effect that drives the stock price higher than it's valuation. So the Stock Value should be the total number of BVPS + EPS + DPS times the M2 money multiplier as shown by this indicator.
If the stock are traded above their SV value, that means it's an overpriced bubble
If the stock are traded below their SV value, that means it's an underpriced burst
[blackcat] L2 Reversal Labels StrategyLevel: 2
Background
There is a Chinese proverb that says: "The great way leads to simplicity". This indicator is the representative of this meaning. Through the processing of the most common MACD indicator data, it is possible to quickly determine the market price: whether the current price is at a historical high or low, whether a reversal will happen soon, etc. at a glance.
Function
This is the strategy version of the same indicator which performs screening and filtering through the fast and slow line data corresponding to the output of the standard MACD indicator, so as to realize the function of judging the top and bottom of the trend.
Inputs
N/A
Key Signal
Near Top --> Top is reached and reversal may happen soon. (red labels)
Near Bottom --> Bottom is reached and reversal may happen soon. (green labels)
Remarks
The backtest result is picked up and optimized for BTCUSD '2D' time frame, it does not work constantly well for any time frame. You need to combine other indicators for other trading pair and time frame.
You can add alerts for this version.
This is a Level 2 free and open source indicator.
Feedbacks are appreciated.
Abz BTC InvestorInvestor indicator:
This indicator is intended to be used on a chart showing Bitcoin's historical price action. By viewing years of Bitcoin's history, it's possible to better see Bitcoin's current price within a long term context of the price rage.
Purpose and possible usage:
I built the indicator to make it easier for me and for friends and family to make better informed decisions about our Bitcoin investments. The indicator shows the historic range of the asset and indicates where Bitcoin is oversold (below the bottom line) and overbought (above the top purple line):
- Above the top purple line, I'll look to take some profits or consider hedging to protect my long term position's growth
- Below the bottom purple line, I'll look to dollar cost average into a long term position
I think the idea for this came from idea listening to the YouTuber Birb talking about how well Bitcoin tracked between the 200 day moving average (bottom navy moving average) and 5x that value (top moving average).
Hope you find it useful.
Best wishes,
Abzorba
CHOPORSI
CHOPORSI is a multiindicator.
This indicator help You to recognize potential in or out singal.
Base singals are from Choppines, RSI, AND DMI indicators.
It is a combination of 3 separate indicators like choppines RSI and DMI.
Then our new indicator see like bellow on next image.
Yellow line is sum of CHOP index and RSI , in this case we can say its a CHOPORSI Index.
Green line is DMI- line , this show us strength of sell position on the market.
We schould use other signals, like LSMA 50/100 to improve trend changing. Like on next picture.
Now how this indicator works?
Yellow line is the sum oF Chop and RSI value - 50.
Max and minimum value of CHOP and RSI are the same from 0 to 100.
We have sum of them.
Our minimum signal is 0+0-50=-50
maximum signal is 100+100-50= 150
Most times if both of tem are on top level ( then we have 150) the trend is chanhing from bullish to bearish.
The same way if the RSI ist on 0 and chop is over 50 ( then we have index 0 ) wee changing the tren from bearish to bullish.
Off course it not every time. We see other signals, to take our risk self not sugested by some art of indicators.
But if we are abowe topline, witch is set to 85 we can sey, we have have oversold signal.
Underline 30 isour potentialy buy signal.
Midrange 50 is mostly trand changin line.
This valu of top, mid bottom line you can change on the setting.
Every Coin have another level of this lines, and need to be checked individual to the coin.
Standard, settings are set fo timeframe : 12 min. 24 min, 1H and 4 H >
Blue crosses signalize possibilities trend changing.
This picture shou us how this indicator works.
Buy long signal : If yellow line is mostly at the bottom and green mostly on the top.
Sell long signal l. Yellow -top , green -bottom.
The Green line is from Directional Movement Index and is - DI line. Its show us selling trend. even higher position then mor sell of .
Standard value of CHOPPINES is 14 , works fin on 1H and abowe also wit the value of 28
Standard value for RSI AND -DI unchanging 14.
I tjink this is a simplu helpfull indycator.
WARNING!!! IF YOU AT THIS POINT CANT UNDERSUD THIS INDICATOR, PLEASE DONT USE THEM .
Signal, schould be confirmed with other indicators like MA, EMA even better with LSMA .
Please try it an make only paper trading, to undertand how its realy works.
Thank You!
Goethe B - Mutiple Leading Indicator PackageGoethe B is an Indicator Package that contains multiple leading and lagging indicators.
The background is that shows the local trend is calculated by either two Moving Averages or by a Kumo Cloud. By default the Kumo Cloud calculation is used.
What is the main oscillator?
- The main oscillator is TSV, or time segmented volume. It is one of the more interesting leading indicators.
What is the top bar?
-The top bar shows a trend confirmation based on the wolfpack ID indicator.
What are those circles on the second top bar?
-Those are Divergences of an internally calculated PVT oscillator. Red for Regular-Bearish, Green for Regular-Bullish.
What are those circles on the main oscillator?
-These are Divergences. Red for Regular-Bearish. Orange for Hidden-Bearish. Green for Regular-Bullish. Aqua for Hidden-Bullish.
What are those circles on the second lower bar?
-Those are Divergences of an internally calculated CCI indicator. Red for Regular-Bearish, Green for Regular-Bullish.
What is the lower bar?
-The lower bar shows a trend confirmation based on the Acceleration Oscillator, in best case it showes how far in the trend the current price action is.
What are those orange or aqua squares?
- These are TSI (true strength indicator) entry signals . They are calculated by the TSI entry signal, the TSI oscillator threshold.
Most settings of the indicator package can be modified to your liking and based on your chosen strategy might have to be modified. Please keep in mind that this indicator is a tool and not a strategy, do not blindly trade signals, do your own research first! Use this indicator in conjunction with other indicators to get multiple confirmations.
Logger Library For Pinescript (Logging and Debugging)Library "LoggerLib"
This is a logging library for Pinescript. It is aimed to help developers testing and debugging scripts with a simple to use logger function.
Pinescript lacks a native logging implementation. This library would be helpful to mitigate this insufficiency.
This library uses table to print outputs into its view. It is simple, customizable and robust.
You can start using it's .log() method just like any other logging method in other languages.
//////////////////
USAGE
//////////////////
-- Recommended: Please Read The Documentation From Source Code Below. It Is Much More Readable There And Will Be Updated Along With Newer Versions. --
Importing the Library
---------------------
import paragjyoti2012/LoggerLib/ as Logger
.init() : Initializes the library and returns the logger pointer. (Later will be used as a function parameter)
.initTable: Initializes the Table View for the Logger and returns the table id. (Later will be used as a function parameter)
parameters:
logger: The logger pointer got from .init()
max_rows_count: Number of Rows to display in the Logger Table (default is 10)
offset: The offset value for the rows (Used for scrolling the view)
position: Position of the Table View
Values could be:
left
right
top-right
(default is left)
size: Font Size of content
Values could be:
small
normal
large
(default is small)
hide_date: Whether to hide the Date/Time column in the Logger (default is false)
returns: Table
example usage of .initTable()
import paragjyoti2012/LoggerLib/1 as Logger
var logger=Logger.init()
var logTable=Logger.initTable(logger, max_rows_count=20, offset=0, position="top-right")
-------------------
LOGGING
-------------------
.log() : Logging Method
params: (string message, |string| logger, table table_id, string type="message")
logger: pass the logger pointer from .init()
table_id: pass the table pointer from .initTable()
message: The message to log
type: Type of the log message
Values could be:
message
warning
error
info
success
(default is message)
returns: void
///////////////////////////////////////
Full Boilerplate For Using In Indicator
///////////////////////////////////////
P.S: Change the | (pipe) character into square brackets while using in script (or copy it from the source code instead)
offset=input.int(0,"Offset",minval=0)
size=input.string("small","Font Size",options=|"normal","small","large"|)
rows=input.int(15,"No Of Rows")
position=input.string("left","Position",options=|"left","right","top-right"|)
hide_date=input.bool(false,"Hide Time")
import paragjyoti2012/LoggerLib/1 as Logger
var logger=Logger.init()
var logTable=Logger.initTable(logger,rows,offset,position,size,hide_date)
rsi=ta.rsi(close,14)
|macd,signal,hist|=ta.macd(close,12,26,9)
if(ta.crossunder(close,34000))
Logger.log("Dropped Below 34000",logger,logTable,"warning")
if(ta.crossunder(close,35000))
Logger.log("Dropped Below 35000",logger,logTable)
if(ta.crossover(close,38000))
Logger.log("Crossed 38000",logger,logTable,"info")
if(ta.crossunder(rsi,20))
Logger.log("RSI Below 20",logger,logTable,"error")
if(ta.crossover(macd,signal))
Logger.log("Macd Crossed Over Signal",logger,logTable)
if(ta.crossover(rsi,80))
Logger.log("RSI Above 80",logger,logTable,"success")
////////////////////////////
// For Scrolling the Table View
////////////////////////////
There is a subtle way of achieving nice scrolling behaviour for the Table view. Open the input properties panel for the table/indicator. Focus on the input field for "Offset", once it's focused, you could use your mouse scroll wheel to increment/decrement the offset values; It will smoothly scroll the Logger Table Rows as well.
/////////////////////
For any assistance using this library or reporting issues, please write in the comment section below.
I will try my best to guide you and update the library. Thanks :)
/////////////////////
[blackcat] L2 Reversal LabelsLevel: 2
Background
There is a Chinese proverb that says: "The great way leads to simplicity". This indicator is the representative of this meaning. Through the processing of the most common MACD indicator data, it is possible to quickly determine the market price: whether the current price is at a historical high or low, whether a reversal will happen soon, etc. at a glance.
Function
This indicator performs screening and filtering through the fast and slow line data corresponding to the output of the standard MACD indicator, so as to realize the function of judging the top and bottom of the trend.
Inputs
N/A
Key Signal
Near Top --> Top is reached and reversal may happen soon. (red labels)
Near Bottom --> Bottom is reached and reversal may happen soon. (green labels)
Remarks
This is a Level 2 free and open source indicator.
Feedbacks are appreciated.
Vertical LinesThis script plots vertical lines on charts or indicators. Unfortunately pinescript is lacking a vertical line plotting function. Vertical lines are useful to mark events, such as crossover of levels, indicators signals or as a time marker.
After searching the internet for a long time and trying different scripts, this script is the simplest and visually the best. You would think that plotting a vertical line would be relatively easy, it is not! I thank the unknow author for sharing this solution and now I will share it on tradingview to make it readily available to anybody that needs it.
RSI crossover signals are used as an example in this script. When the RSI crosses over 70 or below 30, the script plots a red or green vertical line.
The script plots a vertical line as a histogram bar. The histogram bar must have a height.
Setting the height near infinity like 1e20 will cover all the ranges from top to bottom in most charts, but doesn't work all the time. If the chart range is small in values, the line is not plotted or the chart is visually compressed because the top of the bar is also a data point in the chart. Another solution is to find the highest point in the chart and multiply it by a number from 2 to 10 to set the top of the histogram bar. But this solution doesn't work if the line is drawn in the indicator window. additionally if the chart or indicator includes negative values, a histogram bar with a negative height must be concatenated to the histogram bar with a positive height to cover the positive and negative range.
It would seem intuitive to include a vertical plot function since it is very useful and pinescript already has a horizontal line plot function called Hline. But pinescript is becoming less intuitive, and redundant. A case in point is Version 4 variable declaration and naming, it less intuitive and more redundant than previous versions. I beg Tradingview to adopt a more refined scripting language such as Matlab or Python for charting purposes. These languages can be easily ported to other analysis programs for AI or statistical analysis.
Wick Bodies [vnhilton]I noticed that changing the colour of the wicks through TradingView settings changes the colours of both the top and bottom wicks. I also noticed that the thickness of wicks couldn't be changed either so they remained very hard to see when zoomed out of charts. Wicks have the potential to show zones where price rejects from - this is useful for identifying potential support and resistance zones.
I created an alternative solution to this problem by creating bodies for the wicks. It's recommended that you hide the wicks so it shows candles as bars split into 3 segments (top segment representing top wick; middle segment representing candle; bottom segment representing bottom wick). Colours are customizable. Also includes borders for the wick bodies.
LeoLibraryLibrary "LeoLibrary"
A collection of custom tools & utility functions commonly used with my scripts
getDecimals() Calculates how many decimals are on the quote price of the current market
Returns: The current decimal places on the market quote price
truncate(float, float) Truncates (cuts) excess decimal places
Parameters:
float : _number The number to truncate
float : _decimalPlaces (default=2) The number of decimal places to truncate to
Returns: The given _number truncated to the given _decimalPlaces
toWhole(float) Converts pips into whole numbers
Parameters:
float : _number The pip number to convert into a whole number
Returns: The converted number
toPips(float) Converts whole numbers back into pips
Parameters:
float : _number The whole number to convert into pips
Returns: The converted number
av_getPositionSize(float, float, float, float) Calculates OANDA forex position size for AutoView based on the given parameters
Parameters:
float : _balance The account balance to use
float : _risk The risk percentage amount (as a whole number - eg. 1 = 1% risk)
float : _stopPoints The stop loss distance in POINTS (not pips)
float : _conversionRate The conversion rate of our account balance currency
Returns: The calculated position size (in units - only compatible with OANDA)
getMA(int, string) Gets a Moving Average based on type
Parameters:
int : _length The MA period
string : _maType The type of MA
Returns: A moving average with the given parameters
getEAP(float) Performs EAP stop loss size calculation (eg. ATR >= 20.0 and ATR < 30, returns 20)
Parameters:
float : _atr The given ATR to base the EAP SL calculation on
Returns: The EAP SL converted ATR size
barsAboveMA(int, float) Counts how many candles are above the MA
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to check
Returns: The bar count of how many recent bars are above the MA
barsBelowMA(int, float) Counts how many candles are below the MA
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to reference
Returns: The bar count of how many recent bars are below the EMA
barsCrossedMA(int, float) Counts how many times the EMA was crossed recently
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to reference
Returns: The bar count of how many times price recently crossed the EMA
getPullbackBarCount(int, int) Counts how many green & red bars have printed recently (ie. pullback count)
Parameters:
int : _lookback The lookback period to look back over
int : _direction The color of the bar to count (1 = Green, -1 = Red)
Returns: The bar count of how many candles have retraced over the given lookback & direction
getBodySize() Gets the current candle's body size (in POINTS, divide by 10 to get pips)
Returns: The current candle's body size in POINTS
getTopWickSize() Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's top wick size in POINTS
getBottomWickSize() Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's bottom wick size in POINTS
getBodyPercent() Gets the current candle's body size as a percentage of its entire size including its wicks
Returns: The current candle's body size percentage
isHammer(float, bool) Checks if the current bar is a hammer candle based on the given parameters
Parameters:
float : _fib (default=0.382) The fib to base candle body on
bool : _colorMatch (default=false) Does the candle need to be green? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a hammer candle
isStar(float, bool) Checks if the current bar is a shooting star candle based on the given parameters
Parameters:
float : _fib (default=0.382) The fib to base candle body on
bool : _colorMatch (default=false) Does the candle need to be red? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
isDoji(float, bool) Checks if the current bar is a doji candle based on the given parameters
Parameters:
float : _wickSize (default=2) The maximum top wick size compared to the bottom (and vice versa)
bool : _bodySize (default=0.05) The maximum body size as a percentage compared to the entire candle size
Returns: A boolean - true if the current bar matches the requirements of a doji candle
isBullishEC(float, float, bool) Checks if the current bar is a bullish engulfing candle
Parameters:
float : _allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : _rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : _engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
isBearishEC(float, float, bool) Checks if the current bar is a bearish engulfing candle
Parameters:
float : _allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : _rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : _engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
timeFilter(string, bool) Determines if the current price bar falls inside the specified session
Parameters:
string : _sess The session to check
bool : _useFilter (default=false) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls within the given time session
dateFilter(int, int) Determines if this bar's time falls within date filter range
Parameters:
int : _startTime The UNIX date timestamp to begin searching from
int : _endTime the UNIX date timestamp to stop searching from
Returns: A boolean - true if the current bar falls within the given dates
dayFilter(bool, bool, bool, bool, bool, bool, bool) Checks if the current bar's day is in the list of given days to analyze
Parameters:
bool : _monday Should the script analyze this day? (true/false)
bool : _tuesday Should the script analyze this day? (true/false)
bool : _wednesday Should the script analyze this day? (true/false)
bool : _thursday Should the script analyze this day? (true/false)
bool : _friday Should the script analyze this day? (true/false)
bool : _saturday Should the script analyze this day? (true/false)
bool : _sunday Should the script analyze this day? (true/false)
Returns: A boolean - true if the current bar's day is one of the given days
atrFilter(float, float) Checks the current bar's size against the given ATR and max size
Parameters:
float : _atr (default=ATR 14 period) The given ATR to check
float : _maxSize The maximum ATR multiplier of the current candle
Returns: A boolean - true if the current bar's size is less than or equal to _atr x _maxSize
fillCell(table, int, int, string, string, color, color) This updates the given table's cell with the given values
Parameters:
table : _table The table ID to update
int : _column The column to update
int : _row The row to update
string : _title The title of this cell
string : _value The value of this cell
color : _bgcolor The background color of this cell
color : _txtcolor The text color of this cell
Returns: A boolean - true if the current bar falls within the given dates
FARAZ.MATI20vA personal indicator.
This indicator has the following features :
Thanks to the managers and administrators of TradingView site for the appropriate space with wide facilities for optimal use. All (indicators) were available on the site and I only defined certain settings for them.
FARAZ.MATI20v
EMA: 5
SMA : 20
SMA : 50
Collision and interruption of Moving 20 by Moving 5 can be the beginning of an upward trend. Provided that the Moving 5 is placed under the candles. (The best signal for the Moving 5 is to collide with the Moving 20 under the candles). Also, the collision of the Moing 5 with the Moing 20 on top of the candles can be a sign of falling. Especially if this collision occurs above the candles.The cut of the Moving 20 and the Moving 50 indicate the intensity of the wave. If Moving 20 is above Moving 50 in this collision, it shows the intensity of the uptrend and if it is below Moving 50, it shows the intensity of the downtrend.
SMA : 100
SMA : 200
Both (resistance and support) are very strong, which is very effective in larger timeframes (such as 1 day).
HMA : 20
To determine the entry point. In such a way that whenever the seeds (HMA) are below the candlesticks. 3 seeds are in ascending position. The body of the candle and the shadow should not touch them. It can be a good signal to enter. Also if the seeds are placed on top of the candlesticks. Show the descending direction of 3 seeds. Provided that the body of the candle and the shadow have not hit them. It is a signal for the short position.
SAR : With the applied settings, it is a kind (trending view) that can evaluate the volume of input to any currency much sooner and determine the probability of rising or falling. If our wave lines (stairs) are at the bottom of the candles, it means an upward trend, and if they are at the top of the candles, it means a downward trend. As the volume of inputs increases, the trend increases, and as the volume of inputs decreases, the trend will also decrease.
Ichimoku Cloud : To determine the lines (support and resistance) the peaks formed by the cloud can represent a resistance area. Price To cross the area marked by the Ichimoku cloud must have a strong candle. This can be very effective in determining the point of entry and purchase.
zig zag : For better diagnosis of the process. Using it to determine areas of support and resistance can be useful. Determining the points of the Fibonacci table is also very effective.
ZenLibraryLibrary "ZenLibrary"
A collection of custom tools & utility functions commonly used with my scripts.
getDecimals() Calculates how many decimals are on the quote price of the current market
Returns: The current decimal places on the market quote price
truncate(float, float) Truncates (cuts) excess decimal places
Parameters:
float : _number The number to truncate
float : _decimalPlaces (default=2) The number of decimal places to truncate to
Returns: The given _number truncated to the given _decimalPlaces
toWhole(float) Converts pips into whole numbers
Parameters:
float : _number The pip number to convert into a whole number
Returns: The converted number
toPips(float) Converts whole numbers back into pips
Parameters:
float : _number The whole number to convert into pips
Returns: The converted number
av_getPositionSize(float, float, float, float) Calculates OANDA forex position size for AutoView based on the given parameters
Parameters:
float : _balance The account balance to use
float : _risk The risk percentage amount (as a whole number - eg. 1 = 1% risk)
float : _stopPoints The stop loss distance in POINTS (not pips)
float : _conversionRate The conversion rate of our account balance currency
Returns: The calculated position size (in units - only compatible with OANDA)
getMA(int, string) Gets a Moving Average based on type
Parameters:
int : _length The MA period
string : _maType The type of MA
Returns: A moving average with the given parameters
getEAP(float) Performs EAP stop loss size calculation (eg. ATR >= 20.0 and ATR < 30, returns 20)
Parameters:
float : _atr The given ATR to base the EAP SL calculation on
Returns: The EAP SL converted ATR size
barsAboveMA(int, float) Counts how many candles are above the MA
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to check
Returns: The bar count of how many recent bars are above the MA
barsBelowMA(int, float) Counts how many candles are below the MA
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to reference
Returns: The bar count of how many recent bars are below the EMA
barsCrossedMA(int, float) Counts how many times the EMA was crossed recently
Parameters:
int : _lookback The lookback period to look back over
float : _ma The moving average to reference
Returns: The bar count of how many times price recently crossed the EMA
getPullbackBarCount(int, int) Counts how many green & red bars have printed recently (ie. pullback count)
Parameters:
int : _lookback The lookback period to look back over
int : _direction The color of the bar to count (1 = Green, -1 = Red)
Returns: The bar count of how many candles have retraced over the given lookback & direction
getBodySize() Gets the current candle's body size (in POINTS, divide by 10 to get pips)
Returns: The current candle's body size in POINTS
getTopWickSize() Gets the current candle's top wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's top wick size in POINTS
getBottomWickSize() Gets the current candle's bottom wick size (in POINTS, divide by 10 to get pips)
Returns: The current candle's bottom wick size in POINTS
getBodyPercent() Gets the current candle's body size as a percentage of its entire size including its wicks
Returns: The current candle's body size percentage
isHammer(float, bool) Checks if the current bar is a hammer candle based on the given parameters
Parameters:
float : _fib (default=0.382) The fib to base candle body on
bool : _colorMatch (default=false) Does the candle need to be green? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a hammer candle
isStar(float, bool) Checks if the current bar is a shooting star candle based on the given parameters
Parameters:
float : _fib (default=0.382) The fib to base candle body on
bool : _colorMatch (default=false) Does the candle need to be red? (true/false)
Returns: A boolean - true if the current bar matches the requirements of a shooting star candle
isDoji(float, bool) Checks if the current bar is a doji candle based on the given parameters
Parameters:
float : _wickSize (default=2) The maximum top wick size compared to the bottom (and vice versa)
bool : _bodySize (default=0.05) The maximum body size as a percentage compared to the entire candle size
Returns: A boolean - true if the current bar matches the requirements of a doji candle
isBullishEC(float, float, bool) Checks if the current bar is a bullish engulfing candle
Parameters:
float : _allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : _rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : _engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bullish engulfing candle
isBearishEC(float, float, bool) Checks if the current bar is a bearish engulfing candle
Parameters:
float : _allowance (default=0) How many POINTS to allow the open to be off by (useful for markets with micro gaps)
float : _rejectionWickSize (default=disabled) The maximum rejection wick size compared to the body as a percentage
bool : _engulfWick (default=false) Does the engulfing candle require the wick to be engulfed as well?
Returns: A boolean - true if the current bar matches the requirements of a bearish engulfing candle
timeFilter(string, bool) Determines if the current price bar falls inside the specified session
Parameters:
string : _sess The session to check
bool : _useFilter (default=false) Whether or not to actually use this filter
Returns: A boolean - true if the current bar falls within the given time session
dateFilter(int, int) Determines if this bar's time falls within date filter range
Parameters:
int : _startTime The UNIX date timestamp to begin searching from
int : _endTime the UNIX date timestamp to stop searching from
Returns: A boolean - true if the current bar falls within the given dates
dayFilter(bool, bool, bool, bool, bool, bool, bool) Checks if the current bar's day is in the list of given days to analyze
Parameters:
bool : _monday Should the script analyze this day? (true/false)
bool : _tuesday Should the script analyze this day? (true/false)
bool : _wednesday Should the script analyze this day? (true/false)
bool : _thursday Should the script analyze this day? (true/false)
bool : _friday Should the script analyze this day? (true/false)
bool : _saturday Should the script analyze this day? (true/false)
bool : _sunday Should the script analyze this day? (true/false)
Returns: A boolean - true if the current bar's day is one of the given days
atrFilter(float, float) Checks the current bar's size against the given ATR and max size
Parameters:
float : _atr (default=ATR 14 period) The given ATR to check
float : _maxSize The maximum ATR multiplier of the current candle
Returns: A boolean - true if the current bar's size is less than or equal to _atr x _maxSize
fillCell(table, int, int, string, string, color, color) This updates the given table's cell with the given values
Parameters:
table : _table The table ID to update
int : _column The column to update
int : _row The row to update
string : _title The title of this cell
string : _value The value of this cell
color : _bgcolor The background color of this cell
color : _txtcolor The text color of this cell
Returns: A boolean - true if the current bar falls within the given dates
HarmonicPatternLibrary "HarmonicPattern"
Functions to detect/check harmonic patterns from provided values.
line_price_rate(point_c, point_b, point_a) Compute the price rate of the line AB divided by the the line BC
Parameters:
point_c : float, the price at point C.
point_b : float, the price at point B.
point_a : float, the price at point A.
Returns: float
line_time_rate(_c, _b, _a) Compute the time rate of the line AB divided by the the line BC
Parameters:
_c : float, the time or bar_index at point C.
_b : float, the time or bar_index at point B.
_a : float, the time or bar_index at point A.
Returns: float
is_inrange(value, min, max) Check if value is within min/max range of tolerance.
Parameters:
value : float, value to check tolerance.
min : float, minimum value in range of tolerance.
max : float, maximum value in range of tolerance.
Returns: bool
isHarmonicTriangle(rate_cba, margin_of_error) Check if the rate(s) correspond to pattern ("Harmonic Triangle").
Parameters:
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
is2Tap(rate_cba, margin_of_error) Check if the rate(s) correspond to pattern ("2Tap", 'Double Top / Bottom').
Parameters:
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
is3Tap(rate_edc, rate_cba, margin_of_error) Check if the rate(s) correspond to pattern ("3Tap", "Triple Top / Bottom").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
is4Tap(rate_gfe, rate_edc, rate_cba, margin_of_error) Check if the rate(s) correspond to pattern ("4Tap", "Quadruple Top / Bottom").
Parameters:
rate_gfe : float, percent rate of the triangle GFE. expects a negative rate.
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isABCD(rate_cba, rate_dcb, margin_of_error) Check if the rate(s) correspond to pattern ("AB=CD").
Parameters:
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isBat(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Bat").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isButterfly(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Butterfly").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isGartley(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Gartley").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isCrab(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Crab").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isShark(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Shark").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
is5o(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("5o").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isWolfe(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Wolfe").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
is3Driver(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("3 Driver").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isConTria(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Contracting Triangle").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isExpTria(rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Expanding Triangle").
Parameters:
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
isHnS(rate_fed, rate_feb, rate_edc, rate_dcb, rate_cba, rate_eda, margin_of_error) Check if the rate(s) correspond to pattern ("Head and Shoulders").
Parameters:
rate_fed : float, percent rate of the triangle FED. expects a negative rate.
rate_feb : float, percent rate of the triangle FEB. expects a negative rate.
rate_edc : float, percent rate of the triangle EDC. expects a negative rate.
rate_dcb : float, percent rate of the triangle DCB. expects a negative rate.
rate_cba : float, percent rate of the triangle CBA. expects a negative rate.
rate_eda : float, percent rate of the triangle EDA. expects a negative rate.
margin_of_error : float, percent rate of expected error margin, default 0.05(5%).
Returns: bool
+ ATR Support and ResistanceThis, a very different script from most of mine, is my attempt at making a useful, and not messy, support and resistance indicator. If you've never looked into trader xkavalis, and his scripts and discord, I would highly recommend it. He talks about "pay attention candles" a lot. It got me thinking about what those are. Best as I can tell all he means by that phrase is large, impulsive candles. Sometimes these lead to break outs of ranges, or they may signal tops, bottoms, or near-tops and bottoms. The only way I could make sense of this in a mathematical way was by using the average true range. Basically, any candle's true range outside of the ATR is considered a "pay attention candle," by my definition.
This script originally began as just a candle coloring exercise with some optional shapes plotted above/below certain candles, but I quickly realized I wanted to draw lines or zones from these candles, so eventually, after many hours spent figuring out and learning 'line.new' and 'box.new' I got things sorted.
Essentially, my line of thinking is that on impulsive candles down, the origin of the impulse is more important than the close (not always of course, as there are no unbreakable rules in what markets can do), and with impulsive candles up, the same theory applies.
So, for upward impulsive candles I've marked out the zone from the open to the low as a support (until broken, in which case it may become resistance). For downward impulsive candles the zone encompasses the open to the high. I've given the option to plot a line from the close for all of these. It's turned off by default as it's just less stuff on the chart, but you may like it.
The line length is customizable in a menu. It does funny things on low timeframes on forex and stock charts (long lines that result in chart compression), but for some reason very rarely on crypto charts. If someone who is smart (not me) and has much experience with pinescript could perhaps help me out with a fix for this, that would be great. I suspect it has something to do with my "bar_index_duration" that I defined using the time function, but I'm not sure how or why.
Line length on time frames of one hour and up it is typically fine.
Use the ATR multiple to change the sensitivity of the indicator. This is basically the determination of when a candle is beyond the ATR. A multiple of two is two times the ATR. With lower volatile pairs you can maybe make this lower. On lower time frames or with more volatile pairs (illiquid alts in particular) a higher multiple might serve better. I find the default 1.75 is mostly acceptable.
As I started this I also thought adding some sort of volume information to the candles might be useful as well, so I added a simple candle coloring feature referencing the OBV and a 21 period EMA. Candles are colored based on the OBV's relation to its moving average.
I added some plot shapes and candle coloring utilizing the RSI as well. Options to turn on or off shapes plotted for overbought and oversold across the top of the chart. The most interesting feature that I implemented here is a support/resistance zone around the centerline of the RSI. If the RSI is between 49 and 51 then you can have optional candle coloring, shapes plotted above the candles, and s/r zones drawn on the chart. In trending markets the centerline of the RSI will frequetly act as support or resistance, so by being alerted of this condition on the chart you can use that with actual levels marked off in order to help make a judgement on a trade. I think it's a nice addition, and an oft overlooked aspect of the usefulness of the RSI.
I've also included a calculation, with candle coloring and/or plot shapes, for something like a stop run on high volume. The calculation for that is in its section below, and should be pretty self explanatory.
Lastly, typing this as I'm posting it, this indicator could also be useful for helping to find placement for trailing a stop. Just a thought!