Pinescript v4 - The Holy Grail (Trailing Stop)After studying several other scripts, I believe I have found the Holy Grail! (Or perhaps I've just found a bug with Tradingview's Pinescript v4 language) Anyhow, I'm publishing this script in the hope that someone smarter than myself could shed some light on the fact that adding a trailing stop to any strategy seems to make it miraculously...no that's an understatement...incredulously, stupendously, mind-bendingly profitable. I'm talking about INSANE profit factors, higher than 200x, with drawdowns of <10%. Sounds too good to be true? Maybe it is...or you could hook it up to your LIVE broker, and pray it doesn't explode. This is an upgraded version of my original Pin Bar Strategy.
Recommended Chart Settings:
Asset Class: Forex
Time Frame: H1
Long Entry Conditions:
a) Exponential Moving Average Fan up trend
b) Presence of a Bullish Pin Bar
c) Pin Bar pierces the Exponential Moving Average Fan
Short Entry Conditions:
a) Exponential Moving Average down trend
b) Presence of a Bearish Pin Bar
c) Pin Bar pierces the Exponential Moving Average Fan
Exit Conditions:
a) Trailing stop is hit
b) Moving Averages cross-back (optional)
c) It's the weekend
Default Robot Settings:
Equity Risk (%): 3 //how much account balance to risk per trade
Stop Loss (x*ATR, Float): 0.5 //stoploss = x * ATR, you can change x
Stop Loss Trail Points (Pips): 1 //the magic sauce, not sure how this works
Stop Loss Trail Offset (Pips): 1 //the magic sauce, not sure how this works
Slow SMA (Period): 50 //slow moving average period
Medium EMA (Period): 18 //medium exponential moving average period
Fast EMA (Period): 6 //fast exponential moving average period
ATR (Period): 14 // average true range period
Cancel Entry After X Bars (Period): 3 //cancel the order after x bars not triggered, you can change x
Backtest Results (2019 to 2020, H1, Default Settings):
AUDUSD - 1604% profit, 239.6 profit factor, 4.9% drawdown (INSANE)
NZDUSD - 1688.7% profit, 100.3 profit factor, 2.5% drawdown
GBPUSD - 1168.8% profit, 98.7 profit factor, 0% drawdown
USDJPY - 900.7% profit, 93.7 profit factor, 4.9% drawdown
USDCAD - 819% profit, 31.7 profit factor, 8.1% drawdown
EURUSD - 685.6% profit, 26.8 profit factor, 5.9% drawdown
USDCHF - 1008% profit, 18.7 profit factor, 8.6% drawdown
GBPJPY - 1173.4% profit, 16.1 profit factor, 7.9% drawdown
EURAUD - 613.3% profit, 14.4 profit factor, 9.8% drawdown
AUDJPY - 1619% profit, 11.26 profit factor, 9.1% drawdown
EURJPY - 897.2% profit, 6 profit factor, 13.8% drawdown
EURGBP - 608.9% profit, 5.3 profit factor, 9.8% drawdown (NOT TOO SHABBY)
As you can clearly see above, this forex robot is projected by the Tradingview backtester to be INSANELY profitable for all common forex pairs. So what was the difference between this strategy and my previous strategies? Check my code and look for "trail_points" and "trail_offset"; you can even look them up in the PineScript v4 documentation. They specify a trailing stop as the exit condition, which automatically closes the trade if price reverses against you.
I however suspect that the backtester is not properly calculating intra-bar price movement, and is using a simplified model. With this simplfied approach, the trailing stop code becomes some sort of "holy grail" generator, making every trade entered profitable.
Risk Warning:
This is a forex trading strategy that involves high risk of equity loss, and backtest performance will not equal future results. You agree to use this script at your own risk.
Hint:
To get more realistic results, and *maybe* overcome the intrabar simulation error, change the settings to: "Stop Loss Trail Points (pips)": 100
I am not sure if this eradicates the bug, but the entries and exits look more proper, and the profit factors are more believable.
스크립트에서 "通达信+选股公式+换手率+0.5+源码"에 대해 찾기
[blackcat] L2 Ehlers Leading IndicatorLevel: 2
Background
John F. Ehlers introuced Leading Indicator in his "Cybernetic Analysis for Stocks and Futures" chapter 16 on 2004.
Function
The leading characteristic is present in the net filte.As predicted, the lead is one bar at very low frequencies. That is, the trend indication will lead by one bar. However, the net filter has a lag of approximately 2.5 bars for cycle components near 20-bar cycles. Also, higher-frequency lag settles down to be about half a bar. The interpretation of the lag response is that the filter predicts a continuation of a trend by 1 bar, lags abrupt changes by about 0.5 bars, and lags smooth changes that can be fitted by segments of a 20-bar sinewave by as much as 2.5 bars. That’s the law of physics—you cannot get something for nothing. Causal filters can have a predictive capability over some portion of the frequency response, but not at all frequencies. There is no magic predictor.
Key Signal
NetLead ---> Leading Indicator fast line
EMA ---> Leading Indicator slow line
Pros and Cons
100% John F. Ehlers definition translation of original work, even variable names are the same. This help readers who would like to use pine to read his book. If you had read his works, then you will be quite familiar with my code style.
Remarks
The 35th script for Blackcat1402 John F. Ehlers Week publication.
Readme
In real life, I am a prolific inventor. I have successfully applied for more than 60 international and regional patents in the past 12 years. But in the past two years or so, I have tried to transfer my creativity to the development of trading strategies. Tradingview is the ideal platform for me. I am selecting and contributing some of the hundreds of scripts to publish in Tradingview community. Welcome everyone to interact with me to discuss these interesting pine scripts.
The scripts posted are categorized into 5 levels according to my efforts or manhours put into these works.
Level 1 : interesting script snippets or distinctive improvement from classic indicators or strategy. Level 1 scripts can usually appear in more complex indicators as a function module or element.
Level 2 : composite indicator/strategy. By selecting or combining several independent or dependent functions or sub indicators in proper way, the composite script exhibits a resonance phenomenon which can filter out noise or fake trading signal to enhance trading confidence level.
Level 3 : comprehensive indicator/strategy. They are simple trading systems based on my strategies. They are commonly containing several or all of entry signal, close signal, stop loss, take profit, re-entry, risk management, and position sizing techniques. Even some interesting fundamental and mass psychological aspects are incorporated.
Level 4 : script snippets or functions that do not disclose source code. Interesting element that can reveal market laws and work as raw material for indicators and strategies. If you find Level 1~2 scripts are helpful, Level 4 is a private version that took me far more efforts to develop.
Level 5 : indicator/strategy that do not disclose source code. private version of Level 3 script with my accumulated script processing skills or a large number of custom functions. I had a private function library built in past two years. Level 5 scripts use many of them to achieve private trading strategy.
MTF VWAP + Fibo Incremental deviationsI made a Fibo variant of my first script "VWAPs + devs" :
This new indicator give you the possibility to plot multi timeframes VWAP (D, W, M, 3M and 12M ) and Fibo deviations for each one.
VWAP is a powerfull indicator which is used by big players to get informations if the price is "overbought" or "oversold". Deviations give the opportunity to have supports and resistances in those "over"-zones.
I searched for better results and found those defaults values :
Fib 1 level : 0.618
Fib 2 level : 0.786
Fib 3 level : 1.000
Fib 4 level : 1.618
Fib 5 level : 2.618
In the thumbnail, we can see that the 1.618 deviation level made a great support on the last uptrend for BTCUSDT .
You can change each values but low ones as 0.382 and 0.5 don't give really interesting supports/resistances.
I made this script as clear and simple as possible with only one menu in the parameters.
Some examples of what you can do :
BTCUSDT (Binance) H4 / D, W, M, 3M ,12M VWAP without devs
BTCUSDT (Binance) M5 / Daily VWAP + Fibo devs
Hope this will be useful for you !
Fibonacci StochasticMy attempt to smooth out the classic Stochastic indicator based on Fibonacci levels - 0.236, 0.382, 0.5, 0.618, 0.786
Includes optional "Smoothed Moving Average" (SMMA), SMA and EMA.
This is an interesting experiment, comments would be helpful to improve this indicator.
bgeraghty_FibCastThis script draws a High-To-Low or Low-To-High Fibonacci Retrace over the chart, based on which of those two happens in the given time period (Default is 144 Candles).
Updates from older versions:
- Paints 0.5, 0.618, 0.65 and spaces in between, giving good hindsight to the trend, and ideas of where strong support/resistance may lie.
- Silver Paint Strip = 0.50 retrace, Gold = 0.618-0.65, and the Red/Green between indicates the direction of the (Fib) Trend as H->L or L->H
- Paints 0.144 and 0.886 ranges Blue, and these are typically extremes or possible reversal zones. (PRZ)
ZVWAP strategyThis strategy is based on Z distance from VWAP indicator by LazyBear
I have added few filters to utilize the indicator ...
BUY Rule
=======
1. fast ema is above slow ema
2. zvwap is dipped below oversold area (default set to -0.5)
3. after the dip , while crossing above zero --- BUY
Note , when the above criteria is met , bar color is changed to yellow
Exit Rule
========
1. Exit when zvwap enters overbought line (default set to 2.0)
Stop Loss
========
default set to 5% ( you can change it in settings )
Note : strategy does not draw ema lines on the chart. Please add manually to your chart
warning: for education purposes only
GMS: VWAP with Percent BandsThis is a pretty straight-forward script. I just wanted to see percent bands around the VWAP after looking at the standard deviation bands for a while and even dabbling with keltner channels. This is the cleanest in my opinion. The script is open so feel free to poke around!
The default settings are below, just to confuse 0.25 with 25%.
0.25 = 0.25%
0.5 = 0.50%
0.75 = 0.75%
PS - it's not multi-timeframe yet. That'll come in the next update.
Hope this helps,
Andre
Combo Backtest 123 Reversal & Fisher Transform Indicator This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
Market prices do not have a Gaussian probability density function
as many traders think. Their probability curve is not bell-shaped.
But trader can create a nearly Gaussian PDF for prices by normalizing
them or creating a normalized indicator such as the relative strength
index and applying the Fisher transform. Such a transformed output
creates the peak swings as relatively rare events.
Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
The sharp turning points of these peak swings clearly and unambiguously
identify price reversals in a timely manner.
WARNING:
- For purpose educate only
- This script to change bars colors.
Combo Strategy 123 Reversal & Fisher Transform Indicator This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
Market prices do not have a Gaussian probability density function
as many traders think. Their probability curve is not bell-shaped.
But trader can create a nearly Gaussian PDF for prices by normalizing
them or creating a normalized indicator such as the relative strength
index and applying the Fisher transform. Such a transformed output
creates the peak swings as relatively rare events.
Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
The sharp turning points of these peak swings clearly and unambiguously
identify price reversals in a timely manner.
WARNING:
- For purpose educate only
- This script to change bars colors.
Rain On Me V2As promised, here is Rain On Me Indicator V2! As the name suggests, this indicator will rain money down on you. More seriously, Rain On Me V2 is a complete overhaul of the V1.
For those who are new to this indicator or for those who already knew it, here is a complete description of this indicator.
This indicator contains:
-Fully configurable multi-timeframe buy or sell signals based on ATR with the possibility to set the period, deviation, period of the ATR and choose the source or type of signals: RMA, SMA , EMA, WMA, VWMA, SMMA, KMA, TMA, HullMA, DEMA, TEMA, CTI.
-Colouring of candles on ATR. (green and red).
-Buy or sell signals with VPT (based on st_dev) with the possibility of adjusting the period and the multiplier. (Only works in markets with available volume information flows).
-Trend Parabolic SAR (Up / Down) fully configurable.
-Divergences with the possibility of choosing among the following signals: MACD, OBV, RSI, CCI.
-3 Moving averages with the possibility of choosing their values and their type for each one: SMA, EMA, RMA, WMA, VWMA. (default: WMA 1 = 7, WMA 2 = 21 and SMA 3 = 50).
-Fibonacci on 10 levels with level 0 in the middle. This Fibonacci helps a lot as it can make it easy for you to find an entry / exit point, a trend and even where to place your Take Profit and Stop Loss.
-Fully customizable Bollinger Band.
-Fully customizable Ichimoku cloud.
-Multi-timeframe Trendline that tells you the true trend of the current market based on volume. (Only works in markets with available volume information flows). It can change from green (for an uptrend) or red (downtrend) color.
To place an alert, always choose the "Once per bar" option.
You can place alerts on the following options:
-GO Buy / GO Sell (ATR).
-VPT Buy / Sell.
-PSAR (Up / Down).
-Divergences (Bullish / Bearish).
-Crossing of moving averages 1 and 2.
-Fibonacci key levels (0.382, 0.5 and 0.618) for Crossunder and Crossover in an uptrend or downtrend.
You can choose to show or hide from the chart all the options mentioned above.
Never follow buy or sell signals stupidly. Always watch that all the indicators are going in the same direction, that you are not in a range zone, that there is no resistance etc ...
Always wait for confirmation after a buy or sell alert before entering a position to make sure the label stays on the chart and doesn't disappear.
Please feel free to give your ideas, suggestions or bug reports in the comments area to help me improve it.
A BIG THANKS TO QUANTNOMAD FOR GIVING ME ITS AUTHORIZATION TO USE, MODIFY AND REPUBLIC ITS "Ultimate Pivot Points Alerts" script indicator:
Good trade everyone! And remember, money management is the most important!
Average Daily RangeBlack Line - 10 day average daily range
Red Line - 1.5 black line
Green Line - 0.5 black line
White Line - Current day's range
Minimum Variance SMAReturn the value of a simple moving average with a period within the range min to max such that the variance of the same period is the smallest available.
Since the smallest variance is often the one with the smallest period, a penalty setting is introduced, and allows the indicator to return moving averages values with higher periods more often, with higher penalty values returning moving averages values with higher periods.
Because variances with smaller periods are more reactive than ones with higher periods, it is common for the indicator to return the value of an SMA of a higher period during more volatile market, this can be seen on the image below:
here variances from period 10 to 15 are plotted, a blueish color represents a higher period, note how they are the smallest ones when fluctuations are more volatile.
Indicator with min = 50, max = 200 and penalty = 0.5
In blue the indicator with penalty = 0, in red with penalty = 1, with both min = 50 and max = 200.
On The Script
The script minimize Var(i)/p with i ∈ (min,max) and p = i^penalty , this is done by computing the variance for each period i and keeping the smallest one currently in the loop, if we get a variance value smaller than the previously one found we calculate the value of an SMA with period i , as such the script deal with brute force optimization.
For our use case it is not possible to use the built-in sma and variance functions within a loop, as such we use cumulative forms for both functions.
Candle VolumeScript Based on Volume Based Coloured Bars by KivancOzbilgic
/////////////
This indicator turns the candle into a volume-weighted signal, When the price falls, the candle is red, and when the price rises, the candle is green. In addition, we each have two colors Happening:
Dark red: It is dark red when the downtrend trading volume is greater than 200% of its average price (default 20 days), which indicates that our price action is supported by strong bearish trading volume
Red: When the price drops and the trading volume is between 50% and 200% of its average (default 20 days), in this case, we can think that the trading volume is neither strong nor weak
Light red: When the price drops and VOLUME is less than 50% of its average price (default 20 days), the trading volume is weak and there is not much support for price movements
Dark green: When the price rises and the trading volume is greater than 200% of its average price (default 20 days), it indicates that our price movement is supported by a strong bullish trading volume
Green: When the price rises and the trading volume is between 50% and 200% of its average price (the default is 20 days), in this case, we can think that the trading volume is neither strong nor weak
Light green: When the price rises and the trading volume is less than 50% of its average price (default 20 days), the trading volume is weak and does not support the price trend well
Default Low Volume is 50% (0.5) and High 200% (2), but if those values don't suit you, you can change them according to your trading personality
//////////////////////////
Esse é um indicador que colore a candlera de acordo com o volume baseado na média, quando o volume está acima da média a candlera fica verde, e quando está abaixo, a candlera fica vermelha, e as cores das candleras funcionam dessa forma :
Vermelho escuro: fica vermelho escuro quando o preço cai e o volume de negociação é superior a 200% do preço médio (padrão 20 dias), o que indica que nossa ação de preço é suportada por um forte volume de negociação de baixa
Vermelho: quando o preço cai e o volume de negociação está entre 50% e 200% de sua média (padrão de 20 dias), nesse caso, podemos pensar que o volume de negociação não é forte nem fraco
Vermelho claro: quando o preço cai e VOLUME é inferior a 50% do preço médio (padrão 20 dias), o volume de negociação é fraco e não há muito suporte para movimentos de preço
Verde escuro: quando o preço aumenta e o volume de negociação é superior a 200% do preço médio (padrão 20 dias), isso indica que nosso movimento de preço é suportado por um forte volume de negociação de alta
Verde: quando o preço aumenta e o volume de negociação está entre 50% e 200% do preço médio (o padrão é 20 dias), nesse caso, podemos pensar que o volume de negociação não é forte nem fraco
Verde claro: quando o preço aumenta e o volume de negociação é inferior a 50% do preço médio (padrão 20 dias), o volume de negociação é fraco e não suporta bem a tendência de preço
O volume baixo padrão é 50% (0,5) e alto 200% (2), mas se esses valores não forem adequados para você, você poderá alterá-los de acordo com sua personalidade de trading
Variable Power Weighted Moving AverageThe Variable Power Weighted Moving Average was created by RedKTrader so make sure you follow them! This is a very handy indicator where you can change the weights of the weighted moving average yourself!
For an easy guide here are common values to use to convert this indicator into other indicators:
Power = 0 = Simple Moving Average
Power = 0.5 = Square Root Weighted Moving Average
Power = 1 = Weighted Moving Average
Power = 2 = Squared Weighted Moving Average
Try it out and let me know what you think!
Let me know if you have other ideas for me or if you want something custom done!
Golden Ratio MultiplesI call this "Phi Ribbons." The Golden Ratio, also known as Phi, is fantastic at predicting areas of price reversal.
Every moving average is a fibonacci multiple of the base function 355 SMA .
The rainbow above is an array of fibonacci multiples that are greater than one (1.618, 2, 2.618, 3, 5, 8, 13, 21)
The rainbow below is an array of fibonacci multiples that are less than one (0.786, 0.618, 0.5, 0.382, 0.236, 0.14)
Notice the precision of marking areas of potential price reversals
EASTER EGG: The two moving averages at the top of the script are 355 SMA & 113 SMA . This is one of the lowest ratios that closely approximates Pi (3.14159).
Simply plotting the 133 SMA will add a unique feature:
355/133 = 3.14159
When the 113 crosses below the 355 it tends to mark the end of major bullish impulses, and a crossover is a bullish sign.
Z-HistogramIt is possible to approximate the underlying distribution of a random variable by using what is called an "Histogram". In order to construct an histogram one must first split the data into several intervals (also called bins) often of the same size and count the number of values falling within each intervals, the histogram plot is then constructed with the X axis representing the measured variable and the Y axis representing the frequency.
The proposed script aim to estimate the underlying distribution of a rolling z-score by constructing its histogram, here the histogram consist of 13 bins of width 0.5 rolling standard deviations. The length setting define the rolling z-score period, the window setting define the number of past data to be counted, finally using the "Total" option (true by default) will count all the rolling z-scores values since the first bar, in order to use the window setting make sure to uncheck the "Total" option.
DISPLAY
In order to see the entirety of the histogram make sure to double click on the indicator window and to have all the lower panels (text notes, pine editor...etc) hidden, finally make sure to zoom-in in order to see the frequency numbers displayed.
Z-Histogram on BTCUSD 15 min TF, the blue bins represent intervals situated over 0 while red bins represent intervals situated under 0. Here σ represent the X-axis in standard deviations, the histogram start with a bin situated at σ = -3 which count the number of times the rolling z-score was within -3 and -2.5, the histogram end with the bin situated at σ = 3 which count the number of time the rolling z-score was within 3 and 3.5.
It is also possible to look at the shape of the histogram without having the indicator window at full size.
INTERPREATION
An histogram can give really interesting information such as overall trend direction and strength. The direction can be measured by looking at the skewness of the histogram, with a negative skewness (the peak of the histogram situated at the right from the center) representing down-trending variations and positive skewness (the peak of the histogram situated at the left from the center) representing up-trending variations, while a symmetrical histogram could represent a ranging market. The farther away the peak of the histogram is situated from the center, the stronger the trend.
Another interesting characteristic is the tailedness of the histogram, which can give information about the cleanliness of the trend, for example a positive skew and high tailedness would represent a clean up-trend, as it could suggest less variations contrary to the main trend.
An histogram applied to the rolling z-score can give various useful information. As a recall the rolling z-score of the price measure the distance between the closing price and its moving average in term of rolling standard deviations, for example if the rolling z-score is equal to 2 it means that the closing price is currently 2 rolling standard deviations over its moving average.
Lets for example analyze the histogram using INTC 15 min tf with a window of 456 bars and rolling z-score of length = 100 in order to review longer term variations.
We can see from the histogram that the uptrend visible on the chart is represented by the bins situated over 0 having an overall higher frequency than the bins under 0, we can see that the closing price tended to stay between 1 and 1.5 rolling standard deviations over its period 100 moving average. Here bins under 0 accounts for retracements in the trend.
IN SUMMARY
An histogram can give various information regarding the price evolution of a security, the proposed script aim to plot the histogram of a rolling z-score. Now this script might not be too useful but it was fun to make, also it does not mean that an histogram is not an useful tool in the context of trading, the only thing required is a god implementation of it (like volume profiles for example)
In this post we have also reviewed some important statistical concepts such as distributions, z-score, skewness and tailedness, each being extremely important in the quantitative trading field.
Thx for reading !
TA Basics: Evolving our Zero Lag Moving Average.In the previous Zero-Lag MA post, we introduced the "mirroring" technique and the associated calculation.
In this post, we will see how we can use the same technique, with a slight variation, to evolve our zero lag moving average line, add more "smoothness" and still maintaining the low lag and fast response to data series changes.
to use the "mirroring" technique, we need to use 2 MA lines with varying speeds - this is essential to produce the delta between the lines, that can then be mirrored around the fast line to produce the final line. in the first example, we used a Simple MA (slow) and a Weighted MA (fast) of the same length to achieve that.
here we introduce a different way of doing that. we will use a Weighted MA of the length (slow) and another Weighted MA of half the length (fast) -- the difference in "speed" between these 2 lines should produce the delta we need, we mirror it around the fast line, and we get our desired Zero-lag line. Check!
then while we're at it, why don't we introduce an additional smoothing just to ensure the new line is not too "broken" and jumpy .. and flows smoothly across the data series. but what length should we use for smoothing?
smoothing length should be enough to make an actual smoothing effect, but not too large else it will introduce lagging on its own. how about 3? usually 3 or 4 are good values for smoothing. A brilliant idea here is to use a number related to the same input length of the original line, which can always be relatively small -- the square root (integer portion) of that original length - and in that case, the user will only need to enter 1 input for the moving average, just the length - everything will be calculated from there. Check again!
I commented the code if you like to follow the simplified build-up of the formula, now that the concept is explained.
the (more complex-looking) 1-line, condensed form of that formula to use is (alert: watch out for the ()'s -- they're tricky :) )
----------------------------------------------
ZLMA_Line = wma((2*wma(close,int(length/2)) - wma(close,length)), int(sqrt(length)))
------------------------------------------
the one thing i do not like about this technique, is that we introduce the use of the half length MA. i do not like to build indicators that make decisions like this on behalf of the trader - the trader wants to analyze the data for a specific length, and we should continue to stick to that consistently across the moving average (or whatever indicator) calculation. I would always be caution about "hardcoding" some optional values (in this case 0.5 * length) within the indicator itself - others may not mind that.
Now to a nice surprise for the patient folks who got so far in this post - Congratulations, we have just discovered the concept and the formula behind the famous Hull Moving Average .. the big thing here is, we just had the opportunity to learn how to create the whole thing ourselves from the ground up step by step, and had fun doing it (I hope!)
-- these posts are meant to provide those who are new to the world of technical analysis and want to learn how and why to build their own technical indicators. i hope some of you find them useful and interesting, and i wish you the best of luck.
Stochastic FibonacciThis is your run-of-the-mill stochastic indicator, with one slight difference. I added Fibonacci ratios and colored them across the rainbow for aesthetics.
I noticed that the stochastic moving averages, K & D, would reverse in between 0 & 100. Just like price, they were likely Fibonacci ratios.
My original plan was to create a strategy script, and trade whenever K & D crosses the Fib levels. However, they do not cross them perfectly, rather they merely float near them and reverse. Therefore, the strategy would have never made the trades.
As you will notice in the script, there is Bitcoin Hash Rate data imported. I did so because I would like to create a stochastic hash rate indicator at some point. For those of you with this same passion, there is the hash data to mess around with; consider it an Easter Egg...
Envelop - Multi TypeEnvelop - Multi Type displays an upper envelope above a basis line and a lower envelope below the basis line. The basis line is a type of moving average, The envelopes are set a percentage away from the basis line.
A. Basis Line's Type
1. Gaussian Filter script by Alex Orekhov (everget)
2. SMA
3. EMA
4. TEMA
5. WMA
6. VWMA
7. DONCHIAN
8. Hull MA
9. ALMA
B. Default Percent of Envelop
1. Resolution (Time frame) <= 5: percent = 0.382
2. Resolution (Time frame) <= 15: percent = 0.5
3. Resolution (Time frame) <= 30: percent = 0.618
4. Resolution (Time frame) <= 60 (1H): percent = 0.786
5. Resolution (Time frame) <= 240 (4H): percent = 1.0
6. Resolution (Time frame) <= 1440 (1D): percent = 1.618
7. Resolution (Time frame) >1D: percent = 2.618
C. Custom Percent of Envelop
Default Percent of Envelop auto disable when Custom Percent of Envelop > 0 and the envelopes are set by user defined percentage.
Parametric Corrective Linear Moving AveragesImpulse responses can fully describe their associated systems, for example a linearly weighted moving average (WMA) has a linearly decaying impulse response, therefore we can deduce that lag is reduced since recent values are the ones with the most weights, the Blackman moving average (or Blackman filter) has a bell shaped impulse response, that is mid term values are the ones with the most weights, we can deduce that such moving average is pretty smooth, the least squares moving average has negative weights, we can therefore deduce that it aim to heavily reduce lag, and so on. We could even estimate the lag of a moving average by looking at its impulse response (calculating the lag of a moving average is the aim of my next article with Pinescripters) .
Today a new moving average is presented, such moving average use a parametric rectified linear unit function as weighting function, we will see that such moving average can be used as a low lag moving average as well as a signal moving average, thus creating a moving average crossover system. Finally we will estimate the LSMA using the proposed moving average.
Correctivity And The Parametric Rectified Linear Unit Function
Lot of terms are used, each representing one thing, lets start with the easiest one,"corrective". In some of my posts i may have used the term "underweighting", which refer to the process of attributing negative weights to the input of a moving average, a corrective moving average is simply a moving average underweighting oldest values of the input, simply put most of the low lag moving averages you'll find are corrective. This term was used by Aistis Raudys in its paper "Optimal Negative Weight Moving Average for Stock Price Series Smoothing" and i felt like it was a more elegant term to use instead of "low-lag".
Now we will describe the parametric rectified linear unit function (PReLU), this function is the one used as weighting function and is not that complex. This function has two inputs, alpha , and x , in short if x is greater than 0, x remain unchanged, however if x is lower than 0, then the function output is alpha × x , if alpha is equal to 1 then the function is equivalent to an identity function, if alpha is equal to 0 then the function is equivalent to a rectified unit function.
PReLU is mostly used in neural network design as an activation function, i wont explain to you how neural networks works but remember that neural networks aim to mimic the neural networks in the brain, and the activation function mimic the process of neuron firing. Its a super interesting topic because activation functions regroup many functions that can be used for technical indicators, one example being the inverse fisher RSI who make use of the hyperbolic tangent function.
Finally the term parametric used here refer to the ability of the user to change the aspect of the weighting function thanks to certain settings, thinking about it, it isn't a common things for moving averages indicators to let the user modify the characteristics of the weighting function, an exception being the Arnaud Legoux moving average (ALMA) which weighting function is a gaussian function, the user can control the peak and width of the function.
The Indicator
The indicator has two moving averages displayed on the chart, a trigger moving average (in blue) and a signal moving average (in red), their crosses can generate signals. The length parameter control the filter length, with higher values of length filtering longer term price fluctuations.
The percentage of negative weights parameter aim to determine the percentage of negative weights in the weighting function, note that the signal moving average won't use the same amount and will use instead : 100 - Percentage , this allow to reverse the weighting function thus creating a more lagging output for signal. Note that this parameter is caped at 50, this is because values higher than 50 would make the trigger moving average become the signal moving average, in short it inverse the role of the moving averages, that is a percentage of 25 would be the same than 75.
In red the moving average using 25% of negative weights, in blue the same moving average using 14% percent of negative weights. In theory, more negative weights = less lag = more overshoots.
Here the trigger MA in blue has 0% of negative weights, the trigger MA in green has however 35% of negative weights, the difference in lag can be clearly seen. In the case where there is 0% of negative weights the trigger become a simple WMA while the signal one become a moving average with linearly increasing weights.
The corrective factor is the same as alpha in PReLU, and determine the steepness of the negative weights line, this parameter is constrained in a range of (0,1), lower values will create a less steep negative weights line, this parameter is extremely useful when we want to reduce overshoots, an example :
here the corrective factor is equal to 1 (so the weighting function is an identity function) and we use 45% of negative weights, this create lot of overshoots, however a corrective factor of 0.5 reduce them drastically :
Center Of Linearity
The impulse response of the signal moving average is inverse to the impulse response of the trigger moving average, if we where to show them together we would see that they would crosses at a point, denoted center of linearity, therefore the crosses of each moving averages correspond to the cross of the center of linearity oscillator and 0 of same period.
This is also true with the center of gravity oscillator, linear covariance oscillator and linear correlation oscillator. Of course the center of linearity oscillator is way more efficient than the proposed indicator, and if a moving average crossover system is required, then the wma/sma pair is equivalent and way more efficient, who would know that i would propose something with more efficient alternatives ? xD
Estimating A Least Squares Moving Average
I guess...yeah...but its not my fault you know !!! Its a linear weighting function ! What can i do about it ?
The least squares moving average is corrective, its weighting function is linearly decreasing and posses negative weights with an amount of negative weights inferior to 50%, now we only need to find the exact percentage amount of negative weights. How to do it ? Well its not complicated if we recall the estimation with the WMA/SMA combination.
So, an LSMA of period p is equal to : 3WMA(p) - 2SMA(p) , each coefficient of the combination can give us this percentage, that is 2/3*100 = 33.333 , so there are 33.33% percent of negative weights in the weighting function of the least squares moving average.
In blue the trigger moving average with percentage of negative values et to 33.33, and in green the lsma of both period 50.
Conclusion
Altho inefficient, the proposed moving averages remain extremely interesting. They make use of the PReLU function as weighting function and allow the user to have a more accurate control over the characteristics of the moving averages output such as lag and overshoot amount, such parameters could even be made adaptive.
We have also seen how to estimate the least squares moving average, we have seen that the lsma posses 33.333...% of negative weights in its weighting function, another useful information.
The lsma is always behind me, not letting me focus on cryptobot super profit indicators using massive amount of labels, its like each time i make an indicator, the lsma come back, like a jealous creature, she want the center of attention, but you know well that the proposed indicator is inefficient ! Inefficient elegance (effect of the meds) .
Thanks for reading !
(JS) Ultimate RSISo my goal here was to combine all of my RSI ideas into a single indicator in order to make kind of a "Swiss Army Knife" version of the Relative Strength Index ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
So, let's begin with the first RSI indicator I made, which is the RSIDVW (Divergence/Volume Weighted);
To rephrase my original post, the "divergence/volume weighted" portion is meant to expand upon the current RSI format by adding more variables into the equation.
The standard RSI is based off one value that you select (open, close, OHLC4, HLC3, etc.) while this version takes three variables into account.
The default setting is to have RSI normal without anything added to it (Divergence Weight = 0)
1st - it takes the standard variable that RSI normally uses.
2nd - it factors RSI divergence by taking the RSI change % and price change % to form a ratio. Using this ratio, I duplicated the RSI formula and created a divergence RS to be factored in with the standard price RS .
3rd - it takes Relative Volume and amplifies/weakens the move based upon volume confirmation. (So if Relative Volume for a price bar is 1.0, the RSI plot would be the same as it normally would)
So to explain the parameters
- Relative Volume Length: This uses the RV length you specify to determine spikes in volume (or lack of volume ), which then is added into the formula to influence the strength of the RSI move
- RV x Divergence: This is how I calculated the original formula, but you can leave this unchecked to turn Relative Volume off, or apply elsewhere.
- RV x RS: There's two sides, Divergence RS and Standard RS - these check marks allow you to select which part you prefer to be multiplied by Relative Volume .
Checking neither turns off Relative Volume , while checking both amplifies its effects by placing it on both sides of the equation.
-Divergence Weight: This controls how much the DVW portion of the formula influences the RSI plot. As I referred to earlier, default is 0 making RSI normal. The Scale is 0-2, so 1.0 would be the same as 50%.
When I do have DVW on, I generally set it to 0.5
-SMA Divergence: To smooth, or not to smooth, that is the question. UJsing an SMA here is much smoother in my opinon, but leaving it unchecked runs it through an RMA the same way standard RSI is calculated.
-Show Fractal Channel: This allows you to see the whole fractal channel around the RSI (This portion of the code, compliments of the original Ricardo Santos fractal script)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The next portion of the script is adding a "Slow RSI"...
This is rather simple really, it allows you to add a second RSI plot so that you can watch for crossovers between fast and slow lines.
-Slow RSI: This turns on the second RSI Plot.
-Slow RSI Length: This determines the length of the second RSI Plot.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pivot Point RSI was something a friend of mine requested I make which turned out pretty cool, I thought... It is also available in this indicator.
-Pivot Points: Selecting this enables the rest of the pivot point related parts of the script
If Pivot Points isn't selected, none of the following things will work
-Plot Pivot: Plots the pivot point .
-Plot S1/R1: Plots S1/R1.
-Plot S2/R2: Plots S2/R2.
-Plot S3/R3: Plots S3/R3.
-Plot S4/R4: Plots S4/R4.
-Plot S5/R5: Plots S5/R5.
-Plot Halfway Points: Plots a line between each pivot .
-Show Pivot Labels: Shows the proper label for each pivot .
When using intraday charts, from a 15 minute interval or less the pivots are calculated based on a single days worth of price action, above that the distance expands.
Here are the current resolutions Pivot Points will work with:
Minutes - 1 , 2, 3, 5, 10, 13, 15, 20, 30, 39, 78, 130, 195
Hours - 1, 2, 3, 4, 5, 6
Daily
Weekly
Currently not available on seconds or monthly
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Background Colors
Background Colors: I have six color schemes I created for this which can be toggled here (they can be edited).
Gray Background for Dark Mode: Having this on looks much better when using dark mode on your charts.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Now finally the last portion, Fibonacci Levels
-Fibonacci Levels: This is off, by default, which then uses the standard levels on RSI (30-50-70). When turned on, it removes these and marks fib levels from 0.146 through 0.886.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
So the quick rundown:
Ultimate RSI contains "divergence/volume weighted" modifications, a slow RSI plot, pivot points , and Fibonacci levels all while auto-plotting divergence and having the trend illustrated in the background colors.
RSI has always been my "go to" indicator, so I hope you all enjoy this as much as I do!
Blackman Filter - The Smoother The BetterIntroduction
Who doesn't like smooth things? I'd like a smooth market price for christmas! But i can't get it, instead its so noisy...so you apply a filter to smooth it, such filters are called low-pass filters, they smooth and its great but they have lag, so nobody really use them, but they are pretty to look at.
Its on a childish note that i will introduce this indicator, so what it is all about? I propose a new FIR filter using a blackman function as filter kernel for financial time-series smoothing, do you prefer the childish tone ? Fear not its surprisingly easy!
The Blackman Function
The blackman function look like a bell shaped curve, look:
The blackman function will produce such curve. This function is called a cosine sum function because she is based on the sum of cosine functions, here only 2.
0.42 - 0.5 * cos(2 * pi * k) + 0.08 * cos(4 * pi * k)
Originally you use this function for windowing , what does it means? In signal processing you have a function called sync function , if you use this function as filter kernel you would get the ideal frequency domain response filter, sometime called brickwall filter, it would be extremely smooth.
Above the optimal low pass filter frequency response.
However the sync function has no ending values and goes on forever, therefore we can't use it for convolution, expect if we apply windowing. Filters using windowing are called windowed-sinc filters, i will describe the procedure below :
1 - Create a sync function = sin(pi*n)/(pi*n)
2 - Truncate it = I only keep the first length points of the sync function.
This create a abrupt end, the frequency of a filter using step 1 as kernel would contain ripples in the pass band and stop band, this is bad! The frequency response would look like this :
3 - I multiply my values of step 2 by a window function, it can the blackman window, i no longer have an abrupt end, its smooth!
The frequency response of the filter using this kernel would no longer have ripples! This is the power of windowing functions.
Here we are not using such thing, but we could in the future. Here instead we use the blackman function as filter kernel, because this function is bell shaped this mean that the filter will certainly be smooth (symmetrical weighting is a rule of thumb for kernels when we want really smooth filters).
The Filter
This filter is quite smooth, unlike the gaussian filter this filter give less weights to recent and past values, this is because the blackman function has fatter tails than the gaussian one. I could make a comparison of both, however they are quite alike, if you often use a gaussian filter its up to you to decide which one you prefer.
The filter can do a better job than the moving average when it comes to preserve the frequency components that constitute the cycles/trend.
We can see that the filter has a greater performance when it comes to keep the shape of the market price, thus it has a slightly better fit.
Conclusion
Ok so in this post you learned a bit about the sync function and windowing, those are basic subjects in signal processing, they allow us to approximate the filter with the ideal frequency response, i also showed you that those windowing function could be used as kernel and that they where pretty smooth on their own, there are many others, but the one i prefer is the blackman windowing function.
I know what you are thinking, "we want trailing stops, alerts, colors, arrows!", and i understand you pal, but sometimes its cool to take a break from all this stuff. However i can tell that i'am working on a side project that aim to estimate rolling maximum/minimum as fast as possible, any experiments will be published here, and i can ensure you that those indicators will make your day quite brighter, we will see that soon.
I hope you learned something from this post! I'am a bit tired (look i'am disappearing !)
Thanks for reading !
Call / All Ratio ( C / A ) - NoldoFirst of all this script inspired by MagicEins' Put/Call-Ratio-Buschi script .
What is the Put-Call Ratio
The put-call ratio is an indicator ratio that provides information about relative trading volumes of an underlying security's put options to its call options. The put-call ratio has long been viewed as an indicator of investor sentiment in the markets, where a large proportion of puts to calls indicates bearish sentiment, and vice versa. Technical traders use the put-call ratio as an indicator of performance and as a barometer of overall market sentiment. Put-call ratios on broader indexes such as the S&P 500 are also used as more general gauges of market climate.
Put-Call Ratio Interpretation
One way to interpret the put-call ratio is to say that a higher ratio means it's time to sell and a lower ratio means it's time to buy, because when the ratio is high it suggests that people are either expecting or protecting more readily against a future decline in the price of the underlying. A Put-Call ratio between 0.5 and 1 is considered a sideways trend in the markets.
Some also view the Put-Call ratio as a contrarian indicator. Traders know that derivatives are used to do more than place bets; they are used as hedges and insurance. If there's a lot of insurance being placed to the sell side, it means traders are worried about prices falling.
Some traders buy when the put-call ratio is above 1, meaning the market is out of balance to the sell side, and sell when the put-call ratio is below 1, meaning the market is out of balance to the buy side. These traders are looking to make money on the correction. The interpretation of the ratio is left to the analyst's or trader's investment philosophy.
Reference : Investopedia (www.investopedia.com)
Let' s start.
In short, calls represent "bulls" and puts represent "bears".
Some analysts do the opposite,for trend reversals the choice is up to you.
I usually look at the opposite comments in commercial positions because I look at this flow angle neutral.
If you want to do the opposite, you must create Put / All Ratio.
So i created this ratio to observe easily movements under or over 0.50 area .
Or you can take the point close to 0.50 as a horizontal trend. Many more comments can be made.I have a few ideas about this, and I'm going to publish them soon . My best suggestion is that it covers a single bar and is very volatile, so you can look for averages and strong accelerations.
This code is open source under the MIT license. If you have any improvements or corrections to suggest, please send me a pull request via the github repository github.com
Stay tuned , best regards.