OPEN-SOURCE SCRIPT

Custom EMA Strategy

Updated
This script combines 3 EMAs with Bollinger Bands to build a trend based trading strategy. The 3 EMAs (I, II and III ) default lengthes come from one of the Fibonacci Phi^3/2 sub series (17, 72 and 305), but can be changed to any values, particularly to the traditionally used 20, 50 and 200. Bollinger Band length is set to the same length as EMA I. Up to my knowledge, Fibonacci Phi^3/2 sub series lengthes were first proposed by Bo Williams.

Buy Recommendations happen when src (close) > EMA I > EMA II, EMA I angle > 0 degree, EMA II angle > -1 degree and EMA III angle > -1 degree. My simulations have show that -1 degree usage results in better returns than zero degree.

Top Buy Recommendations happen when, besides Buy recommendation conditions are met, src (close) > HBand, the Bollinger Band High Band.

Sell Recommendations come in 3 flavors: Short Term (close < EMA I), Medium Term (close < EMA2) and Long Term ( EMA I < EMA II).

Angle calculation is performed by calculating the "normalized" tangent over a delta interval. Normalization is required to make the angle independent of the price range.
Release Notes
This update just replaces the references to the close price by the chosen data source set to src.
Release Notes
This update is just to fix the EMA calculation in the absence of enough candles. Instead of using TV standard zero price, I use the source (close) price.
Release Notes
This update adds the option for using an intermediate length MA between MA I and MA II. It also adds some thresholds to be checked before showing a buy recommendation.
Release Notes
This update adds a new sell indication (colored maroon) based on the decrease of the angle between the 2 smaller MAs. It also adds new parameters to adjust buy and sell conditions. For details check the source code.
Release Notes
This update adds a new set of 3 MAs in order to detect consolidation conditions and enhance buy recomendation decisions.
Release Notes
This update improves the consolidation detection algorithm.
Release Notes
This update just changes some parameter default values and improves buy recommendation condition detection. It also removes an unused paramter related code.
Release Notes
This update changes the Long Term Sell condition to src < MA III and creates the Long Long Term Sell condition to when MA I < MA II. It also adds a new Minimum Delta % parameter to set the minimum distance between MA I and MA II that allows a buy condition. It also removes the requirement of red candle to maroon sell condition and tweaks some parameter default values. It also changes the low trend definition to MA IV < MA V < MA VI.
Release Notes
This update just corrects the name of the parameter that drives the maroon selling condition to fit its actual meaning. It also updates its default value.
Release Notes
This update adjusts the buying recomendation condition when it is not in a low trend.
Release Notes
This update adjusts buy and sell recommendation conditions. It also adds a new orange flag, named PC, to indicate that is forbidden to buy. This PC flag is angle based and its validity should be evaluated together with other aspects that could not fit in here. We recommend coloring bars because buy flag condition transition is not very sensitive and we can see some green bars without a buy flag in the beginning.
Release Notes
This update adjusts buy and sell recommendation conditions.
Release Notes
This update adds the option to hide the EMAs, so that Buy and Sell indications can be used with other indicators without polluting the chart.
Release Notes
This update just optimizes some functions to use binary search and decrease average execution time from n/2 to log2(n).
Release Notes
This update just cleans the code a bit and adds a new option to hide term related (red) Sell indications.
Release Notes
This update just adds a new Simple Cross Strategy option. As it has performed much better than the previous one, it was left as default. In order to use previous behavior, just uncheck the option.
Release Notes
This update just changes the selling condition on the Simple Cross Strategy mode to sell when MA 0 ROC < 0, if under consolidation (src < MA 5 or src < MA6). Otherwise, Simple Cross Strategy sell condition keeps as before, when MA 0 < MA 2.
Release Notes
This update just fixes the low trend condition definition for the Simple Cross Strategy to match its definition (src < MA 5)
Release Notes
This update just changes the consolidation condition from (src < MA 5) to (src < MA 6) due to better backtesting results.
Release Notes
This update adds another option to trigger sell when on consolidation (src < MA6). Before, on consolidation, the Simple Cross Strategy mode did a sell when MA 0 ROC < 0. Now, we can choose a MA X, with X ranging from 0 to 3, that triggers sell if src < MA X. If X equals -1, this new cross condition is disable and the previous one (MA 0 ROC < 0) is activated.
Release Notes
This update just adds an extra line drawing to compensate for its disappearance when using Length shift Up or Down.
Release Notes
This update adds a new option named "Small Caps Behaviour" to force using consolidation behaviour on sell decisions.
Release Notes
This update adds a new ROC based consolidation check option and a new field to set Bollinger Bands length. The new ROC based consolidation check option considers consolidation state when the condition (ROC 2 > ROC 3 and ROC 3 > ROC 4) is false.
Release Notes
This update just adjusts the order of Buy/Top buy flags drawing.
Release Notes
This update adds angle tests to the buy condition on the Simple Cross Strategy. Now, besides requiring MA 0 > MA 2, it also tests if Angle 2 > Small Angle Threshold and if Angle 6 > Large Angle Threshold. Please note that the Length Shift affects the actual lengths of the tested MAs.
CEMASluyikaiMoving AveragesTrend Analysis

Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in publication is governed by House rules. You can favorite it to use it on a chart.

Want to use this script on a chart?

Disclaimer