Experimental
[RS]Plot in 3DEXPERIMENTAL:
plotting price,time,volume + additional price shift from moving average.
Decaying Rate of Change Non Linear FilterThis is a potential solution to dealing with the inherent lag in most filters especially with instruments such as BTC and the effects of long periods of low volatility followed by massive volatility spikes as well as whipsaws/barts etc.
We can try and solve these issues in a number of ways, adaptive lengths, dynamic weighting etc. This filter uses a non linear weighting combined with an exponential decay rate.
With the non linear weighting the filter can become very responsive to sudden volatility spikes. We can use a short length absolute rate of change as a method to improve weighting of relative high volatility.
c1 = abs(close - close ) / close
Which gives us a fairly simple filter :
filter = sum(c1 * close,periods) / sum(c1,periods)
At this point if we want to control the relative magnitude of the ROC coefficients we can do so by raising it to a power.
c2 = pow(c1, x)
Where x approaches zero the coefficient approaches 1 or a linear filter. At x = 1 we have an unmodified coefficient and higher values increase the relative magnitude of the response. As an extreme example with x = 10 we effectively isolate the highest ROC candle within the window (which has some novel support resistance horizontals as those closes are often important). This controls the degree of responsiveness, so we can magnify the responsiveness, but with the trade off of overshoot/persistence.
So now we have the problem whereby that a highly weighted data point from a high volatility event persists within the filter window. And to a possibly extreme degree, if a reversal occurs we get a potentially large "overshoot" and in a way actually induced a large amount of lag for future price action.
This filter compensates for this effect by exponentially decaying the abs(ROC) coefficient over time, so as a high volatility event passes through the filter window it receives exponentially less weighting allowing more recent prices to receive a higher relative weighting than they would have.
c3 = c2 * pow(1 - percent_decay, periods_back)
This is somewhat similar to an EMA, however with an EMA being recursive that event will persist forever (to some degree) in the calculation. Here we are using a fixed window, so once the event is behind the window it's completely removed from the calculation
I've added Ehler's Super Smoother as an optional smoothing function as some highly non linear settings benefit from smoothing. I can't remember where I got the original SS code snippet, so if you recognize it as yours msg me and I'll link you here.
[RS][V4]ZigZag Percent Reversal - Helper - AntiSlopeEXPERIMENTAL:
A helper script to map the Anti derivative slopes.
NAND PerceptronExperimental NAND Perceptron based upon Python template that aims to predict NAND Gate Outputs. A Perceptron is one of the foundational building blocks of nearly all advanced Neural Network layers and models for Algo trading and Machine Learning.
The goal behind this script was threefold:
To prove and demonstrate that an ACTUAL working neural net can be implemented in Pine, even if incomplete.
To pave the way for other traders and coders to iterate on this script and push the boundaries of Tradingview strategies and indicators.
To see if a self-contained neural network component for parameter optimization within Pinescript was hypothetically possible.
NOTE: This is a highly experimental proof of concept - this is NOT a ready-made template to include or integrate into existing strategies and indicators, yet (emphasis YET - neural networks have a lot of potential utility and potential when utilized and implemented properly).
Hardcoded NAND Gate outputs with Bias column (X0):
// NAND Gate + X0 Bias and Y-true
// X0 // X1 // X2 // Y
// 1 // 0 // 0 // 1
// 1 // 0 // 1 // 1
// 1 // 1 // 0 // 1
// 1 // 1 // 1 // 0
Column X0 is bias feature/input
Column X1 and X2 are the NAND Gate
Column Y is the y-true values for the NAND gate
yhat is the prediction at that timestep
F0,F1,F2,F3 are the Dot products of the Weights (W0,W1,W2) and the input features (X0,X1,X2)
Learning rate and activation function threshold are enabled by default as input parameters
Uncomment sections for more training iterations/epochs:
Loop optimizations would be amazing to have for a selectable length for training iterations/epochs but I'm not sure if it's possible in Pine with how this script is structured.
Error metrics and loss have not been implemented due to difficulty with script length and iterations vs epochs - I haven't been able to configure the input parameters to successfully predict the right values for all four y-true values for the NAND gate (only been able to get 3/4; If you're able to get all four predictions to be correct, let me know, please).
// //---- REFERENCE for final output
// A3 := 1, y0 true
// B3 := 1, y1 true
// C3 := 1, y2 true
// D3 := 0, y3 true
PLEASE READ: Source article/template and main code reference:
towardsdatascience.com
towardsdatascience.com
towardsdatascience.com
Function Decimal To Binary/Binary To DecimalNOTE: Experimental. Pinescript implementation of Decimal to Binary and Binary to Decimal that is intended for use in the development of a neural network proof of concept.
Intended for use in as subcomponent in the development of a more complex/highly experimental prototype.
Protection/logic for edge cases above 11111111/255 (8bits) is NOT implemented.
Do NOT use this in any trading system or component without edge case testing/unit tests.
// Decimal to Binary, Binary to Decimal Reference:
// diwasfamily.com
// www.wikihow.com
//
// www.khanacademy.org
[RS]Signal to Noise BandsEXPERIMENTAL:
Bands using Signal to Noise Calculation.
The bands calculation is similar to bolingers in the aspect that both use standard deviation.
MTF IQ IFM Moving AverageMTF ready adaptive MA using Ehler's IQ IFM ( In Phase - Quadrature Instantaneous Frequency Measurement ).
Ehler's formula is a method of quantitatively measuring the length of a market cycle. In this case it is used to calculate the "optimal" adaptive EMA.
Theoretically the length generated by Ehler's formula could be used in many indicators and it's been placed within it's own function so you should be able to simply copy/paste it. HOWEVER pine will not accept series variables for the length input used in built-in functions. You will have to manually code (or find) a version of your indicator that doesn't use the pine built in.
Options :
type : optionally add volume weighting
range : historical range used in IQ IFM
cycle length mult : method to create faster/slower MAs. eg 0.5 is half the length of a cycle and a faster EMA ie EMA10 vs EMA20
low sat fix : some cryptocurrencies with low satoshi values cause an issue with the calculation, if you get no/nonsensical lines, enable this. Shouldn't affect other instruments, but can be disabled just in case.
MTF options: run the calculation on an alternative timeframe
--------------------------------------
If you find it useful please consider a tip/donation :
BTC - 3BMEXEDyWJ58eXUEALYPadbn1wwWKmf6sA
[RS]Select Sample Average Convergence DivergenceEXPERIMENTAL:
Uses a selective sample average to reflect momentum on volatility range.
Anchored VWAP & Standard DeviationsCalculates VWAP from a fixed point in time as well as standard deviations.
--------------------------------------
If you find it useful please consider a tip/donation :
BTC - 3BMEXEDyWJ58eXUEALYPadbn1wwWKmf6sA
--------------------------------------
All Time VWAP & Standard DeviationsAll time VWAP and standard deviations.
Either enable "scale price chart only" or disable deviations that go negative in the style options.
--------------------------------------
If you find it useful please consider a tip/donation :
BTC - 3BMEXEDyWJ58eXUEALYPadbn1wwWKmf6sA
--------------------------------------
RSI on the chart [Experimental]This is an experimental work to show RSI on the chart. Feel free to use the code and indicator.
If you find my works useful, please consider a donation
BTC: 19qDW9AShZhBZsGuXcgRzam5Fbpc3EU8EV
ETH: 0x39c8552371b9b7f4e324197af460ba8bc8e18ef9
Volume Weighted Historical Volatility RankExperiment in adding volume weighting to the calculation in determining HV.
See here for HV explanation : www.investopedia.com
--------------------------------------
If you find it useful please consider a tip/donation :
BTC - 3BMEXEDyWJ58eXUEALYPadbn1wwWKmf6sA
--------------------------------------
Relative Price OscillatorHere is a new experimental indicator we've been working on. The idea was to compare two EMA's of period midpoints to the actual closing price. The steps that were taken are listed below:
1.Calculate an EMA based on each period's midpoint ((High * Low) /2) for the last 9 periods.
2.Calculate an EMA based on each period's midpoint for the last 100 periods.
3. Divide the difference of the two EMA's by the closing price. ((EMA1 - EMA2) / Close).
4. Smooth the value from step #3 with an 18 period EMA. Multiply by 1000 for better scaling/visibility.
Using:
Bullish when line is green, bearish when line is red. Buy on first green, then sell on first red.
There is also an option to color the candles based on the RPO line.
The Rumpy CloudSimilar basic principle to Ichimoku cloud, more sophisticated implementation.
I've exposed cloud width multipliers in the setting in case anyone wants to experiment with them, there are likely to be other widths of significance.
Lots of lines so settings includes easy batch way of altering color settings.
--------------------------------------
If you find it useful please consider a tip/donation :
BTC - 3BMEXEDyWJ58eXUEALYPadbn1wwWKmf6sA
--------------------------------------
[RS]ZigZag Percent Reversal(Multiple) - Forecast Areasnaive level forecasting of multiple zigzag's
based on this principle:
[RS]Function - Normaly Distributed Pseudo Random GeneratorEXPERIMENTAL:
Function to generate a normally distributed pseudo random value.
if you find that something doesn't add up, please leave a message bellow.
Zero Phase Filtering [Repaint] - ExperimentalImportant !
The indicator is for experimental purpose only, it must not be used as a decisional tool but only as a visual one (like Zig-Zag, Fractal etc). The information this indicator display is uncertain and subject to drastic changes over time. If you have further question feel free to pm me.
Introduction
Most of the filters you will find are causal, this mean that they depend on present and past input values, this explain the lag they produce. Non causal filters however will use future input values. A well know way to get a zero-phase filter is by using the forward backward method, but this is not possible in pinescript as i recall. So we have to use some kind of function that will display future values, this is possible using the security function in version 2 or the one in version 3 using barmerge.lookahead_on .
The Use Of A Repainting Indicator
Its always better to filter data in order to have a clearer view of what is happening, this can be useful when doing some forecasting or doing less formal kind of analysis. However since it repaint you cant use it as a signal provider or use signals of other indicators using this filter as source.
For example if you want to forecast a smooth indicator, the forecast of this indicator under normal circumstances could still have lag associated with it, so you would have to react before your forecast, this wont happen if you apply this filter as your indicator source.
The Filter
We smooth with a simple moving average the price provided by the security function twice, length control the smoothing level. Since security depend on the time frame you are in you must select your time frame in the indicator parameter selection window.
Filtering using 45 minutes time frame close price in a 5 minutes chart, we fix this by selecting our time frame.
Consider the fact that the input of the indicator is just periodic price, so sometimes the lag can sometimes be less or more than 0 and the estimation not centered.
The indicator can work on time frames up to 1h, after that the filter have some lag, i tried fixing this and i ended up having data errors.
Applying our filter as source for the rsi oscillator.
Conclusion
It is possible to have a kind of zero-phase filters, but it would be better if pinescript could support backward indexing thus making us able to do forward backward filtering.
Since noise can affect our analysis, applying smoothing without having to use offset in plot can be considered useful.