Multi SMA EMA WMA HMA BB (4x5 MAs Bollinger Bands) Adv MTF - RRB

Version 1.0
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 5 MAs = 20 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 12,26,50,100,200 x H1, H4, D1, W1 (4 TFs x 5 MAs x 1 type)
- EMAs 8,10,13,21,30,50,55,100,200,400 x M15, H1 (2 TFs x 10 MAs x 1 type)
- D1 EMAs and SMAs 8,10,12,26,30,50,55,100,200,400 (1 TF x 10 MAs x 2 types)
- H1 WMAs 7,77,89,167,231; H4 HMAs 12,26,50,100,200; D1 EMAs 89,144,169,233,377; W1 SMAs 12,26,50,100,200 (4 TFs x 5 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF and Ultimate MTF. This is the Advanced MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +2 extra MAs/group (4x5 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
Features:
- 4x5 = 20 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 4x5 = 20 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group - you can compare MAs of the same symbol across exchanges
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- price << default Y smoothing step 5. For charts with low/fractional prices (i.e. 0.00002 << 5) adjust X Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example:
D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec.
M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
1. based on 3EmaBB, uses plot*, barssince and security functions
2. you can't set certain constants from input due to Pinescript limitations - change the code as needed, recompile and use as a private version
3. Levels = trackprice implementation
4. Show Max Bars Back = show_last implementation
5. swma has a fixed length = 4, alma and linreg have additional offset and smoothing params
6. Smoothing is applied by default for visual aesthetics on MTF. To use exact ma mtf values (lines with stair stepping) - disable it
Good Luck! You can explore, modify/reuse the code to build your own indicators.
- 4x7 = 28 MAs - added 2 more MAs for each TF group
- dupe check now also includes symbol: symbol, tf, type - all must match for a duplicate group
- for the dupe check to work correctly a custom symbol must always include the exchange prefix. BB is not checked for dupes
Changes in ver 3.0:
WARNING:
- compilation time has increased to 1 min. If you don't need backreferences use the faster ver 2.0
- depending on the number of references used/call stack depth/timeframe expect an up to 50% increase in load/redraw times after an UI parameter change (4-5 sec => 9-10 sec)
- compiled code size has reached the max limit of 50kb, adding more features will exceed this limit and won't compile
Features:
- added group backreferences for symbols, timeframes and types (use [1],[2],[3],[4] to reference corresponding values in prior groups),
- added group restricted backreferences for individual ma lengths (use -1,-2,.. etc)
Notes:
- backreferences are computationally very expensive (Pinescript doesn't support recursion), but still can be implemented. Different possible workarounds are explained
- only back references will work, forward/self/circular references are not supported i.e. MA15=-7 is a valid reference to MA7; MA15=-15 or MA15=-20 will produce an error
- the negative ma value reference is resolved to the value of the prior ma with the same abs number i.e. -5 is a reference to MA5 value, -15 is MA15 value
- 4-level deep call stack with recursive references is supported (MA28=-21, MA21=-14, MA14=-7, MA7=400 will all resolve to 400)
- first 7 mas (group 1) must have fixed values and can't be references (there's nothing to reference before group 1)
- group 2 mas can reference any group 1 mas; group 3 mas - any mas in groups 1,2; group 4 mas - any mas in groups 1-3 etc
- bb ma must have a fixed value and can't be a reference - this last extra line exceeds the 50k size limit for the compiled byte code and won't compile
- deltaX_tf_ref must have a fixed tf value and can't be a reference
Changes in ver 4.0:
WARNING:
- compilation time is reduced slightly to 50 sec
- If you don't need backreferences use the faster ver 2.0
- If you want individual ma lengths backreferences use the slower ver 3.0
- depending on the number of references used/call stack depth/timeframe expect an increase in load/redraw times after an UI parameter change compared to values in ver 2.0
- compiled code size reduced, no more script too long errors (max limit 50kb)
Features:
- removed the more precise individual ma lengths backreferences (don't use -1,-2,.. any more) as too computationally expensive
- replaced it with a simple MA group override dropdown for all ma lengths in the current group (use [1],[2],[3] to reference corresponding values in prior groups) as most users would probably prefer
Notes:
- when MA Group references another MA Group it works similar to backreferences for types:
- each ma length in the current group is substituted with a corresponding ma length in a referenced group i.e. MAs[1] <= MAs[2] means that MA8-MA14 will all get their respective values from MA1-MA7 range: MA8=MA1, MA9=MA2...,MA14=MA7
- all current MA Group values are ignored when a reference is used
- MA backreferences work only for the whole groups. Individual MA backreferences (negative abs values) don't work in this version
- only MA Group back references will work, MA Groups can't contain forward/self/circular references to subsequent MA Groups
- recursive call stack occurs when the referenced MA Group is itself a reference to another MA Group and must be resolved first
- 4-level deep call stack with potential recursive references must be resolved (MAs[1] <= MAs[2] <= MAs[3] <= MAs[4]) - acceptable
- first 7 mas must have fixed values - there's nothing to reference before Group [1]
- MA Group [2] can reference MA Group [1]; MA Group [3] => MA Groups [1],[2]; MA Group [4] => MA Groups [1-3]
- bb ma must have a fixed value and can't be a reference
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Per un accesso rapido a un grafico, aggiungi questo script ai tuoi preferiti: per saperne di più clicca qui.
Declinazione di responsabilità
Script open-source
In pieno spirito TradingView, il creatore di questo script lo ha reso open-source, in modo che i trader possano esaminarlo e verificarne la funzionalità. Complimenti all'autore! Sebbene sia possibile utilizzarlo gratuitamente, ricorda che la ripubblicazione del codice è soggetta al nostro Regolamento.
Per un accesso rapido a un grafico, aggiungi questo script ai tuoi preferiti: per saperne di più clicca qui.