Machine Learning: kNN (New Approach)Description:
kNN is a very robust and simple method for data classification and prediction. It is very effective if the training data is large. However, it is distinguished by difficulty at determining its main parameter, K (a number of nearest neighbors), beforehand. The computation cost is also quite high because we need to compute distance of each instance to all training samples. Nevertheless, in algorithmic trading KNN is reported to perform on a par with such techniques as SVM and Random Forest. It is also widely used in the area of data science.
The input data is just a long series of prices over time without any particular features. The value to be predicted is just the next bar's price. The way that this problem is solved for both nearest neighbor techniques and for some other types of prediction algorithms is to create training records by taking, for instance, 10 consecutive prices and using the first 9 as predictor values and the 10th as the prediction value. Doing this way, given 100 data points in your time series you could create 10 different training records. It's possible to create even more training records than 10 by creating a new record starting at every data point. For instance, you could take the first 10 data points and create a record. Then you could take the 10 consecutive data points starting at the second data point, the 10 consecutive data points starting at the third data point, etc.
By default, shown are only 10 initial data points as predictor values and the 6th as the prediction value.
Here is a step-by-step workthrough on how to compute K nearest neighbors (KNN) algorithm for quantitative data:
1. Determine parameter K = number of nearest neighbors.
2. Calculate the distance between the instance and all the training samples. As we are dealing with one-dimensional distance, we simply take absolute value from the instance to value of x (| x – v |).
3. Rank the distance and determine nearest neighbors based on the K'th minimum distance.
4. Gather the values of the nearest neighbors.
5. Use average of nearest neighbors as the prediction value of the instance.
The original logic of the algorithm was slightly modified, and as a result at approx. N=17 the resulting curve nicely approximates that of the sma(20). See the description below. Beside the sma-like MA this algorithm also gives you a hint on the direction of the next bar move.
Statistics
Impulse Strategy Signals V2This is a low timeframe strategy based on SMMAs and RSI, shared by Investishare.
This script turns the indicator into a strategy and allows for several variables to be customized.
TPO Profile with Day StatFirst of all I want to Thank @noop42 for creating this wonderful Market Profile chart in Pine script
I have made some changes to this scripts
This Script can auto calculate the TPO Size for NSE Symbols and MCX Crude oil.
This Script Will only calculate the TPO's for visible range only so that the script use less heap size.
I have added some of the day Statistics to enhance your visualization.
Limitations of this Script
Currently This Script can Plot Market Profile Chart only for Historical Data.
It Can only Plot Market Profile Charts in 30-Mins Time Frame only so that you can't use it for Composite Profile Analysis.
To plot Market Profile Chart in Real Time and Historical please use "Market Profile With TPO by Drother"
Nonlinear Parametric Oscillator - PSOThis script is in development phase and may be buggy. use with your own risk. The idea here is to determine the sinusoidal directional changes in the supply and demand. Based on direction, you can enter and make huge gains. Recommended to use on 1 min chart. The sideways market would be indicated as flattening in the respective bands. There are four bands, bottom one is where market is in BEAR mode and top one is when market is in BULL mode.
The indicator doesnt work well when the ticker price is less than 10 dollars, i am working on it. Do not use on penny stocks, for the time. More-details when I make this a robust version.
LUNC Spot IndexIndex of several (eventually all) luna classic spot markets with some bonus features!
FOMC & CPI DatesThis indicator plots vertical lines at the scheduled times of US Federal Reserve's FOMC Meeting Dates.
Data is based on U.S. Federal Open Market Committee (FOMC) Meeting Minutes
Intraday Range CalculatorThis indicator shows an easy way to determine if the stock, index or ETF ended within a configurable intraday range.
This solution is ideal for those who study and like Iron Condors or Iron Butterflies strategies.
Results:
If the square is red, it means that the selected deviation limits have been exceeded within the chosen times.
If the square is green, the price stayed within the pre-set limits.
A yellow circle marks the moment when the price leaves the range, either by the upper band or by the lower band.
In the last bar a label with the test results will be displayed.
Settings:
In the configuration there are three fields:
1. Deviation : is the range in percentage that the price can move up or down from the start time to the end time.
2. Begin Time: is the time (in 24h or military format) where the process begins.
3. End Time: is the time (in 24h or military format) where the process ends.
Example:
* for the time 11:00 am, you must enter "1100"
* for the time 2:45pm, you must enter "1445"
Important:
The selected timeframe must be less than 1 hour and Extended Trading Hours in the lower left corner), otherwise the indicator may not show results.
Later I will make an improvement to solve these inconveniences.
Stock Gaps SPY Correlation StrategyThis is daytrade stock strategy, designed to take the best out of the daily gaps that are forming between the close of previous day and opening of present day.
At the same time its logic has been adapted for SPY chart, in order to use correlation with the other stocks/assets/ etf which are linked with SP500 movement.
Lastly it has been added 2 new confirmation logics, based on the USI: advance/decline chart and percentage above vwap among all US stocks.
The rules for entry are simple :
We are at the opening daily candle, we have a long/short gap based on where the opening is happening and at the same time we are checking to see that the current different between the current difference between low and previous high (or viceversa) is higher than an established parameter(minimal deviation )
For exit, we exit based on time/clock parameter, in this case by default I selected 1h and half before close of the US session.
For testing purposes I have used 10% of the available capital, with a 0.0035$ comission per each share bought ( IBKR comissions)
If there are any questions, please let me know either here or in private !
energies_correlation_zscoreA table to help track correlations between the four major energies contracts of the CME. The table shows the z-score of the current correlation value between HO, RB, CL, and NG. The inputs are:
- timeframe: the timeframe of the calcluation. the default is 5 minutes.
- window: the rolling window over which to calculate the correlations. the default is 48, or four hours given the default timeframe.
A score of zer means that the correlation over the latest window is in line with the average for all windows sampled from the chart history. More positive scores imply higher positive correlation than normal, and vice versa for negative scores.
BTC Hashrate ribbonsBTC Hash Rate ribbons / Hash Rate cross
This strategy goes long when BTCs Hash Rate 30 day moving average crosses above the 60 day moving average, signifying that miner capitulation is over and recovery has started.
When the opposite signal is given, which signifies the beginning of miner capitulation, the strategy goes short (or flat, depending on configuration). This is generally considered the most popular Hash Rate related strategy.
The strategy is based on this medium article: medium.com
Thanks to the recent integration of IntoTheBlock data into Tradingview, we can now effortlessly show Hash Rate data on our chart,
keep in mind however, that IntoTheBlock doesn't provide Hash Rate data on timeframes below daily, so this strategy is based used on the daily, weekly or even monthly time frames.
Hash Rate definition:
The Bitcoin hash rate is the number of times per second that computers on the Bitcoin network are hashing data to verify transactions and perform the encryption that secures the network. The hash rate is an indicator of how healthy the Bitcoin network is at any given time, and is driven primarily by difficulty mining and the number of miners. Generally, a high hash rate is considered a good thing.
More precisely, the Bitcoin hash rate is the number of times per second that computers on the Bitcoin network are hashing data to verify transactions and perform the encryption that secures the network.
Tickers Info ExtensionWith the indicator you can easily evaluate or compare any ticker with the one you choose in the options.
You can choose any of the tickers I provide in the mod options to your liking :
XAU
DXY
BTC
ETH
SPX
NASDAQ
AVG Stable Dominance
AVG Stock Price
Custom
You can also select or create your own ticker if you select the Custom in Mode option.
If the Compare mode is enabled, then the current ticker you are viewing is divided by the ticker selected in the indicator (in the Mode option).
Thus, you create a new pair and can evaluate the strength of this or that asset.
For example, if you have the ticker BTCUSDT open. And the ticker XAU is selected in the Mode option in the indicator. And the Compare mode is also enabled. Then you will get a new BTCUSDT/XAU pair. That means that now you can see the bitcoin/gold ratio. (Same as EUR/USD etc.)
If the Compare option is switched off then you will see the usual ticker you choose in the Mode option. You can also see if there is a correlation between the selected pairs.
Option ' AVG STABLE.D ' = Calculated as: USDT.D + USDC.D + DAI.D
- This is the average domination of the most important Stable Coins
Option ' AVG STOCK Price ' = Calculated as: (DJI + SPX + NDQ) / 3
- This is the average price of the most important Indexes.
BTC Hashrate with smoothingBTC Hashrate with smoothing - thanks to the recent integration of IntoTheBlock data into Tradingview, we can now effortlessly show Hashrate data on our chart.
One popular use for Hashrate is to buy when the 30 day moving average crosses above the 60 day moving average, signifying that miner capitulation is over and recovery has started.
Definition
The Bitcoin hash rate is the number of times per second that computers on the Bitcoin network are hashing data to verify transactions and perform the encryption that secures the network. The hash rate is an indicator of how healthy the Bitcoin network is at any given time, and is driven primarily by difficulty mining and the number of miners. Generally, a high hash rate is considered a good thing.
More precisely, the Bitcoin hash rate is the number of times per second that computers on the Bitcoin network are hashing data to verify transactions and perform the encryption that secures the network.
Relative Perfomance IndexHello Traders.
Lets keep it simple..
1. Take the major pairs that have USD in them and watch their change over a specific timeframe.
2. Now lets sort these changes of each pair from the most positive to the most negative.
Good, I see you have some ideas already.
This is exactly what this indicator does. You will visualize the biggest change in pairs of the timeframe of your choice and from this you can decide on pairs that you want to trade.
Covering Shadow Candle PatternThis indicator shows 3 types of objects on chart:
1. downward red triangle above a candle: 3 green candles followed by a fourth red candle of which the low price is lower than the low of the 3 previous green candles, this is usually the sign of reversal from upward movement to a downward one.
2. 1. upward green triangle below a candle: 3 red candles followed by a fourth green candle of which the high price is higher than the high of the 3 previous red candles, this is usually the sign of reversal from downward movement to a upward one.
3. boxes: these boxes are drawn when the patterns of cases 1 and 2 fails to perform as expected which means we have some important areas at that level so it can be a resistance or support zone .
testJust testing how to use libraries ignore this
Just testing how to use libraries ignore this
Just testing how to use libraries ignore this
Just testing how to use libraries ignore this
Just testing how to use libraries ignore this
Intraday Accumulator [close-open]This script plots close-open cumulative from the beginning of the chart. It is made for use on equities with overnight sessions to view the intraday performance vs the candlestick chart.
Weighted percentile nearest rank oscillatorOriginal script
This is my attempt at making a price oscillator out of gorx1's weighted percentile nearest rank script. I centered everything to the 50th percentile and everything oscillates around that. The upper and lower bounds are 100th and 0th. Normalization normalizes the data to the top and bottom lines. The 'center line' represents the momentum of the 50th percentile in either direction. Good luck and happy hunting.
Improved Z-Score OverlayLast month I published an improved z-score script that goes underneath your chart, which helps to highlight overbought or oversold regimes. It is customizable, and allows changing the periods, whether smoothing capability is desired, whether to use simple or exponential moving averages, and which data source to use (open, high, low, close, ohlc4).
Some individuals may find that it is most useful not only to have the z-score visible underneath their price chart, but have the sigma values clearly visible on the chart itself to determine overbought or oversold levels.
Therefore, this improved z-score overlay script will place the centerline of price on the chart, and +3/+2/+1/0/-1/-2/-3 sigma.
These can be disabled if some values do not want to be shown, and the colors / opacity can be changed.
Additionally, you could also put this into a new pane below your chart and disable all of the +3 to -3 sigma values, and enable the "Z-Score" button. This will allow you to replicate the original Improved Z-Score Script.
If anyone has questions or would like to have any improvements made, let me know :)
- Jim Bosse
Normalized Correlation CoefficientThis is a normalized correlation coefficient that can be used with any timeframe or symbol desired (found in the indicator settings). The normalization function makes the coefficient bound between 0-1. There is a subjective threshold at 0.80 where anything below the threshold tends to be higher risk in trading as opposed to above the threshold.
Suggestions:
- Use a timeframe slightly higher than your current chart for optimal results.
- Do not use as a standalone strategy, rather, use it as a layer of confirmation.
- For altcoin cryptocurrencies, we suggest tethering the indicator to the "OTHERS" chart.
Weighted percentile nearest rankYo, posting it for the whole internet, took the whole day to find / to design the actual working solution for weighted percentile 'nearest rank' algorithm, almost no reliable info online and a lot of library-style/textbook-style solutions that don't provide on real world production level.
The principle:
0) initial data
data = 22, 33, 11, 44, 55
weights = 5 , 3 , 2 , 1 , 4
array(s) size = 5
1) sort data array, apply the sorting pattern to the weights array, resulting:
data = 11, 22, 33, 44, 55
weights = 2 , 5 , 3 , 1 , 4
2) get weights cumsum and sum:
weights = 2, 5, 3 , 1 , 4
weights_cum = 2, 7, 10, 11, 15
weights_sum = 15
3) say we wanna find 50th percentile, get a threshold value:
n = 50
thres = weights_sum / 100 * n
7.5 = 15 / 100 * 50
4) iterate through weights_cum until you find a value that >= the threshold:
for i = 0 to size - 1
2 >= 7.5 ? nah
7 >= 7.5 ? nah
10 >= 7.5 ? aye
5) take the iteration index that resulted "aye", and find the data value with the same index, that's gonna be the resulting percentile.
i = 2
data = 33
This one is not an approximation, not an estimator, it's the actual weighted percentile nearest rank as it is.
I tested the thing extensively and it works perfectly.
For the skeptics, check lines 40, 41, 69 in the code, you can comment/uncomment dem to switch for unit (1) weights, resulting in the usual non-weighted percentile nearest rank that ideally matches the TV's built-in function.
Shoutout for @wallneradam for the sorting function mane
...
Live Long and Prosper
VolatilityVolatility - The amount of price deviation in the specified time interval.
The calculation is made from the opening point to the closing point, and the maximum and minimum deviation between them is also included. Any timeframes are supported.
Available information: the start date of the calculation (according to the time zone of the exchange), the current volatility from the initial opening point or from the last closing point, the total volatility for all periods.
An indicator of useful use in everyday work.
Thanks for your attention!
AllTimeHighLowLibrary "AllTimeHighLow"
Provides functions calculating the all-time high/low of values.
hi(val)
Calculates the all-time high of a series.
Parameters:
val : Series to use (`high` is used if no argument is supplied).
Returns: The all-time high for the series.
lo(val)
Calculates the all-time low of a series.
Parameters:
val : Series to use (`low` is used if no argument is supplied).
Returns: The all-time low for the series.
(Quartile Vol.; Vol. Aggregation; Range US Bars; Gaps) [Kioseff]Hello!
This indicator is a multifaceted tool that's, hopefully, useful for price action and volume analysis.
(This script makes use of the newly introduced "text_font" parameter)
With this script you'll have access to:
Range US Chart
Volume Aggregation Chart
Gaps Chart
Volume by Quartile
Consequently, you'll have access to:
First Quartile Volume Threshold
Second Quartile Volume Threshold
Third Quartile Volume Threshold
90th Percentile Volume Threshold
Fourth Quartile Volume Threshold
Q2 - Q1 Dispersion
Q3 - Q2 Dispersion
Q4 - Q3 Dispersion
Quartile Deviation
Interquartile Range
Avg. "n" bar return following "high" volume
Avg. "n" bar positive return following "high" volume
Avg. "n" bar negative following "high" volume
# of Positive Returns Following a Gap
# of Negative Returns Following a Gap
# of Gaps
# of Up Gaps
# of Down Gaps
Average # of bars to fill Up Gaps
Average # of bars to dill Down Gaps
Average Gap Up % increase
Average Gap Down % decrease
Cumulative % increase of all Up Gaps
Cumulative % decrease of all Down Gaps
Sort gaps by distance from price
Hide gaps that price substantially deviates from (gaps will reappear when price trades near the gap)
Segment Range US bars by date
Manually configure Range US price thresholds
Identify "congestion" areas with Range US bars
Range US Levels that must be exceeded for a new Range US bar to produce
Manually configure cumulative volume threshold for Volume Aggregation bars
Segment Volume Aggregation bars by date
Largest Volume Aggregation bar increases
Largest Volume Aggregation bar decreases
Calculate log returns after "high" volume sessions
Quartile Volume
The Quartile Volume portion of the script segments price/volume intervals by quartile.
The image above shows features of the indicator.
For statistics, the following metrics are recorded:
First Quartile
Second Quartile
Third Quartile
90th Percentile
Fourth Quartile
Q2 - Q1 Dispersion
Q3 - Q2 Dispersion
Q4 - Q3 Dispersion
Quartile Deviation
Interquartile Range
Color-coordinated price bars (by volume quartiles)
The percent rank for the volume of the current bar
Avg. "n" bar return following "high" volume
Avg. "n" bar positive return following "high" volume
Avg. "n" bar negative following "high" volume
The script colors bars via gradient.
By default, bars are colored lime when volume for the interval is "high" (exceeds upper quartile thresholds). The greener the bar, the higher the volume for the interval.
Bars are colored red when volume for the interval is "low" (fails to exceed lower quartile thresholds). The redder the bar, the lower the volume for the interval.
Naturally, brownish-colored bars reflect a volume interval that concluded near the median.
The image above exemplifies the process. This feature might be useful to categorize / objectively define high-volume clusters, low-volume clusters, high-volume price moves, low-volume price moves, etc.
For greater precision, you can select to color bars by volume quartile they belong to.
The image above shows color-coordinated price bars. More details shown in the image.
Additionally, you can select to plot the quartile/percentile that a price bar belongs to on the chart.
The image above shows price bars numbered by the volume quartile they belong to.
The script will distinguish successive 90th percentile violations, superimpose a linear regression channel atop the data sequence, and record pertinent statistics.
The image above shows the process.
Lastly, the user can plot an anchored VWAP using a built-in time function.
The image above shows the anchored VWAP.
Range US Chart
A Range US chart operates irrespective of time and volume - simply - bars produce after a user-defined price move is achieved/exceeded in either direction. A range us chart produces “trend candles” and “reversal candles”. A reversal candle always moves against the most immediate bar; a trend candle always moves in favor of the most immediate bar. The user defines the dollar amount price must travel up/down for a trend candle to fulfill, and for a reversal candle to fulfill.
Note: if a “down reversal” candle (red) Is produced, it’s impossible for the next candle to also be a down reversal candle - for the downside move to continue the criteria for a down trend candle must be fulfilled. Similarly, if an “up reversal” candle (green) Is produced, it’s impossible for the next candle to also be an up reversal candle - for the upside move to continue, the criteria for an uptrend trend candle must be fulfilled. Consequently, Range US bars frequently trade at the same level for extended periods. This is intentional, as this chart type is theorized to “filter noise” (whether Range US charts fulfill this theory is to your discretion).
Lastly, if an up trend candle (green) is produced, the next candle cannot be up a reversal up candle - only a trend up candle or reversal down candle can produce - vice versa for a trend down candle (the subsequent candle cannot be a reversal down candle). In this sense, an uptrend continues on successive trend up candles; a down trend continues on successive trend down candles.
The image above exemplifies Range US chart functionality.
The lower-right stats table shows the requisite price move for a "Trend" candle to produce and for a "Reversal" candle to produce.
The default settings for this chart time automatically calculate the required "Trend" candle price move and the required "Reversal" candle price move. However, both settings are configurable.
The image above shows manually configured parameters for a trend bar and reversal bar to produce. This feature allows the user to replicate the Range US chart hosted on extrinsic charting platforms.
However, please consider that this script does not use tick data; 1-minute OHLC data is used for calculations.
Consequently, configuring the trend bar and reversal bar requirement too low may return inaccurate data. For instance, if you set trend candles to form after a $1 price move then trend candles will form if price moves up $1 from a green Range US bar or down $1 from a red Range US bar. This is sufficient for lower priced assets; however, if you were trading, for instance, Bitcoin - a $1 price move can happen numerous times in one minute. This script can’t plot bars and record data until a 1-minute bar closes and a new 1-minute bar opens. Further, if Bitcoin moves up $1 twenty times and down $1 twenty times in a 1-minute bar - your Range US chart will record such variations as one price move. This data is inaccurate and likely useless.
To counter this quandary, a warning message will appear if you configure trend bar price moves or reversal bar price moves too low.
The image above shows the concealable warning message.
The image above is a flow diagram (made with shaky hands) illustrating the Range US bar formation process.
A google search will return additional information on the Range US chart type.
Volume Aggregation Bars
TradingView user and member of the TradingView Discord server @ferreirajames informed me of the Volume Aggregation chart type. The user commented in the "Suggestions" channel for the TradingView Discord server asking for the Volume Aggregation chart type. As an interim fix, I tried my hand at recreating the process, which is available in this script.
Similar to the Range US chart type, Volume Aggregation bars aren’t bound to a time-axis; the bars form after a user-defined, cumulative amount of volume is achieved or exceeded. Consequently, once the cumulative amount of volume is achieved or exceeded - a bar is produced at the corresponding price level.
Underlying theory: The chat type is conducive to identifying price levels where traders are “trapped”. Whether the process adequately distinguishes this circumstance is to your discretion.
The image above exemplifies the Volume Aggregation chart type.
Regardless of the current price, Volume Aggregation bars for after a requisite amount of volume is achieved/exceeded. Tick data isn't used; therefore, remainder values are carry over.
By default, the script automatically calculates a proportional cumulative volume total to dictate the formation of Volume Aggregation bars. However, the cumulative threshold is configurable.
The image above shows Volume Aggregation bars forming subsequent a user-defined cumulative volume total being exceeded.
Note: This chart type uses OHLC data from the timeframe of your chart. Therefore, for instance, setting the volume threshold too low will produce inaccurate, useless data.
A warning message will appear for such occurrence.
Gaps
The indicator incorporates a "Gaps" chart type.
The image above shows accompanying features.
A list of all unfilled gaps is accessible - gaps for this list are sorted by distance from current price.
Partially filled gaps are displayed in the corresponding gap box - the percentage amount the gap was filled is also displayed.
Gap statistics show:
# of Gaps
# of Up Gaps
# of Down Gaps
Average # of bars to fill Up Gaps
Average # of bars to dill Down Gaps
Average Gap Up % increase
Average Gap Down % decrease
Cumulative % increase of all Up Gaps
Cumulative % decrease of all Down Gaps
Naturally, there may be gaps formed thousands of bars ago that aren't close to price. Showing these gaps on the chart will "scrunch" the y-axis and make prices indistinguishable.
I've added a setting that allows the user to hide gaps that are "n" % away from the current price. The gap, if unfilled, will reappear when price trades within the user-defined percentage.
The image above shows an example. There's an unfilled down gap that's "hidden" because the current price is a further % away from price than what I've specified in the settings (1%). When prices trade back within 1% of the gap - it will reappear.
The image above shows the process in action. Prices moved back within 1% (can be any %) of the gap; therefore, it reappeared on the chart.
You can also set the % distance a gap must achieve for it to be considered a gap, recorded and plotted. Additionally, you can select to "visualize" gaps. Similar to the Range US chart and the Volume Aggregation chart, this setting will bars reflecting the most recent sequence of gaps - date and percentage distance of the gap are superimposed atop the bar.
Let me know if there's anything else you'd like included!
Note: The initial compilation time for this script is.... high. However, once the script's compiled, calculation load times are quick and you can sift through assets and timeframes relatively quick.
There's also a setting to "Improve Load Times" in the user-inputs table. This setting only improves the load times for post-compilation calculations and plots. The initial compilation load time is unchanged. Simply, once the indicator has "first loaded", all subsequent loads are quick.
Thank you! (: