Backtesting & Trading Engine [PineCoders]The PineCoders Backtesting and Trading Engine is a sophisticated framework with hybrid code that can run as a study to generate alerts for automated or discretionary trading while simultaneously providing backtest results. It can also easily be converted to a TradingView strategy in order to run TV backtesting. The Engine comes with many built-in strats for entries, filters, stops and exits, but you can also add you own.
If, like any self-respecting strategy modeler should, you spend a reasonable amount of time constantly researching new strategies and tinkering, our hope is that the Engine will become your inseparable go-to tool to test the validity of your creations, as once your tests are conclusive, you will be able to run this code as a study to generate the alerts required to put it in real-world use, whether for discretionary trading or to interface with an execution bot/app. You may also find the backtesting results the Engine produces in study mode enough for your needs and spend most of your time there, only occasionally converting to strategy mode in order to backtest using TV backtesting.
As you will quickly grasp when you bring up this script’s Settings, this is a complex tool. While you will be able to see results very quickly by just putting it on a chart and using its built-in strategies, in order to reap the full benefits of the PineCoders Engine, you will need to invest the time required to understand the subtleties involved in putting all its potential into play.
Disclaimer: use the Engine at your own risk.
Before we delve in more detail, here’s a bird’s eye view of the Engine’s features:
More than 40 built-in strategies,
Customizable components,
Coupling with your own external indicator,
Simple conversion from Study to Strategy modes,
Post-Exit analysis to search for alternate trade outcomes,
Use of the Data Window to show detailed bar by bar trade information and global statistics, including some not provided by TV backtesting,
Plotting of reminders and generation of alerts on in-trade events.
By combining your own strats to the built-in strats supplied with the Engine, and then tuning the numerous options and parameters in the Inputs dialog box, you will be able to play what-if scenarios from an infinite number of permutations.
USE CASES
You have written an indicator that provides an entry strat but it’s missing other components like a filter and a stop strategy. You add a plot in your indicator that respects the Engine’s External Signal Protocol, connect it to the Engine by simply selecting your indicator’s plot name in the Engine’s Settings/Inputs and then run tests on different combinations of entry stops, in-trade stops and profit taking strats to find out which one produces the best results with your entry strat.
You are building a complex strategy that you will want to run as an indicator generating alerts to be sent to a third-party execution bot. You insert your code in the Engine’s modules and leverage its trade management code to quickly move your strategy into production.
You have many different filters and want to explore results using them separately or in combination. Integrate the filter code in the Engine and run through different permutations or hook up your filtering through the external input and control your filter combos from your indicator.
You are tweaking the parameters of your entry, filter or stop strat. You integrate it in the Engine and evaluate its performance using the Engine’s statistics.
You always wondered what results a random entry strat would yield on your markets. You use the Engine’s built-in random entry strat and test it using different combinations of filters, stop and exit strats.
You want to evaluate the impact of fees and slippage on your strategy. You use the Engine’s inputs to play with different values and get immediate feedback in the detailed numbers provided in the Data Window.
You just want to inspect the individual trades your strategy generates. You include it in the Engine and then inspect trades visually on your charts, looking at the numbers in the Data Window as you move your cursor around.
You have never written a production-grade strategy and you want to learn how. Inspect the code in the Engine; you will find essential components typical of what is being used in actual trading systems.
You have run your system for a while and have compiled actual slippage information and your broker/exchange has updated his fees schedule. You enter the information in the Engine and run it on your markets to see the impact this has on your results.
FEATURES
Before going into the detail of the Inputs and the Data Window numbers, here’s a more detailed overview of the Engine’s features.
Built-in strats
The engine comes with more than 40 pre-coded strategies for the following standard system components:
Entries,
Filters,
Entry stops,
2 stage in-trade stops with kick-in rules,
Pyramiding rules,
Hard exits.
While some of the filter and stop strats provided may be useful in production-quality systems, you will not devise crazy profit-generating systems using only the entry strats supplied; that part is still up to you, as will be finding the elusive combination of components that makes winning systems. The Engine will, however, provide you with a solid foundation where all the trade management nitty-gritty is handled for you. By binding your custom strats to the Engine, you will be able to build reliable systems of the best quality currently allowed on the TV platform.
On-chart trade information
As you move over the bars in a trade, you will see trade numbers in the Data Window change at each bar. The engine calculates the P&L at every bar, including slippage and fees that would be incurred were the trade exited at that bar’s close. If the trade includes pyramided entries, those will be taken into account as well, although for those, final fees and slippage are only calculated at the trade’s exit.
You can also see on-chart markers for the entry level, stop positions, in-trade special events and entries/exits (you will want to disable these when using the Engine in strategy mode to see TV backtesting results).
Customization
You can couple your own strats to the Engine in two ways:
1. By inserting your own code in the Engine’s different modules. The modular design should enable you to do so with minimal effort by following the instructions in the code.
2. By linking an external indicator to the engine. After making the proper selections in the engine’s Settings and providing values respecting the engine’s protocol, your external indicator can, when the Engine is used in Indicator mode only:
Tell the engine when to enter long or short trades, but let the engine’s in-trade stop and exit strats manage the exits,
Signal both entries and exits,
Provide an entry stop along with your entry signal,
Filter other entry signals generated by any of the engine’s entry strats.
Conversion from strategy to study
TradingView strategies are required to backtest using the TradingView backtesting feature, but if you want to generate alerts with your script, whether for automated trading or just to trigger alerts that you will use in discretionary trading, your code has to run as a study since, for the time being, strategies can’t generate alerts. From hereon we will use indicator as a synonym for study.
Unless you want to maintain two code bases, you will need hybrid code that easily flips between strategy and indicator modes, and your code will need to restrict its use of strategy() calls and their arguments if it’s going to be able to run both as an indicator and a strategy using the same trade logic. That’s one of the benefits of using this Engine. Once you will have entered your own strats in the Engine, it will be a matter of commenting/uncommenting only four lines of code to flip between indicator and strategy modes in a matter of seconds.
Additionally, even when running in Indicator mode, the Engine will still provide you with precious numbers on your individual trades and global results, some of which are not available with normal TradingView backtesting.
Post-Exit Analysis for alternate outcomes (PEA)
While typical backtesting shows results of trade outcomes, PEA focuses on what could have happened after the exit. The intention is to help traders get an idea of the opportunity/risk in the bars following the trade in order to evaluate if their exit strategies are too aggressive or conservative.
After a trade is exited, the Engine’s PEA module continues analyzing outcomes for a user-defined quantity of bars. It identifies the maximum opportunity and risk available in that space, and calculates the drawdown required to reach the highest opportunity level post-exit, while recording the number of bars to that point.
Typically, if you can’t find opportunity greater than 1X past your trade using a few different reasonable lengths of PEA, your strategy is doing pretty good at capturing opportunity. Remember that 100% of opportunity is never capturable. If, however, PEA was finding post-trade maximum opportunity of 3 or 4X with average drawdowns of 0.3 to those areas, this could be a clue revealing your system is exiting trades prematurely. To analyze PEA numbers, you can uncomment complete sets of plots in the Plot module to reveal detailed global and individual PEA numbers.
Statistics
The Engine provides stats on your trades that TV backtesting does not provide, such as:
Average Profitability Per Trade (APPT), aka statistical expectancy, a crucial value.
APPT per bar,
Average stop size,
Traded volume .
It also shows you on a trade-by-trade basis, on-going individual trade results and data.
In-trade events
In-trade events can plot reminders and trigger alerts when they occur. The built-in events are:
Price approaching stop,
Possible tops/bottoms,
Large stop movement (for discretionary trading where stop is moved manually),
Large price movements.
Slippage and Fees
Even when running in indicator mode, the Engine allows for slippage and fees to be included in the logic and test results.
Alerts
The alert creation mechanism allows you to configure alerts on any combination of the normal or pyramided entries, exits and in-trade events.
Backtesting results
A few words on the numbers calculated in the Engine. Priority is given to numbers not shown in TV backtesting, as you can readily convert the script to a strategy if you need them.
We have chosen to focus on numbers expressing results relative to X (the trade’s risk) rather than in absolute currency numbers or in other more conventional but less useful ways. For example, most of the individual trade results are not shown in percentages, as this unit of measure is often less meaningful than those expressed in units of risk (X). A trade that closes with a +25% result, for example, is a poor outcome if it was entered with a -50% stop. Expressed in X, this trade’s P&L becomes 0.5, which provides much better insight into the trade’s outcome. A trade that closes with a P&L of +2X has earned twice the risk incurred upon entry, which would represent a pre-trade risk:reward ratio of 2.
The way to go about it when you think in X’s and that you adopt the sound risk management policy to risk a fixed percentage of your account on each trade is to equate a currency value to a unit of X. E.g. your account is 10K USD and you decide you will risk a maximum of 1% of it on each trade. That means your unit of X for each trade is worth 100 USD. If your APPT is 2X, this means every time you risk 100 USD in a trade, you can expect to make, on average, 200 USD.
By presenting results this way, we hope that the Engine’s statistics will appeal to those cognisant of sound risk management strategies, while gently leading traders who aren’t, towards them.
We trade to turn in tangible profits of course, so at some point currency must come into play. Accordingly, some values such as equity, P&L, slippage and fees are expressed in currency.
Many of the usual numbers shown in TV backtests are nonetheless available, but they have been commented out in the Engine’s Plot module.
Position sizing and risk management
All good system designers understand that optimal risk management is at the very heart of all winning strategies. The risk in a trade is defined by the fraction of current equity represented by the amplitude of the stop, so in order to manage risk optimally on each trade, position size should adjust to the stop’s amplitude. Systems that enter trades with a fixed stop amplitude can get away with calculating position size as a fixed percentage of current equity. In the context of a test run where equity varies, what represents a fixed amount of risk translates into different currency values.
Dynamically adjusting position size throughout a system’s life is optimal in many ways. First, as position sizing will vary with current equity, it reproduces a behavioral pattern common to experienced traders, who will dial down risk when confronted to poor performance and increase it when performance improves. Second, limiting risk confers more predictability to statistical test results. Third, position sizing isn’t just about managing risk, it’s also about maximizing opportunity. By using the maximum leverage (no reference to trading on margin here) into the trade that your risk management strategy allows, a dynamic position size allows you to capture maximal opportunity.
To calculate position sizes using the fixed risk method, we use the following formula: Position = Account * MaxRisk% / Stop% [, which calculates a position size taking into account the trade’s entry stop so that if the trade is stopped out, 100 USD will be lost. For someone who manages risk this way, common instructions to invest a certain percentage of your account in a position are simply worthless, as they do not take into account the risk incurred in the trade.
The Engine lets you select either the fixed risk or fixed percentage of equity position sizing methods. The closest thing to dynamic position sizing that can currently be done with alerts is to use a bot that allows syntax to specify position size as a percentage of equity which, while being dynamic in the sense that it will adapt to current equity when the trade is entered, does not allow us to modulate position size using the stop’s amplitude. Changes to alerts are on the way which should solve this problem.
In order for you to simulate performance with the constraint of fixed position sizing, the Engine also offers a third, less preferable option, where position size is defined as a fixed percentage of initial capital so that it is constant throughout the test and will thus represent a varying proportion of current equity.
Let’s recap. The three position sizing methods the Engine offers are:
1. By specifying the maximum percentage of risk to incur on your remaining equity, so the Engine will dynamically adjust position size for each trade so that, combining the stop’s amplitude with position size will yield a fixed percentage of risk incurred on current equity,
2. By specifying a fixed percentage of remaining equity. Note that unless your system has a fixed stop at entry, this method will not provide maximal risk control, as risk will vary with the amplitude of the stop for every trade. This method, as the first, does however have the advantage of automatically adjusting position size to equity. It is the Engine’s default method because it has an equivalent in TV backtesting, so when flipping between indicator and strategy mode, test results will more or less correspond.
3. By specifying a fixed percentage of the Initial Capital. While this is the least preferable method, it nonetheless reflects the reality confronted by most system designers on TradingView today. In this case, risk varies both because the fixed position size in initial capital currency represents a varying percentage of remaining equity, and because the trade’s stop amplitude may vary, adding another variability vector to risk.
Note that the Engine cannot display equity results for strategies entering trades for a fixed amount of shares/contracts at a variable price.
SETTINGS/INPUTS
Because the initial text first published with a script cannot be edited later and because there are just too many options, the Engine’s Inputs will not be covered in minute detail, as they will most certainly evolve. We will go over them with broad strokes; you should be able to figure the rest out. If you have questions, just ask them here or in the PineCoders Telegram group.
Display
The display header’s checkbox does nothing.
For the moment, only one exit strategy uses a take profit level, so only that one will show information when checking “Show Take Profit Level”.
Entries
You can activate two simultaneous entry strats, each selected from the same set of strats contained in the Engine. If you select two and they fire simultaneously, the main strat’s signal will be used.
The random strat in each list uses a different seed, so you will get different results from each.
The “Filter transitions” and “Filter states” strats delegate signal generation to the selected filter(s). “Filter transitions” signals will only fire when the filter transitions into bull/bear state, so after a trade is stopped out, the next entry may take some time to trigger if the filter’s state does not change quickly. When you choose “Filter states”, then a new trade will be entered immediately after an exit in the direction the filter allows.
If you select “External Indicator”, your indicator will need to generate a +2/-2 (or a positive/negative stop value) to enter a long/short position, providing the selected filters allow for it. If you wish to use the Engine’s capacity to also derive the entry stop level from your indicator’s signal, then you must explicitly choose this option in the Entry Stops section.
Filters
You can activate as many filters as you wish; they are additive. The “Maximum stop allowed on entry” is an important component of proper risk management. If your system has an average 3% stop size and you need to trade using fixed position sizes because of alert/execution bot limitations, you must use this filter because if your system was to enter a trade with a 15% stop, that trade would incur 5 times the normal risk, and its result would account for an abnormally high proportion in your system’s performance.
Remember that any filter can also be used as an entry signal, either when it changes states, or whenever no trade is active and the filter is in a bull or bear mode.
Entry Stops
An entry stop must be selected in the Engine, as it requires a stop level before the in-trade stop is calculated. Until the selected in-trade stop strat generates a stop that comes closer to price than the entry stop (or respects another one of the in-trade stops kick in strats), the entry stop level is used.
It is here that you must select “External Indicator” if your indicator supplies a +price/-price value to be used as the entry stop. A +price is expected for a long entry and a -price value will enter a short with a stop at price. Note that the price is the absolute price, not an offset to the current price level.
In-Trade Stops
The Engine comes with many built-in in-trade stop strats. Note that some of them share the “Length” and “Multiple” field, so when you swap between them, be sure that the length and multiple in use correspond to what you want for that stop strat. Suggested defaults appear with the name of each strat in the dropdown.
In addition to the strat you wish to use, you must also determine when it kicks in to replace the initial entry’s stop, which is determined using different strats. For strats where you can define a positive or negative multiple of X, percentage or fixed value for a kick-in strat, a positive value is above the trade’s entry fill and a negative one below. A value of zero represents breakeven.
Pyramiding
What you specify in this section are the rules that allow pyramiding to happen. By themselves, these rules will not generate pyramiding entries. For those to happen, entry signals must be issued by one of the active entry strats, and conform to the pyramiding rules which act as a filter for them. The “Filter must allow entry” selection must be chosen if you want the usual system’s filters to act as additional filtering criteria for your pyramided entries.
Hard Exits
You can choose from a variety of hard exit strats. Hard exits are exit strategies which signal trade exits on specific events, as opposed to price breaching a stop level in In-Trade Stops strategies. They are self-explanatory. The last one labelled When Take Profit Level (multiple of X) is reached is the only one that uses a level, but contrary to stops, it is above price and while it is relative because it is expressed as a multiple of X, it does not move during the trade. This is the level called Take Profit that is show when the “Show Take Profit Level” checkbox is checked in the Display section.
While stops focus on managing risk, hard exit strategies try to put the emphasis on capturing opportunity.
Slippage
You can define it as a percentage or a fixed value, with different settings for entries and exits. The entry and exit markers on the chart show the impact of slippage on the entry price (the fill).
Fees
Fees, whether expressed as a percentage of position size in and out of the trade or as a fixed value per in and out, are in the same units of currency as the capital defined in the Position Sizing section. Fees being deducted from your Capital, they do not have an impact on the chart marker positions.
In-Trade Events
These events will only trigger during trades. They can be helpful to act as reminders for traders using the Engine as assistance to discretionary trading.
Post-Exit Analysis
It is normally on. Some of its results will show in the Global Numbers section of the Data Window. Only a few of the statistics generated are shown; many more are available, but commented out in the Plot module.
Date Range Filtering
Note that you don’t have to change the dates to enable/diable filtering. When you are done with a specific date range, just uncheck “Date Range Filtering” to disable date filtering.
Alert Triggers
Each selection corresponds to one condition. Conditions can be combined into a single alert as you please. Just be sure you have selected the ones you want to trigger the alert before you create the alert. For example, if you trade in both directions and you want a single alert to trigger on both types of exits, you must select both “Long Exit” and “Short Exit” before creating your alert.
Once the alert is triggered, these settings no longer have relevance as they have been saved with the alert.
When viewing charts where an alert has just triggered, if your alert triggers on more than one condition, you will need the appropriate markers active on your chart to figure out which condition triggered the alert, since plotting of markers is independent of alert management.
Position sizing
You have 3 options to determine position size:
1. Proportional to Stop -> Variable, with a cap on size.
2. Percentage of equity -> Variable.
3. Percentage of Initial Capital -> Fixed.
External Indicator
This is where you connect your indicator’s plot that will generate the signals the Engine will act upon. Remember this only works in Indicator mode.
DATA WINDOW INFORMATION
The top part of the window contains global numbers while the individual trade information appears in the bottom part. The different types of units used to express values are:
curr: denotes the currency used in the Position Sizing section of Inputs for the Initial Capital value.
quote: denotes quote currency, i.e. the value the instrument is expressed in, or the right side of the market pair (USD in EURUSD ).
X: the stop’s amplitude, itself expressed in quote currency, which we use to express a trade’s P&L, so that a trade with P&L=2X has made twice the stop’s amplitude in profit. This is sometimes referred to as R, since it represents one unit of risk. It is also the unit of measure used in the APPT, which denotes expected reward per unit of risk.
X%: is also the stop’s amplitude, but expressed as a percentage of the Entry Fill.
The numbers appearing in the Data Window are all prefixed:
“ALL:” the number is the average for all first entries and pyramided entries.
”1ST:” the number is for first entries only.
”PYR:” the number is for pyramided entries only.
”PEA:” the number is for Post-Exit Analyses
Global Numbers
Numbers in this section represent the results of all trades up to the cursor on the chart.
Average Profitability Per Trade (X): This value is the most important gauge of your strat’s worthiness. It represents the returns that can be expected from your strat for each unit of risk incurred. E.g.: your APPT is 2.0, thus for every unit of currency you invest in a trade, you can on average expect to obtain 2 after the trade. APPT is also referred to as “statistical expectancy”. If it is negative, your strategy is losing, even if your win rate is very good (it means your winning trades aren’t winning enough, or your losing trades lose too much, or both). Its counterpart in currency is also shown, as is the APPT/bar, which can be a useful gauge in deciding between rivalling systems.
Profit Factor: Gross of winning trades/Gross of losing trades. Strategy is profitable when >1. Not as useful as the APPT because it doesn’t take into account the win rate and the average win/loss per trade. It is calculated from the total winning/losing results of this particular backtest and has less predictive value than the APPT. A good profit factor together with a poor APPT means you just found a chart where your system outperformed. Relying too much on the profit factor is a bit like a poker player who would think going all in with two’s against aces is optimal because he just won a hand that way.
Win Rate: Percentage of winning trades out of all trades. Taken alone, it doesn’t have much to do with strategy profitability. You can have a win rate of 99% but if that one trade in 100 ruins you because of poor risk management, 99% doesn’t look so good anymore. This number speaks more of the system’s profile than its worthiness. Still, it can be useful to gauge if the system fits your personality. It can also be useful to traders intending to sell their systems, as low win rate systems are more difficult to sell and require more handholding of worried customers.
Equity (curr): This the sum of initial capital and the P&L of your system’s trades, including fees and slippage.
Return on Capital is the equivalent of TV’s Net Profit figure, i.e. the variation on your initial capital.
Maximum drawdown is the maximal drawdown from the highest equity point until the drop . There is also a close to close (meaning it doesn’t take into account in-trade variations) maximum drawdown value commented out in the code.
The next values are self-explanatory, until:
PYR: Avg Profitability Per Entry (X): this is the APPT for all pyramided entries.
PEA: Avg Max Opp . Available (X): the average maximal opportunity found in the Post-Exit Analyses.
PEA: Avg Drawdown to Max Opp . (X): this represents the maximum drawdown (incurred from the close at the beginning of the PEA analysis) required to reach the maximal opportunity point.
Trade Information
Numbers in this section concern only the current trade under the cursor. Most of them are self-explanatory. Use the description’s prefix to determine what the values applies to.
PYR: Avg Profitability Per Entry (X): While this value includes the impact of all current pyramided entries (and only those) and updates when you move your cursor around, P&L only reflects fees at the trade’s last bar.
PEA: Max Opp . Available (X): It’s the most profitable close reached post-trade, measured from the trade’s Exit Fill, expressed in the X value of the trade the PEA follows.
PEA: Drawdown to Max Opp . (X): This is the maximum drawdown from the trade’s Exit Fill that needs to be sustained in order to reach the maximum opportunity point, also expressed in X. Note that PEA numbers do not include slippage and fees.
EXTERNAL SIGNAL PROTOCOL
Only one external indicator can be connected to a script; in order to leverage its use to the fullest, the engine provides options to use it as either an entry signal, an entry/exit signal or a filter. When used as an entry signal, you can also use the signal to provide the entry’s stop. Here’s how this works:
For filter state: supply +1 for bull (long entries allowed), -1 for bear (short entries allowed).
For entry signals: supply +2 for long, -2 for short.
For exit signals: supply +3 for exit from long, -3 for exit from short.
To send an entry stop level with an entry signal: Send positive stop level for long entry (e.g. 103.33 to enter a long with a stop at 103.33), negative stop level for short entry (e.g. -103.33 to enter a short with a stop at 103.33). If you use this feature, your indicator will have to check for exact stop levels of 1.0, 2.0 or 3.0 and their negative counterparts, and fudge them with a tick in order to avoid confusion with other signals in the protocol.
Remember that mere generation of the values by your indicator will have no effect until you explicitly allow their use in the appropriate sections of the Engine’s Settings/Inputs.
An example of a script issuing a signal for the Engine is published by PineCoders.
RECOMMENDATIONS TO ASPIRING SYSTEM DESIGNERS
Stick to higher timeframes. On progressively lower timeframes, margins decrease and fees and slippage take a proportionally larger portion of profits, to the point where they can very easily turn a profitable strategy into a losing one. Additionally, your margin for error shrinks as the equilibrium of your system’s profitability becomes more fragile with the tight numbers involved in the shorter time frames. Avoid <1H time frames.
Know and calculate fees and slippage. To avoid market shock, backtest using conservative fees and slippage parameters. Systems rarely show unexpectedly good returns when they are confronted to the markets, so put all chances on your side by being outrageously conservative—or a the very least, realistic. Test results that do not include fees and slippage are worthless. Slippage is there for a reason, and that’s because our interventions in the market change the market. It is easier to find alpha in illiquid markets such as cryptos because not many large players participate in them. If your backtesting results are based on moving large positions and you don’t also add the inevitable slippage that will occur when you enter/exit thin markets, your backtesting will produce unrealistic results. Even if you do include large slippage in your settings, the Engine can only do so much as it will not let slippage push fills past the high or low of the entry bar, but the gap may be much larger in illiquid markets.
Never test and optimize your system on the same dataset , as that is the perfect recipe for overfitting or data dredging, which is trying to find one precise set of rules/parameters that works only on one dataset. These setups are the most fragile and often get destroyed when they meet the real world.
Try to find datasets yielding more than 100 trades. Less than that and results are not as reliable.
Consider all backtesting results with suspicion. If you never entertained sceptic tendencies, now is the time to begin. If your backtest results look really good, assume they are flawed, either because of your methodology, the data you’re using or the software doing the testing. Always assume the worse and learn proper backtesting techniques such as monte carlo simulations and walk forward analysis to avoid the traps and biases that unchecked greed will set for you. If you are not familiar with concepts such as survivor bias, lookahead bias and confirmation bias, learn about them.
Stick to simple bars or candles when designing systems. Other types of bars often do not yield reliable results, whether by design (Heikin Ashi) or because of the way they are implemented on TV (Renko bars).
Know that you don’t know and use that knowledge to learn more about systems and how to properly test them, about your biases, and about yourself.
Manage risk first , then capture opportunity.
Respect the inherent uncertainty of the future. Cleanse yourself of the sad arrogance and unchecked greed common to newcomers to trading. Strive for rationality. Respect the fact that while backtest results may look promising, there is no guarantee they will repeat in the future (there is actually a high probability they won’t!), because the future is fundamentally unknowable. If you develop a system that looks promising, don’t oversell it to others whose greed may lead them to entertain unreasonable expectations.
Have a plan. Understand what king of trading system you are trying to build. Have a clear picture or where entries, exits and other important levels will be in the sort of trade you are trying to create with your system. This stated direction will help you discard more efficiently many of the inevitably useless ideas that will pop up during system design.
Be wary of complexity. Experienced systems engineers understand how rapidly complexity builds when you assemble components together—however simple each one may be. The more complex your system, the more difficult it will be to manage.
Play! . Allow yourself time to play around when you design your systems. While much comes about from working with a purpose, great ideas sometimes come out of just trying things with no set goal, when you are stuck and don’t know how to move ahead. Have fun!
@LucF
NOTES
While the engine’s code can supply multiple consecutive entries of longs or shorts in order to scale positions (pyramid), all exits currently assume the execution bot will exit the totality of the position. No partial exits are currently possible with the Engine.
Because the Engine is literally crippled by the limitations on the number of plots a script can output on TV; it can only show a fraction of all the information it calculates in the Data Window. You will find in the Plot Module vast amounts of commented out lines that you can activate if you also disable an equivalent number of other plots. This may be useful to explore certain characteristics of your system in more detail.
When backtesting using the TV backtesting feature, you will need to provide the strategy parameters you wish to use through either Settings/Properties or by changing the default values in the code’s header. These values are defined in variables and used not only in the strategy() statement, but also as defaults in the Engine’s relevant Inputs.
If you want to test using pyramiding, then both the strategy’s Setting/Properties and the Engine’s Settings/Inputs need to allow pyramiding.
If you find any bugs in the Engine, please let us know.
THANKS
To @glaz for allowing the use of his unpublished MA Squize in the filters.
To @everget for his Chandelier stop code, which is also used as a filter in the Engine.
To @RicardoSantos for his pseudo-random generator, and because it’s from him that I first read in the Pine chat about the idea of using an external indicator as input into another. In the PineCoders group, @theheirophant then mentioned the idea of using it as a buy/sell signal and @simpelyfe showed a piece of code implementing the idea. That’s the tortuous story behind the use of the external indicator in the Engine.
To @admin for the Volatility stop’s original code and for the donchian function lifted from Ichimoku .
To @BobHoward21 for the v3 version of Volatility Stop .
To @scarf and @midtownsk8rguy for the color tuning.
To many other scripters who provided encouragement and suggestions for improvement during the long process of writing and testing this piece of code.
To J. Welles Wilder Jr. for ATR, used extensively throughout the Engine.
To TradingView for graciously making an account available to PineCoders.
And finally, to all fellow PineCoders for the constant intellectual stimulation; it is a privilege to share ideas with you all. The Engine is for all TradingView PineCoders, of course—but especially for you.
Look first. Then leap.
Cerca negli script per "top"
Multi-TF Avg BBandsMULTI-TF AVERAGE BBANDS - with signals (BETA)
Overall, it shows where the price has support and resistance, when it's breaking through, and when its relatively low/high based on the magic of standard deviation.
created by gamazama. send me a shout if u find this useful, or if you create something cool with it.
%BB: The price's position in the boilinger band is converted to a range from 0-1. The midpoint is at 0.5
Description of parameters
"BB:Window Length" is the standard BB size of 20 candles.
The indicator plots up to 7 different %BB's on different timescales
They are calculated independently of the timescale you are viewing eg 12h, 3d, 30m will be the same output
You can enter 7 timescales, eg. if you want to plot a range of bbands of the 12h up to 3d graphs, enter values between 0.5 and 3 (days) - you can also select 0 to disable and use less timescales, or select hours or minutes
Take note if you eg. double the main multiplier to 40, it is the same as doubling all your timescales
You can turn the transparency of the 7 x %BB's to 100 to hide them, their average is plotted as a thick cyan line
"Variance" is a measure of how much the 7 BB's agree, and changes colour based on the thresholds used for the strategy
---- TO START FROM SCRATCH ----
- set all except one to ZERO (0), set to 0, and everything after to 0.
Turn ON and right click -> move the indicator to a new pane - this will show you the internal workings of the indicator.
Then there is a few standard settings
"Source Smoothing Amount" applies a basic small sma on the price.
It should be turned down when viewing candles with less information, like 1D or more.
Standard BBands use an SMA, there one uses a blend between VWMA or SMA
Volume Weight settings, the same as SMA at 0, and the same as VWMA at 1
BB^2 is a bband drawn around the average %BB. Adjust the to change its window length
The BB^2 changes color when price moves up or down
Now its time to look at the parameters which affect the buy/sell signals
turn on "show signal range" - you see some red lines
buy and sell each have 4 settings
min/max variance will affect the brigtness of the signal range
range adjust will move the range up/down
mix BB^2 blends between a straight line (0) and BB^2's top or bottom (1)
a threshold of "variance" and "h/l points" is available to generate weaker signals.
these thresholds can be increased to show more weak signals
ONCE YOU ARE HAPPY WITH THE SIGNALS being generated, you can turn OFF , and move it back to the price pane
the indicator then draws a bband around the price to maps some info into the chart:
fills a colour between 0.5 & the mid BB^2 and converts relative to the price chart
draws a line in the middle of the midband.
controls how much these lines diverge from the price - adjust it to reduce noise
converts the signal range (red lines) to be relative to the price chart
if you like, you can adjust the sell & buy signals in the tab from and to and to match the picture. It messes with auto-scaling when moving back to though
enjoy, I hope that is easy enough to understand, still trying to make this more user-friendly.
If you want to send me some token of appreciation - btc: 33c2oiCW8Fnsy41Y8z2jAPzY8trnqr5cFu
I promise it will put a fat smile on my face
Wick Delta Buy/Sell PressureIf you think of a perfect doji candle, where the wicks on top and bottom are exactly the same, that's a candle with a delta of 0. What this indicator does is show the delta/difference between wicks, if the top wick is longer than the bottom wick it show's sell pressure/bear interest, which is displayed as a red bar and vice versa for buy/bull pressure, which is shown as green bars. I added arrows for clarity.
It's a different way of visualising wicks, which can clarify sentiment and be a useful way to understand wicks better in general. One way to use it is to look for clusters of 3/4 larger bars in a row, which generally helps to determine future direction especially when seen at important levels.
Awesome Oscillator and MACD Histogram by SierraPilot (Lemrin)This is an indicator I stole from Lemrin. I added the plots for the MACD line and the Signal line and also changed the AO and MACD histo to an area plot. MACD = red and green. AO = blue and yellow. Green over top of Blue = possible reversal. Green overlaid over blue = uptrend. Yellow over top of Red = downside reversal possible. Yellow overlaid over Red = downtrend in progress. MACD and Signal line behave normally. Thanks to Lemrin for the majority of the code.
Volume Momentum [LucF]Volume momentum gives much more information than a simple volume MA. It does require interpretation however, since increasing volume momentum can indicate strengthening of both an up or down movement. Volume momentum peaks and bottoms are also interesting as they often lead to shifts in price movement.
In order to help interpretation, I color rising volume momentum using price momentum. Green indicates volume-supported upward price movement and red indicates volume-supported downward price movement.
As to falling volume momentum, in my world view it indicates exhaustion or disinterest which requires prior price activity to be interpreted. In strong and steady price movements it can indicate a mere pause. After high price volatility often signalling a top or bottom, falling volume momentum often leads reversals.
Features
Two optional MAs on the main volume momentum line, with crosses on the short MA.
A higher time frame line (shown by default), with the higher time frame being a user-defined multiple of the current chart’s interval. The default is 8, so that a 15m chart will also show a 2h volume momentum.
Two Markers
Tops/Bottoms (marker 1): these occur on high/low price momentum pivots situated in favorable regions, combined with volume momentum peaks.
Pauses/Reversals (marker 2): these simply identify volume momentum high pivots that often lead to shifts in price movement. They are not directional. You can choose to color bars where these markers occur (shown on chart).
You can show only long or short markers.
Alerts
You can define alerts on any combination of markers you configure. After defining the markers you want the alert to trigger on, make sure you are on the interval you want the alert to be monitoring at, then create the alert, select Volume Momentum, use the default “Configured Markers” alert condition and choose your triggering window (usually “Once Per Bar Close”). Once the alert is created, you can change the indicator's inputs with no effect on the alert.
Use Cases
The higher time frame line is very useful in situating current volume activity in a larger context.
I consider all peaks in volume momentum as potentially significant events.
When looking for an entry, I will often wait for the descending volume momentum to change direction at a shorter interval, using price momentum to confirm that increasing volume is working in my favor.
Volume momentum variations can often inform otherwise insignificant price momentum activity.
Here I use price momentum to color volume momentum; inversely, I also use volume momentum to color my momentum indicator.
Notes
Where the markers on my Volume Columns indicator focus on confirming strength of price movements, this indicators’ markers try to focus on shifts in price movement.
My volume momentum is calculated using a smoother variant of CCI which came to be known as WaveTrend.
Pair Strength by SpreadEagle71Currencies on top are faster than the ones below them. So go long on the top ones and short on the lower ones. Also check against other indicators such as the True Strength Indicator and the RSI or CCI.
Cheers
SpreadEagle71
Aggregated Volume ETHBTCAggregates the ETH/BTC volume from multiple exchanges into a single indicator.
# Exchanges and Pairs
Included are only exchanges supported by TradingView:
* Binance
* Bitstamp
* Bittrex
* Coinbase
* Gemini
* Bitfinex
* Kraken
* Poloniex
* HitBTC
Excluded low volume exchanges (not in CMC Top):
* CEX.IO
Many other top exchanges are not included, because they are not supported by TradingView.
# Inputs
By default the spot exchanges are selected. You can select also the other margin trading and derivatives exchanges.
# Contribute
Feel free to share any ideas and issues you have.
# Open Source
The code is open source @ github.com and uses the commonpine library github.com
Aggregated Volume ETHAggregates the ETH/fiat volume from multiple exchanges into a single indicator.
# Exchanges and Pairs
Included are only exchanges supported by TradingView:
* Binance
* Bitstamp
* Bittrex
* Coinbase
* Gemini
* itBit
* Bitfinex
* Kraken
* Poloniex
* BitMEX
Excluded low volume exchanges (not in CMC Top):
* CEX . IO
* Coinfloor
Excluded exchange due to volume calculation by TV:
* HitBTC
Many other top exchanges are not included, because they are not supported by TradingView.
# Inputs
By default the spot exchanges are selected. You can select also the other margin trading and derivatives exchanges.
# Contribute
Feel free to share any ideas and issues you have.
# Open Source
The code is open source @ github.com and uses the commonpine library github.com
Kringold2[WOZDUX] gold equivalentThe indicator is a tool for global analysis. The default is the price of gold. The price of the instrument from the main window is divided by the price of gold. The result is the price of the instrument in units of gold. The screen uses the Dow Jones index as an example. In the indicator window, the price of the index in units of gold or the so-called gold Dow Jones. The use of the gold equivalent makes it possible to see more truthful trends. The Indicator has the ability to change gold to any other equivalent. It is enough to change the name of the exchange and the name of the instrument in the options tool and exchange. In addition, in the settings, the second box on top allows you to view the graph in a linear or logarithmic scale. The first box at the top switches the line chart or the CCI =WT indicator to this chart.
-------------------------------------------
Индикатор это инструмент для глобального анализа. По умолчанию используется цена золота. Цена инструмента из основного окна делится на цену золота. В результате получается цена инструмента в единицах золота. На экране для примера используется индекс Доу джонса. В окне индикатора цена индекса в единицах золота или так называемый золотой Доу Джонс. Использование золотого эквивалента дает возможность видеть более правдивые тенденции движения. В Индикаторе есть возможность поменять золото на любой другой эквивалент. Достаточно в опциях инструмент и биржа изменить название биржи и название инструмента. Кроме того, в настройках, второй бокс сверху дает возможность смотреть график в линейном или логарифмическом масштабе. Первый бокс сверу переключает линейный график или индикатор CCI =WT к данному графику.
breakout and swingA Price Action system that use swing point and breakout
above the black line (breakout) is long, below short
swing/support/resistance points (blue circles) are displayed after a top or botton, breaking it means an inversion
red circles try to guest a target after a top/bottom or after a swing break.
the main trend is made by the black line that is set on Day period suitable for 1h to 15m time frame , for small TF you can set a smaller period from setting command
By default a set a 40 period channel high/low (the highest and lowest 40 bar back) that is ok for 1 h or smaller tf , but look to long for daily tf, adjust it yourself
Candle Range CompareThis one compares the total candle height (Low to High), body size, also top and bottom wick sizes. I really don't know when it would be best to use this, but it gives a 0 baseline to compare candles side-by-side also to compare body size to wick size.
*Notes*
- The tallest of course is high minus low
- whether or not the close is above the open, the body size is the column in front of the total size of course
- wicks are from 0 up for the top wick and 0 down for the bottom wick.
WT3 speedup[WOZDUX]=Velocity and acceleration of the CCIModification of the CCI indicator WT3.
1) three indicators in one window. "kluch2" includes display 2 additional lines.
2) you can calculate the indicator by closing price and you can calculate the volume price. The key is the "key" includes the calculations according to the bulk price.
3) "kluchperegib" shows inflection points
4) For the line with the period "n1" the width of the channel on which it moves is calculated. The channel helps to track the boundaries of fluctuations.The channel width is Set in the "lband" variable.
5)" obLevel1 " defines the critical levels for the cci indicator.
6) since the meaning of the cci indicator and its modification wt is that it is the speed of price movement. Calculate the acceleration of prices. the variable "nwt"is used for this purpose.
The lilac line shows the acceleration of the price. Acceleration used to warn us about the reversal of the movement.
The General line of the indicator and the acceleration line together give more accurate information about the market mood. If the acceleration falls from top to bottom in advance, then wait for a quick price reversal from top to bottom. If the acceleration starts to rise from the bottom up, then also wait for a turn from the bottom up.
---------------
Скорость и ускорение CCI .
Модификация индикатора CCI под названием wt.
1) три индикатора в одном окне. "kluch2" включает дисплей 2 дополнительных линий.
2) Вы можете рассчитать индикатор по цене закрытия, и вы можете рассчитать цену объема. Ключ "ключ" включает в себя расчеты по объемной цене.
3)" kluchperegib " показывает пункты перегиба
4) Для линии с периодом "n1" рассчитывается Ширина канала, по которому она движется. Канал помогает отслеживать границы колебаний.Ширина канала Задается в переменной "lband".
5) "obLevel1" определяет критические уровни для индикатора cci.
6) так как смысл индикатора cci и его модификации wt заключается в том, что это скорость движения цены. Рассчитаем ускорение цены. для этого используется переменная "nwt".
Сиреневая линия показывает ускорение цены. Ускорение раньше предупреждало нас о развороте движения.
Общая линия индикатора и линия ускорения вместе дают более точную информацию о настроении рынка. Если ускорение падает сверху вниз заранее, то ждите быстрого разворота цены сверху вниз. Если ускорение начинает подниматься снизу вверх, то также ждите разворота снизу вверх.
Physics MACD double// Physics MACD double 12, 26 and 5, 15
// with rsi and cci rise green on bottom
// with macd 15 rising above 0 with macd 26 below 0 green on top
// with macd 15 below 0 and macd 26 above 0 red on top
// CCI low and increasing lime bottom
// low and high volume change red green bottom circle
// use with Physics Bollinger Bands
TTM SQUEEZE with ALERT by NM// ######################################################################################
// This script was created because the original TTM Squeeze script
// did trigger when only one of the Bollinger Bands was
// in the Keltner channel. It now gives the option to use it as was
// or to force it to only give a signal when both BB are in the Keltner channels
//
// Furthermore an alert was added to fire when we are squeezing
// no matter which option your choose (original or strict)
//
// To create an alert, click on the alerts in the right column on your screen
// then click on the +button to add an alert.
// Select from the conditions "CTTV Squeeze" and "Once per bar close"
// Keep in mind that you set this alert for one instrument and one particular time frame
//
// If you would have any questions, contact me :
// TradingView : @Nico.Muselle
// ######################################################################################
How to start using this script ?
1. Add this script to your favorites
2. Click on the Indicator-button on the top bar of your chart
3. Click on Favorites and find CTTV TTM
Do also check out my other indicators :
Percentage change -
Power Moving Average Pro - (use Moving Averages of higher time frames on lower time frame charts) -
Power Moving Average - (use 1 moving average of a higher time frame on the current time frame) -
BitFinex Longs vs. Shorts -
Relative Strength Index Direction -
Reversal Candles -
EMADiff -
Improved Linear Regression Bull and Bear Power v02 -
Improved Linear Regression Bull and Bear Power v01 -
PS : Sorry about the messy chart - Bottom indicators show the TTM Squeeze, top one being the original posted here, bottom one being the more strict option.
2xStochastic + RSI (two levels, colored)Great tool to find market tops, bottoms, S/R's and reversals.
Rsi has 2 customiseble overbought and oversold levels can show you extreme levels.
Slow Stochastic 1 (25 period) shows small price swings
Slow stochastic 2 (100 period) can show you a greater picture, are we reversing?
Why do you need Leguerre, Murrey, Kaufman oscilator 3000 when you can have old and trusted tool, that has been tweeked very nicely for any timeframe.
I use it in a variety of ways, let me show you some examples:
EXAMPLE 1 (RSI Extreme Level):
1) Find extreme oversold or overbought level that clearly reversed and plop S/R line there. BAM! We have a S/R line
2) Next time you know this line will mean something (Either it will hold, or it will be broken by a big candle) and you can trade it accordingly to Stochastic trading strategy
EXAMPLE 2 (Fibonacci Level finder):
Trading fibo? This can help!
1) Just like fibo trading, find good swing top and bottom
2) You know that price will reverse from 38.2, 50, 61.8, but where? I think this is self explanotory...
PivotBoss Wick Reversal SetupPATTERN SUMMARY
1. The body is used to determine the size oftlle reversal wick. A wick tllat is between 2.5 to 3.5 times larger than
the size of the body is ideal.
2. For a bullish reversal wick to exist, tlle close ofthe bar should fall witllin tlle top 35 percent of the overall range
of the candle.
3. For a bearish reversal wick to exist, the close of the bar should fall within the bottom 35 percent of the overall
range of the candle.
PATTERN PSYCHOLOGY
Figure 2-4 shows several types of bullish and bearish reversal wick candlesticks that can all signal
profitable reversal opportunities in the market, especially if these patterns are paired with key pivot levels. In
traditional candlestick jargon, these particular candlesticks would have names ranging from hammer , hanging
man, inverted hammer , shooting star , gravestone doji , or dragonfly doji , depending on where the candle is
placed in a trend. Now you can see why I simply call these candlesticks wicks, or even tails. Instead of fumbling
over the proper naming of these candlesticks , I believe it is more important to know what these patterns
represent. What are they telling you?
Types of Candlestick Reversal Wicks
When the market has been trending lower then suddenly forms a reversal wick candlestick , the likelihood of
a reversal increases since buyers have finally begun to overwhelm the sellers. Selling pressure rules the decline,
but responsive buyers entered the market due to perceived undervaluation. For the reversal wick to open near the
high of the candle, sell off sharply intra-bar, and then rally back toward the open of the candle is bullish , as it
signifies that the bears no longer have control since they were not able to extend the decline of the candle, or the
trend. Instead, the bulls were able to rally price from the lows of the candle and close the bar near the top of its
range, which is bullish - at least for one bar, which hadn't been the case during the bearish trend (see Figure 2.5).
The Stages of a Reversal Wick
Stage 1 Stage 2 Stage 3
Essentially, when a reversal wick forms at the extreme of a trend, the market is telling you that the trend
either has stalled or is on the verge of a reversal. Remember, the market auctions higher in search of sellers, and
lower in search of buyers. When the market over-extends itself in search of market participants, it will find itself
out of value, which means responsive market participants will look to enter the market to push price back toward
an area of perceived value. This will help price find a value area for two-sided trade to take place. When the
market finds itself too far out of value, responsive market participants will sometimes enter the market with
force, which aggressively pushes price in the opposite direction, essentially forming reversal wick candlesticks .
This pattern is perhaps the most telling and common reversal setup, but requires steadfast confirmation in order
to capitalize on its power. Understanding the psychology behind these formations and learning to identify them
quickly will allow you to enter positions well ahead of the crowd, especially if you've spotted these patterns at
potentially overvalued or undervalued areas.
BTC World Price: Multi-Exchange VWAPBTC World Price: Multi-Exchange VWAP
__________________________
WHAT IT DOES
What you see above are not Bitmex candles, but this indicator's.
Bitcoin is listed on multiple exchanges. Many people have called for a single global index that would quote BTC price and volume across all exchanges: this script is such a virtual aggregate (formerly: Multi-Listed , Volume-Weighted Average Price ).
It will, independently for each tick, for any time-frame:
- Quote the price (O, H, L, C) and volume from Bitfinex (USD), Binance (USDT), bitFlyer (Yen), Bithumb (S. Korean Won), Coinbase (USD), Kraken (EUR) and even Bitmex (USD Contracts).
- Weight each price with the corresponding volume of the exchange.
- Quote the FOREX conversion rate in USD for each currency (USDJPY etc.)
- Finally return global average price (candles) in USD.
- Additionally provide (H+L)/2 etc. values.
No more "on Coinbase this" or "on Bitstamp that", you've now got a global overview!
See CoinMarketCap: Markets for reference. I've included alternative exchanges in the comments at the top of the script.
__________________________
HOW TO USE IT
Basically just add it to your chart and use the indicator's candles instead of the chart's main ticker.
By default, BTC World Price will display candles only, but you can also display OHLC & averages (in whichever style you want).
You may indeed want to hide the main symbol (top-left corner, click the 'eye' button next to its name), or switch it to something else than candles/bars (e.g. line).
Make sure "Scale Price Chart Only" is disabled if you want to use the auto-zoom feature. (if other indicators are messing your zoom, you can try to select "Line with Breaks" or "Area with Breaks" to allow these to overflow from the main window)
By clicking the triangle next to the indicator's name, you can select "Visual Order" (e.g "Bring to Front").
You can select regular Candles or Heikin-Ashi in Options.
In the Format > Inputs tab, you can select which exchanges to quote. By default, all of them are enabled.
The script also exposes the following typical values to the backend, which you can use as Price Source for other indicators: (e.g. MA, RSI, in their "Format > Input" tab)
Open Price (grey)
High Price (green)
Low Price (red)
Close Price (white)
(H + L)/2 (light blue)
(H + L + C)/3 (blue)
(O + H + L + C)/4 (purple)
They are all hidden by default (by means of maximum transparency).
In the Format > Style tab, you can change their color, transparency and style (line, area, etc), as well as uncheck Candles and Wicks to hide these.
If you are using "Indicator Last Value" and want to clear the clutter from all these values, simply uncheck them in Style. They will still be available as Price Source for other indicators.
You can also choose to scale it to the left, right (default) or "screen" (no scaling).
Once you're satisfied with your Style, you may click "Default"> "Save as default" in the botton-left. Everytime you load the indicator, it will look the same. ("Reset Settings" will reset to the script's defaults)
__________________________
Please leave feedback below in comments or pm me directly for bugs and suggestions.
Amazing Crossover SystemEntry Rules
BUY when the 5 EMA crosses above the 10 EMA from underneath and the RSI crosses above the 50.0 mark from the bottom.
SELL when the 5 EMA crosses below the 10 EMA from the top and the RSI crosses below the 50.0 mark from the top.
Make sure that the RSI did cross 50.0 from the top or bottom and not just ranging tightly around the level.
How to setup Alert:
1) Add the Amazing Crossover System to your chart via Indicators
2) Find your currency pair
3) Set the timeframe on the chart to 1 hour
4) Press 'Alt + A' (create alert shortcut)
5) Set the following criteria for the alert:
Condition = 'Amazing Crossover System', Plot, ' BUY Signal'
The rest of the alert can be customized to your preferences
5) Repeat steps 1 - 4, but set the Condition = 'Amazing Crossover System', Plot, ' SELL Signal'
Volume Divergence Polarity Grid [DW]This study is an experiment built off the framework of my Dual Volume Divergence Index indicator.
It is designed to gauge polarity over multiple lookback periods of your choice by expressing the data as a two color grid.
Positive Volume Divergence and Negative Volume Divergence are calculated, and their relative values are used to gauge polarity.
The order of the grid is top to bottom - the top is the first lookback period, and the bottom is the last.
4 Time Frame Two EMAs Ribbon Comparison - Tom1traderI had seen something like this on metatrader but not here. Since I use TradingView and not metatrader had some fun with this. Indicates up or down for 4 chosen time Frames and as such helps to see the historical trend. Works best on daily or shorter charts because of load time.
User can choose the length of the two exponential moving averages used on each time frame or use defaults 9 and 15.
User can choose the 4 time frames defaults are (display from top to bottom) 5, 15, 60 and D.
Displays a column of 4 dots or circles for each bar of current chart the top being the shortest time frame.
If the faster exponential moving average is above the slower (uptrend) the dot is green else red.
This is similar (actually what I was originally shooting for but took extra time to figure out time frames on here) to another script of mine that has the same display method but uses a spaced set of Hull Moving Averages on one time frame, you choose the shortest length and the space increment between the averages. One may work better than the other for different markets or trading styles. The other one is here: Have fun trading and keep smiling!
HMA Comparison Plotwww.tradingview.com
I use this on any time frame and it should work fine on the price action of any instrument. Since there is more information in longer time frames I give them more weight.
The four rows of circles / dots (1 column of 4 for each bar) show the relationship between 5 Hull moving averages. The top dot compares the variable "len" wihout quotes ("Length" input, the fastest moving average) with len1 (the next moving average - the next four beginning with this are longer than the previous by the "Sequential Spacing . ." input) if the fastest is above the next the top dot is green else it is red. The next 3 dots compare the rest of the 5.
It works well to confirm other indicators and using Hull moving averages minimizes lag.
Like all indicators it tells very well the past so while using them to firm expectations I place my trades knowing the odds are very near 50/50 on the direction of the next bar.
Have fun and good luck with this and Keep smiling! Tom1trader
Carbon WAM Market Cycle IndicatorThe green bands and the blue bands indicate market sentiment.
A new swing upwards in prices begins when the green band bottoms and begins to move up.
A weakening of the market begins when the green band tops and begins top move down.
The blue band mirrors the green band and provides balance to the chart so that relative volatility can be observed by judging the sizes of the areas enclosed by the green and blue bands.