# Alerts
## Backtester Alerts
| Buy Alerts | Sell Alerts |
| :------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------: |
| ![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/alerts/long.png) | ![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/alerts/short.png) |
Users can get alerted for any action executed by a strategy, from opening positions to closing them. The way alerts work is the same across all the Backtester scripts.
The message field in the **Alert Messages** setting section of each Backtester allows for the strategy to send a custom alert message depending on the action taken by the strategy, if no messages are set the strategy will send default messages.
In order for alerts to return custom user set messages the `{{strategy.order.alert_message}}` should be set on the message field of the Tradingview alert menu.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/alerts/alert.png)
Backtester (PAC) does not have Exit Long/Short TP/SL alerts, instead only having Exit Long/Short
## Alerts Placeholders
Users can use placeholders in the messages set from the **Alert Messages** setting section to return market data, take profit/stop losses values, chart ticker and timeframe...etc.
| Placeholder | Description |
| :----------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: |
|
`{open}`
|
Current opening price
|
|
`{high}`
|
Current high price
|
|
`{low}`
|
Current low price
|
|
`{close}`
|
Current closing price
|
|
`{volume}`
|
Current volume
|
|
`{time}`
|
Current unix time (in milliseconds)
|
|
`{ticker}`
|
Chart ticker (e.g: for BINANCE:BTCUSDT the ticker name is BTCUSDT)
|
|
`{prefix}`
|
Ticker prefix (e.g: for BINANCE:BTCUSDT the ticker prefix is BINANCE)
|
|
`{timeframe}`
|
Chart timeframe
|
|
`{tp}`
|
Take profit value
|
|
`{sl}`
|
Stop loss value
|
New long entry generated at `{time}` and price `{close}` on `{ticker}{timeframe}` with take profit `{tp}` and stop loss `{sl}`
# Forecasting
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/forecasting/settings.png)
Being able to anticipate where price might evolve after a trade can be useful to plan potential exit points, set take profits/stop loss as well as knowing when user set ones might get hit...etc.
All backtesting toolkits include a forecasting tool able to provide forecasts from the most recent trade executed by the backtester.
## Using Forecasts
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/forecasting/forecasting.png)
Forecasts can be enabled from the "FORECAST" settings group by enabling the "Show Forecast" toggle.
Each forecast is influenced by the price evolution made during previous respective long and short trades, as such forecasts for long positions are different from the ones of short positions.
Users can select the maximum length of forecast using the "Forecasting Length" setting.
Because of the forecasting algorithm used, forecasts can have a lower length than the one selected by the user depending on the average bars in trade.
Very frequent trades will generally return short price forecasts due to the lack of available data.
### Forecasting Area
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/forecasting/area.png)
By default, forecasts are displayed alongside an area, indicating where future prices might evolve. The area extremities can help users potentially determines exit points with there interaction with the price, but can also help reference the performance of a current trade relative to past trades.
Areas extremities are representative of past trades performances. For example:
* For long positions: A lower extremity not significantly going below the entry price can indicate good past performance for long positions.
* For short positions: An upper extremity not significantly going above the entry price can indicate good past performance for short positions.
If an area is no longer visible in a point in time of the forecast it means that there is not enough data for that point in time.
### Forecasting Memory
Users can control the influence older trades have on the forecast using the "Maximum Forecast Memory" setting, with lower values using a shorter term memory, discarding older information more quickly.
Low values of this setting allow obtaining more diverse forecasts for new trades, while higher values will return forecasts less subject to change over time.
### Take Profits Levels From Forecast
When forecasts are displayed, users can set take profits using the **nth** percentile of a returned forecast. This can be done from the "TPS & SLS" settings, by selecting "Forecast" in the "Long TP" and/or "Short TP".
The numerical setting selected at the right of the drop-down menus determines the percentile used, and should be set within the range \[0, 100] in order to work. Percentiles values can affect the returned levels as follows:
* In case of a long trade, a lower set percentile will return take profits closer to the entry price, potentially triggering sooner.
* In case of a short trade, a lower set percentile will return take profits further away from the entry price, potentially triggering later.
Do note that because forecasts are based on the strategy entries, take profits levels based on it can be subject to repainting, except when using a backtesting window based on a date.
# Entry Rules
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/entry/settings.png)
Backtester (OSC) allows user to set their own long/short entry rules from features of the Oscillator Matrix® as well as external indicators.
Entry rules can be created separately for both long and short entries, and can be set using up to 8 different user set conditions. Each can enabled by toggling them on using the toggle input on the left of each condition, if the enabled conditions are valid, the strategy will open a corresponding market order.
## Oscillator Matrix® Conditions
Conditions for 6 features of the Oscillator Matrix® are included. These include:
* Money Flow conditions
* OverFlow conditions
* HyperWave conditions
* Reversals conditions
* Divergences conditions
* Confluence conditions
The first dropdown determines the specific condition used for that feature, these can include generic conditional operators such as `Greater Than` or `Crossing`, or conditions proper to certain features such as `Any Bullish` in the Hyperwave conditions.
The second input setting allows the user to enter a numerical values, which is used when `Greater Than`, `Lower Than`, `Equal`, `Crossing Over`, `Crossing Under`, or `Crossing` are used.
For example if the user wants to go **Long** when the HyperWave oscillator cross over 80 the following settings would be used:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/entry/example-osc.png)
## External Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/entry/externals.png)
Users can use the output of external indicators on the chart as input to set entry conditions.
The second dropdown of external condition settings determines which conditional operator to use on both external outputs. These include:
* Greater Than
* Lower Than
* Equal
* Crossing Over
* Crossing Under
* Crossing
The third external condition works similarly but instead of comparing two external outputs the condition will compare an external output specified in the condition first dropdown with a user set value in the third dropdown using a conditional operator set on the second dropdown. This last condition is particularly useful for oscillators.
Here is an example of the third external condition being set for an RSI crossing over 50.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/entry/example-external.png)
## Using Conditions Together
More complex entry rules can be created by using multiple conditions together, this is done thanks to the **Step** dropdown setting on the right of each condition (below each condition for conditions 4 and 5).
The *Step* setting is directly related to the Step & Match algorithm and work in two ways:
* When two or more conditions have the same step number, both conditions are evaluated. Used to test matching conditions.
* When two or more conditions have different step numbers, each conditions will be evaluated in order, testing for the first step and switching to the next step once the previous one is true. When the final step is true the strategy will open a market order. Used to create sequence of conditions.
This operation is complementary, as you can create a sequence of conditions with one step consisting of two or more matching conditions as long as they have the same step number.
A user wanting to go long when a bullish divergence occurs after any bullish reversal while money flow was bullish (over 50) could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/example-stepmatch.png)
### Invalidate Step
The "Invalidate" step allows to set a condition as an "invalidation condition". When this condition is triggered while a sequence of conditions is incomplete, the sequence will restart at step 1.
If multiple steps are set as "Invalidate" any of the conditions being true will reset the sequence of conditions, as such not all of them are required to be true for the sequence of conditions to reset.
Let's take an example where we use 2 regular steps and one "Invalidate" step. The position will be opened when step 2 trigger after step 1 has been triggered.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
### Invalidation Behaviors
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below:
#### Invalidate On Step 1
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
#### Invalidate On Any Repeated Step
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
## No Existing Positions Requirement
Users can enable the **Don't Allow Trades Until Closed** setting in order to only open trade when no existing positions are open. This setting allows waiting for a position to be closed before one can be opened.
Enabling **Don't Allow Trades Until Closed** for long positions will prevent opening shorts as long as a long position is opened.
If this same setting is not enabled for short conditions then shorts can effectively be closed by new long positions.
# Exit Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/exits/settings.png)
Users can close any position on a profit or loss using specific crossing conditions obtained from external sources. Exits conditions can be enabled in the **EXIT CONDITIONS** settings section.
Oscillators are intended to be used as external source when it comes to TP/SL conditions, but users can directly create scripts returning scaled outputs from overlay indicators.
### Exit Take Profit
Long/Short take profits exits conditions will exit a long or short position when a set condition is met such that the position exit on a profit.
Take profits conditions are triggered if they are toggled on for a specific order (Long/Short) and if the selected external source is either **Crossing**, **Crossing Up**, or **Crossing Down**, **Greater Than**, **Lower Than**, or **Equal** to the numerical value specified by the user.
### Exit Stop Losses
Long/Short stop losses exits conditions will exit a long or short order when a set condition is met such that the position exit on a loss.
Stop losses conditions are triggered if they are toggled on for a specific order (Long/Short) and if the selected external source is either **Crossing**, **Crossing Up**, or **Crossing Down**, **Greater Than**, **Lower Than**, or **Equal** to the numerical value specified by the user.
### Time Exits
Time exits allow users to exit trade from a specific time of the day. Note that trades are still exited at the opening of the next bar.
The timezone is the same as the one of the chart symbol.
### Placeholders
![Exit Long Take Profit when closing price cross the upper Bollinger band extremity](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/osc/exits/placeholder.png)
Users who do not wish to use a numerical value to evaluate a condition with an external source may use a placeholder instead, which allows using prices. The following placeholders are supported:
* `open` : Opening price
* `high` : High price
* `low` : Low price
* `close` : Closing price
* `hl2` : Median price
* `ohlc4` : Average price
* `hlc3` : Typical price
* `hlcc4` : Weighted price
## Partial Exits
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/partial.png)
Users can exit a percentage of an existing position by specifying a percentage lower than 100%. This can lead to sequential exit, with reduced exposure each time an exit is triggered.
# Introduction
Backtester (OSC) is a script that allows users to perform backtests using features from our [Oscillator Matrix®](/docs/toolkits/oscillator-matrix/introduction) toolkit. Users can create their own entry & exit conditions as well as control take-profit and stop-loss placement. Each core component of the backtester are described in the following pages:
# Backtest Parameters
The Backtester (OSC) use the following default properties:
| Property | Default | Description |
| ------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Backtesting Window | Bars | Determines how the backtesting interval is set. If `Bars` is selected the most recent specified amount (in `Window (Bars)`) will be used to backtest the strategy. If `Date` is selected the interval will be set using the specified starting and ending dates, while using "Entire History" will use all the available historical data |
| Window (Bars) | 2000 | Amount of the most recent bars used to backtest the strategy if `Bars` is selected in `Backtesting Window` |
| Window Start | 2024-01-01 00:00 | Starting date of the backtesting strategy if `Date` is selected in `Backtesting Window` |
| Window End | 2024-01-01 00:00 | Ending date of the backtesting strategy if `Date` is selected in `Backtesting Window` and if the `Window End` toggle is enabled |
| Initial Capital | 10 000 | Initital amount of funds available at the start of the backtest |
| Base Currency | Default | Currency used for performing the backtest, backtest statistics will be expressed using this curreny. If `Default` is selected the symbol currency is used |
| Order Size | 1 Contract | Determines the amount of contracts/currency to buy or sell, can be expressed in contracts, currency, or percent of equity |
| Commission | 0% | Fees paid per clotured trades, can be expressed as currency per contracts, currency per order, or % of the total transation value |
| Margin for long position | 0% | Equity percentage required to fund a position |
| Margin for short position | 0% | Equity percentage required to fund a position |
These should be adjusted to return more precise and accurate results of the real performance of a trading strategy.
# Disclaimer
Backtests are not indicative of future results. Backtesting strategies on synthetic data does not return representative results of a strategy. Backtests should be performed on charts returning real closing prices. See [here](https://www.tradingview.com/script/q9laJNG9-Backtesting-on-Non-Standard-Charts-Caution-PineCoders-FAQ/) for more information.
*CFTC Rule 4.41 - Hypothetical or Simulated performance results have certain limitations, unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.*
# Take Profit & Stop Loss
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/tpsl.png)
Users can set take profits and stop losses orders allowing a certain degree of money management in the backtest. Take profits and stop loss orders can be enabled and adjusted from the **FIXED TPS & SLS** settings section.
Take profits and stop losses orders are placed relative to the price preceding a trade, and might not be filled at the exact price set by the user.
## TP/SL Options
Take profits and stop losses for specific orders can be enabled from the toggles present in their settings section. Take profits and stop losses can be set using various methods described below:
| Option | Description |
| :-----------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Price |
Set the take profit/stop loss orders at the specified price.
|
| Currency |
Set the take profit/stop loss orders a specified amount of currency away from the closing price preceding the entry of a long/short order.
|
| Ticks |
Set the take profit/stop loss orders a specified amount of ticks away from the closing price preceding the entry of a long/short order.
|
| % |
Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.
|
| ATR |
Set the take profit/stop loss orders *N* average true ranges away from the closing price preceding the entry of a long/short order, where *N* is a specified multiplier.
|
| Forecast |
(Only available for take profits orders) Use a percentile of a returned forecast to set take profits. Forecasts must be enabled in order for this to work.
|
| Trailing Stop |
(Only available for stop loss orders) Enable a percentage based trailing stop. A position will be exited if price reach the trailing stop.
|
The average true range used to set take profits/stop losses orders make use of a period of 200 bars.
### Trailing Stop
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/trailing.png)
Users can use a percentage based trailing stop to exit positions. The trailing stop will move in the direction of interest if its distance with the low price(in case of long positions) or high price (in case of short positions) is greater than the specified percentage.
### Take Profits Levels From Forecast
When forecasts are displayed, users can set take profits using the **nth** percentile of a returned forecast. This can be done from the "TPS & SLS" settings, by selecting "Forecast" in the "Long TP" and/or "Short TP".
The numerical setting selected at the right of the drop-down menus determines the percentile used, and should be set within the range \[0, 100] in order to work. Percentiles values can affect the returned levels as follows:
* In case of a long trade, a lower set percentile will return take profits closer to the entry price, potentially triggering sooner.
* In case of a short trade, a lower set percentile will return take profits further away from the entry price, potentially triggering later.
Do note that because forecasts are based on the strategy entries, take profits levels based on it can be subject to repainting, except when using a backtesting window based on a date.
# Entry Rules
Backtester (PAC) allows users to set their own long/short entry rules from price action related concepts as well as external indicators. Entry rules can be built as sequences of conditions, matching conditions, or a mix of both. More details are provided in the section below.
Entry rules can be created separately for both long and short entries, and can be set using up to 6 different user set conditions. Each can enabled by toggling them on using the toggle input on the left of each condition, if the enabled conditions are valid, the strategy will open a corresponding market order.
Three types of distinct conditions are available, each described in the sections below.
## Price Action Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/pac-settings.png)
Conditions 1, 2, and 3 work the same way, and allow using conditions from market structures, volumetric order blocks, imbalances, and liquidity grabs.
The first dropdown includes options: *Bullish* and *Bearish*, and determines the origin of the selected condition in the second dropdown.
The second dropdown includes the list of price action related conditions, these include:
| Condition | Description |
| :-----------------: | :------------------------------------------------------: |
| CHoCH or BOS | Triggered on a change of character or break of structure |
| CHoCH | Triggered on a change of character |
| BOS | Triggered on a break of structure |
| Mitigated OB | Triggered once price mitigates an order block |
| Within OB | Triggered if price is within the area of an order block |
| Entered OB | Triggered once price enters the area of an order block |
| Exit OB | Triggered once price exits the area of an order block |
| Entered Imbalance | Triggered once price enters the area of an imbalance |
| Within Imbalance | Triggered if price is within the area of an imbalance |
| Mitigated Imbalance | Triggered once price mitigates an imbalance |
| Exit Imbalance | Triggered once price exits an imbalance |
| Liquidity Grab | Triggered once a liquidity grab is detected |
For example if the user wants to go **Long** when a new **Bullish** **CHoCH** the following settings would be used:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/example-pac.png)
User can change the settings of each price action concept by scrolling down the settings, each concept has its own setting group. To learn more about each concept see:
[Market Structures](/docs/toolkits/price-action-concepts/market-structures)
[Order Blocks](/docs/toolkits/price-action-concepts/order-blocks)
[Imbalances](/docs/toolkits/price-action-concepts/imbalances)
[Liquidity Grabs](/docs/toolkits/price-action-concepts/liquidity)
## External Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/external-settings.png)
Users can use the output of external indicators on the chart as input to set entry conditions.
The second dropdown of external condition settings determines which conditional operator to use on both external outputs. These include:
* Greater Than
* Lower Than
* Equal
* Crossing Over
* Crossing Under
* Crossing
The third external condition works similarly but instead of comparing two external outputs the condition will compare an external output specified in the condition first dropdown with a user set value in the third dropdown using a conditional operator set on the second dropdown. This last condition is particularly useful for oscillators.
Here is an example of the third external condition being set for price crossing over a simple moving average.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/example-external.png)
## Session Condition
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/session.png)
Condition 6 is a session condition, with an active status if current time is within the specified session interval.
Session timezone is the same as the one of the chart symbol exchange (UTC for cryptocurrencies)
## Using Conditions Together
More complex entry rules can be created by using multiple conditions together, this is done thanks to the **Step** dropdown setting on the right of each condition (below each condition for conditions 4 and 5).
The *Step* setting is directly related to the Step & Match algorithm and work in two ways:
* When two or more conditions have the same step number, both conditions are evaluated. Used to test matching conditions.
* When two or more conditions have different step numbers, each conditions will be evaluated in order, testing for the first step and switching to the next step once the previous one is true. When the final step is true the strategy will open a market order. Used to create sequence of conditions.
This operation is complementary, as you can create a sequence of conditions with one step consisting of two or more matching conditions as long as they have the same step number.
A user wanting to go long when a bullish break of structure occurs after price mitigated a bearish order block while price was above its 20 period moving average could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/entry/example-stepmatch.png)
### Invalidate Step
The "Invalidate" step allows to set a condition as an "invalidation condition". When this condition is triggered while a sequence of conditions is incomplete, the sequence will restart at step 1.
If multiple steps are set as "Invalidate" any of the conditions being true will reset the sequence of conditions, as such not all of them are required to be true for the sequence of conditions to reset.
Let's take an example where we use 2 regular steps and one "Invalidate" step. The position will be opened when step 2 trigger after step 1 has been triggered.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
### Invalidation Behaviors
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below:
#### Invalidate On Step 1
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
#### Invalidate On Any Repeated Step
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
## No Existing Positions Requirement
Users can enable the **Don't Allow Trades Until Closed** setting in order to only open trade when no existing positions are open. This setting allows waiting for a position to be closed before one can be opened.
Enabling **Don't Allow Trades Until Closed** for long positions will prevent opening shorts as long as a long position is opened.
If this same setting is not enabled for short conditions then shorts can effectively be closed by new long positions.
# Exit Rules
The strategy can include custom long/short orders exits rules. These can be created in a similar way than entry rules by using two available conditions, and can evaluate price action features as well as the output of external indicators on your chart.
## Price Action Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/pac/exits/settings.png)
Conditions *Exit Long 1* and *Exit Short 1* allow using conditions from market structures, volumetric order blocks, and imbalances.
The first dropdown includes options: *Bullish* and *Bearish* and determines the origin of the selected condition in the second dropdown.
The second dropdown includes the list of price action related conditions, these include:
| Condition | Description |
| :-----------------: | :------------------------------------------------------: |
| CHoCH or BOS | Triggered on a change of character or break of structure |
| CHoCH | Triggered on a change of character |
| BOS | Triggered on a break of structure |
| Mitigated OB | Triggered once price mitigates an order block |
| Within OB | Triggered if price is within the area of an order block |
| Entered OB | Triggered once price enters the area of an order block |
| Entered Imbalance | Triggered once price enters the area of an imbalance |
| Within Imbalance | Triggered if price is within the area of an imbalance |
| Mitigated Imbalance | Triggered once price mitigates an imbalance |
## External Conditions
Conditions *Exit Long 2* and *Exit Short 2* allow the user to use the output of external indicators on the chart as input for setting exit conditions.
These allow setting a condition based on two different external indicators output, with The first and third dropdowns determining which external output to use.
The second dropdown determines which conditional operator to use on both external outputs. These include:
* Greater Than
* Lower Than
* Equal
* Crossing Over
* Crossing Under
* Crossing
## Using Conditions Together
More complex exit rules can be created by using multiple conditions together, this is done thanks to the **Step** dropdown setting on the right of each condition (below each condition for *Exit Long 2* and *Exit Short 2*).
The *Step* setting is directly related to the Step & Match algorithm and works in two ways:
* When two or more conditions have the same step number, both conditions are evaluated. Used to test matching conditions.
* When two or more conditions have different step numbers, each condition will be evaluated in order, testing for the first step and switching to the next step once the previous one is true. When the final step is true the strategy will open a market order. Used to create sequence of conditions.
This operation is complementary, as you can create a sequence of conditions with one step consisting of two or more matching conditions as long as they have the same step number.
## Time Exits
Time exits allow users to exit trade from a specific time of the day. Note that trades are still exited at the opening of the next bar.
The timezone is the same as the one of the chart symbol.
## Partial Exits
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/partial.png)
Users can exit a percentage of an existing position by specifying a percentage lower than 100%. This can lead to sequential exit, with reduced exposure each time an exit is triggered.
## Only Exit On A Profit
Enabling "Only Exit On A Profit" allows only triggering an exit if this exit leads to a profit, effectively preventing any exit that would lead to a loss.
This can be useful to increase winrates of strategies.
Enabling this setting alongside "Dont allow trades until closed" can prevent any losing trade from being exited, leading to a theoretical 100% winrate without a stop-loss.
Do note however that a unprofitable trade can be held for an unlimited amount of time, leading to unrealistic scenarios.
# Introduction
Backtester (PAC) is a script that allows users to perform advanced backtests on all features from our [Price Action Concepts®](../../docs/toolkits/price-action-concepts/introduction) toolkit. Users can create their own entry & exit conditions as well as control take-profit & stop-loss placement. Each core components of the system is described on the following pages:
# Backtest Parameters
The Backtester (PAC) uses the following default properties:
| Property | Default | Description |
| ------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Backtesting Window | Bars | Determines how the backtesting interval is set. If `Bars` is selected the most recent specified amount (in `Window (Bars)`) will be used to backtest the strategy. If `Date` is selected the interval will be set using the specified starting and ending dates, while using "Entire History" will use all the available historical data |
| Window (Bars) | 2000 | Amount of the most recent bars used to backtest the strategy if `Bars` is selected in `Backtesting Window` |
| Window Start | 2024-01-01 00:00 | Starting date of the backtesting strategy if `Date` is selected in `Backtesting Window` |
| Window End | 2024-01-01 00:00 | Ending date of the backtesting strategy if `Date` is selected in `Backtesting Window` and if the `Window End` toggle is enabled |
| Initial Capital | 10 000 | Initital amount of funds available at the start of the backtest |
| Base Currency | Default | Currency used for performing the backtest, backtest statistics will be expressed using this curreny. If `Default` is selected the symbol currency is used |
| Order Size | 1 Contract | Determines the amount of contracts/currency to buy or sell, can be expressed in contracts, currency, or percent of equity |
| Commission | 0% | Fees paid per clotured trades, can be expressed as currency per contracts, currency per order, or % of the total transaction value |
| Margin for long position | 0% | Equity percentage required to fund a position |
| Margin for short position | 0% | Equity percentage required to fund a position |
These should be adjusted to return more precise and accurate results of the real performance of a trading strategy.
# Disclaimer
Backtests are not indicative of future results. Backtesting strategies on synthetic data does not return representative results of a strategy. Backtests should be performed on charts returning real closing prices. See [here](https://www.tradingview.com/script/q9laJNG9-Backtesting-on-Non-Standard-Charts-Caution-PineCoders-FAQ/) for more information.
*CFTC Rule 4.41 - Hypothetical or Simulated performance results have certain limitations, unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.*
# Take Profit & Stop Loss
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/tpsl.png)
Users can set take profits and stop losses orders allowing a certain degree of money management in the backtest. Take profits and stop loss orders can be enabled and adjusted from the **FIXED TPS & SLS** settings section.
Take profits and stop losses orders are placed relative to the price preceding a trade, and might not be filled at the exact price set by the user.
## TP/SL Options
Take profits and stop losses for specific orders can be enabled from the toggles present in their settings section. Take profits and stop losses can be set using various methods described below:
| Option | Description |
| :-----------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Price |
Set the take profit/stop loss orders at the specified price.
|
| Currency |
Set the take profit/stop loss orders a specified amount of currency away from the closing price preceding the entry of a long/short order.
|
| Ticks |
Set the take profit/stop loss orders a specified amount of ticks away from the closing price preceding the entry of a long/short order.
|
| % |
Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.
|
| ATR |
Set the take profit/stop loss orders *N* average true ranges away from the closing price preceding the entry of a long/short order, where *N* is a specified multiplier.
|
| Forecast |
(Only available for take profits orders) Use a percentile of a returned forecast to set take profits. Forecasts must be enabled in order for this to work.
|
| Trailing Stop |
(Only available for stop loss orders) Enable a percentage based trailing stop. A position will be exited if price reach the trailing stop.
|
The average true range used to set take profits/stop losses orders make use of a period of 200 bars.
### Trailing Stop
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/trailing.png)
Users can use a percentage based trailing stop to exit positions. The trailing stop will move in the direction of interest if its distance with the low price(in case of long positions) or high price (in case of short positions) is greater than the specified percentage.
### Take Profits Levels From Forecast
When forecasts are displayed, users can set take profits using the **nth** percentile of a returned forecast. This can be done from the "TPS & SLS" settings, by selecting "Forecast" in the "Long TP" and/or "Short TP".
The numerical setting selected at the right of the drop-down menus determines the percentile used, and should be set within the range \[0, 100] in order to work. Percentiles values can affect the returned levels as follows:
* In case of a long trade, a lower set percentile will return take profits closer to the entry price, potentially triggering sooner.
* In case of a short trade, a lower set percentile will return take profits further away from the entry price, potentially triggering later.
Do note that because forecasts are based on the strategy entries, take profits levels based on it can be subject to repainting, except when using a backtesting window based on a date.
# Entry Rules
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/entry/settings.png)
Backtester (S\&O) makes use of various features within the Signals & Overlays® toolkit such as [Confirmation and Contrarian Signals](/docs/toolkits/signals-overlays/signals) or [Overlays indicators](/docs/toolkits/signals-overlays/indicator-overlay) to specify entry rules for the strategy.
More information regarding signal settings can be found [here](/docs/toolkits/signals-overlays/signal-settings)
By default, backtesting is performed using the most recent 2000 bars, this value can be changed from the **Backtest Window (Bars)** setting, the user can also perform a backtest between two specified dates using the "Date" options in "Backtesting Window", or using all the available chart history by using "Entire History" (note that this will not allow the optimizer to run).
## Long/Short Entry Conditions
Users can specify their strategy respective long/short entry rules from the **LONG CONDITIONS** and **SHORT CONDITIONS** settings sections, using the following available options:
| Condition | Options | Options (2) | Description |
| :------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Signal Type |
Confirmation
Contrarian
|
Any Bullish
Any Bearish
Normal Bullish
Normal Bearish
Strong Bullish
Strong Bearish
Bullish Classifier
Bearish Classifier
|
Enter a position on the occurrence of the user specified signal. Users can select between the Confirmation and Contrarian signals algorithm (Long/Short conditions can use different algorithms), these are affected by the selected Sensitivity and Autopilot frequency settings.
Selecting "Bullish Classifier" or "Bearish Classifier" will open positions on the occurence of a signal with the same classification as the one specified by the user on the rightmost input.
|
| Reversal Zones |
Above R3
Within \[R3-R2]
Within \[R2-R1]
Within \[R1-S1]
Within \[S1-S2]
Within \[S2-S3]
Under S3
| |
Enter a position if price is above/under or within the specified extremities.
|
| Smart Trail |
Bullish
Bearish
Switch Bullish
Switch Bearish
| |
Enter a position if the Smart Trail switch bullish/bearish or if it is currently bullish or bearish.
|
| Trend Tracer |
Bullish
Bearish
Switch Bullish
Switch Bearish
| |
Enter a position if the Trend Tracer switch bullish/bearish or if it is currently bullish or bearish.
|
| Trend Catcher |
Bullish
Bearish
Switch Bullish
Switch Bearish
| |
Enter a position if the Trend Catcher switch bullish/bearish or if it is currently bullish or bearish.
|
| Neo Cloud |
Bullish
Bearish
Switch Bullish
Switch Bearish
Lead Step Up
Lead Step Down
Lag Step Up
Lag Step Down
| |
Enter a position if the Neo Cloud switch bullish/bearish or if it is currently bullish or bearish.
|
| Trend Strength |
Greater Than
Lower Than
| |
Enter a position if the Trend Strength is greater or lower than the specified value.
|
| Session | Session interval | |
Enter a position if it is within the user specified session interval.
|
| External Condition 1 |
Greater Than
Lower Than
Equal
Crossing Over
Crossing Under
Crossing
| |
Enter a position if the tested condition between the first specified external source and second one is true.
|
| External Condition 2 |
Greater Than
Lower Than
Equal
Crossing Over
Crossing Under
Crossing
| |
Enter a position if the tested condition between the first specified external source and second one is true.
|
| External Condition 3 |
Greater Than
Lower Than
Equal
Crossing Over
Crossing Under
Crossing
| |
Enter a position if the tested condition between the first specified external source and second one is true. Users can use price placeholers such as open, high, low, close, hl2, ohlc4, hlc3, and hlcc4 instead of a numerical value in the second source input.
|
Multiple conditions can be enabled at the same time, in which case the backtester will require all conditions to be true in order to execute an order.
If the **Exit On Signal** setting is enabled, existing positions will be exited on the occurrence of a confirmation/contrarian signal if enabled.
## No Existing Positions Requirement
Users can enable the **Don't Allow Trades Until Closed** setting in order to only open trade when no existing positions are open. This setting allows waiting for a position to be closed before one can be opened.
Enabling **Don't Allow Trades Until Closed** for long positions will prevent opening shorts as long as a long position is opened.
If this same setting is not enabled for short conditions then shorts can effectively be closed by new long positions.
# Exit Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/exits/settings.png)
Users can close any position on a profit or loss using specific crossing conditions obtained from a user selected external source and/or by using our builtins exits. Exits conditions can be enabled in the **EXIT CONDITIONS** settings section.
## External Exits
### Exit Take Profit
Long/Short take profits exits conditions will exit a long or short position when a set condition is met such that the position exit on a profit.
Take profits conditions are triggered if they are toggled on for a specific order (Long/Short) and if the selected external source is either **Crossing**, **Crossing Up**, or **Crossing Down**, **Greater Than**, **Lower Than**, or **Equal** to the numerical value specified by the user.
### Exit Stop Losses
Long/Short stop losses exits conditions will exit a long or short order when a set condition is met such that the position exit on a loss.
Stop losses conditions are triggered if they are toggled on for a specific order (Long/Short) and if the selected external source is either **Crossing**, **Crossing Up**, or **Crossing Down**, **Greater Than**, **Lower Than**, or **Equal** to the numerical value specified by the user.
### Placeholders
![Exit Long Take Profit when closing price cross the upper Bollinger band extremity](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/exits/placeholder.png)
Users who do not wish to use a numerical value to evaluate a condition with an external source may use a placeholder instead, which allows using price data. The following placeholders are supported:
* `open` : Opening price
* `high` : High price
* `low` : Low price
* `close` : Closing price
* `hl2` : Median price
* `ohlc4` : Average price
* `hlc3` : Typical price
* `hlcc4` : Weighted price
## Builtins Exits
Builtin exits are included for the selected signal algorithm, these are the same as the ones present in the Signals & Overlays® toolkit and can be used in the Backtester to exit positions.
Builtin exits will always exit a position on a profit.
## Time Exits
Time exits allow users to exit trade from a specific time of the day. Note that trades are still exited at the opening of the next bar.
The timezone is the same as the one of the chart symbol.
## Exit On Opposite Signal
Enabling the **Exit On Opposite Signal** setting will close any position once an opposite signal is generated (if enabled).
## Partial Exits
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/partial.png)
Users can exit a percentage of an existing position by specifying a percentage lower than 100%.
This can lead to sequential exits, with reduced exposure each time an exit is triggered.
# Introduction
Backtester (S\&O) is a script that allows users to perform backtests using features from our [Signals & Overlays®](/docs/toolkits/signals-overlays/introduction) toolkit. Many options are included to provide more complete & diverse backtests to the user, and each core component of the system are described in the following pages:
# Backtest Parameters
The Backtester (S\&O) use the following default properties:
| Property | Default | Description |
| ------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Backtesting Window | Bars | Determines how the backtesting interval is set. If `Bars` is selected the most recent specified amount (in `Window (Bars)`) will be used to backtest the strategy. If `Date` is selected the interval will be set using the specified starting and ending dates, while using "Entire History" will use all the available historical data |
| Window (Bars) | 2000 | Amount of the most recent bars used to backtest the strategy if `Bars` is selected in `Backtesting Window` |
| Window Start | 2024-01-01 00:00 | Starting date of the backtesting strategy if `Date` is selected in `Backtesting Window` |
| Window End | 2024-01-01 00:00 | Ending date of the backtesting strategy if `Date` is selected in `Backtesting Window` and if the `Window End` toggle is enabled |
| Initial Capital | 10 000 | Initial amount of funds available at the start of the backtest |
| Base Currency | Default | Currency used for performing the backtest, backtest statistics will be expressed using this curreny. If `Default` is selected the symbol currency is used |
| Order Size | 1 Contract | Determines the amount of contracts/currency to buy or sell, can be expressed in contracts, currency, or percent of equity |
| Commission | 0% | Fees paid per closed trades, can be expressed as currency per contracts, currency per order, or % of the total transation value |
| Margin for long position | 0% | Equity percentage required to fund a position |
| Margin for short position | 0% | Equity percentage required to fund a position |
These should be adjusted to return more precise and accurate results of the real performance of a trading strategy.
# Disclaimer
Backtests are not indicative of future results. Backtesting strategies on synthetic data does not return representative results of a strategy. Backtests should be performed on charts returning real closing prices. See [here](https://www.tradingview.com/script/q9laJNG9-Backtesting-on-Non-Standard-Charts-Caution-PineCoders-FAQ/) for more information.
*CFTC Rule 4.41 - Hypothetical or Simulated performance results have certain limitations, unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.*
# Optimization
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/optimization/optimization.png)
When signals are used to perform a backtest, the Backtester is able to return the **Sensitivity** setting that maximized a user specified statistic such as net profit, winrate, profit factor, or maximum drawdown.
Certain settings will disable the optimization procedure, such as disabling the backtesting window or using autopilot.
## Procedure
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/optimization/settings.png)
Users can choose to optimize net profit, winrate, profit factor, potential ratio $(\varphi)$ or maximum drawdown depending on the options selected from the **Optimize** drop-down menu within the **OPTIMIZER** settings section.
The overall profit or loss achieved (higher is better).
The percentage of winning trades (higher is better).
The gross profits over gross losses generated by the strategy (higher is better). A value higher than 1 suggest that the strategy generated more profits than losses.
The greatest decline of the strategy relative to the highest net profits (Lower is better).
A lower value is indicative of a strategy less subject to large downside variability.
The ratio between the sum of maximum potential profits you could have made in your trades over the sum of maximum potential losses you could have made in your trades (higher is better).
Higher values indicates that the entries generated by the strategy have the potential to lead to larger profits compared to losses. Lower values however might be indicative of a more risky strategy, with more frequent exposure to larger potential losses.
If the backtest with the highest potential ratio is not the one with the highest potential profit then it can be indicative of a strategy with more potential with a tendency to exit trades potentially too late.
Optimization can be performed on any given range for the **Sensitivity** setting.
Optimizing the **Sensitivity** setting using a large range of values and/or using a large backtest window can increase computation time, potentially returning time-out errors.
Results from the optimizer can vary from the backtest results returned by the strategy, this is due to the difference between how the Tradingview backtesting engine opens positions compared to the internal engine used to perform optimization within the script. Using different signal algorithms for long/short entry rules can return very different results from the optimizer compared to backtesting results.
Take profits and/or stop losses orders are taken into account by the internal engine if these are enabled, however, there can still exist a great degree of disparity between results from the backtest and results returned by the optimizer.
### Warmup Period
The warmup period allows the script to compute the signal algorithms *n* bars prior to the backtesting window, where *n* is the selected warmup period. This allows to backtest signals that are closer to the ones returned by the Signals & Overlays® toolkit, returning more accurate optimized settings as a result.
## Optimization Dashboard
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/optimization/dashboard.png)
Users can see the backtests results for sensitivity values within the specified optimization range on a dashboard shown on the top-right of their chart. This dashboard presents results in descending order, with results associated to the best optimized statistic appearing on top.
### Simple
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/optimization/simple.png)
Users that do not wish to have a large dashboard on the chart can use the **Simple** optimization dashboard. This dashboard will only return the **Sensitivity** setting that optimize the selected statistic alongside the statistic of interest.
### Display
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/s-o/optimization/display.png)
Users can control the location as well as hide the optimization dashboard on the chart from the **DISPLAY** settings section.
A dashboard location set to **None** will hide it from the chart as well as disable the optimizer.
# Take Profit & Stop Loss
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/tpsl.png)
Users can set take profits and stop losses orders allowing a certain degree of money management in the backtest. Take profits and stop loss orders can be enabled and adjusted from the **FIXED TPS & SLS** settings section.
Take profits and stop losses orders are placed relative to the price preceding a trade, and might not be filled at the exact price set by the user.
## TP/SL Options
Take profits and stop losses for specific orders can be enabled from the toggles in their settings section. Take profits and stop losses can be set using various methods described below:
| Option | Description |
| :-----------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Price |
Set the take profit/stop loss orders at the specified price.
|
| Currency |
Set the take profit/stop loss orders a specified amount of currency away from the closing price preceding the entry of a long/short order.
|
| Ticks |
Set the take profit/stop loss orders a specified amount of ticks away from the closing price preceding the entry of a long/short order.
|
| % |
Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.
|
| ATR |
Set the take profit/stop loss orders *N* average true ranges away from the closing price preceding the entry of a long/short order, where *N* is a specified multiplier.
|
| Forecast |
(Only available for take profits orders) Use a percentile of a returned forecast to set take profits. Forecasts must be enabled in order for this to work.
|
| Trailing Stop |
(Only available for stop loss orders) Enable a percentage-based trailing stop. A position will be exited if the price reaches the trailing stop.
|
The average true range used to set take profits/stop losses orders uses a period of 200 bars.
### Trailing Stop
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesters/trailing.png)
Users can use a percentage-based trailing stop to exit positions. The trailing stop will move in the direction of interest if its distance with the low price (in case of long positions) or high price (in case of short positions) is greater than the specified percentage.
### Take Profits Levels From Forecast
When forecasts are displayed, users can set take profits using the **nth** percentile of a returned forecast. This can be done from the "TPS & SLS" settings, by selecting "Forecast" in the "Long TP" and/or "Short TP".
The numerical setting selected at the right of the drop-down menus determines the percentile used, and should be set within the range \[0, 100] in order to work. Percentiles values can affect the returned levels as follows:
* In case of a long trade, a lower set percentile will return take profits closer to the entry price, potentially triggering sooner.
* In case of a short trade, a lower set percentile will return take profits further away from the entry price, potentially triggering later.
Do note that because forecasts are based on the strategy entries, take profits levels based on it can be subject to repainting, except when using a backtesting window based on a date.
# Fetching Information
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-information/smart_trail.png)
The AI Backtesting Assistant is able to fetch our product documentation to provide relevant information to you about the features used by a retrieved strategy or to simply help you learn more about our products.
The AI will automatically determine whether it requires fetching context from the documentation depending on the user query.
You can force the AI to fetch information from the documentation by telling it to fetch the documentation.
For example:
> Tell me more about confirmation signals, use the documentation
This can prevent the AI from giving partial information he might know from his existing context window.
## Detailed Strategy Descriptions Using Docs
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-information/explanation.png)
We can request for the AI to provide important context about the conditions returned by a trading strategy.
## Using Docs to Get Tailored Strategies
By asking the AI to learn more about the LuxAlgo features from the documentation, we can effectively get unique trading strategies by simply mentioning trading styles.
For example, we can use the following prompt:
> From the documentation search for the best features for swing trading, then find a strategy using those features that provides good results on crypto on the hourly timeframe
# Fetching Strategies
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/chat.png)
The primary role of the AI Backtesting Assistant is to help users find strategies quickly without having to iterate through various conditions, tickers, and timeframes on TradingView. Instead, we can simply ask the AI to look for the strategy that would best match our criterias.
The AI Backtesting Assistant has access to approximately 1000 different strategies, half using our S\&O toolkit and the other half using our PAC toolkit.
This AI tool’s backtesting data & analytics are for informational purposes only and do not constitute financial advice or recommendations to buy or sell any financial product, including but not limited to securities, derivatives, cryptocurrencies, or other investment instruments.
This tool may contain errors, and past performance is not indicative of future results. Always conduct your own research and consult with a professional financial advisor.
LuxAlgo is not liable for any decisions made based on any information given. Read our [full disclaimer](https://www.luxalgo.com/legal/disclaimer/).
## Strategies Configuration
Strategies accessible by the AI backtesting assistant are backtested using an initial capital of 10000\$, without commissions/slippage, and using default toolkits settings (except for the PAC which use's a different invalidation behavior).
Unit position sizing is used across al tickers except forex pairs who use a standard lot (100 000 units).
The strategies the AI can access don’t make use of all the features within our toolkits, see the section below to learn more about the supported tickers, timeframes, and backtesting conditions.
Any strategy with 0 closed trades will not be accessible by the AI.
Strategies do note make use of stop losses or take profits.
### Supported Tickers
The following tickers are supported:
* SPY
* QQQ
* ES1!
* NQ1!
* YM1!
* CL1!
* NVDA
* TSLA
* AAPL
* MSFT
* META
* AMZN
* BTCUSDT
* ETHUSDT
* SOLUSDT
* BNBUSDT
* EURUSD
* GBPUSD
* USDJPY
* XAUUSD
### Supported Timeframes
The 5m, 15m, and 60m timeframes are supported.
### S\&O Conditions
Strategies constructed from our S\&O toolkit use a single condition or a combination of two conditions for the long and short entry conditions.
Only the following conditions are considered:
* Confirmation Any Bullish
* Confirmation Normal Bullish
* Confirmation Strong Bullish
* Contrarian Any Bullish
* Contrarian Normal Bullish
* Contrarian Strong Bullish
* Reversal Zones Price Cross Under S1
* Smart Trail Bullish
* Trend Tracer Bullish
* Trend Catcher Bullish
* Neo Cloud Bullish
* Confirmation Any Bearish
* Confirmation Normal Bearish
* Confirmation Strong Bearish
* Contrarian Any Bearish
* Contrarian Normal Bearish
* Contrarian Strong Bearish
* Reversal Zones Price Cross Over R1
* Smart Trail Bearish
* Trend Tracer Bearish
* Trend Catcher Bearish
* Neo Cloud Bearish
* Trend Strength Trending (Trend Strength greater than 50)
* Trend Strength Ranging (Trend Strength lower than 50)
It is possible for a long/short entry condition to contain both bullish and bearish conditions
#### S\&O Exits
Strategies making use of Confirmation or Reversal Zones based conditions can make use of the following exit conditions:
* Confirmation Builtin Exits
* Contrarian Builtin Exits
* Price Cross R1/S1 Average
### PAC Conditions
Strategies based on the PAC can use a maximum of three steps and invalidate entry conditions on any repeated step.
* Bullish CHoCH
* Bullish BOS
* Bullish Entered OB
* Bullish Exit OB
* Bullish New FVG
* Bullish Liquidity Grab
* Bearish Mitigated FVG
* Bearish CHoCH
* Bearish BOS
* Bearish Entered OB
* Bearish Exit OB
* Bearish New FVG
* Bearish Liquidity Grab
* Bullish Mitigated FVG
PAC strategies do not make use of exit conditions.
## How To Fetch Strategies
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/landing.png)
Interacting with the AI Backtesting Assistant is straightforward. All users need to do is enter a prompt in the input prompt located at the bottom of the chat.
Here are examples of prompts that will trigger the AI Assistant strategy retrieval ability:
* What is the best performing strategy across all crypto tickers on the 5-minute timeframe?
* Get three strategies using fair value gaps that have a winrate above 80%
* Find a strategy with above average net profit but under average drawdown
Users can also click on one of the suggested prompts in the search group located above the input prompt.
The AI can access the following strategy backtesting results:
* Net Profit
* Executed Trades
* Percentage Winrate
* Max Drawdown Percent
* Profit Factor
* Average Trade
* Average Winning Trade
* Average Loosing Trade
![Strategy Results](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/table.png)
These results will be returned in a table, if multiple strategies are returned, they will be all located within that table. Sometimes the AI can fetch strategies in the middle of a response; this will return another table containing the strategies fetched.
A maximum of five strategies can be returned in a table, while a maximum of three strategies can be returned from a single fetching operations.
If the AI needs to fetch more than 3 strategies it will fetch strategies in parallel.
The AI has also access to the following information from a strategy:
* Strategy start time, that is when the strategy starts being evaluated
* Strategy current position (long, short, or none)
* Best signal sensitivity for a strategy using confirmation or contrarian signals
![Strategy Results](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/best_sensitivity.png)
### Fetch Statistics Across The Strategy Population
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/compare.png)
The AI can also get general statistics and data across the population of strategies being backtested.
Example of prompts doing this are:
* What is the total net profit of bitcoin strategies?
* On BTCUSD, are strategies using normal signal better than the ones using strong signals overall?
* What is total net profit of profitable strategies across stocks?
This can be useful to get big picture information about strategies.
## Add a Strategy to Your Chart
Once you get a strategy you like from the AI, you might want to add it to your chart.
To do so, follow these steps:
Go to your TradingView chart, then open the indicator menu, locate the Backtester of the toolkit related to the strategy you want to add.
Go in the backtester settings, then select "Date" in the "Backtest Window" setting, then adjust "Window Start" with the strategy start time provided by AI.
Adjust the long and short entry conditions in the backtester based on the conditions returned by the AI.
Make sure to use "Invalidate On Any Repeated Step" in the "Invalidation behavior" dropdowns for PAC strategies.
Strategies the AI has access to have a defined starting point. Users might not be able to reproduce exact strategy results due to the limitation on how much data certain users can access.
## Saving Strategies
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/backtesting-assistant/fetching-strategies/saving.png)
Users can export strategies within a table as a csv using the download icon located under it.
## Prompting Tips
The AI can make mistakes when fetching strategies, as this is a very complex process depending on the user query.
We expect to improve the backtesting AI assistant over time; however, the following tips can help you get the most from our AI.
### Make Detailed Queries
Make sure to detail every aspect of the strategy you want to fetch if you have a precise one in mind, for example:
| Original | Improved |
| ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| Fetch a strategy that only makes use of confirmation signals | Fetch a strategy that only uses confirmation signals and no other conditions |
| I want a PAC strategy that goes long on a new FVG, and CHoCH | I want a PAC strategy that goes long when:
- Step 1: a new bullish FVG occur - Step 2: a bullish CHoCH occur |
| I want the best strategy | I want the strategy with the highest net profit |
Context and details will help the AI avoid making guesses about your query.
### Encourage the AI to Improve
The AI Backtesting Assistant can be fairly self-aware if a fetched strategy doesn't meet a user criteria, and will then retry.
But if the AI response is clearly mistaken, then it can be good to let him know using a prompt encouraging re-evaluation of the fetching process:
> The strategy your returned is not the one I want. Correct the issue in your fetching process and retry to fetch the strategy in accordance with my query.
### Split Complex Queries Into Multiple Tasks
The AI will be more prone to mistakes if the query is complex, as such, it can be best to make use of follow-ups to ask about details over a strategy rather than asking the AI to give those alongside other information.
For example:
> Return a good strategy on BTCUSDT, alongside the average net profit of all strategies on BTCUSDT that use Confirmation signals, then tell me what is the highest winrate strategy using the same conditions as the first one
The AI Backtesting assistant might provide more relevant answers if we let context accumulate by splitting and re-ordering our initial query into multiple ones:
Return a good strategy on BTCUSDT
Find the strategy with the highest winrate that use the same exact entry conditions returned previously
Return the average net profit of all strategies on BTCUSDT that use Confirmation signals
# Introduction
The [AI Backtesting Assistant](https://www.luxalgo.com/backtesting/chat/) is a conversational AI able to scan and retrieve a wide variety of strategies constructed from the Signals & Overlays® and Price Action Concepts® toolkits, as well as giving comprehensive information about our products.
The AI Backtesting Assistant is only available for Ultimate users.
To learn more about the abilities of the AI Backtesting Assistant see the pages below:
## FAQ
The AI assistant has access to live results of more than 40,000 trading strategies using our Signals & Overlay and Price Action Concepts premium toolkits.
Strategies are evaluated for 20 popular tickers across 3 timeframes: 5 minutes, 15 minutes, and 1 hour.
**Tickers include:**
**ETFs:**
* SPY
* QQQ
**Futures:**
* ES1!
* NQ1!
* YM1!
* CL1!
**Stocks:**
* NVDA
* TSLA
* AAPL
* MSFT
* META
* AMZN
**Cryptocurrencies:**
* BTCUSDT
* ETHUSDT
* SOLUSDT
* BNBUSDT
**Forex:**
* EURUSD
* GBPUSD
* USDJPY
**Commodities:**
* XAUUSD
Yes, users have a token balance that determines how much they can use the AI. The token balance, displayed as a percentage in the sidebar, resets at the first of each month. Once it reaches 0, the AI assistant will no longer be available until the balance is refreshed.
Yes, strategy results provided by the AI can be exported as a CSV file for easy access and analysis.
Strategies are evaluated using the Tradingview platform, ensuring users can reproduce the results provided by the AI. Each strategy starts being evaluated at a specific date, which the AI assistant can provide upon request.
Yes, backtesting results are always up to date, ensuring the AI assistant has access to the latest information for accurate strategy evaluations.
No, users cannot purchase or obtain more tokens. The token balance resets automatically on the 1st of each month, allowing for additional usage of the AI assistant.
## Disclaimer
This AI tool’s backtesting data & analytics are for informational purposes only and do not constitute financial advice or recommendations to buy or sell any financial product, including but not limited to securities, derivatives, cryptocurrencies, or other investment instruments.
This tool may contain errors, and past performance is not indicative of future results. Always conduct your own research and consult with a professional financial advisor.
LuxAlgo is not liable for any decisions made based on any information given. Read our [full disclaimer](https://www.luxalgo.com/legal/disclaimer/).
# Troubleshooting
The AI Backtesting Assistant is an early feature, and such might face several limitations described in this page.
Don't hesitate to send your feedback at [support@luxalgo.com](mailto:support@luxalgo.com) or in our [Discord server](https://discord.com/invite/LUX).
## I can't use the AI Backtesting Assistant
The AI Backtesting assistant is only available for our Ultimate users. Users without a plan can purchase one [here](https://www.luxalgo.com/pricing/).
Users subscribed to the Essential and Premium plans will need to upgrade to the Ultimate plan to use the AI Backtesting Assistant.
## The AI is not responding to my message
To ensure fair and consistent access to the AI Backtesting Assistant, users are subject to rate limits defined in terms of concurrent requests.
If the maximum number of concurrent requests is exceeded, messages sent to the AI Backtesting Assistant will take longer to get answered.
Waiting for some time will generally resolve the issue.
## The AI is stuck at "thinking"
When the AI Backtesting Assistant can't fetch strategies or our documentation, a loading component "Thinking" will keep appearing.
Waiting can sometime fix the issue, however, in case where the AI can no longer perform retrieval operations refreshing the page might be necessary.
## Reached maximum monthly usage for the AI Backtesting Assistant
Because of the amount of compute necessary to run our LLM and to prevent potential abuse, users have a limited usage of the AI Backtesting Assistant.
The amount of usage is determined by the amount of content returned by the AI, as such large messages can consume more usage than more frequent small messages.
The monthly usage is reset every first of the month.
In order to significantly save on usage you can refresh the page to clear the chat, as generating new messages on large conversations will drain usage more quickly.
# FAQ
Get answers to frequently asked questions including how to get access, product questions, and everything you need to know about billing.
## Access
Sign up to any plan on [our website](https://luxalgo.com).After purchasing a subscription, you will be prompted to **connect your accounts** & get instant access.If you are having trouble, you can always email [support@luxalgo.com](mailto:support@luxalgo.com) with your TradingView & Discord usernames and our support team will grant you full access right away.
The **Essential Plan** is great for simple trading like support/resistance, trend lines, patterns and more. It is also great for traders who want to speed up their analysis with just our Price Action Concepts® toolkit + screener on TradingView.
The **Premium Plan** gives you the full set of our world-renowned Signals & Overlays®, Oscillator Matrix®, and Price Action Concepts® toolkits + screeners on TradingView which makes it the best choice for advanced technical analysis.
The **Ultimate Plan** was designed for using our AI platform and Backtesters, allowing you to automate backtesting of our toolkits & get the fastest & most powerful insights possible. This is the most popular choice as it uses AI & deep optimization to give you the biggest advantage possible.
Make sure the username you used to connect your TradingView account is correct. If so, **refresh your browser/app** and then check your your Indicators --> Invite-only scripts folder on TradingView again.
If you just created a TradingView account as you signed up for a LuxAlgo core platform subscription, it may take 5 - 10 minutes to be indexed in TradingView's userbase first. Please wait and then try entering your username again within our Connect Accounts user portal.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/faq/image521.png)
If you still don't have access after this, please send an email to [support@luxalgo.com](mailto:support@luxalgo.com) or message us on our website with your email & TradingView username and our support team will grant you full access right away.
## Products
All of our exclusive tools in our core platform subscriptions function on any market available on TradingView such as stocks, crypto, forex, and commodities on all timeframes including 1m, 5m, 15m, 1h, 4H, 1D, etc.
The tools we provide on every plan can hypothetically fit any style of trading (scalping, swing trading, investing, etc) for finding market insights.
There is no specific win rate applicable to mention regarding our signals due to the way they were designed & intended to be used as conlfuence in your analysis.
We offer two signal modes; Confirmation (most popular) and Contrarian to help users get optimal signals for their trading style. Their intended usage is meant to form confluence within your technical analysis and they are not meant to be followed blindly. Past performance is not necessarily indicative of future results.
All features within our toolkits do **not** repaint. Everything appears in real-time and are confirmed & permanent on the chart once the candle a signal was generated on has closed.
Repainting is where past results of an indicator or a signal change based on data in the future. Various indicators have this behavior for useful purposes including only a small few of our hundreds of free indicators, not any of our paid indicators.
Within our Signals & Overlays toolkit, any signal is confirmed only once the candle is closed. This means a signal could appear on your chart but not be confirmed until that candle is closed and the next candle has started.
Our alerts in Discord will **never** notify you on any signal until the candle has closed and confirmed it. If you're adding alerts for our toolkits within TradingView, make sure to always select the "Once per bar close" configuration.
You don't need to upgrade your TradingView account, our exclusive tools work with 100% functionality on the basic plan of TradingView (free). [You can sign up for free here](https://www.tradingview.com/gopro/?share_your_love=LuxAlgo).
Yes, our Essential & Premium plans are absolutely great for beginners.
Every plan we offer comes with many tutorials as well as access to our highly active community where users can get 24/7 support, discuss strategies, & go through daily analysis amongst each other using LuxAlgo.
Our Ultimate Plan was specifically designed for data-driven traders who want to do more advanced backtesting.
We designed our exclusive tools as a comprehensive suite to use to for discretionary analysis, however, you could hypothetically use third-party platforms to create automated strategies via webhooks to automate trades. We do not provide resources directly for this as we believe & promote indicators are best used as supportive tools for decison making.
Our core subscription plans with our exclusive tools work only on TradingView (free web-based charting platform) and you can trade on any platform in real-time based on those charts.
We do offer free tools for MetaTrader 4/5 via the LuxAlgo Library, however, our exclusive tools specifically work on TradingView.
Yes, TradingView supports real-time data for the majority of tickers you can find on the platform. Only a small portion of them (mostly futures contracts) require a small monthly fee to access real-time data.
Just as much as we pride ourselves as the world's largest provider of trading indicators, we pride ourselves as having the most innovative trading products in the world.
Our exclusive tools have deeper customization and were solely designed from years of user-feedback to give the most professional workflows possible to help you as a trader.
Price action traders who like to keep things simple benefit from our Essential plan, strong technical traders love our Premium plan for all of our toolkits + screeners, and the data-driven traders seek our Ultimate plan for our advanced backtesting capabilities.
This error message appears when an user does not have access to the indicator. If you've already registered your TradingView username within our Connect Accounts portal and you're seeing this message, refresh your browser or app and make sure you're logged in on the TradingView profile you entered.
If that still doesn't work, email [support@luxalgo.com](mailto:support@luxalgo.com) your TradingView username & you'll be granted access right away. If you have not signed up with us, you'll see this error when trying to add our premium indicators to your chart. You can get instant access [here](https://luxalgo.com/pricing).
This error generally occurs when TradingView can't handle script loads under high traffic. This error can appear when a high number of features are enabled. Changing settings within the indicators, or hiding/unhiding it will make the script recalculate and potentially fix the issue.
We are always trying to improve the performance of the toolkit in order to limit these issues.
This error generally occurs when a TradingView study exceeds the memory limit fixed by TradingView. This error can't be directly prevented and will generally be returned when using anything below the 1 minute timeframe.
We recommend users to stay with minute and higher timeframes to avoid potential errors with our premium toolkits.
## Billing
You can cancel your subscription anytime by logging into your account on [our website](https://luxalgo.com) or by simply reaching out to [support@luxalgo.com](mailto:support@luxalgo.com) and we will assist you right away the same day!
Once your subscription has been canceled, you will have access for the rest of the time in the plan you purchased and you will not be charged again.
You can re-activate a subscription that you previously cancelled by purchasing a plan again on our [pricing page](https://luxalgo.com/pricing).
Once you select the plan you want to subscribe back with, make sure to login to the same account you used with your previous subscription.
You can upgrade your subscription by logging in on [our website](https://luxalgo.com/pricing).
Once logged in, select your plan of choice to upgrade to and you will see a pop-up modal with the details.
We automatically convert any remaining time into a value of days on your new plan so you have a longer period of time on your newly upgraded subscription.
You can extend your current subscription up to 3 times on [our website](https://luxalgo.com/pricing).
Keep in mind that we only allow extending a subscription 3 times and it is for annual plans only.
For special limited time offers we do you can receive discounts which are all automatically applied, displayed on the pricing cards, and for the first payment of your subscription only.
You can always get up to 50% off the total price you'd pay monthly by choosing to pay annually on our plans.
We offer a 30 day money back guarantee so you can try our exclusive tools for 30 days risk free. We also have hundreds of free indicators you can try on our [Library](https://luxalgo.com/library) to experience our free tools first.
No, the price you signed up for is the price you will keep forever as long as you stay signed up. We will **never** change the price of your subscription. All members are grandfathered into the price they first signed up at regardless of any price increases we may do in the future.
Please keep in mind that all coupons used on LuxAlgo.com are for the first interval of your subscription only. All future billing intervals aside from the first one will be at the full price of the subscription you chose.
It's instant access. Immediately after you sign up we prompt you with a place to connect your TradingView & Discord accounts for access. If you missed this, please check your confirmation email for a link to connect your accounts to get instant accesss.
As long as you enter your TradingView username correctly within your account, it'll appear instantly on your TradingView account under your "Invite-only scripts" folder after you refresh TradingView in your browser/app.
If you are having trouble, please reply to your confirmation email with your TradingView username and our support team will ensure you have full access right away.
Within your account, you can optionally downgrade your plan which will only start once your current plan ends.
For example if you have 15 days left in your Ultimate Plan and you're downgrading to Premium, the Premium plan will start in 15 days at full price.
Yes, we allow username changes in most scenarios as long as it's not too frequent. You may send your new username alongside your old username to [support@luxalgo.com](mailto:support@luxalgo.com) and our support team will adjust this for you manually right away.
Our support team typically responds within only minutes (10-15 minutes maximum) whether you email [support@luxalgo.com](mailto:support@luxalgo.com) or message us on our [website](https://luxalgo.com) every day of the week.
# How To Get Updates
## Applying An Update
On Tradingview updates are easy to apply. Once an update is available, refresh your chart, then a purple 🔄 icon will be visible near the indicator title, click on it and click on "Update to latest version".
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/how-to-update/update.png)
You can also apply an update by following these steps:
1. Refresh your browser or mobile app
2. Remove the indicator from your chart
3. Re-add it from your invite-only indicators
The latest version of the indicator should appear.
Make sure to save your **Chart Layout** on Tradingview after successfully installing an update so you can ensure it will stay
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/how-to-update/image172.png)
## Receiving Updates Notifications
We always announce our updates on our community Discord server & [X Account](https://x.com/LuxAlgo). You can also receive update notifications on your TradingView charts directly by going to:
`settings -> notifications -> SCRIPTS YOU'VE ADDED TO FAVORITES OR LIKED`
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/how-to-update/image125.png)
Make sure to follow the LuxAlgo account on [TradingView](https://www.tradingview.com/u/LuxAlgo/#published-scripts) to ensure you are notified when we push updates with new features to our exclusive tools!
# Quickstart
Start learning about how LuxAlgo works within minutes.
## Getting Started with LuxAlgo
Welcome to the LuxAlgo documentation guide. Click any of the buttons below to learn how to get setup, use our tools, and enhance your trading experience.
Learn how to setup exclusive LuxAlgo tools on TradingView
In-depth guide on how to use our Toolkits
In-depth guide on how to use our Screeners
In-depth guide on our Backtesters
Learn how to find strategies using our AI platform.
## Frequently Asked Questions
Need quick answers to general questions about our website, products, or billing? Click the button below to visit our FAQ.
Read through our frequently asked questions
## Join our Community
Need further support or want to give us some feedback? You can [join our community](https://discord.com/invite/LUX) or drop us an email at [support@luxalgo.com](mailto:support@luxalgo.com).
# How To Use Discord
Discord is a free instant-messaging platform for participating in communities. Below you will find the basics on how to create a free Discord account and how to get access as a LuxAlgo subscriber.
This is the platform where we host our 150,000+ member community with automated alerts, strategy forums, and various bots to further optimize your experience at LuxAlgo.
## Create A Free Discord Account
To create a Discord account go to the [Discord website](https://discord.com), download the Discord app (or open it from the browser) and enter your desired username.
## Joining The Discord
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/join-discord/discordbanner.jpg)
When you first join our server, you won't be able to see anything besides our public channels. You can et help in the **#support** channel, see our announcements, get useful information regarding LuxAlgo, and learn how to sign up. If you haven't already joined the server, [click here.](https://discord.gg/lux)
## Exclusive Roles
Once you get a subscription on our website, you will be able to connect your Discord account to our system which will give you exclusive perks.
The @Essential, @Premium, and @Ultimate Discord roles are granted to users depending on the plan they chose from [our website](https://luxalgo.com/pricing). Users are prompted to connect their Discord account right after they sign up, however, we also send Subscription Confirmation email which includes a link to our portal where they can connect their Discord account to receive the role.
Every exclusive role includes full access to our highly active community channels where traders discuss all markets using LuxAlgo, alongside strategy forums, thousands of automated scanner alerts, and more. The @Ultimate role will specifically give users access to a backtesting forum where our data-driven traders discuss strategy creation & share backtesting data.
To get your exclusive role, click "Connect Accounts" from your Subscription Confirmation email and then click the 'Authorize Discord' button in the portal and your role will be granted automatically.
If you are having trouble, please reply to the Subscription Confirmation email with your Discord username and our support team will ensure you have full access right away.
# TradingView Alerts
In this page, we show you the specifics of how to set up any alert on TradingView. If you want to learn how to set up specific alerts on our toolkits specifically, you can see the following [video](https://youtu.be/olKQq5XR5S0?t=38).
Alerts can be created to trigger on any user set condition, like crosses between two indicators, price entering or exiting a channel...etc. Users can be notified when the condition is trigerred via phone notifications, emails, SMS, and more through webhooks.
## How To Create An Alert
To create an alert you can:
* Click on the alert button at the top of your chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image510.png)
* From the alert manager
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image370.png)
* Using hotkeys `ALT + A` (Windows) or `⌥ + A` (Mac)
## Trigger Conditions
Users can select the conditions used to trigger an alert in the condition menu, selecting the indicators and a set of rules used to trigger an alert. The second drop down menu controls the specific alert trigger conditions, while the other drop down controls the elements/plots to be used for conditions.
Indicators return plots, which are visual elements that can be used to set the alert condition. Plots are used to visualize series of values, conditions, etc. Note that indicators can return multiple plots.
Available conditions to set custom alerts are explained below:
### Crossing/Crossing Up/Crossing Down
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/crossing_conditions.png)
Crossing conditions are commonly used and allow users to be alerted when two elements cross each other.
Three crossing conditions are available, **Crossing**, **Crossing Up**, **Crossing Down**.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/crossing.png)
**Crossing** will alert on any crosses between two selected plots/values.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/crossingUp.png)
**Crossing Up** will alert only when the first selected element crosses over the second one.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/crossingDown.png)
**Crossing Down** will alert only when the first selected element crosses over the second one.
### Entering/Exiting Channel
**Entering/Exiting Channels** conditions will trigger when any selected element enter or exit user selected upper/lower bounds.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/enteringChannel.png)
The **Entering Channel** condition will trigger when the element in the first drop-down menu cross-under the selected upper bound or cross-over the selected lower bound.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/exitingChannel.png)
The **Exiting Channel** condition will trigger when the element in the first drop-down menu cross-over the selected upper bound or cross-under the selected lower bound.
### Outside/Inside Channel
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/outsideChannel.png)
**Outside/Inside Channels** conditions will trigger when any selected element is outside or within selected upper/lower bounds.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/insideChannel.png)
### Greater/Less Than
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/greaterThan.png)
The **Greater Than** and **Less Than** conditions will trigger when a selected element is greater or less than a selected element or value.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/lessThan.png)
## How To Use Placeholders
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image257.png)
Placeholders allow for the value of a variable to be returned in an alert message. This variable can be the closing price of a symbol (`{{close}}`), the time frame of the chart the alert is created on (`{{interval}}`), and even the value of an indicator. This is done using the `{{plot("Name")}}` placeholder, where `"Name"` is the name of the plot you want the value to be returned in the alert message. Note that only the first 22 plots in an indicator can be used in placeholders.
Note that `plot("Name")` must be part of the indicator selected in the alert condition.
## Warning Message
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image276.png)
When you create an alert using certain indicators such as the Signals & Overlays® indicator, you might see a warning message, this is caused by internal Pinescript functions used in the script that may have a repainting behavior when set in a specific way.
The alerts provided by the LuxAlgo indicators **do not repaint** and as such, you can click on **continue anyway**.
## Managing Alerts
The alerts manager menu allows you to manage the alerts you have currently set. From there you can create, remove, pause, reactivate, clone, search, sort and edit your alerts. To access the alert manager menu click on the alerts icon represented by an alarm symbol at the top left of the chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image370.png)
If you want to remove all your current alerts click on the three horizontal dots at the right of the "add alert" icon, then select "remove all".
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image476.png)
For more information on how to manage alerts go [here](https://www.tradingview.com/support/solutions/43000595311-manage-alerts/).
### Updating Alerts
It is important to note that if one of the indicator settings is **changed after the alert is created**, then the alert will be **triggered using the old settings**. In order to update an alert go to the alert manager and click on edit.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image.png)
In the first drop-down menu of the **Condition** section, select the second indicator with the same name as the one first used to create the alert you want to update and save the alert.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-alerts/image515.png)
# How To Setup
Once you've signed up on [our website](https://luxalgo.com/pricing) and entered your TradingView username within the "Connect Accounts" portal, you will have instant access to use our exclusive tools.
In order to use the exclusive tools, you need to open a chart on TradingView.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-tradingview/image603.png)
Once your chart is open, click on **Indicators** (or type **/** ) to open the indicator menu, then click on "**Invite-only Scripts**". You should see the names of each Toolkit, Screener, or Backtester appear in this folder and you can click on one them to add to your chart.
Remember, you don't need to use all of these tools at once. It is suggested for users to explore through our tools to find a couple features that fit most optimally in your trading.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-tradingview/image571.png)
If you don't see the invite-only scripts folder or the locks appear red, please first try refreshing your browser/app. If this still doesn't have them show up, please email [support@luxalgo.com](mailto:support@luxalgo.com) with your TradingView username or contact live-chat on our website and our team will grant you access right away.
If you want to quickly access our tools you can add them to your favorites by clicking on the star at the right of their names in the folder. You will then be able to load the starred indicators directly from your favorites tab while on your charts.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/setup-tradingview/image560.png)
# What Is TradingView?
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/logo-preview-2.png)
[TradingView ](https://www.tradingview.com)is a free charting platform and social network where traders/investors can **look** at financial charts and use a wide variety of tools to spot opportunity in every market across Stocks, Forex, Crypto, Futures & Commodities. TradingView users can connect most brokers to trade directly on the platform and **leap** into opportunities as they are presented in real time from their charts.
This is the platform where we host our exclusive tools. You can create a free account on TradingView and then sign up on [our website](https://luxalgo.com/pricing) to receive instant-access to use our tools.
## How To Create A TradingView Account
In order to create a TradingView account, you need to go to the TradingView [homepage](https://www.tradingview.com). Click on "Sign in" at the top right of the homepage, then click on "Sign up" at the bottom of the current window. You can sign up using your social media profiles or an email address.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image581.png)
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image637.png)
## TradingView Charts
### How To Open A Chart On TradingView
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image538.png)
You can open a chart on TradingView by clicking on 'Chart', located at the top left of the website when you are logged in.
### How To Change Symbol
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image50.png)
You can change the symbol of the chart by clicking on the top left section containing the current chart ticker.
You can also directly type the name of the symbol on your keyboard.
Once you click on it, you will be able to search for specific symbols. You can also filter out symbols by markets or exchange.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image468.png)
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image348.png)
### Change Chart Timeframe
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image99.png)
Timeframes determine the frequency at which a new candle is displayed on the chart. To change the timeframe of your chart simply click on the section at the right of the ticker name and select a timeframe of interest.
You can also type the timeframe directly on your keyboard to change it.
### Add Indicators To Your Chart
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image441.png)
Click on the **Indicators** button at the top of the chart. This will open a menu where you can search for the indicator and click on it to add it to your chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image296.png)
### Save A Chart Layout
You can create, delete and save chart layouts on TradingView if you wish to save your indicator & chart settings on specific tickers/timeframes. Once you make a change on a layout, you will need to save these changes, all you need to do is to click on the cloud symbol at the top right of the chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image356.png)
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/tradingview/image225.png)
You can also save a chart layout by pressing `ctrl + s` or `cmd + s` for mac users, on your keyboard.
# What Is LuxAlgo?
LuxAlgo is the world’s largest provider of trading indicators (free & paid).
We're mostly known for the hundreds of free indicators we've published for 5+ charting platforms like TradingView, however, we also have exclusive tools & an AI platform on [our website](https://luxalgo.com).
The exclusive tools we offer go much further than ordinary trading indicators on TradingView we may have made, they consist of:
Larger, more comprehensive, all-in-one indicators with advanced customizability & alerts.
Complimentary dashboards to scan multiple assets & timeframes with every Toolkit.
Complimentary strategy scripts to fully backtest & optimize every Toolkit.
AI platform for automatically finding trading strategies from Toolkits, accessible on LuxAlgo.com.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/what-is-luxalgo/what-is-luxalgo.png)
We also have a community Discord of 150,000+ traders that discuss markets with our tools, receive thousands of alerts, and improve their strategies with a large strategy forum.
LuxAlgo users typically integrate a few features from our tools and use them as an additional part of their trading analysis.
Access to our exclusive tools are within our plans you can [sign up](https://luxalgo.com/pricing) for on our website.
## Why choose LuxAlgo?
* Hundreds indicators made for the world on various charting platforms, millions of users, mostly free.
* We have the #1 most followed profile on TradingView (500,000+ followers).
* LuxAlgo was nominated & endorsed as Pine Wizard by TradingView for 2024. The only company/team to join their hall of fame.
* Our Signals & Overlays toolkit is the highest ever-rated paid indicator in history at 25,000+ likes.
Our team is also made up of active traders who trade with our tools live multiple times a week to contribute to our community.
See it all for yourself on TradingView [profile](https://www.tradingview.com/u/LuxAlgo/#published-scripts).
## Why It Can Work
Traders typically have several questions after seeing LuxAlgo, one of them being:
> *What advantages do these paid tools give me over free ones?*
And the most important one:
> *Will I make profits using them?*
It would be presumptuous and dishonest on our part to tell you the tools we provide will guarantee you huge returns in a short amount of time, markets are more complicated than that.
No indicator is capable of guaranteeing an improvement to your performance by itself, nor is any strategy capable of maintaining a percentage accuracy over time; money printers do not exist. Our tools are designed to generate easily understandable workflows & strategies for your analysis and we actively update the tools over time which is what actually can make them useful for you in your trading journey.
## The User And An Indicator
A trader may expect an indicator to work by itself without requiring any user interaction; just set alerts, trade automatically, and make profits. "If an indicator can't generate returns under these conditions then it isn't worth using."
The worth of any technical trading tool will hardly be found in its ability to make you money by itself, the complexity of markets makes this far too difficult. A technical indicator is not smart enough, nor adaptable enough to overcome such extreme complexities, however, this is not the case of the experienced trader, who will not use an indicator as a money printer, but as a supportive tool for decision making.
We believe that the success lies in the association of the *user* and the *indicator.*
An indicator plugged into charting software can access and process large amounts of data, delivering a large quantity of useful and easy to interpret visual information which the trader can't really do by themselves, but he/she is smart, aware of a lot of external factors, and can manage their money.
A suite of tools that give non-redundant information and that is easy to customize and use for alerts & strategy optimization throughout any trader's journey will create a strong pairing; and this is what we aim to provide at LuxAlgo with our exclusive tools.
## Embracing Your Trading Style
If you are not free you won't go far, some traders find themselves as natural contrarians going against the trend, others ride with the trend, however, whatever your trading style is -- LuxAlgo embraces it. Our tools give you features that absolutely any style of trader can use to their fullest potential, and our subscription plans perfectly encapsulate this truth in each tier.
**Essential Plan:** Best for price action focused traders who want only simple trading like support/resistance, trend lines, patterns and more. It comes with just our Price Action Concepts® toolkit + screener on TradingView.
**Premium Plan:** For advanced technical analysis traders, signal following, dynamic displays of trends & reverals. It comes with the full set of our world-renowned Signals & Overlays®, Oscillator Matrix®, and Price Action Concepts® toolkits + screeners on TradingView.
**Ultimate Plan:** Designed for data-driven traders with access to our AI platform and Backtesters, allowing users to automate backtesting of our toolkits & get the fastest & most powerful insights possible. This is the most popular choice as it uses AI & deep optimization to give you the biggest advantage possible.
This is all part of the success of our exclusive tools with traders; while most indicators give you a two-dimensional picture of the market, we give you a three-dimensional picture, giving you the liberty to trade on the charts the way you want via easily customizable all-in-one toolkits, unparalled alert functinoalities, and AI for advanced strategy creation — all used either as as a standalone suite or in confluence with other forms of analysis.
# Elements
This page list out all the information returned by the OSC screener.
The Screener (OSC) supports various core features from the **Oscillator Matrix®**, each listed out below.
## Screener Elements
| Element | Description | Default |
| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Price | Most recent price value | Enabled |
| Volume | Most recent volume | Disabled |
| %Change | Most recent price percent change | Enabled |
| Change | Most recent price change | Disabled |
| Rating | Most recent ticker rating. The rating is given depending on the percentage of bullish information returned by all enabled screener elements for a specific ticker | Enabled |
| HWO Signal | Most recent HyperWave signal on the ticker | Enabled |
| Money Flow | Most recent Money Flow oscillator value on the ticker | Enabled |
| Overflow | Most recent Overflow value on the ticker | Enabled |
| HyperWave | Most recent Overflow value on the ticker | Enabled |
| Reversal | Most recent Reversal signal detected on the ticker | Enabled |
| Divergence | Most recent divergence detected between the associated ticker price and associated ticker HyperWave | Enabled |
| Confluence | Most recent confluence status detected on the ticker | Enabled |
Each element can be disabled/enabled from the screener settings.
## Ratings
The screener ratings indicate the confluence of all returned screener data for each individual ticker by measuring the percentage of bullish indications returned by the enabled screener elements. Ratings are determined as follows:
* ▲ Strong Bullish (more than 80% of the returned information is bullish)
* △ Bullish (60% to 80% of the returned information is bullish)
* ― Neutral (40% to 60% of the returned information is bullish)
* ▽ Bearish (20% to 60% of the returned information is bullish)
* ▼ Strong Bearish (less than 20% of the returned information is bullish)
## Indicator Settings
Users can control the settings of the included indicators in the screener from their respective settings group, these include:
#### Smart Money Flow
* Main Length
* Smooth
#### HyperWave
* Main Length
* Signal & Signal Length
* Divergence Sensitivity
#### Reversals
* Reversal Factor
## Colors
Users are able to change the color of the information returned by each element from the "Screener Elements" settings.
# Filtering
This page explain how users can curate the information returned by the OSC screener using the filtering features.
From the "Screener Elements" settings users are able to filter out undesired information returned by the screener. This is done from the dropdown setting located on each "Screener Elements" settings.
Certain elements returning specific information from a list of supported options will have a filter allowing to select a precise option, while elements returning a value on the screener will make use of conditional operators (Above/Below).
Users can set a filtering condition on multiple elements, allowing them to display the tickers that respect the user set filtering conditions.
# Introduction
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/osc/introduction/screener.png)
The Screener (OSC) is a useful tool able to return recent information from various features in the **Oscillator Matrix®** toolkit for up to 10 user set tickers with customizable timeframe.
In order to use the screener the best way possible it is first advised to fully understand the [Oscillator Matrix®](/docs/toolkits/oscillator-matrix/introduction) toolkit.
Provided below are pages describing all key features included.
Having access to the **Oscillator Matrix®** will automatically grant you access to the OSC screener.
## Tickers
Users can change tickers as well as their respective timeframes from the screener settings. Default tickers include:
* BTCUSDT
* ETHUSDT
* SOLUSDT
* ADAUSDT
* SPX
* AAPL
* TSLA
* NVDA
* EURUSD
* GBPUSD
The default timeframe used for all is the user chart timeframe. Supported tickers includes all tickers available on Tradingview (note that this availability can be affected by your Tradingview plan).
Users can also use the same ticker but different timeframes, allowing to perform multi timeframe analysis of the **Oscillator Matrix®** toolkit. However, duplicated tickers with the same timeframe will result in the duplicate ticker to not appear on the screener.
## Display
Users are offered a high degree of freedom when it comes to the placement of the screener. By default, the screener is located on a different pane, with the options to select the following positions:
* Top Center
* Top Right
* Top Left
* Bottom Center
* Bottom Right
* Bottom Left
It is also common for more compact screeners to be directly on the price chart, this is possible with this screener by drag and dropping it to the user chart, or by moving it to the existing pane above assuming the screener is in a pane below the price chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/pane.png)
## Notes
Tradingview is not a friendly environment when it comes to running more complete screeners, this cause various limitations showcased below:
### Computation
The computation of a screener on Tradingview is very intensive, as such you can expect rare calculations timeouts. When this occurs simply force the screener recalculation by modifying one setting or adding the screener again to your chart.
### Inconsistency
It is possible to observe inconsistencies when observing the screener on a chart with a specific symbol due to screener tickers having being on different market.
The crypto market operates 24/7 while stock markets have opening and closing times, this can cause the screener to return different information when observing it from a cryptocurrency or stock/currency pair.
# Sorting
This page explain how users can sort a specific element returned by the PAC screener using the Sort By feature.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/sort.png)
Users can sort certain elements returning/or with an associated numerical information in either a descending or ascending order. This can be useful to see specific tickers first or last depending on the sorted data on the screener.
Supported elements for sorting include:
* Rating
* Money Flow
* HyperWave
* None
When "None" is selected the screener tickers appear as per their order in the Tickers settings.
![Tickers sorted by rating in a descending order](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/osc/sorting/sorted.png)
# Elements
This page list out all the information returned by the PAC screener.
The Screener (OSC) supports various core features from the **Price Action Concepts®**, each listed out below.
## Screener Elements
| Element | Description | Default |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Price | Most recent price value | Enabled |
| Volume | Most recent volume | Disabled |
| %Change | Most recent price percent change | Enabled |
| Change | Most recent price change | Disabled |
| Rating | Most recent ticker rating. The rating is given depending on the percentage of bullish information returned by all enabled screener elements for a specific ticker | Enabled |
| Structure | Most recent market structure returned on the ticker | Enabled |
| Order Block | Price position relative to the most recent Order Block area detected on the ticker | Enabled |
| Buy OB Volume | Buy volume associated to the most recently detected Order Block on the ticker | Disabled |
| Sell OB Volume | Sell volume associated to the most recently detected Order Block on the ticker | Disabled |
| OB Volume | Total volume associated to the most recently detected Order Block on the ticker | Enabled |
| Imbalances | Status of the most recent detected imbalance | Enabled |
| P\&D Zones | Price position relative to the most recent premium/equilibirum/discount zones on the ticker | Disabled |
| Liquidity Grabs | Most recent detected liquidity grab | Enabled |
| EQHL | Most recent detected equal high/low | Disabled |
Each element can be disabled/enabled from the screener settings.
## Ratings
The screener ratings indicate the confluence of all returned screener data for each individual ticker by measuring the percentage of bullish indications returned by the enabled screener elements. Ratings are determined as follows:
* ▲ Strong Bullish (more than 80% of the returned information is bullish)
* △ Bullish (60% to 80% of the returned information is bullish)
* ― Neutral (40% to 60% of the returned information is bullish)
* ▽ Bearish (20% to 60% of the returned information is bullish)
* ▼ Strong Bearish (less than 20% of the returned information is bullish)
## Indicator Settings
Users can control the settings of the included indicators in the screener from the "Indicator Settings" settings group, these include:
* Market Structure Length
* Order Block Length
* Imbalance Type
* EQHL Period
## Colors
Users are able to change the color of the information returned by each element from the "Screener Elements" settings.
# Filtering
This page explain how users can curate the information returned by the PAC screener using the filtering features.
From the "Screener Elements" settings users are able to filter out undesired information returned by the screener. This is done from the dropdown setting located on each "Screener Elements" settings.
Certain elements returning specific information from a list of supported options will have a filter allowing to select a precise option, while elements returning a value on the screener will make use of conditional operators (Above/Below).
Users can set a filtering condition on multiple elements, allowing them to display the tickers that respect the user set filtering conditions.
# Introduction
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/pac/introduction/screener.png)
The Screener (PAC) is a useful tool able to return recent information from various features in the **Price Action Concepts®** toolkit for up to 10 user set tickers with customizable timeframe.
In order to use the screener the best way possible it is first advised to fully understand the [Price Action Concepts®](/docs/toolkits/price-action-concepts/introduction) toolkit.
Provided below are pages describing all key features included.
Having access to the **Price Action Concepts®** will automatically grant you access to the PAC screener.
## Tickers
Users can change tickers as well as their respective timeframes from the screener settings. Default tickers include:
* BTCUSDT
* ETHUSDT
* SOLUSDT
* ADAUSDT
* SPX
* AAPL
* TSLA
* NVDA
* EURUSD
* GBPUSD
The default timeframe used for all is the user chart timeframe. Supported tickers includes all tickers available on Tradingview (note that this availability can be affected by your Tradingview plan).
Users can also use the same ticker but different timeframes, allowing to perform multi timeframe analysis of the **Price Action Concepts®** toolkit. However, duplicated tickers with the same timeframe will result in the duplicate ticker to not appear on the screener.
## Display
Users are offered a high degree of freedom when it comes to the placement of the screener. By default, the screener is located on a different pane, with the options to select the following positions:
* Top Center
* Top Right
* Top Left
* Bottom Center
* Bottom Right
* Bottom Left
It is also common for more compact screeners to be directly on the price chart, this is possible with this screener by drag and dropping it to the user chart, or by moving it to the existing pane above assuming the screener is in a pane below the price chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/pane.png)
## Notes
Tradingview is not a friendly environment when it comes to running more complete screeners, this cause various limitations showcased below:
### Computation
The computation of a screener on Tradingview is very intensive, as such you can expect rare calculations timeouts. When this occurs simply force the screener recalculation by modifying one setting or adding the screener again to your chart.
### Inconsistency
It is possible to observe inconsistencies when observing the screener on a chart with a specific symbol due to screener tickers having being on different market.
The crypto market operates 24/7 while stock markets have opening and closing times, this can cause the screener to return different information when observing it from a cryptocurrency or stock/currency pair.
# Sorting
This page explain how users can sort a specific element returned by the OSC screener using the Sort By feature.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/sort.png)
Users can sort certain elements returning/or with an associated numerical information in either a descending or ascending order. This can be useful to see specific tickers first or last depending on the sorted data on the screener.
Supported elements for sorting include:
* Rating
* Structure
* OB Volume
* OB Buy Volume
* OB Sell Volume
* None
When "None" is selected the screener tickers appear as per their order in the Tickers settings.
![Tickers sorted by rating in a descending order](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/osc/sorting/sorted.png)
# Elements
This page list out all the information returned by the S&O screener.
The Screener (S\&O) supports various core features from the **Signals & Overlays®**, each listed out below.
## Screener Elements
| Element | Description | Default |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Price | Most recent price value | Enabled |
| Volume | Most recent volume | Disabled |
| %Change | Most recent price percent change | Enabled |
| Change | Most recent price change | Disabled |
| Rating | Most recent ticker rating. The rating is given depending on the percentage of bullish information returned by all enabled screener elements for a specific ticker | Enabled |
| Signal | Most recent confirmation or contrarian signal returned on the ticker | Enabled |
| Exits | Number of exits signals returned since the most recent signal | Enabled |
| Smart Trail | Current Smart Trail Status | Enabled |
| Reversal Zones | Current price position relative to Reversal Zones | Disabled |
| Trend Catcher | Current Trend Catcher Status | Enabled |
| Trend Tracer | Current Trend Tracer Status | Enabled |
| Neo Cloud | Current Neo Cloud Status | Disabled |
| Trend Strength | Current Trend Strength value | Enabled |
| Lux Volatility | Current Lux Volatility value | Enabled |
| Squeeze Index | Current Squeeze Index value | Enabled |
| Volume Sentiment | Current Volume Sentiment value | Disabled |
Each element can be disabled/enabled from the screener settings.
## Ratings
The screener ratings indicate the confluence of all returned screener data for each individual ticker by measuring the percentage of bullish indications returned by the enabled screener elements. Ratings are determined as follows:
* ▲ Strong Bullish (more than 80% of the returned information is bullish)
* △ Bullish (60% to 80% of the returned information is bullish)
* ― Neutral (40% to 60% of the returned information is bullish)
* ▽ Bearish (20% to 60% of the returned information is bullish)
* ▼ Strong Bearish (less than 20% of the returned information is bullish)
## Signal Settings
The most recent signal returned by the screener is affected by the "Signal" settings group. These settings allow changing the sensitivity of the signals as well as the signal algorithm, with users having the option to select Confirmation or Contrarian signals.
## Overlays Settings
Overlay indicators screener elements are affected by their respective settings located in the "Overlays" settings group.
Each overlay has an associated setting affecting their output. These settings range from 1 to 5, with higher values allowing the overlay to return indications for longer-term trends.
## Colors
Users are able to change the color of the information returned by each element from the "Screener Elements" settings.
# Filtering
This page explain how users can curate the information returned by the S&O screener using the filtering features.
From the "Screener Elements" settings users are able to filter out undesired information returned by the screener. This is done from the dropdown setting located on each "Screener Elements" settings.
Certain elements returning specific information from a list of supported options will have a filter allowing to select a precise option, while elements returning a value on the screener will make use of conditional operators (Above/Below), except the Lux Volatility.
Users can set a filtering condition on multiple elements, allowing them to display the tickers that respect the user set filtering conditions.
# Introduction
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/s-o/introduction/screener.png)
The Screener (S\&O) is a useful tool able to return recent information from various features in the **Signals & Overlays®** toolkit for up to 10 user set tickers with customizable timeframe.
In order to use the screener the best way possible it is first advised to fully understand the [Signals & Overlays®](/docs/toolkits/signals-overlays/introduction) toolkit.
Provided below are pages describing all key features included.
Having access to the **Signals & Overlays®** will automatically grant you access to the S\&O screener.
## Tickers
Users can change tickers as well as their respective timeframes from the screener settings. Default tickers include:
* BTCUSDT
* ETHUSDT
* SOLUSDT
* ADAUSDT
* SPX
* AAPL
* TSLA
* NVDA
* EURUSD
* GBPUSD
The default timeframe used for all is the user chart timeframe. Supported tickers includes all tickers available on Tradingview (note that this availability can be affected by your Tradingview plan).
Users can also use the same ticker but different timeframes, allowing to perform multi timeframe analysis of the **Signals & Overlays®** toolkit. However, duplicated tickers with the same timeframe will result in the duplicate ticker to not appear on the screener.
## Display
Users are offered a high degree of freedom when it comes to the placement of the screener. By default, the screener is located on a different pane, with the options to select the following positions:
* Top Center
* Top Right
* Top Left
* Bottom Center
* Bottom Right
* Bottom Left
It is also common for more compact screeners to be directly on the price chart, this is possible with this screener by drag and dropping it to the user chart, or by moving it to the existing pane above assuming the screener is in a pane below the price chart.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/pane.png)
## Notes
Tradingview is not a friendly environment when it comes to running more complete screeners, this cause various limitations showcased below:
### Computation
The computation of a screener on Tradingview is very intensive, as such you can expect rare calculations timeouts. When this occurs simply force the screener recalculation by modifying one setting or adding the screener again to your chart.
### Inconsistency
It is possible to observe inconsistencies when observing the screener on a chart with a specific symbol due to screener tickers having being on different market.
The crypto market operates 24/7 while stock markets have opening and closing times, this can cause the screener to return different information when observing it from a cryptocurrency or stock/currency pair.
# Sorting
This page explain how users can sort a specific element returned by the S&O screener using the Sort By feature.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/sort.png)
Users can sort certain elements returning/or with an associated numerical information in either a descending or ascending order. This can be useful to see specific tickers first or last depending on the sorted data on the screener.
Supported elements for sorting include:
* Rating
* Trend Strength
* Lux Volatility
* Squeeze Index
* Volume Sentiment
* Exits
* None
When "None" is selected the screener tickers appear as per their order in the Tickers settings.
![Tickers sorted by rating in a descending order](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/screeners/s-o/sorting/sorted.png)
# Alert Scripting
Alert Scripting is a feature within each of our 3 exclusive toolkits that allows users to create extremely advanced alert conditions using our own scripting language. Alert Scripting is available towards the bottom of the settings of each LuxAlgo toolkit and mostly all features are usable for creating alert combinations.
This feature is useful for users that feel limited by the custom alert creator.
To better learn about Alert Scripting, see the following pages:
Learn how to reference market data and toolkit features when scripting alerts.
Learn about the operators you can use to compare data with each other.
Learn how to create simple and complex alerts.
# Operators
Operators are specific tokens (characters) performing an operation over multiple defined elements. Alert scripting supports three types of operators described below.
### Comparison Operators
Comparison operators are used to compare two numerical values with each other.
#### `>` (Greater Than)
***
`True` if value to the left of `>` is greater than the value to its right.
```js Example
{close} > {open}
```
#### `<` (Less Than)
***
`True` if value to the left of `<` is less than the value to its right.
```js Example
{close} < {open}
```
#### `>=` (Greater Than or Equal)
***
`True` if value to the left of `>=` is greater or equal to the value to its right.
```js Example
{close} >= {open}
```
#### `<=` (Less Than or Equal)
***
`True` if value to the left of `<=` is greater or equal to the value to its right.
```js Example
{close} <= {open}
```
#### `==` (Equal)
***
`True` if value to the left of `==` is equal to the value to its right.
```js Example
{close} == {open}
```
#### `!=` (Not Equal)
***
`True` if value to the left of `!=` is not equal to the value to its right.
```js Example
{close} != {open}
```
#### `crossover`
***
`True` if series to the left of `crossover` is crossing over the series to its right. Also expressed as:
* `A crossover B = A > B and A[1] < B[1]`
```js Example
{close} crossover {open}
```
`crossover` is not a traditional operator but serves a comparative purpose for alert scripting.
#### `crossunder`
***
`True` if the series to the left of `crossunder` is crossing under the series to its right. Also expressed as:
* `A crossunder B = A < B and A[1] > B[1]`
```js Example
{close} crossunder {open}
```
`crossunder` is not a traditional operator but serves a comparative purpose for alert scripting.
#### `cross`
***
`True` if the series to the left of `cross` is crossing (either over or under) the series to its right. Also expressed as:
* `A cross B = A crossover B or A crossunder B`
* `A cross B = (A - B) * (A[1] - B[1]) < 0`
```js Example
{close} cross {open}
```
`cross` is not a traditional operator but serves a comparative purpose for alert scripting.
### Logical Operators
Logical operators link two expressions together forming a more complex condition being either `True` or `False`.
#### `and`
***
The `and` operator return true if both expressions to its side are `True`.
```js Example
{close} > {open} and {volume} > 1000
```
The above return `True` if the closing price is greater than the opening price while the volume is greater than 1000.
#### `or`
***
The `or` operator return true if either one of the expressions to its side are `True`.
```js Example
{close} > {open} or {close} > {hl2}
```
The above return `True` if the closing price is greater than the opening price or if the closing price is greater than the median price `hl2`.
It is important to note that `or` takes precedence over `and`, for example:
```js
{close} > {open} and {volume} > 1000 or {close} > {hl2} and {volume} > 1000
```
In the above condition `{close} > {open} and {volume} > 1000` and `{close} > {hl2} and {volume} > 1000` would be evaluated first.
### History Referencing Operator `[]`
Users can refer to previous values of a series using the historical referencing operator `[]`. This operator is placed to the right of a placeholder:
```python Synthax
{A}[n]
```
Where `n` is a numerical value determining the number of bars back to go fetching `{A}`.
For example, if we want to get the previous value of the closing price we can use `{close}[1]`.
```python Example
{close} > {close}[1]
```
The above example return `True` if the current closing price is greater than value of the closing price one bar back.
# Placeholders
Placeholders are strings that refer to a specific series of values or events, and have the form `{placeholder_title}`, where `placeholder_title` is the name of the placeholder to access and `{}` makes sure the string is recognized as a placeholder.
Placeholders allow accessing market data such as ohlc prices, volume, but also specific features from their respective toolkit such as signals, indicators...etc.
## Common Placeholders
The placeholders below can be used in all the toolkits.
### Market Data Placeholders
Market data placeholder allows referencing typical market data such as ohlc prices and volume.
These placeholders are available for all toolkits.
| Placeholder | Description |
| ----------- | ------------------------------------------------------------- |
| `{open}` | Open price of the bar |
| `{high}` | High price of the bar |
| `{low}` | Low price of the bar |
| `{close}` | Close price of the bar |
| `{hl2}` | Median price `(high + low) / 2` |
| `{ohlc4}` | Average price `(open + high + low + close) / 4` |
| `{hlc3}` | Typical price `(high + low + close) / 3` |
| `{hlcc4}` | Weighted average of hlc prices `(high + low + 2 * close) / 4` |
| `{volume}` | Volume for the bar |
| `{range}` | Difference between High and Low prices |
| `{tr}` | True Range |
### Time Related Placeholders
Time placeholder allows referencing time related information such as the bar hour and minute, day, bar index...etc.
These placeholders are available for all toolkits.
| Placeholder | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{barindex}` | Index of the current bar |
| `{last_barindex}` | Index of the most recent bar |
| `{second}` | Current bar second |
| `{minute}` | Current bar minute |
| `{hour}` | Current bar hour |
| `{dayofweek}` | Current bar day of the week ranging from 1 to 7, with 1 for sunday |
| `{dayofmonth}` | Current bar day of the month |
| `{weekofyear}` | Current bar week of the year |
| `{month}` | Current bar month of the year |
| `{year}` | Current bar year (with timezone) |
| `{unix_ts}` | Unix timestamp of the bar |
| `{timeframe}` | Chart timeframe in minutes |
| `{hhmm-hhmm}` | Session placeholder, `True` when the bar is located within the specific session interval, see [here](./placeholders#session-placeholder) for more information |
Note that `{dayofweek}` returns the day based on the time of the bar's open. For overnight sessions (e.g. EURUSD, where Monday session starts on Sunday, 17:00) this value can be lower by 1 than the day of the trading day.
The timezone for the time related placeholders is defined by the `Timezone` dropdown setting, defining the timezone using UTC. Default value is `exchange`, which uses the exchange timezones to get the value of the time related placeholders.
#### Session Placeholder
You can easily detect if the current bar is within a specific session (time interval) by using the session placeholder with pattern `{hhmm-hhmm}`, where `hh` is the hour and `mm` the minute.
The value of this placeholder will be `True` when the bar time is located between the start time `{hhmm-` and end time `-hhmm`.
For example, if we want to detect when the bar is located in the session starting at 14:30 and ending at 16:45 we would simply use:
```python Example
{1430-1645}
```
### External Placeholders
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/alert-scripting/placeholders/external.png)
Users can refer to a series of values outside the toolkit by using external placeholder. A maximum of 5 external placeholders can be used:
* `{external1}`
* `{external2}`
* `{external3}`
* `{external4}`
* `{external5}`
In order to use external placeholders, users must first select the external source from the provided dropdowns located in the Alert Scripting settings. Once selected, external sources can be referred from their respective placeholders.
### Custom Alert Creator Placeholders
Placeholders referencing events from the custom alert creator in order to potentially create more complex alerts.
These can either be `True` or `False`.
| Placeholder | Description |
| --------------------- | -------------------------------------------------------- |
| `{custom_alert_step}` | Set conditions from the custom alert creator (except OR) |
| `{custom_alert_or}` | OR condition from the custom alert creator |
### Sequencing Placeholders
Alert scripting includes multiple placeholders helping user create and refine a sequence of conditions.
| Placeholder | Description |
| ------------------ | ------------------------------------------------------------------------------- |
| `{step}` | Current step in the ongoing sequence of conditions, with 0 being the first step |
| `{barssince_step}` | Numbers of bars elapsed since last step or invalidation |
| `{invalidated}` | `True` is previous bar had an invalidation event |
The `{step}` placeholder is a special placeholder used to refer to the current step in a sequence of conditions defined in the scripted alert.
For more information, see [here](./usage#sequencing-and-using-steps).
## User Defined Placeholders (UDP)
User defined placeholders (UDPs) are custom placeholders defined by users and assigned to a specific condition set by the user. These placeholders can later be referenced as part of other conditions or UDPs.
To define a UDP a line must start with a placeholder with a unique name, followed by an equal sign `=`, then followed by the condition we want to assign to this placeholder, for example `my_placeholder} = {close} > {open}`
Let's take a more complex example and say we want to be alerted on a new bullish fair value gaps while we also had one on the previous bar.
Doing this could involve a long and messy script, to make things easier we can create an UDP that refers to the condition of a bullish fair value gaps, and reuse it for our alert condition:
```
{bull_fvg} = {low} > {high}[2] and {close}[1] > {high}[2]
{bull_fvg} and {bull_fvg}[1]
```
Creating an UDP will not trigger an alert from its assigned condition.
## Toolkit Placeholders
The placeholders below are unique to their respective toolkit, and refer to the toolkit features.
### Signals & Overlays Placeholders
#### Data Series Placeholders
| Placeholder | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------------ |
| `{barcolor}` | Bar color value for confirmation signals, with 1 for green, -1 for red, and 0 for purple |
| `{ml_classifier}` | ML Classifier value for signals, ranging from 1 to 4 |
| `{smart_trail}` | Smart Trail value |
| `{smart_trail_extremity}` | Smart Trail extremity value |
| `{rz_r3}` | Reversal Zones Resistance 3 value |
| `{rz_r2}` | Reversal Zones Resistance 2 value |
| `{rz_r1}` | Reversal Zones Resistance 1 value |
| `{rz_s1}` | Reversal Zones Support 1 value |
| `{rz_s2}` | Reversal Zones Support 2 value |
| `{rz_s3}` | Reversal Zones Support 3 value |
| `{catcher}` | Trend Catcher value |
| `{os_catcher}` | Value associated to the trend detected by the Trend Catcher, with 1 for uptrends, and 0 for downtrends |
| `{tracer}` | Trend Tracer value |
| `{os_tracer}` | Value associated to the trend detected by the Trend Tracer, with 1 for uptrends, and 0 for downtrends |
| `{neo_lead}` | Neo Cloud lead line value |
| `{neo_lag}` | Neo Cloud lagging line value |
| `{tp2}` | Take profit 2 level value |
| `{tp1}` | Take profit 1 level value |
| `{sl1}` | Stop loss 1 level value |
| `{sl2}` | Stop loss 2 level value |
| `{optimal_sensitivity}` | Optimal sensitivity value |
| `{trend_strength}` | Trend Strength percentage value |
| `{volatility}` | Lux Volatility percentage value |
| `{squeeze}` | Squeeze Index percentage value |
| `{volume_sentiment}` | Volume Sentiment percentage value |
#### Trigger Placeholders
| Placeholder | Description |
| ------------------------------ | ------------------------------------------------------------- |
| `{bullish_confirmation}` | `True` on a new normal bullish confirmation signal |
| `{bullish_confirmation+}` | `True` on a new strong bullish confirmation signal |
| `{bullish_confirmation_any}` | `True` on a any new bullish confirmation signal |
| `{bullish_confirmation_turn+}` | `True` when a normal bullish confirmation signal turns strong |
| `{bearish_confirmation}` | `True` on a new normal bearish confirmation signal |
| `{bearish_confirmation+}` | `True` on a new strong bearish confirmation signal |
| `{bearish_confirmation_any}` | `True` on any new bearish confirmation signal |
| `{bearish_confirmation_turn+}` | `True` when a normal bearish confirmation signal turns strong |
| `{bullish_contrarian}` | `True` on a new normal bullish contrarian signal |
| `{bullish_contrarian+}` | `True` on a new strong bullish contrarian signal |
| `{bullish_contrarian_any}` | `True` on any new bullish contrarian signal |
| `{bearish_contrarian}` | `True` on a new normal bearish contrarian signal |
| `{bearish_contrarian+}` | `True` on a new strong bearish contrarian signal |
| `{bearish_contrarian_any}` | `True` on any new bearish contrarian signal |
| `{exit_buy}` | `True` on a new exit buy signal |
| `{exit_sell}` | `True` on a new exit sell signal |
| `{bullish_smart_trail}` | `True` if Smart Trail is up-trending |
| `{bearish_smart_trail}` | `True` if Smart Trail is down-trending |
| `{bullish_catcher}` | `True` if Trend Catcher is up-trending |
| `{bearish_catcher}` | `True` if Trend Catcher is down-trending |
| `{bullish_tracer}` | `True` if Trend Tracer is up-trending |
| `{bearish_tracer}` | `True` if Trend Tracer is down-trending |
| `{bullish_neo}` | `True` if Neo CLoud is up-trending |
| `{bearish_neo}` | `True` if Neo CLoud is down-trending |
### Price Action Concepts Placeholders
#### Data Series Placeholders
| Placeholder | Description |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{internal_high}` | Internal high levels value |
| `{internal_low}` | Internal low levels value |
| `{swing_high}` | Swing high levels value |
| `{swing_low}` | Swing low levels value |
| `{itrend}` | The trend value is determined by internal market structures, with positive values for uptrends and negative values for downtrends. In an uptrend, an Internal Change of Character (I-CHoCH) has a value of +1, while an Internal Break of Structure (I-BOS) has a value of +2. The same logic applies to downtrends but uses negative values instead (−1 for an I-CHoCH and −2 for an I-BOS). |
| `{strend}` | The trend value is determined by swing market structures, with positive values for uptrends and negative values for downtrends. In an uptrend, a Swing Change of Character (S-CHoCH) has a value of +1, while a Swing Break of Structure (S-BOS) has a value of +2. The same logic applies to downtrends but uses negative values instead (−1 for an S-CHoCH and −2 for an S-BOS). |
| `{ob_buy_volume}` | Most recent order block buy volume |
| `{ob_sell_volume}` | Most recent order block sell volume |
| `{ob_total_volume}` | Most recent order block total volume |
| `{ob_per_volume}` | Most recent order block percentage volume |
| `{prev_day_high}` | Previous day high value |
| `{prev_day_low}` | Previous day low value |
| `{prev_week_high}` | Previous week high value |
| `{prev_week_low}` | Previous week low value |
| `{prev_month_high}` | Previous month high value |
| `{prev_month_low}` | Previous month low value |
| `{prev_quarter_high}` | Previous quarter high value |
| `{prev_quarter_low}` | Previous quarter low value |
#### Trigger Placeholders
| Placeholder | Description |
| ---------------------------- | --------------------------------------------------- |
| `{bull_ichoch}` | `True` on a new internal bullish CHoCH |
| `{bull_ichoch+}` | `True` on a new internal bullish CHoCH+ |
| `{bull_ibos}` | `True` on a new internal bullish BOS |
| `{bear_ichoch}` | `True` on a new internal bearish CHoCH |
| `{bear_ichoch+}` | `True` on a new internal bearish CHoCH+ |
| `{bear_ibos}` | `True` on a new internal bearish BOS |
| `{bull_schoch}` | `True` on a new swing bullish CHoCH |
| `{bull_schoch+}` | `True` on a new swing bullish CHoCH+ |
| `{bull_sbos}` | `True` on a new swing bullish BOS |
| `{bear_schoch}` | `True` on a new swing bearish CHoCH |
| `{bear_schoch+}` | `True` on a new swing bearish CHoCH+ |
| `{bear_sbos}` | `True` on a new swing bearish BOS |
| `{bull_ob}` | `True` on a new bullish order block |
| `{bear_ob}` | `True` on a new bearish order block |
| `{bull_bb}` | `True` on a new bullish breaker block |
| `{bear_bb}` | `True` on a new bearish breaker block |
| `{bull_ob_mitigated}` | `True` when a bullish order block is mitigated |
| `{bear_ob_mitigated}` | `True` when a bearish order block is mitigated |
| `{bull_ob_within}` | `True` when price is within a bullish order block |
| `{bear_ob_within}` | `True` when price is within a bearish order block |
| `{bull_ob_entered}` | `True` when price enters a bullish order block |
| `{bear_ob_entered}` | `True` when price enters a bearish order block |
| `{bull_ob_exit}` | `True` when price exits a bullish order block |
| `{bear_ob_exit}` | `True` when price exits a bearish order block |
| `{bull_imbalance}` | `True` on a new bullish imbalance |
| `{bear_imbalance}` | `True` on a new bearish imbalance |
| `{bull_imbalance_mitigated}` | `True` when a bullish imbalance is mitigated |
| `{bear_imbalance_mitigated}` | `True` when a bearish imbalance is mitigated |
| `{bull_imbalance_entered}` | `True` when price is within a bullish imbalance |
| `{bear_imbalance_entered}` | `True` when price is within a bearish imbalance |
| `{bull_imbalance_within}` | `True` when price enters a bullish imbalance |
| `{bear_imbalance_within}` | `True` when price enters a bearish imbalance |
| `{bull_imbalance_exit}` | `True` when price exits a bullish imbalance |
| `{bear_imbalance_exit}` | `True` when price exits a bearish imbalance |
| `{trendline_up_new}` | `True` on a new up-trending trendline |
| `{trendline_up_update}` | `True` on a new up-trending trendline update |
| `{trendline_up_break}` | `True` on a new up-trending trendline break |
| `{trendline_dn_new}` | `True` on a new down-trending trendline |
| `{trendline_dn_update}` | `True` on a new down-trending trendline update |
| `{trendline_dn_break}` | `True` on a new down-trending trendline break |
| `{bullish_grab}` | `True` on a new bullish liquidity grab |
| `{bearish_grab}` | `True` on a new bearish liquidity grab |
| `{premium}` | `True` when price is located within a premium zone |
| `{discount}` | `True` when price is located within a discount zone |
### Oscillator Matrix Placeholders
#### Data Series Placeholders
| Placeholder | Description |
| ---------------------- | ------------------------------------------------------------------------------------------------------ |
| `{moneyflow}` | Money Flow oscillator value |
| `{overflow}` | Overflow value |
| `{hyperwave}` | HyperWave oscillator value |
| `{hyperwave_signal}` | HyperWave signal line value |
| `{bullish_confluence}` | Bullish confluence numerical value, 0 for no confluence, 1 for low confluence, 2 for strong confluence |
| `{bearish_confluence}` | Bearish confluence numerical value, 0 for no confluence, 1 for low confluence, 2 for strong confluence |
| `{confluence_meter}` | Confluence meter value |
#### Trigger Placeholders
| Placeholder | Description |
| -------------------------------- | --------------------------------------------------- |
| `{regular_bullish_hyperwave}` | `True` on a new regular bullish HyperWave signal |
| `{regular_bearish_hyperwave}` | `True` on a new regular bearish HyperWave signal |
| `{oversold_bullish_hyperwave}` | `True` on a new oversold bullish HyperWave signal |
| `{overbought_bearish_hyperwave}` | `True` on a new overbought bearish HyperWave signal |
| `{reversal_up-}` | `True` on a new minor bullish reversal signal |
| `{reversal_up+}` | `True` on a new major bullish reversal signal |
| `{reversal_down-}` | `True` on a new minor bearish reversal signal |
| `{reversal_down+}` | `True` on a new major bearish reversal signal |
| `{bullish_divergence}` | `True` on a new bullish divergence |
| `{bearish_divergence}` | `True` on a new bearish divergence |
# Ready-made Scripts
You can find the pre-configured scripts below adapted for various use cases. To use them, simply copy the script code and paste them in the "Condition Input Field" setting.
## S\&O Toolkit
### Confirmation Signals during New York Session
```
{bullish_confirmation_any} and {0900-1700} or {bearish_confirmation_any} and {0900-1700}
```
Use UTC-5 as timezone.
### Optimal Sensitivity Change
```
{optimal_sensitivity} != {optimal_sensitivity}[1]
```
### Early short signal, weak trend confirmation above smart trail
```
{bearish_confirmation_any} and {ml_classifier} < 3 and {bullish_smart_trail}
```
### Reversal setup, Bullish exit into strong trend change
```
{exit_buy}
{bearish_confirmation_any}
{barcolor} == -1
```
### Contrarian inside upper Reversal Zone
```
{bearish_contrarian_any} and close > {rs_r2} and close < {rs_r3}
```
### Price Retesting Smart Trail with bearish confirmation
```
{bearish_confirmation_any} and {bearish_smart_trail}
{high} crossover {smart_trail_extremity} and {bearish_smart_trail}
```
### Strong Buy Signal with Volume Confirmation
```
{bullish_confirmation+} and {volume} > {volume}[1] and {trend_strength} > 60
```
### Smart Trail Trend Change with Confirmation
```
{bullish_smart_trail} and not {bullish_smart_trail}[1] and {bullish_confirmation_any}
```
### Exit During High Volatility & Squeeze
```
{exit_sell} and {volatility} > 75 and {squeeze} > 80
```
### Strong Trend with Multiple Indicators
```
{bullish_catcher} and {bullish_tracer} and {bullish_neo} and {trend_strength} > 70
```
### Neo Cloud Breakout with Volume
```
{close} cross {neo_lead} and {volume} > {volume}[1]
```
### Take Profit Reached
```
{close} cross {tp1} or {close} cross {tp2}
```
### Stop Loss Reached
```
{close} cross {tp1} or {close} cross {tp2}
```
### Strong Trend Shift
```
{bullish} = {bullish_confirmation_any} and {bearish_smart_trail}[1] and {volatility} > 50
{bearish} = {bearish_confirmation_any} and {bullish_smart_trail}[1] and {volatility} > 50
{bullish} or {bearish}
```
## PAC Toolkit
### Bearish Order Block Creation with Bullish Volume
```
{bear_ob} and {ob_buy_volume} > {ob_sell_volume}
```
### Swing / Internal CHOCH Confluence
```
{bull_schoch} and {bull_ichoch} or {bull_schoch+} and {bull_ichoch+}
```
### Order Block Mitigation Setup
```
{bull_ob_mitigated} and {bullish_grab}
```
### Premium Zone Trading
```
{premium} and {bull_imbalance} and {swing_high} < {close}
```
### Multiple Block Confluence
```
{bull_ob_within} and {bull_imbalance_within}
```
### Trendline Break with Structure
```
{trendline_up_break} and {bear_ichoch}
```
### High-Probability Reversal
```
{bear_ob_entered} and {bearish_grab} and {prev_week_high} < {close}
```
### Key Bullish Level Break
```
{any_choch} = {bullish_ichoch} or {bullish_ichoch+} or {bullish_schoch} or {bullish_schoch+}
{close} > {prev_day_high} and {any_choch}
```
### Complex Structure Analysis
```
{bull_bb} and {bull_imbalance_entered} and {trendline_up_new}
```
## Oscillator Matrix Toolkit
### Strong Reversal Signal
```
{reversal_up+} and {bullish_divergence} and {hyperwave} > {hyperwave_signal}
```
### High Confluence Setup
```
{bullish_confluence} == 2 and {moneyflow} > 60 and {overflow} > 70
```
### Oversold Bounce
```
{oversold_bullish_hyperwave} and {bullish_divergence} and {confluence_meter} > 70
```
### Multiple Indicator Confirmation
```
{regular_bullish_hyperwave} and {reversal_up+} and {moneyflow} crossover 50
```
### Divergence with Momentum
```
{bullish_divergence} and {hyperwave} crossover {hyperwave_signal} and {moneyflow} > 50
```
### Strong Trend Confirmation
```
{bullish_confluence} > 0 and {overflow} > 60 and {moneyflow} > {moneyflow}[1]
```
### HyperWave Signal with Confluence
```
{regular_bullish_hyperwave} and {bullish_confluence} == 2 and {confluence_meter} > 80
```
### Major Reversal Pattern
```
{reversal_up+} and {moneyflow} > 70 and {hyperwave} > {hyperwave}[1]
```
### Early Trend Detection
```
{regular_bullish_hyperwave} and {moneyflow} crossover 30 and {overflow} > 50
```
### High Probability Setup
```
{bullish_divergence} and {reversal_up+} and {bullish_confluence} == 2 and {confluence_meter} > 75
```
# Usage
Alert scripting is a good way to create more complex alerts without feeling limited by the number of conditions or their limited reusability.
This page covers the syntax of scripted alerts as well as showcasing typical use cases for alert scripting.
## Building Simple Conditions
Users can define a simple condition over a single line in the tex area "Condition Input Field".
In order to build effective conditions, we will need to reference specific data using [placeholders](./placeholders) and compare this data with each other using [operators](./operators).
For example, we could define the following condition:
```
{close} > {close}[14]
```
Here we have the following elements:
* `{close}` placeholder, referencing the current closing price value
* Greater than operator `>`, testing if the value to its left is greater than the value to its right
* `{close}[14]` refer to the value of the closing price (`{close}`) 14 bars ago (defined by the historical referencing operator `[14]`)
This simple condition is `True` if the current closing price is higher than the closing price 14 bars ago.
### Combining Conditions
Creating slightly more complex conditions can involve combining individual ones into a single one, allowing us to retain more precise events or on the contrary, loosen our condition rules.
#### Combination using `and`
Using the operator `and` allows to require more than one "sub-conditions" to be valid for the whole to be true.
For example, we could reuse our previous condition but be more strict such that we only want to know when the current closing price is greater than the closing price 14 bars ago when it is between 1pm and 3pm (exchange timezone). To do this we can simply add another sub-condition leading to:
```
{close} > {close}[14] and {hour} >= 13 and {hour} <= 15
```
`and` is similar to using the custom alert creator and having multiple enabled conditions using the same step number.
Another example where we can combine multiple conditions is to detect FVG's, for the case of a bullish FVG we have the following requirements:
* current low price is higher than the high price two bars ago
* previous closing price is higher than the high price two bars ago
We can use alert scripting to detect bullish FVG's from this combination of conditions as follows:
```
{low} > {high}[2] and {close}[1] > {high}[2]
```
#### Combination using `or`
Sometimes we might be interested in getting alerted about two specific different conditions, without having to create two specific alerts. This is where `or` can be useful, requiring only one of the defined sub-conditions to be true in order for the alert to trigger.
For example, we could want to be alerted either on a strong bullish confirmation signal, or when the Smart Trail turns bullish, this could be easily achieved using the following script:
```
{bullish_confirmation+} or {bullish_smart_trail} and not {bullish_smart_trail}[1]
```
Here `{bullish_confirmation+}` is true when we have a strong bullish confirmation signal.
`{bullish_smart_trail}` when the Smart Trail is bullish, with the whole `{bullish_smart_trail} and not {bullish_smart_trail}[1]` being true when the Smart Trail is currently bullish while the previous Smart trail is **not** bullish.
`or` takes precedence over `and`. You can think of this as a way to split a whole condition into multiple sub-conditions.
For example if we have `{A} and {B} or {C} > 0 or {D} and {E}`, the precedence of or would split this conditions leading to `{A} and {B}`, `{C} > 0`, and `{D} and {E}`.
Each of these individual sub-conditions would be evaluated individually, if one of them is true, then our whole condition is true.
## Sequencing and Using Steps
Users can create sequences of conditions, triggering an alert when the last step is triggered.
Steps are made using linebreaks, with each conditions over a new line being a step. When a step is valid, the next step condition located on the line below will be evaluated at the next bar.
Once the last step is evaluated and is true, the sequence is completed which can trigger an alert (if set) and will switch to the first defined step on the next bar.
This is similar in practice to how the custom alert creator works.
For example, we can define a sequence consisting of the following conditions:
* Step 1: High price is lower than the previous high price
* Step 2: Low price is lower than the previous low price
* Step 3: Closing price is lower than the opening price
Leading to the following script:
```
{high} < {high}[1]
{low} < {low}[1]
{close} < {open}
```
For clarity you can assign conditions over a single line to a variable defined at the start.
```
condition1 = ...
condition2 = ...
condition3 = ...
```
Do note that the variable cannot be referenced.
### Invalidation
Invalidation refers to going back to evaluating the first step of a sequence of conditions when one or more specific conditions are true.
Invalidation takes place prior to evaluating steps.
Invalidation conditions can be defined using a variable name containing the term `invalidate`:
```
invalidate = ...
```
If the condition assigned to `invalidate` is true, we will go back to evaluating the sequence of conditions to step 1.
multiple invalidation conditions can be defined separately for clarity:
```
invalidate1 = ...
invalidate2 = ...
invalidate3 = ...
```
#### Step Specific Invalidation
It is possible to invalidate specific individual steps by requiring in the invalidation conditon(s) for this step to be the one being currently evaluated, this is done using the `{step}` placeholder.
To illustrate this, we can reuse our previous sequence of conditions:
```
{high} < {high}[1]
{low} < {low}[1]
{close} < {open}
```
Maybe that we don't want the closing price to be greater than the opening price as long as the second step is the one being evaluated, this can be achieved by simply adding a variable `invalidate` as follows:
```
{high} < {high}[1]
{low} < {low}[1]
{close} < {open}
invalidate = {close} > {open} and {step} == 1
```
Here `{step} == 1` refer to the second step needing to be the one being evaluated in the sequence to apply the invalidation condition `{close} > {open}`.
In `{step}` 0 refer to the first step because it is 0 indexed.
#### Invalidate on Step Evaluation Duration
Sometimes we might not want to keep evaluating one or multiple steps for an excessive number of bars, and instead prefer having each step being triggered with a short interval in between.
This can easily be done using invalidation and the placeholder `barssince_step`, which quantify the number of bars that elapsed since a step has started being evaluated or since invalidation took place.
For example, we can invalidate a sequence of conditions if the amount of ellapsed since a step is greater than 5 bars:
```
{high} < {high}[1]
{low} < {low}[1]
{close} < {open}
invalidate = {barssince_step} > 5
```
### Global Filters
It is possible to define a single global condition that will be applied to all defined steps conditions using a variable name containing `filter`.
```
filter = ...
```
This can be useful to avoid repeated sub-conditions in your step conditions.
For example, if we have:
```
{high} < {high}[1] and volume > 500
{low} < {low}[1] and volume > 500
{close} < {open} and volume > 500
```
We can instead use a global filter to avoid repeating `volume > 500`, leading to:
```
{high} < {high}[1]
{low} < {low}[1]
{close} < {open}
filter = volume > 500
```
## Visualizing Scripted Alerts Conditions
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/alert-scripting/usage/highlight.png)
In order to make sure the scripted alert corresponds to the desired result and that it triggers as expected, users can visualize when the alert would have triggered using the "Highlight On Chart" setting.
Enabling this setting will display a series of squares located at the top or bottom of the chart. When the condition is true the square will be colored in blue or the selected color from the setting.
Users can control the location of this highlighter on the chart trough the dropdown menu.
"Top" and "Bottom" locations are available, while the Oscillator Matrix toolkit also includes a "Center" option.
"None" will hide the scripted alert highlighting.
## Setting Scripted Alerts
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/alert-scripting/usage/alert_toggle.png)
Once a scripted alert is defined, we can create an alert using it as a condition by enabling the "Scripted Alert" setting in the "Any alert() Function Call" settings group located at the bottom of the toolkit settings.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/alert-scripting/usage/alert.png)
Then we can create the alert by clicking on the alert menu, selecting the toolkit in the condition dropdown, and making sure the dropdown below has "any alert() function call" selected.
## Comments
To make a scripted alert easier to read, users can add comments by starting a line with `//`.
Comments will be ignored when a scripted alert is evaluated.
For example:
```
// Step 1: candle color becomes green
{barcolor} > 0 and not {barcolor}[1] > 0
// Step 2: candle color is red
{barcolor} < 0
```
# Alerts
The Oscillator Matrix® can alert users for multiple events relevant to the existing features in the toolkit. To learn more about how to set alerts in general see [how to create alerts on tradingview](/docs/getting-started/setup-alerts).
In order for an alert to work in the toolkit make sure the related feature is enabled
## Any alert() function call
It possible to set only one alert alerting for multiple selected conditions by the users.
Conditions can be selected in the **Any alert() function call** group in the indicator settings. Then the user can set an alert by selecting "any alert() function call" as condition.
Alert conditions for the "any alert() function call" use a `once per bar close` frequency
### Any Alert() Function Call Message
Users can set a custom message that will be used when an any alert() function call condition is triggered in the message field below the list of conditions. Users can use placeholders to customize messages and return useful information, the following placeholders are supported:
#### Symbol Placeholders
| Placeholder | Description | Example |
| ------------ | ------------------------------------------------------- | ----------------------- |
| `{default}` | Default message associated with the trigerred condition | `"Bullish Divergence"` |
| `{ticker}` | Symbol ticker without the exchange prefix | `"MSFT"` |
| `{exchange}` | Symbol exchange/data source | `"COINBASE"` |
| `{sector}` | Sector of the symbol, `na` if the symbol has no sector | `"Technology Services"` |
| `{market}` | Symbol market type | `"Stocks"` |
#### Time Placeholders
| Placeholder | Description | Example |
| ----------- | -------------------------------------------------------------------------------------- | ----------------- |
| `{tf}` | Chart timeframe, includes "S" for seconds, "D" for days, "W" for weeks, "M" for months | `"15"` |
| `{time}` | Unix time in milliseconds in exchange timezone | `"1705331385158"` |
| `{year}` | Current year in exchange timezone | `"2024"` |
| `{month}` | Current month in exchange timezone | `"7"` |
| `{day}` | Current day of the month in exchange timezone | `"21"` |
#### Data Placeholders
| Placeholder | Description | Example |
| ----------- | -------------- | ---------- |
| `{open}` | Opening price | `"1.2145"` |
| `{high}` | High price | `"1.2357"` |
| `{low}` | Low price | `"1.1983"` |
| `{close}` | Closing price | `"1.0569"` |
| `{volume}` | Current volume | `"45216"` |
#### Indicators Placeholders
| Placeholder | Description | Example |
| -------------------- | ---------------------------------------------------------------------------------------------------------------- | --------- |
| `{moneyflow}` | Money Flow oscillator value | `"56.89"` |
| `{bull_overflow}` | Bullish Overflow value | `"51.63"` |
| `{bear_overflow}` | Bearish Overflow value | `"46.52"` |
| `{hyperwave}` | HyperWave oscillator value | `"78.44"` |
| `{hyperwave_signal}` | HyperWave oscillator signal line value | `"72.61"` |
| `{bull_confluence}` | Bullish confluence zone value. 2 if exhibiting strong confluence, 1 for weak confluence, and 0 for no confluence | `"2"` |
| `{bear_confluence}` | Bearish confluence zone value. 2 if exhibiting strong confluence, 1 for weak confluence, and 0 for no confluence | `"0"` |
| `{confluence_meter}` | Confluence meter value | `"89.73"` |
### Format as JSON
Use the following message template to receive "any alert() function call" messages in the JSON format:
```json
{
"alert": "{default}",
"ticker": "{ticker}",
"tf": "{tf}",
"ohlcv":{
"open": {open},
"high": {high},
"low": {low},
"close": {close},
"volume": {volume}
},
"bartime": {time}
}
```
## Custom Alert Creator
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/alerts/custom.png)
Users wishing to construct more complex alerts using features within the toolkit and/or external indicators can use the **Custom Alert Creator**.
The custom alert creator allows alerting when various user set conditions are met or when a sequence of conditions is complete.
A user wishing to be alerted when the money flow is bullish (above 50) while the HyperWave is overbought (above 80) could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/alerts/custom_example.png)
A custom alert can be triggered as an *any alert() function call* if the setting is selected or as a regular alert when selected in the Tradingview alert creator menu.
### Steps
Steps allows creating sequence of conditions, which when met trigger an alert. When a condition with a step equal to 1 is met the next condition associated with step 2 will be evaluated (if enabled) and so on for higher steps (if any).
Conditions with a same associated step will require for both condition to be true in order for the condition associated to a higher step (if any) to be evaluated. This allows certain conditions to act as filters.
A user wishing to be alerted when the HyperWave cross under 80 after any bearish reversal signal could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/alerts/step_example.png)
Make sure steps are set such that they form a linear sequence. For example if the lowest step is 2 or if the set steps are only 1 and 3 an error will be returned.
#### OR Step Operator
The "OR" step operator can be used to get alerted for any additional condition using "OR" as step, in addition to other set custom alert conditions.
Conditions using the "OR" step can be highlighted using a different color, which can be set from the Custom Alert Creator settings.
#### All Step Operator
The "All" step operator can be used to filter any set "Step" condition, including "OR" and "Invalidate".
This step operator can be useful if all the steps in a sequence needs to obey a specific rule.
If a user has 2 steps set, and requires both of these to occur at a specific time interval such as 9am to 1pm, then we can use a "Session" condition using the "All" step, requiring our step 1 and step 2 to be occur between 9am and 1pm.
#### Invalidate Step
The "Invalidate" step allows to set a condition as an "invalidation condition". When this condition is triggered while a sequence of conditions is incomplete, the sequence will restart at step 1.
If multiple steps are set as "Invalidate" any of the conditions being true will reset the sequence of conditions, as such not all of them are required to be true for the sequence of conditions to reset.
Let's take an example where we use 2 regular steps and one "Invalidate" step. The alert will trigger when step 2 trigger after step 1 has been triggered.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
### Invalidation Behaviors
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below:
#### Invalidate On Step 1
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
#### Invalidate On Any Repeated Step
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
### Maximum Step Interval
Users can determine what is the maximum allowed horizontal distance (in bars) between two steps by enabling the "Maximum Step Interval" setting. This allows restricting steps separated by a large amount of bars.
If the amount of bars since a step exceed the set threshold, then the conditions sequence is reset, and we start evaluating from step 1 again.
### Highlight On Chart
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert conditions occur (displayed by default). Users can choose the location of this visual element (top, bottom of the oscillator or centered).
## Alerts Reference
***
### Pre-Set Alerts
| Alert | Description |
| ------------------------- | --------------------------------------------------------------------- |
| HyperWave Signal Up | Triggers on the event of an HyperWave signal up |
| HyperWave OS Signal Up | Triggers on the event of an HyperWave oversold signal up |
| HyperWave Signal Down | Triggers on the event of an HyperWave signal down |
| HyperWave OB Signal Down | Triggers on the event of an HyperWave overbought signal down |
| Reversal Up | Triggers on the event of a detected reversal up signal |
| Reversal Up + | Triggers on the event of a detected reversal up + signal |
| Reversal Down | Triggers on the event of a detected reversal down signal |
| Reversal Down + | Triggers on the event of a detected reversal down + signal |
| Bullish Divergence | Triggers on the event of a detected bullish divergence |
| Bearish Divergence | Triggers on the event of a detected bearish divergence |
| Strong Bullish Confluence | Triggers when a strong bullish confluence is detected |
| Weak Bullish Confluence | Triggers when a weak bullish confluence is detected |
| Strong Bearish Confluence | Triggers when a strong bearish confluence is detected |
| Weak Bearish Confluence | Triggers when a weak bearish confluence is detected |
| Bullish Overflow | Triggers when bullish overflow is detected |
| Bearish Overflow | Triggers when bearish overflow is detected |
| Custom Alert Condition | Triggers on the event of a user set custom alert condition being true |
### Any alert() Function Call
export const Exclamation = ({tooltip}) => (
);
| Alert | Description | Default |
| -------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| HWO Signal Up | Triggers on the event of an HyperWave signal up | |
| Oversold | Triggers on the event of an HyperWave oversold signal up | |
| HWO Signal Down | Triggers on the event of an HyperWave signal down | |
| Overbought | Triggers on the event of an HyperWave overbought signal down | |
| Reversal Up | Triggers on the event of a detected reversal up signal | |
| + | Triggers on the event of a detected reversal up + signal | |
| Reversal Down | Triggers on the event of a detected reversal down signal | |
| + | Triggers on the event of a detected reversal down + signal | |
| Bullish Overflow | Triggers when bullish overflow is detected | |
| Bearish Overflow | Triggers when bearish overflow is detected | |
| Bullish Divergence | Triggers on the event of a detected bullish divergence | |
| Bearish Divergence | Triggers on the event of a detected bearish divergence | |
| Bullish Confluence | Triggers when a weak bullish confluence is detected | |
| Strong | Triggers when a strong bullish confluence is detected | |
| Bearish Confluence | Triggers when a weak bearish confluence is detected | |
| Strong | Triggers when a strong bearish confluence is detected | |
| Custom Alert Creator | Triggers on the event of a user set custom alert condition being true | |
# Confluence
Confluence is an important aspect when dealing with multiple indicators. In this toolkit two features allows the users to easily assess if the confluence between each toolkit element in high or low.
## Confluence Zones
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/confluence/zones.png)
Users can see on the oscillators pane one upper (above 100) and lower (under 0) zone, measuring the bullish/bearish confluence between the Hyper Wave and Money Flow oscillators.
When both the Hyper Wave and Money Flow oscillators are indicating an uptrend the upper zone is colored with a darker green. If only one of the oscillators is indicating an uptrend then the confluence zone will have a brighter green. This logic applies to the lower zone in the case of a downtrend.
Confluence zones have an associated numerical that can be used in external scripts using the output "Upper Confluence Value" for the upper confluence zone and "Lower Confluence Value" for the lower confluence zone, returned values include:
* 2: Strong confluence
* 1: Weak confluence
* 0: No confluence
## Confluence Meter
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/confluence/meter.png)
The confluence meter quantifies the amount of confluence between each indication returned by the oscillator, elements taken into account are:
* Trend indicated by the Hyper Wave relative to its signal line
* Trend indicated by the Hyper Wave
* Trend indicated by the Money Flow
* Overflow
* Divergences
The meter giving a higher measurement would be indicative of a more significant bullish confluence, that is most elements are indicative of a bullish trend, while a lower measurement would be indicative of a more significant bearish confluence.
The confluence meter had an associated numerical that can be used in external scripts using the output "Confluence Meter Value"
# HyperWave
The HyperWave is a normalized adaptive oscillator aiming to precisely reflect price trends without returning a high amount of noise.
It is the primary oscillator used to detect trends/reversals within the LuxAlgo Oscillator Matrix®.
This oscillator is directly controlled by the **Main Length** setting, with higher values returning a smoother result reflecting longer term trends.
The HyperWave and every associated components (Signal line, turning points, divergences) can be disabled by toggling off "Show HyperWave"
## Signal Line
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/signal.png)
The Hyper Wave includes a signal line allowing to reactively detect trend directions. The area between the Hyper Wave and its signal line is displayed to easily assess the current trend direction, with a color determined by the position of the Hyper Wave relative to its signal line.
Users can use two different algorithms for computing the signal line:
* SMA : A simple moving average of the Hyper Wave is used as signal line.
* TS : A trailing stop of the Hyper Wave is used as signal line. This algorithm makes the signal line less sensitive to noisy variations of the Hyper Wave.
| SMA | TS |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| ![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/sma.png) | ![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/ts.png) |
The users can select the length of the signal line using the numerical input at the right of the **Signal** drop-down menu.
It can be more interesting to use a higher signal line length when the **Main Length** setting is high.
## Turning Points
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/turning-points.png)
Crosses made between the HyperWave and its signal line are highlighted by dots on the oscillators pane, these are **turning points**.
By default, a Hyper Wave crossing over the signal line is highlighted in green while a Hyper Wave crossing under the signal line is highlighted in red.
### Overbought/Oversold Turning Points
The displayed turning points exist in different sizes, with bigger dots occurring when the crosses are made within an overbought/oversold area.
* Oversold Turning Point : Occurs when the Hyper Wave cross over its signal line while the Hyper Wave is under 20
* Overbought Turning Point : Occurs when the Hyper Wave cross under its signal line while the Hyper Wave is over 80
## Real Time Divergences
Divergences between the price and the HyperWave oscillator are detected in real-time. The users can return longer term divergences by decreasing the **Divergence Sensitivity %**, with lower values of this setting making divergence detection more sensitive to noisy variations of the Hyper Wave.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/divergences.png)
Divergences are highlighted by a blue line for bullish divergences and by a red line for bearish divergences.
### Divergences On Price Chart
In order to reference the price points returning the divergence with the HyperWave, divergences lines are directly displayed on the user price chart thanks to "Show Divergences On Chart".
It is important to note that, unlike the divergence lines that appear in the oscillator pane, the divergence lines on the user chart do not appear exactly where the divergences are detected; rather, they are set retrospectively.
Because the amount of lines is limited to a maximum of 500, disabling "Show Divergences On Chart" can increase the amount of historical divergences highlighted on the oscillator pane.
# Introduction
Oscillator Matrix® is an all-in-one indicator that incorporates 6+ unique components designed for interoperability & confluence with one another to provide a powerful trend following & reversal detection experience.
Users can create various ways to utilize the indicator's features together such as looking for excess money flowing into the market alongside strong reversal signals appearing, or getting real-time divergence signals alongside a lack of money flowing into the market to predict upcoming trends.
This indicator is described as an 'Oscillator Matrix' as it's made up of many different components that can create a systematic approach to analyzing markets alone, however, the indicator also can serve as a great secondary piece to a user's primary analysis with or without our other LuxAlgo Premium indicators.
## Features
Oscillator Matrix® toolkit includes the following features:
## Alerts
Oscillator Matrix® can alert the user for multiple conditions, learn more about the provided alert conditions/setups here:
## Settings Reference
Oscillator Matrix® includes various settings affecting the appearance and behavior of the toolkit, most of which are specific to the feature they affect.
Users can access the list of user settings and their descriptions in the following page:
# Reversal Signals
Oscillator Matrix® comes with a complete trend reversals detection system, allowing users to timely assess when a trend is changing direction.
## Classification
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/reversal-signals/reversals.png)
Different kind of reversals are returned on the oscillators pane, minor (-) and major (+) reversals signals.
Minor reversals are frequent signals often indicative of shorter term reversals, such as the top/bottom of an impulse (thus announcing a retracement). Minor reversals are highlighted by circles.
Major reversals can occur later in a trend, and can be indicative of a more significant reversals. Major reversals are highlighted by triangles.
# Settings Reference
To open the settings menu, place your mouse pointer over the indicator title on your chart, you will then see a list of icons appear, and click on the gear ⚙️ icon.
You can also open the settings panel by double-clicking any element displayed by the toolkit.
## Smart Money Flow
***
### Show Money Flow
Display Smart Money Flow oscillator
### Money Flow
Money flow oscillator length, higher values will highlight longer term money flow.
### Smooth
Money flow oscillator smoothing amount, higher values will return a smoother Money Flow oscillator.
## HyerWave
***
### Show HyerWave
Display HyperWave oscillator
### HyperWave Length
HyperWave length setting. Higher values will highlight longer term variations from the HyperWave oscillator.
### Signal
Type of signal line displayed alongside the HyperWave.
Length of the signal method applied to the HyperWave oscillator, higher values will return longer term signals returned from the HyperWave.
### Colors
Transparency of the area between the HyperWave and its signal plot.
## HyperWave Divergences
***
### Divergences Sensitivity %
Sensitivity of the divergences detection algorithm, with lower values will return fewer and longer-term divergences.
### Show Divergences
Display divergences between the price and HyperWave oscillator on the oscillator pane.
### Show Divergences On Chart
Display divergences between the price and HyperWave oscillator on the price chart.
## Reversals
***
### Reversal Factor
Controls the frequency at which reversals are detected by the HyperWave, with higher values returning less frequent and longer term potential reversals.
### Show Reversals
Display reversal signals at the top/bottom of the indicator pane.
## Confluence
***
### Upper Confluence
Display upper confluence area.
### Lower Confluence
Display lower confluence area.
### Show Confluence Meter
Display confluence meter.
### Meter Width
Width of the confluence meter.
## Custom Alert Creator
***
### Money Flow
Enable the selected Money Flow condition to be used in the custom alert creator.
Comparison operator used to compare the current Money Flow value with the inline numerical input.
Value used to compare the Money Flow with.
#### Step
Money Flow condition step in the custom alert creator sequence.
### Overflow
Enable the selected Overflow condition to be used in the custom alert creator.
Comparison operator used to compare the current Overflow value with the inline numerical input.
Value used to compare the Overflow with.
#### Step
Overflow condition step in the custom alert creator sequence.
### HyperWave
Enable the selected HyperWave condition to be used in the custom alert creator.
HyperWave conditions. Includes comparison operators used to compare the current HyperWave value with the inline numerical input.
Value used to compare the HyperWave with if a comparison operator is selected in the dropdown conditions.
#### Step
HyperWave condition step in the custom alert creator sequence.
### Reversals
Enable the selected Reversal condition to be used in the custom alert creator.
Reversal conditions.
#### Step
Reversal condition step in the custom alert creator sequence.
### Divergences
Enable the selected Divergences condition to be used in the custom alert creator.
Divergences conditions.
#### Step
Divergences condition step in the custom alert creator sequence.
### Confluence
Enable the selected Confluence condition to be used in the custom alert creator.
Confluence conditions.
#### Step
Confluence condition step in the custom alert creator sequence.
### Confluence Meter
Enable the selected Confluence Meter condition to be used in the custom alert creator.
Comparison operator used to compare the current Confluence Meter value with the inline numerical input.
Value used to compare the Confluence Meter with.
#### Confluence Meter Step
Confluence Meter condition step in the custom alert creator sequence.
### External Condition (1)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (1)
First external source condition step in the custom alert creator sequence.
### External Condition (2)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (2)
Second external source condition step in the custom alert creator sequence.
### External Condition (3)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
Source input.
Comparison operator used to compare the selected source to the selected numerical value.
Numerical input.
#### External Step (3)
Third external source condition step in the custom alert creator sequence.
### Invalidation Behavior
No invalidation behavior.
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the user-set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below.
### Maximum Step Interval
Maximum allowed horizontal distance (in bars) between two steps.
If the amount of bars since a step exceed the selected threshold, then the conditions sequence is reset, and we start evaluating from step 1 again.
### Highlight Custom Alert Triggers
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert conditions occurs (displayed by default).
## Calculation
***
### Calculated Bars
Amount of most recent bars used for the calculation of the toolkit. Lower values allow returning faster computation times.
# Smart Money Flow
Money Flow and liquidity are core concepts with the Oscillator Matrix®. Various elements centered around this concept are provided to detect longer term trends, assess market participants behaviours, and detect reversals.
The Money Flow and every associated components (overflow, thresholds) can be disabled by toggling off "Show Money Flow"
## Money Flow
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/smart-money-flow/money-flow.png)
The toolkit include one money flow indicator that aims to detect trends based on market participants activity.
Compared to the Hyper Wave the Money Flow oscillator can return longer term indications and be used to support shorter term indications.
## Overflow
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/smart-money-flow/overflow.png)
Overflow occurs when excessive liquidity relative to a trend length enters the market, this can highlight late trend following participants entering the market, and can announce potential reversals.
### Money Flow Thresholds
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/smart-money-flow/thresholds.png)
Users can gauge market activity by using the provided Money Flow thresholds, two extremities displayed above/under the central 50 levels.
When the Money Flow oscillator is above the upper threshold there is significant one-sided bullish activity on the market. When the Money Flow oscillator is under the lower threshold there is significant one-sided bearish activity on the market.
Money flow fluctuating within the thresholds can highlight a more balanced market.
# Alerts
The Price Action Concepts® can alert users for multiple events relevant to the existing features in the toolkit. To learn more about how to set alerts in general see [how to create alerts on tradingview](/docs/getting-started/setup-alerts).
In order for an alert to work in the toolkit make sure the related feature is enabled
## Any Alert() Function Call
Users can create a single alert for multiple conditions using the *any alert() function call* alert condition. Conditions users want to be alerted for are grouped by the type of features they affect (structures, volumetric order blocks, imbalances...etc) and are located at the bottom of the toolkit settings.
Once conditions are toggled on users only need to set an alert using the *any alert() function call* as condition.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/alerts/set.png)
### Any Alert() Function Call Message
Users can set a custom message that will be used when an any alert() function call condition is triggered in the message field below the list of conditions. Users can use placeholders to customize messages and return useful information, the following placeholders are supported:
#### Symbol Placeholders
| Placeholder | Description | Example |
| ------------ | ------------------------------------------------------- | ------------------------------- |
| `{default}` | Default message associated with the trigerred condition | `"Mitigated Bullish Imbalance"` |
| `{ticker}` | Symbol ticker without the exchange prefix | `"MSFT"` |
| `{exchange}` | Symbol exchange/data source | `"COINBASE"` |
| `{sector}` | Sector of the symbol, `na` if the symbol has no sector | `"Technology Services"` |
| `{market}` | Symbol market type | `"Stocks"` |
#### Time Placeholders
| Placeholder | Description | Example |
| ----------- | -------------------------------------------------------------------------------------- | ----------------- |
| `{tf}` | Chart timeframe, includes "S" for seconds, "D" for days, "W" for weeks, "M" for months | `"15"` |
| `{time}` | Unix time in milliseconds in exchange timezone | `"1705331385158"` |
| `{year}` | Current year in exchange timezone | `"2024"` |
| `{month}` | Current month in exchange timezone | `"7"` |
| `{day}` | Current day of the month in exchange timezone | `"21"` |
#### Data Placeholders
| Placeholder | Description | Example |
| ------------------ | --------------------------------------------- | ---------- |
| `{open}` | Opening price | `"1.2145"` |
| `{high}` | High price | `"1.2357"` |
| `{low}` | Low price | `"1.1983"` |
| `{close}` | Closing price | `"1.0569"` |
| `{volume}` | Current volume | `"45216"` |
| `{ob_buy_volume}` | Most recent order block internal buy volume | `"560"` |
| `{ob_sell_volume}` | Most recent order block internal sell volume | `"480"` |
| `{ob_volume}` | Most recent order block total internal volume | `"1040"` |
### Format as JSON
Use the following message template to receive "any alert() function call" messages in the JSON format:
```json
{
"alert": "{default}",
"ticker": "{ticker}",
"tf": "{tf}",
"ohlcv":{
"open": {open},
"high": {high},
"low": {low},
"close": {close},
"volume": {volume},
"order block buy volume": {ob_buy_volume},
"order block sell volume": {ob_sell_volume},
"order block total volume": {ob_volume}
},
"bartime": {time}
}
```
## Custom Alert Creator
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/alerts/custom.png)
Users wishing to construct more complex alerts using features within the toolkit and/or external indicators can use the **Custom Alert Creator**.
The custom alert creator allows alerting when various user-set conditions are met or when a sequence of conditions is complete.
A user wishing to be alerted when any internal market structure occurs within 1AM and 5AM of the symbol timezone could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/alerts/custom_example.png)
A custom alert can be triggered as an *any alert() function call* if the setting is selected or as a regular alert when selected in the Tradingview alert creator menu.
### Steps
Steps allow creating a sequence of conditions, which when met trigger an alert. When a condition with a step equal to 1 is met the next condition associated with step 2 will be evaluated (if enabled) and so on for higher steps (if any).
Conditions with the same associated step will require both conditions to be true in order for the condition associated with a higher step (if any) to be evaluated. This allows certain conditions to act as filters.
A user wishing to be alerted when the price enters a bullish imbalance after any internal bullish market structure could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/alerts/step_example.png)
*Make sure internal market structures and imbalances are enabled*.
Make sure steps are set such that they form a linear sequence. For example, if the lowest step is 2 or if the set steps are only 1 and 3 an error will be returned.
#### OR Step Operator
The "OR" step operator can be used to get alerted for any additional condition using "OR" as a step, in addition to other set custom alert conditions.
Conditions using the "OR" step can be highlighted using a different color, which can be set from the Custom Alert Creator settings. Users can choose the location of this visual element (top or bottom of the chart).
#### All Step Operator
The "All" step operator can be used to filter any set "Step" condition, including "OR" and "Invalidate".
This step operator can be useful if all the steps in a sequence needs to obey a specific rule.
If a user has 2 steps set, and requires both of these to occur at a specific time interval such as 9am to 1pm, then we can use a "Session" condition using the "All" step, requiring our step 1 and step 2 to be occur between 9am and 1pm.
#### Invalidate Step
The "Invalidate" step allows to set a condition as an "invalidation condition". When this condition is triggered while a sequence of conditions is incomplete, the sequence will restart at step 1.
If multiple steps are set as "Invalidate" any of the conditions being true will reset the sequence of conditions, as such not all of them are required to be true for the sequence of conditions to reset.
Let's take an example where we use 2 regular steps and one "Invalidate" step. The alert will trigger when step 2 trigger after step 1 has been triggered.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
### Invalidation Behaviors
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below:
#### Invalidate On Step 1
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
#### Invalidate On Any Repeated Step
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
### Maximum Step Interval
Users can determine what is the maximum allowed horizontal distance (in bars) between two steps by enabling the "Maximum Step Interval" setting. This allows restricting steps separated by a large amount of bars.
If the amount of bars since a step exceed the set threshold, then the conditions sequence is reset, and we start evaluating from step 1 again.
### Highlight On Chart
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert condition occurs (displayed by default).
## Alerts Reference
***
### Pre-Set Alerts
| Alert | Description |
| --------------------------- | ---------------------------------------------------------------------------------- |
| Bullish I-BOS | Triggers on the event of an internal bullish break of structure (BOS) |
| Bullish I-CHOCH | Triggers on the event of an internal bullish change of character (CHOCH) |
| Bullish I-CHOCH+ | Triggers on the event of a Supported internal bullish change of character (CHOCH+) |
| Bearish I-BOS | Triggers on the event of an internal bearish break of structure (BOS) |
| Bearish I-CHOCH | Triggers on the event of an internal bearish change of character (CHOCH) |
| Bearish I-CHOCH+ | Triggers on the event of a Supported internal bearish change of character (CHOCH+) |
| Bullish S-BOS | Triggers on the event of a swing bullish break of structure (BOS) |
| Bullish S-CHOCH | Triggers on the event of a swing bullish change of character (CHOCH) |
| Bullish S-CHOCH+ | Triggers on the event of a Supported swing bullish change of character (CHOCH+) |
| Bearish S-BOS | Triggers on the event of a swing bearish break of structure (BOS) |
| Bearish S-CHOCH | Triggers on the event of a swing bearish change of character (CHOCH) |
| Bearish S-CHOCH+ | Triggers on the event of a Supported swing bearish change of character (CHOCH+) |
| Equal Highs | Triggers on the event of an equal high (EQH) |
| Equal Lows | Triggers on the event of an equal low (EQL) |
| Bullish OB Created | Triggers when a new bullish order block is created |
| Bearish OB Created | Triggers when a new bearish order block is created |
| Bullish OB Mitigated | Triggers when a bullish order block (visible or not) is mitigated |
| Bearish OB Mitigated | Triggers when a bearish order block (visible or not) is mitigated |
| Bullish Breaker | Triggers when a bullish order block (visible or not) becomes a breaker block |
| Bearish Breaker | Triggers when a bearish order block (visible or not) becomes a breaker block |
| Within Bullish OB | Triggers when the price is located within a bullish order block (visible or not) |
| Within Bearish OB | Triggers when the price is located within a bearish order block (visible or not) |
| Bullish OB Entered | Triggers when the price enters a bullish order block (visible or not) |
| Bearish OB Entered | Triggers when the price enters a bearish order block (visible or not) |
| Bullish Imbalance | Triggers when a new bullish imbalance is detected |
| Bearish Imbalance | Triggers when a new bearish imbalance is detected |
| Bullish Imbalance Mitigated | Triggers when a bullish imbalance (visible or not) is mitigated |
| Bearish Imbalance Mitigated | Triggers when a bearish imbalance (visible or not) is mitigated |
| Broken Uptrendline | Triggers when an upward trendline is broken |
| Broken Downtrendline | Triggers when a downward trendline is broken |
| Bullish Grab | Triggers when a new bullish liquidity grab is detected |
| Bearish Grab | Triggers when a new bearish liquidity grab is detected |
| Custom Alert Condition | Triggers on the event of a user set custom alert condition being true |
### Any alert() Function Call
***
export const Exclamation = ({tooltip}) => (
);
#### Custom Alert Creator
| Alert | Description | Default |
| ------------------------------------ | --------------------------------------------------------------------- | --------------------------------------------------------- |
| Trigger as any alert() function call | Triggers on the event of a user set custom alert condition being true | |
#### Market Structures
| Alert | Description | Default |
| ---------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Bullish I-BOS | Triggers on the event of an internal bullish break of structure (BOS) | |
| Swing BOS | Triggers on the event of a swing bullish break of structure (BOS) | |
| Bearish I-BOS | Triggers on the event of an internal bearish break of structure (BOS) | |
| Swing BOS | Triggers on the event of a swing bearish break of structure (BOS) | |
| Bullish I-CHOCH | Triggers on the event of an internal bullish change of character (CHOCH) | |
| Swing CHOCH | Triggers on the event of a swing bullish change of character (CHOCH) | |
| Bullish I-CHOCH+ | Triggers on the event of a Supported internal bullish change of character (CHOCH+) | |
| Swing CHOCH+ | Triggers on the event of a Supported swing bullish change of character (CHOCH+) | |
| Bearish I-CHOCH | Triggers on the event of an internal bearish change of character (CHOCH) | |
| Swing CHOCH | Triggers on the event of a swing bearish change of character (CHOCH) | |
| Bearish I-CHOCH+ | Triggers on the event of a Supported internal bearish change of character (CHOCH+) | |
| Swing CHOCH+ | Triggers on the event of a Supported swing bearish change of character (CHOCH+) | |
#### Volumetric Order Blocks
| Alert | Description | Default |
| ---------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Bullish OB | Triggers when a new bullish order block is created | |
| Mitigated | Triggers when a bullish order block (visible or not) is mitigated | |
| Breaker | Triggers when a bullish order block (visible or not) becomes a breaker block | |
| Entered | Triggers when the price enters a bullish order block (visible or not) | |
| Within | Triggers when the price is located within a bullish order block (visible or not) | |
| Exit | Triggers when the price exits a bullish order block | |
| Bearish OB | Triggers when a new bearish order block is created | |
| Mitigated | Triggers when a bearish order block (visible or not) is mitigated | |
| Breaker | Triggers when a bearish order block (visible or not) becomes a breaker block | |
| Entered | Triggers when the price enters a bearish order block (visible or not) | |
| Within | Triggers when the price is located within a bearish order block (visible or not) | |
| Exit | Triggers when the price exits a bearish order block | |
#### Imbalances
| Alert | Description | Default |
| ----------------- | ------------------------------------------------------------- | ----------------------------------------------------- |
| Bullish Imbalance | Triggers when a bullish imbalance is identified | |
| Mitigated | Triggers when a bullish imbalance is mitigated | |
| Entered | Triggers when the price enters a bullish imbalance | |
| Within | Triggers when the price is located within a bullish imbalance | |
| Exit | Triggers when the price exits a bullish imbalance | |
| Bearish Imbalance | Triggers when a bearish imbalance is identified | |
| Mitigated | Triggers when a bearish imbalance is mitigated | |
| Entered | Triggers when the price enters a bearish imbalance | |
| Within | Triggers when the price is located within a bearish imbalance | |
| Exit | Triggers when the price exits a bearish imbalance | |
#### Liquidity Concepts
| Alert | Description | Default |
| -------------------- | --------------------------------------------------------- | ---------------------------------------------------- |
| Up-Trendline Break | Triggers when the price breaks above an upward trendline | |
| Down-Trendline Break | Triggers when the price breaks below a downward trendline | |
| Detected Pattern | Triggers when a user-set chart pattern is identified | |
| Equal High | Triggers when a new equal high is detected | |
| Equal Low | Triggers when a new equal low is detected | |
| Bullish Grab | Triggers when a bullish liquidity grab occurs | |
| Bearish Grab | Triggers when a bearish liquidity grab occurs | |
# Fibonacci Retracements
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/retracements/settings.png)
Fibonacci retracements are levels displayed from two price points using Fibonacci ratios, specific numbers obtained from the Fibonacci sequence.
Users can display up to 5 customizable Fibonacci retracements from one upper and one lower extremities users can select from a wide variety of feature included in the toolkit.
## Possible Extremities
The upper/lower extremities used to construct the Fibonacci retracements can be selected from the "Fibonacci Top" or "Fibonacci Bottom" dropdown settings, and can be obtained from the following features within the Price Action Concepts® toolkit:
* Internal High
* Internal Low
* Swing High
* Swing Low
* Discount
* Equilibrium Average
* Premium
* Bullish I-CHoCH
* Bearish I-CHoCH
* Bullish I-BOS
* Bearish I-BOS
* Highest OB Top
* Lowest OB Bottom
* Imbalance Top
* Imbalance Bottom
* Imbalance Average
* Previous Day High
* Previous Day Low
* Previous Week High
* Previous Week Low
* Previous Month High
* Previous Month Low
* Previous Quarterly High
* Previous Quarterly Low
Selecting "None" for "Fibonacci Top" or "Fibonacci Bottom" will hide the retracements.
## Ratios
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/retracements/levels.png)
Users can control which levels are displayed as well as the ratio used for each level. Ratios are also visible to the right side of each retracement displayed.
## Anchor To Origin
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/retracements/origin.png)
By default, the levels are anchored from the most recent bar and extend 20 bars ahead. By enabling "Anchor To Origin" users can anchor retracement levels to a point of origin related to the selected extremities in "Fibonacci Top" and "Fibonacci Bottom".
Based on the selected extremity, the anchor point will be the following:
| Extremity | Anchor |
| ---------------------------------------- | -------------------------------------------------------- |
| Swing High | Swing High Location |
| Swing Low | Swing Low Location |
| Internal High | Internal High Location |
| Internal Low | Internal Low Location |
| Premium / Equilibrium Average / Discount | Oldest anchor between Swing High and Swing Low Locations |
Only the above extremities are compatible with "Anchor To Origin".
If "Fibonacci Top" and "Fibonacci Bottom" are different, the anchor point will be the oldest location between the two.
# Imbalance Concepts
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/settings.png)
Imbalances in market prices arise when there is a great disparity between supply and demand, this can lead to inefficiencies where an asset does not trade at its fair value.
It is common for the price to seek balance after an imbalance, thus returning to the price area where the imbalance occurred. These areas of imbalances can also be used as support and resistance areas.
The toolkit is able to detect the following imbalances:
* Fair Value Gaps (FVG)
* Inverse Fair Value Gaps (Inverse FVG)
* Double Fair Value Gaps (Double FVG)
* Volume Imbalance
* Opening Gap
Each method is covered in the sections below.
## Fair Value Gaps
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/fvg.png)
Fair Value Gaps (FVG) are market imbalances formed from a sequence of three candles where the outer candle wicks fail to overlap the central candle body, the range between the wicks highlight a Fair Value Gap.
Bullish fair value gaps occur when the current price low is higher than the price high two bars ago. Bearish fair gaps occur when the current price high is lower than the price low two bars ago.
## Inverse FVG
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/ifvg.png)
Inverse fair value gaps are essentially mitigated fair value gaps, these can be used to provide retests areas.
A mitigated bullish FVG will lead to a bearish inverse FVG, where we can expect price to retrace upward and retest the area, while a mitigated bearish FVG will lead to a bullish inverse FVG, where we can expect price to retrace downward and retest the area.
For the sake of efficiency, inverse FVG's are always based on the mitigation of the most recent detected FVG, disregarding any previous historical FVG that might get mitigated.
## Double FVG
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/bpr.png)
Double Fair Value Gaps, also called balanced price ranges occur when the areas of two Fair Value Gaps overlap. The overlapping areas highlight a new area of imbalance.
A bullish Balanced Price Range is determined by a new bullish Fair Value Gap area overlapping a previous bearish Fair Value Gap area, while a bearish Balanced Price Range is determined by a new bearish Fair Value Gap area overlapping a previous bullish Fair Value Gap area.
## Volume Imbalance
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/vi.png)
Volume Imbalances are market imbalances characterised by two adjacent candles with non overlapping candle bodies, while their wicks overlaps. These imbalances are more commonly found in stocks or second timeframes of cryptocurrencies and forex pairs.
## Opening Gap
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/imbalances/og.png)
Opening Gaps are market imbalances characterised by two adjacent candles with non overlapping candle wicks, highlighting an empty area. These imbalances are more commonly found in stocks or second timeframes of cryptocurrencies and forex pairs.
## Mitigation Methods
Once price breaks a highlighted imbalance area it is said to have been "mitigated" and will automatically disappear. Within the Price Action Concepts® indicator, users can determine the condition for any imbalance to be considered mitigated trough the **Mitigation Method** setting, available options include:
| Method | Description |
| :---------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| **Close** | Mitigates an imbalance once price close cross above the imbalance upper extremity in the case of a bearish imbalance, and under its lower extremity in case of a bullish imbalance. |
| **Wick** | Mitigates an imbalance once price high cross above the imbalance upper extremity in the case of a bearish imbalance, and when price low cross under its lower extremity in case of a bullish imbalance. |
| **Average** | Mitigates an imbalance once price cross the imbalance area average level. |
| **None** | Will not remove mitigated imbalances. |
This toolkit makes use of a buffer allowing for a maximum of 200 imbalances. Any newly detected imbalance making the buffer exceed this number will cause the toolkit to discard the oldest detected imbalance.
## Volatility Threshold
The volatility threshold allows filtering out less significant imbalances, with higher values preserving imbalances with a larger range.
The volatility threshold is determined from a volatility estimator, the threshold act as a multiplier.
Increments of 1 will return visible results. Floating points can be used.
## Alerts
Users can be alerted on the detection of a bullish or bearish imbalance, as well as when an imbalance area is mitigated.
# Introduction
Price Action Concepts® is an exclusive LuxAlgo toolkit that includes a wide variety of price action related toolssuch as support & resistance, trend lines, patterns, and much more.
This toolkit is great for beginners or professionals alike who wish to automate price action, the essential part of your charts. Each feature included can be seen in the pages below.
## Features
## Alerts
Most concepts covered in the toolkit include built-in alerts. Users can also be alerted for multiple conditions from on alert using **any alert() function call** conditions. Finally, users who wish to set complex alerts conditions can do so using our "Custom Alert Creator".
## Settings Reference
Price Action Concepts® includes various settings affecting the appearance and behavior of the toolkit, most of which are specific to the feature they affect.
Users can access the list of user settings and their descriptions in the following page:
# Liquidity Concepts
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/settings.png)
Price Action Concepts® covers a variety of concepts related to liquidity. Each of these concepts can be found in the **Liquidity Concepts** settings section and are described in the sections below.
## Liquidity Trendlines
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/trendlines.png)
Liquidity Trendlines displays linear zones constructed by taking into account the amount of liquidity at certain price levels, with zones being displayed only if market participants found liquidity in them. The returned zones can give support areas (in blue) during up-trends or resistance areas (in red) during down-trends.
Once price breaks the extremity of a zone we can expect a trend reversal.
Once the conditions for a trendline to be displayed are met, the indicator will display it retrospectively.
The user can determine the amount of historical up-trendlines and down-trendlines to display on the chart to avoid clutter using the provided numerical input setting.
Builtins alerts for trendlines breakouts are available to the users.
## Patterns
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/image530.png)
Price Action Concepts® includes an Automatic Pattern Detection feature able to detect various chart patterns as well as a dashboard to give users information about any detected pattern.
The Pattern Detection feature is able to detect the following patterns:
* Ascending/Descending Triangles
* Ascending/Descending Broadening Wedges
* Ascending/Descending/Symmetrical Triangles
* Double Tops/Bottoms
* Head & Shoulders
* Inverted Head & Shoulders
as well as providing general supports and resistances if any of the above patterns are not detected.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/dashboard.png)
When a pattern is detected, it will be displayed on the dashboard located at the top-right of the chart. Solid lines will highlight the patterns. When no patterns are detected, dashed lines will be displayed that can be used as support and resistance.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/image602.png)
Users can detect longer term chart patterns using the provided numerical drop-down menu setting, with higher values detecting longer term patterns.
Builtins alerts for detected patterns are available to the users.
## Equal Highs & Lows
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/eqhl.png)
The toolkit returns historical equal high's & low's constructed from swing points. Equal high's & low's can be indicative of reversals, and incoming market structure such as CHoCH or BOS.
Users can display longer term equal high's/low's by increasing the numerical input at the right of the toggle (3 by default).
Equal high's & low's requires the detected swing points to be confirmed, which takes an amount of bars equal to the value set in the numerical input. As such it is important to understand these are displayed retrospectively.
## Liquidity Grabs
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/liquidity/grabs.png)
Liquidity Grabs highlight occurrences where trading activity took place in more liquid areas. These are highlighted by the toolkit with colored borders. A liquidity grab can be identified as a bullish grab if the activity took place in a demand area, or a bearish grab if this activity took place in a supply area.
Bullish liquidity grabs are highlighted in blue with borders ranging from the price low to candle body minimum and indicates a potential bullish reversal.
Bearish liquidity grabs are highlighted in red with borders ranging from the price high to candle body maximum and indicates a potential bearish reversal.
The occurrence of both bullish and bearish liquidity grabs at the same time can highlight market indecision's.
Built-in alerts for liquidity grabs are available to users within Price Action Concepts®.
# Market Structure
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/settings.png)
Market structure is a core component of the price action. The Price Action Concepts® toolkit automatically detects and highlights real time market structure on your chart, allowing for a clean picture of market trends without introducing traditional forms of technical analysis like moving averages.
## Type Of Market Structures
![Type of market structures](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/type-structures.png)
Market structure allows traders to understand trend reversals as well as trend continuations in the market through two distinct identifications:
* Change of Character (CHoCH)
* Break of Structure (BOS)
These are further described in the subsections below.
### Change Of Character (CHoCH)
![Type of CHoCH's](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/CHoCH.png)
A change of character (CHoCH), sometimes also referred as 'market structure shift' is characterized by price breaking a prior swing low during an uptrend (bullish CHoCH) or a prior swing high during a downtrend (bearish CHoCH), and thus indicates a potential market reversal.
The Price Action Concepts® toolkits labels two distinct type of CHoCHs:
* Leading CHoCH (labelled as **CHoCH**)
* Supported CHoCH (labelled as **CHoCH+**)
The difference between each is based on the relative position of prior swing highs/lows. A leading CHoCH is characterized by price not having prior signs of a reversal, such as a failed higher high (lower high) during an uptrend or a failed lower low (higher low) during a downtrend.
On the other hand, a supported CHoCH (**CHoCH+**) is preceded by an early sign of market reversal, such as a failed higher high (lower high) during an uptrend or a failed lower low (higher low) during a downtrend.
Users can show allow the toolkit to show all or only specific types of CHoCH's from the drop-down menus within the **Market Structure** settings section in the toolkit.
### Break Of Structure (BOS)
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/BOS.png)
A break of structure (BOS) can be thought of primarily as a trend continuation label. This structure is the opposite of the CHoCH, with a BOS being when price breaks a prior swing high during an uptrend (bullish BOS) thus forming a new higher high, or when price breaks a prior swing low during a downtrend (bearish BOS) thus forming a new lower low. This structure only can occur after a CHoCH.
Since BOS's indicate trend continuations, it is common to observe successive BOS's.
## Swing & Internal Structure
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/structures.png)
The Price Action Concepts® toolkit offers two distinct dimensions when it comes to market structure:
* Internal Structure
* Swing Structure
Internal structure are constructed from shorter term swing high/low points, while swing structure are constructed from longer term ones. Users can select the lookback used for the swing point detection for both the internal and swing market structures construction.
Internal structures can use a lookback in range (5, 49). Swing structures can use a lookback in the range (50, 100).
The toolkit highlights internal structure with dashed lines and labels with a smaller text size.
The size of the labels for internal and swing structure can be changed from the **General Styling** settings section.
## Candle Coloring
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/coloring.png)
Users can color candles depending on the detected internal market structure. This is useful if users want to be able to determine a detected internal market structure without having labels and lines on their chart, freeing up space on the chart to use other indicators.
Candle coloring is affected by the colors settings selected by the user for the internal market structure. Candle coloring is determined as follows:
* Darker bullish color : Bullish CHoCH active
* Regular bullish color : Bullish BOS active
* Darker bearish color : Bearish CHoCH active
* Regular bearish color : Bearish BOS active
Users can make highlighted structure and candle colors monochrome from the **General Styling** settings by using the *monochrome* option in the **Theme** drop down menu.
## Swing High/Low
Users can display swing high/low by enabling the "Show Swing High/Low" setting, highlighting past points where a reversal occurred. Displayed swing points can be denoted as:
* HH (Higher high)
* HL (Higher low)
* LH (Lower high)
* LL (Lower low)
The displayed swing points are affected by the period selected for the internal market structures, with higher values returning longer term swing points.
Swing points are displayed retrospectively, and as such are not detected where they are located. They should not be used for real-time applications.
## Strong/Weak High/Low
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/structures/strongweak.png)
Strong/Weak High/Lows highlight maximum and minimum levels made from medium term swings. A relative percentage derived between the trading volume that occurred on both swings is also highlighted, and is used to determine if a maxima/minima is strong or weak.
The displayed swing points are affected by the period selected for the internal market structures, with higher values returning longer term swing points.
## Alerts
Built-in alerts are available for each supported market structure, including swing structures, internal structures, and equal highs/lows.
# Volumetric Order Blocks
Volumetric Order Blocks highlight price areas where more informed market participants accumulate orders and can be used as potential areas of support or resistance. These are automatically highlighted by the toolkit and will disappear once mitigated.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/settings.png)
These order Blocks are separated into two types, bullish Volumetric Order Blocks and bearish Volumetric Order Blocks. Bullish Volumetric Order Blocks initial locations are near swing low's and are used as a potential support. On the other hand Bearish Volumetric Order Blocks initial locations are near swing high's and are used as a potential resistance.
Users can show longer term Volumetric Order Blocks by increasing the **Length** setting in the Order Blocks section. This setting control the swing point detection lookback used to construct Volumetric Order Blocks.
You can hide overlapping Volumetric Order Blocks by using the **Hide Overlap** setting, if two Volumetric Order Blocks overlap the most recent one will be conserved.
## Breaker Blocks
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/breakers.png)
Breaker Blocks show previous Volumetric Order Blocks that got mitigated (broken by price). These zones can be revisited by the price and provide support/resistance areas.
Bullish breaker blocks disappear once price goes above the breaker block upper extremity, while bearish breaker blocks disappear once price goes under the breaker block lower extremity.
Users can enable the option of showing breaker blocks by enabling the "Show Breakers" setting.
Breaker blocks are differentiated from Volumetric Order Blocks by their non-solid background color.
## Internal Activity & Metrics
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/activity.png)
The toolkit is able to return various information regarding an order block. Internal activity highlight the bullish and bearish activity within the interval used to construct the order block, with green bars highlighting bullish activity, and red bars highlighting bearish activity.
This allows users to see if the activity associated to an order block is in accordance with its type, or if the activity is uniform. Users can utilize this to estimate when bulls or bears are potentially exhausted at certain order blocks in the market, as such it can be used to further understand if price is likely to break or respect an order block.
Internal activity and metrics both require volume data in order to be displayed.
### Metrics
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/metrics.png)
Metrics are displayed to the right of an order block near the most recent historical price bar. This information represent the accumulated volume within the interval used to construct the order block, and can be useful to determine how significant an order block is, with larger volume indicating a more significant order block.
The percentage to the right indicates how much the volume of an order block account for the total accumulated volume of all Volumetric Order Blocks displayed on the chart, this allows to quickly determine which Volumetric Order Blocks can be more interesting to look for.
You can change the size of the metrics from the **OB Metrics Size** setting within the **GENERAL STYLING** settings section, available options include: *tiny*, *small* (default), *normal*, and *auto*.
### Processing Internal Activity Data
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/processing.png)
Users interested in accessing and highlighting occurrence of specific conditions related to the internal activity of the most recent order block can use the "OB Volume" condition creator in the [custom alert creator](./alerts#custom-alert-creator).
This condition creator includes the following conditions:
| Condition | Description |
| :---------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| **Buy Volume** | Buy volume associated to the most recent order block. |
| **Sell Volume** | Sell volume associated to the most recent order block. |
| **Total Volume** | Total volume associated to the most recent order block. |
| **Percentage** | Volume percentage associated to the most recent order block. |
| **Buy Volume > Sell Volume** | Return true if the buy volume is greater than the sell volume of the most recent order block. |
| **Buy Volume \< Sell Volume** | Return true if the buy volume is lower than the sell volume of the most recent order block. |
| **Positive Association** | Return true if buy volume is greater than sell volume in the case of a bullish order block, or if buy volume is lower than sell volume in the case of a bullish order block. |
| **Negative Association** | Return true if buy volume is lower than sell volume in the case of a bullish order block, or if buy volume is greater than sell volume in the case of a bullish order block. |
This data is always associated with the most recent order block, regardless of its mitigation status.
When "Buy Volume", "Sell Volume", "Total Volume", or "Percentage" are selected we want to compare these values to a user set value as reference using the following comparison operators:
* Greater Than
* Lower Than
* Equal
## Mitigation Methods
Once price break an order block this order block is said to have been "mitigated", and will automatically disappear. Users can determine the condition for an order block to be considered mitigated through the **Mitigation Method** setting, each method is described below:
| Method | Description |
| :---------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| **Close** | Mitigates an order block once price close cross above its upper extremity in the case of a bearish order block, and under its lower extremity in case of a bullish order block. |
| **Wick** | Mitigates an order block once price high cross above its upper extremity in the case of a bearish order block, and when price low cross under its lower extremity in case of a bullish order block. |
| **Average** | Mitigates an order block once price cross its average level. |
Builtins alerts for Volumetric Order Blocks mitigation are available to the users.
## MTF Order Blocks
![15m chart with 1h Volumetric Order Blocks (left) and 1h chart with 1h Volumetric Order Blocks (right)](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/order-blocks/mtf_ob.png)
The user can display internal and swing Volumetric Order Blocks of a high or lower chart timeframe on the chart using the **Timeframe** settings. The displayed Volumetric Order Blocks will have the same price values and volume data than the ones of the selected timeframe.
The time location of an order block of a different timeframe can differ from the location on its chart timeframe, these behaviors is proper to the tools used to retrieve Volumetric Order Blocks data on different timeframe.
This can also affect when an order block data is retrieved, potentially causing mitigated Volumetric Order Blocks to appear unmitigated.
# Premium & Discount Zones
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/zones/settings.png)
Premium & Discount zones highlight three specific price areas, one upper area (premium), one central area (equilibrium), and one lower area (discount).
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/zones/premium-discount.png)
These areas can be used to know when an event is occurring at a premium, discount, or within an equilibrium zone.
If a condition indicative of an uptrend occur within a discount zone then it would have an higher chance of being the cause of a reversal, this also applies for a condition indicative of a downtrend occurring within the premium zone.
Additionally, each area can be used as a support or resistance.
# Highs & Lows MTF
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/previous-hl/settings.png)
It is common for traders to use the maximum and minimum price value reached in a previous day, week, month, or on specific periods as support and resistances levels.
The toolkit is able to return levels from the maximum and minimum price value reached during:
* The previous day
* Mondays
* The previous week
* The previous month
* Quarters
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-pa/previous-hl/previous-hl.png)
Each can be displayed from the **HIGHS & LOWS MTF** setting section.
# Settings Reference
To open the settings menu, place your mouse pointer over the indicator title on your chart, you will then see a list of icons appear, and click on the gear ⚙️ icon.
You can also open the settings panel by double-clicking any element displayed by the toolkit.
## Market Structure
***
### Internal
Show all types of internal market structures.
Show all types of change of characters (CHoCH).
Only show "supported" change of characters (CHoCH+).
Only show "leading" change of characters (CHoCH).
Only show break of structures (BOS).
Show no internal market structure.
Type of internal market structures to display.
Determines the sensitivity of the swing detection algorithm.
Higher values will return longer-term swing points, and as such longer-term internal market structures.
### Swing
Show all types of swing market structures.
Show all types of change of characters (CHoCH).
Only show "supported" change of characters (CHoCH+).
Only show "leading" change of characters (CHoCH).
Only show break of structures (BOS).
Show no swing market structure.
Type of swing market structures to display.
Determines the sensitivity of the swing detection algorithm.
Higher values will return longer-term swing points, and as such longer-term swing market structures.
### Timeframe
Chart timeframe used for the detection of internal and swing market structures.
### Show Swing High/Low
Display detected swing points when enabled.
Detected swing points are displayed retrospectively, and as such do not appear in real-time.
### Show Strong/Weak HL
Display strong/weak swing levels when enabled.
### Color Candles
Color user chart candles based on the trend detected from internal market structures as follows:
* Bullish CHoCH: Dark Green
* Bullish BOS: Bright Green
* Bearish BOS: Bright Red
* Bearish CHoCH: Dark Red
## Volumetric Order Blocks
***
### Show Last
Display volumetric order blocks.
Determines how many of the most recent volumetric order blocks to display on the chart.
### Internal Buy/Sell Activity
Display volumetric order blocks.
### Show Breakers
Display breaker blocks.
### Length
Determines the sensitivity of the swing detection algorithm used to detect order blocks.
Higher values will return longer-term swing points, and as such longer-term order blocks.
### Mitigation Method
Mitigate order blocks using the closing price.
Mitigate order blocks using candle wicks (high/low price).
Mitigate order blocks using the crossing from the closing price and the order block area average level.
Determines the method used to mitigate order blocks.
### Timeframe
Chart timeframe used for the detection of order blocks.
### Show Metrics
Display order block metrics such as total volume and percentage located at the right of the chart.
### Show Mid-Line
Display order block area average level (dashed line).
### Hide Overlap
Hide overlapping order blocks, conserving the most recent one.
## Liquidity Concepts
***
### Trend Lines
Display trend lines when enabled.
Determines how many of the most recent respective bullish/bearish trend lines to display on the user chart.
### Patterns
Display detected pattern when enabled.
Determines the sensitivity of the swing detection algorithm used to detect patterns.
Higher values will return longer-term swing points, and as such longer-term patterns.
### Show Patterns Zones
Display zones around the pattern lines.
### Equal H\&L
Display equal highs/lows on the chart.
Use short term swing point detection for detecting equal highs/lows, returning shorter term EQHL as a result.
Use long term swing point detection for detecting equal highs/lows, returning longer term EQHL as a result.
Determines the sensitivity of the swing detection algorithm used to detect equal highs/lows.
### Liquidity Grabs
Display liquidity grabs on the chart.
## Imbalance Concepts
***
Display the selected imbalance on the chart.
Detect fair value gaps (FVG) when selected.
Detect inverse fair value gaps when selected.
Detect double fair value gaps when selected.
Detect volume imbalances when selected.
Detect opening gaps when selected.
Determines which imbalance to detect.
### Mitigation Method
Mitigate imbalances using the closing price.
Mitigate imbalancess using candle wicks (high/low price).
Mitigate imbalances using the crossing from the closing price and the imbalance area average level.
Determines the method used to mitigate imbalances.
### Timeframe
Chart timeframe used for the detection of imbalances.
### Extend Imbalance
Extend the imbalance area to the right by the selected amount of bars.
### Volatility Threshold
Threshold used to filter out imbalances with a low area height. Higher values will preserver more volatility imbalances.
## Premium & Discount Zones
### Premium/Discount Zones
Display premium/discount and equilibrium zones on the chart when enabled.
***
## Highs & Lows MTF
***
### Daily
Display previous daily high/low on the chart when enabled.
Use solid line style when selected.
Use dashed line style when selected.
Use dotted line style when selected.
Level line style.
### Monday's
Display previous high/low monday prices on the chart when enabled.
Use solid line style when selected.
Use dashed line style when selected.
Use dotted line style when selected.
Level line style.
### Weekly
Display previous weekly high/low on the chart when enabled.
Use solid line style when selected.
Use dashed line style when selected.
Use dotted line style when selected.
Level line style.
### Monthly
Display previous monthly high/low on the chart when enabled.
Use solid line style when selected.
Use dashed line style when selected.
Use dotted line style when selected.
Level line style.
### Quarterly
Display previous quarterly high/low on the chart when enabled.
Use solid line style when selected.
Use dashed line style when selected.
Use dotted line style when selected.
Level line style.
## Fibonacci Retracements
***
### Fibonacci Top
Upper value used to calculate the retracements.
### Fibonacci Bottom
Lower value used to calculate the retracements.
### Ratios
Display the level with the associated ratio when enabled.
Numerical input determining the ratio used to construct the retracement.
These settings are available for 5 ratios
### Show Top/Bottom Levels
Display the top/bottom extremities used to construct the retracements.
### Anchor To Origin
Set the left anchor of the retracement to the appropriate coordinate depending on the selected extremities. Else the most recent bar will be used as anchor.
## General Styling
***
### Internal Label Style
Determine the size of the internal market structures labels.
### Swing Label Style
Determine the size of the swing market structures labels.
### Structures Theme
Use user set internal market structures colors as palette for market structures graphical elements.
Use white/gray tones as palette for market structures graphical elements.
Determine the color theme of market structures related graphical elements such as levels, labels, and candle coloring.
### EQHL Label Style
Determine the size of the equal highs/lows labels.
### OB Metrics Size
Automatically adjust text size to fit in the order block area.
Determine the size of the swing market structures labels.
## Custom Alert Creator
***
### Market Structure
Enable the selected Market Structure condition to be used in the custom alert creator.
List of market structure conditions to be used in the custom alert creator.
#### Market Structure Step
Market structure conditions step in the custom alert creator sequence.
### Order Block
Enable the selected Order Block condition to be used in the custom alert creator.
List of Order Block conditions to be used in the custom alert creator.
#### Order Block Step
Order Block conditions step in the custom alert creator sequence.
### Imbalance
Enable the selected Imbalance condition to be used in the custom alert creator.
List of Imbalance conditions to be used in the custom alert creator.
#### Imbalance Step
Imbalance condition step in the custom alert creator sequence.
### Trendline
Enable the selected Trendline condition to be used in the custom alert creator.
List of Trendline conditions to be used in the custom alert creator.
### Trendline Step
Trendline condition step in the custom alert creator sequence.
### Pattern
Enable the selected Pattern condition to be used in the custom alert creator.
List of Pattern conditions to be used in the custom alert creator.
#### Pattern Step
Pattern condition step in the custom alert creator sequence.
### Liquidity Grabs
Enable the selected Liquidity Grabs condition to be used in the custom alert creator.
List of Liquidity Grabs conditions to be used in the custom alert creator.
#### Liquidity Grabs Step
Liquidity Grabs condition step in the custom alert creator sequence.
### Premium/Discount
Enable the selected Premium/Discount condition to be used in the custom alert creator.
List of Premium/Discount conditions to be used in the custom alert creator.
#### Premium/Discount Step
Premium/Discount condition step in the custom alert creator sequence.
### Session
Enable session condition in the custom alert creator.
Session times used in the custom alert creator.
#### Session Step
Session condition step in the custom alert creator sequence.
### OB Volume
Enable the selected OB Volume condition to be used in the custom alert creator.
List of OB Volume data sources to be used in the custom alert creator.
Comparison operator used to compare the selected OB data source to the selected numerical input.
Numerical input.
#### Ob Volume Step
OB Volume condition step in the custom alert creator sequence.
### External Condition (1)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (1)
First external source condition step in the custom alert creator sequence.
### External Condition (2)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (2)
Second external source condition step in the custom alert creator sequence.
### External Condition (3)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
Source input.
Comparison operator used to compare the selected source to the selected numerical value.
Numerical input.
#### External Step (3)
Third external source condition step in the custom alert creator sequence.
### Invalidation Behavior
No invalidation behavior.
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the user-set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
Invalidation behaviors allow adding more restrictions to a sequence of conditions; users can use two different invalidation behaviors described below.
### Maximum Step Interval
Maximum allowed horizontal distance (in bars) between two steps.
If the number of bars since a step exceeds the selected threshold, then the condition sequence is reset, and we start evaluating from step 1 again.
### Highlight Custom Alert Triggers
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert conditions occurs (displayed by default).
## Calculation
### Calculated Bars
Limits the initial calculation of the toolkit to the specified amount of most recent bars. Lower values will return a faster computation time. A value of 0 will compute the toolkit over the entire data history.
# Alerts
The Signals & Overlays® can alert users for multiple events relevant to the existing features in the toolkit. To learn more about how to set alerts in general see [how to create alerts on tradingview](/docs/getting-started/setup-alerts).
In order for an alert to work in the toolkit make sure the related feature is enabled
## Using Placeholders With Confirmation/Contrarian Alerts
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/image620.png)
When creating an alert using 'Any Confirmation' or 'Any Contrarian' it is possible to use placeholders so that the alert message returns the type of signal that triggered the alert.
In order to do so, paste the following line in the message field:
```
Bullish : {{plot("Bullish")}} | Bearish : {{plot("Bearish")}} | Bullish+: {{plot("Bullish+")}} | Bearish+ : {{plot("Bearish+")}}
```
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/image31.png)
## Any Alert() Function Call
The *any alert() function call* alert condition allows to create one alert using various conditions, this allows to bypass the limit of one alert for free users as well as making the process of updating many alerts faster and easier.
To create such an alert go to the indicator settings, and scroll down to the '**ANY ALERT() FUNCTION CALL CONDITIONS**' section.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/conditions.png)
Toggle on the conditions of interest. Now create a new alert, in the first **Condition** drop-down menu select the **LuxAlgo Premium** indicator, in the second drop-down menu select **Any alert() function call**, you can then create the alert.
This alert would use **once per bar close** by default.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/image117.png)
All-in-one alerts do not differ from regular alerts, they will be using the same indicator settings as the one used during their creation. Note however that you cannot set a custom message for all-in-one alerts, the message displayed when the selected conditions trigger will be the same as the one used in the same individual alert conditions.
### Any Alert() Function Call Message
Users can set a custom message that will be used when an "any alert() function call" condition is triggered in the message field below the list of conditions. Users can use placeholders to customize messages and return useful information, the following placeholders are supported:
#### Symbol Placeholders
| Placeholder | Description | Example |
| ------------ | ------------------------------------------------------- | ------------------------------- |
| `{default}` | Default message associated with the triggered condition | `"Bullish Confirmation Signal"` |
| `{ticker}` | Symbol ticker without the exchange prefix | `"MSFT"` |
| `{exchange}` | Symbol exchange/data source | `"COINBASE"` |
| `{sector}` | Sector of the symbol, `na` if the symbol has no sector | `"Technology Services"` |
| `{market}` | Symbol market type | `"Stocks"` |
#### Time Placeholders
| Placeholder | Description | Example |
| ----------- | -------------------------------------------------------------------------------------- | ----------------- |
| `{tf}` | Chart timeframe, includes "S" for seconds, "D" for days, "W" for weeks, "M" for months | `"15"` |
| `{time}` | Unix time in milliseconds in exchange timezone | `"1705331385158"` |
| `{year}` | Current year in exchange timezone | `"2024"` |
| `{month}` | Current month in exchange timezone | `"7"` |
| `{day}` | Current day of the month in exchange timezone | `"21"` |
#### Data Placeholders
| Placeholder | Description | Example |
| ----------- | -------------- | ---------- |
| `{open}` | Opening price | `"1.2145"` |
| `{high}` | High price | `"1.2357"` |
| `{low}` | Low price | `"1.1983"` |
| `{close}` | Closing price | `"1.0569"` |
| `{volume}` | Current volume | `"45216"` |
#### Indicators Placeholders
| Placeholder | Description | Example |
| --------------- | ----------------------------------------- | ---------- |
| `{smart_trail}` | Smart Trail overlay value | `"0.8321"` |
| `{rz_r3}` | Reversal Zones overlay resistance 3 value | `"3.4102"` |
| `{rz_r2}` | Reversal Zones overlay resistance 2 value | `"1.0293"` |
| `{rz_r1}` | Reversal Zones overlay resistance 1 value | `"5.1234"` |
| `{rz_s1}` | Reversal Zones overlay support 1 value | `"2.5647"` |
| `{rz_s2}` | Reversal Zones overlay support 2 value | `"7.8910"` |
| `{rz_s3}` | Reversal Zones overlay support 3 value | `"6.2345"` |
| `{catcher}` | Trend Catcher overlay value | `"4.3456"` |
| `{tracer}` | Trend Tracer overlay value | `"3.7812"` |
| `{neo_lead}` | Neo Cloud overlay lead value | `"1.9087"` |
| `{neo_lag}` | Neo Cloud overlay lag value | `"0.4571"` |
| `{tp1}` | Take Profit 1 value | `"2.7690"` |
| `{sl1}` | Stop Loss 1 value | `"8.1203"` |
| `{tp2}` | Take Profit 2 value | `"9.6584"` |
| `{sl2}` | Stop Loss 2 | `"3.1246"` |
### Format as JSON
Use the following message template to receive "any alert() function call" messages in the JSON format:
```json
{
"alert": "{default}",
"ticker": "{ticker}",
"tf": "{tf}",
"ohlcv":{
"open": {open},
"high": {high},
"low": {low},
"close": {close},
"volume": {volume}
},
"bartime": {time}
}
```
### Updating Alerts Using Any Alert() Function Call
If you already set an *any alert() function call* alert and want to change the indicator settings or want to toggle on another condition all you need to do is edit the alert you want to update, select the second instance of the indicator in the first **Condition** drop-down menu and then click on save.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/image345.png)
## Custom Alert Creator
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/custom.png)
Users wishing to construct more complex alerts using features within the toolkit and/or external indicators can use the **Custom Alert Creator**.
The custom alert creator allows alerting when various user-set conditions are met or when a sequence of conditions is complete.
A user wishing to be alerted when any bullish signal occurs while the smart trail is bullish could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/custom_example.png)
A custom alert can be triggered as an *any alert() function call* if the setting is selected or as a regular alert when selected in the Tradingview alert creator menu.
### Steps
Steps allow creating a sequence of conditions, which when met trigger an alert. When a condition with a step equal to 1 is met the next condition associated with step 2 will be evaluated (if enabled) and so on for higher steps (if any).
Conditions with the same associated step will require both conditions to be true in order for the condition associated with a higher step (if any) to be evaluated. This allows certain conditions to act as filters.
A user wishing to be alerted for any bullish confirmation signal classified as 1 or 2 by the ML Classifier occurring after the smart trail turned bullish could do it as follows:
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/step_example.png)
*Make sure the ML Classifier is enabled*.
Make sure steps are set such that they form a linear sequence. For example, if the lowest step is 2 or if the set steps are only 1 and 3 an error will be returned.
#### OR Step Operator
The "OR" step operator can be used to get alerted for any additional condition using "OR" as step, in addition to other set custom alert conditions.
Conditions using the "OR" step can be highlighted using a different color, which can be set from the Custom Alert Creator settings. Users can choose the location of this visual element (top or bottom of the chart).
#### All Step Operator
The "All" step operator can be used to filter any set "Step" condition, including "OR" and "Invalidate".
This step operator can be useful if all the steps in a sequence needs to obey a specific rule.
If a user has 2 steps set, and requires both of these to occur at a specific time interval such as 9am to 1pm, then we can use a "Session" condition using the "All" step, requiring our step 1 and step 2 to be occur between 9am and 1pm.
#### Invalidate Step
The "Invalidate" step allows to set a condition as an "invalidation condition". When this condition is triggered while a sequence of conditions is incomplete, the sequence will restart at step 1.
If multiple steps are set as "Invalidate" any of the conditions being true will reset the sequence of conditions, as such not all of them are required to be true for the sequence of conditions to reset.
Let's take an example where we use 2 regular steps and one "Invalidate" step. The alert will trigger when step 2 trigger after step 1 has been triggered.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
### Invalidation Behaviors
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below:
#### Invalidate On Step 1
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
#### Invalidate On Any Repeated Step
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
### Maximum Step Interval
Users can determine what is the maximum allowed horizontal distance (in bars) between two steps by enabling the "Maximum Step Interval" setting. This allows restricting steps separated by a large amount of bars.
If the amount of bars since a step exceed the set threshold, then the conditions sequence is reset, and we start evaluating from step 1 again.
### Highlight On Chart
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert conditions occurs (displayed by default).
## Alerts Reference
***
### Pre-Set Alerts
| Alert | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------ |
| Any alert() function call | Return when an alert when a user toggled any alert() condition is triggered (see sections below) |
| Any Confirmation | Triggers when any Confirmation signal (bullish/bearish normal/+) is displayed |
| Any Bullish Confirmation | Triggers when any bullish Confirmation signal (normal/+) is displayed |
| Any Bearish Confirmation | Triggers when any bearish Confirmation signal (normal/+) is displayed |
| Any Confirmation+ | Triggers when any Confirmation + signal (bullish/bearish) is displayed |
| Any Contrarian | Triggers when any Contrarian signal (normal/+ bullish/bearish) is displayed |
| Any Bullish Contrarian | Triggers when any bullish Contrarian signal (normal/+) is displayed |
| Any Bearish Contrarian | Triggers when any bearish Contrarian signal (normal/+) is displayed |
| Bullish Confirmation | Triggers when a normal bullish Confirmation signal is displayed |
| Bearish Confirmation | Triggers when a normal bearish Confirmation signal is displayed |
| Bullish Confirmation+ | Triggers when a bullish Confirmation+ signal is displayed |
| Bearish Confirmation+ | Triggers when a bearish Confirmation+ signal is displayed |
| Bullish Exit | Triggers when a bullish exit signal is displayed |
| Bearish Exit | Triggers when a bearish exit signal is displayed |
| Trend Catcher Down | Triggers once the Trend Catcher starts decreasing (switch from green to red) |
| Trend Catcher Up | Triggers once the Trend Catcher starts rising (switch from red to green) |
| Trend Tracer Down | Triggers once the Trend Tracer starts decreasing (switch from green to red) |
| Trend Tracer Up | Triggers once the Trend Tracer starts rising (switch from red to green) |
| Custom Alert Condition | Triggers on the event of a user set custom alert condition being true |
### Any alert() Function Call
export const Exclamation = ({tooltip}) => (
);
| Alert | Description | Default |
| ---------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Bullish Confirmation | Triggers when a normal bullish Confirmation signal is displayed | |
| Bearish Confirmation | Triggers when a normal bearish Confirmation signal is displayed | |
| Bullish + | Triggers when a strong bullish Confirmation signal is displayed | |
| Bearish + | Triggers when a strong bearish Confirmation signal is displayed | |
| Bullish Contrarian | Triggers when a normal bullish Contrarian signal is displayed | |
| Bearish Contrarian | Triggers when a normal bearish Contrarian signal is displayed | |
| Bullish + | Triggers when a strong bullish Contrarian signal is displayed | |
| Bearish + | Triggers when a strong bearish Contrarian signal is displayed | |
| Bullish Exit | Triggers when a bullish exit signal is displayed | |
| Bearish Exit | Triggers when a bearish exit signal is displayed | |
| Take Profit | Triggers when a take profit is reached (TP1 or TP2) | |
| Stop Loss | Triggers when a stop loss is reached (SL1 or SL2) | |
| Bullish Turn + | Triggers when a weak bullish trend turns strong (purple candle switch to green) | |
| Bearish Turn + | Triggers when a weak bearish trend turns strong (purple candle switch to red) | |
| Custom Alert Condition | Triggers on the event of a user set custom alert condition being true | |
# Candle Coloring
The candle coloring feature allows the user to change the body color of the candles/bars when using candlesticks or bar charts. Three coloring modes are available, with two of them being based on the previously described signal methodologies.
Candle coloring also works on charts using Heikin-Ashi, Renko, Kagi, line break, point and figure, and range candles.
Each mode can be enabled from the settings in the **candle color mode** dropdown menu.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/candle-coloring/image547.png)
In order to use candle coloring as properly as possible make sure to disable the **borders** setting in your chart settings.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/candle-coloring/image72.png)
### Confirmation Simple
The **confirmation simple** color mode is based on the methodology used by confirmation signals and is the one enabled by default. This mode uses three colors, each one can be interpreted as follows:
* **Green candles:** Strong bullish signal active.
* **Red candles:** Strong bearish active.
* **Purple candles:** Normal bullish or bearish signal active.
![Confirmation Simple color mode](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/candle-coloring/image398.png)
If you need to set an alert based on candle coloring or need to return information on what is the current candle color on an alert message simply use the **Bar Color Value** variable. This variable as three possible values each indicating the following:
* 1: Candle color is green
* 0: Candle color is purple
* \-1: Candle color is red
This variable can be used as input for external indicators as well.
### Confirmation Gradient
The **confirmation gradient** color mode is also based on the algorithm that generates confirmation signals, but will slightly differ from the previously described **confirmation simple** color mode.
Lighter green colors indicate strong bullish variations, while lighter red colors indicate strong bearish variations. Colors closer to purple indicate that the current variation might be a retracement or that the market is ranging.
![Confirmation Gradient color mode](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/candle-coloring/image93.png)
### Contrarian Gradient
The **contrarian gradient** color mode is based on the contrarian signals algorithm. Stronger green colors indicate an oversold market and a potential reversal, while stronger red colors indicate an overbought market.
![Contrarian Gradient color mode](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/candle-coloring/contrarian.png)
# Dashboard
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image601.png)
The dashboard displays the most relevant metrics from within our premium features. This feature is extremely useful to easily obtain pertinent information regarding the market and can be used in confluence with confirmation or contrarian signals.
## Dashboard Elements
### Optimal Sensitivity
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image576.png)
The optimal sensitivity is an estimate of the optimal **sensitivity** setting. Depending on the selected signal mode, the recommended sensitivity for confirmation or contrarian signals will be displayed. When **None** is selected, no optimal sensitivity will be displayed. This value is obtained through grid search optimization by using the most recent 250 bars and varies in a range between 10 and 20.
The cell color is based on the signal returned by the signal algorithm using the returned optimal setting, with a green color indicating a bullish signal and a red color indicating a bearish signal.
Note that this metric is not indicative of future results.
When **Autopilot Sensitivity** is enabled, the recommended sensitivity will not appear on the dashboard and is replaced with an indication notifying the user that autopilot is enabled.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image544.png)
### Trend Strength
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image107.png)
The trend strength quantifies the strength of an underlying trend as a percentage and can inform the trader whether the market is trending or ranging. This indication can help a trader know whether a signal has a higher chance of being false or not. The 🔥 sign is used with trending markets while ❄️ is used for ranging markets.
The cell color is based on the currently displayed signal, with a green color indicating a bullish signal and a red color indicating a sell signal.
A trend strength plot is available allowing users to set alerts based on it, using placeholders `{{plot("Trend Strength"}}` in the alert message.
A percentage superior to 50% would indicate a trending market, while inferior percentages would indicate a ranging market.
### Lux Volatility
The Lux volatility appearing on the dashboard is based on the **Lux Volatility** indicator and returns either **Stable** during periods of low volatility or **Volatile** during periods of high volatility. When volatility is rising the 📈 sign will appear, while 📉 appears when volatility is declining.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image585.png)
The Lux volatility can also display with a warning sign, this happens when the volatility is either too low or too high and indicates extra precaution.
### Squeeze
Squeeze is a measure of price compression. Higher values of this metric indicate that the market is being compressed into a tighter area, suggesting market prices are subject to damping.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/squeeze.png)
Higher values of this metric are mostly returned during ranging markets.
### Volume Sentiment
The volume sentiment metric returns an estimate of whether most volume came from buying or selling participants. This measure is expressed as a percentage in the range \[-100 / 100].
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/volume.png)
The value of this metric can sometimes be high or low even if a candle does not reflect this sentiment, thus potentially indicating a reversal.
## Dashboard Settings
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image591.png)
Enabling/disabling the dashboard can be done from the **Indicator Overlay** section. Settings affecting the dashboard visual style can be found in the **Advanced Settings** section.
### Dashboard Location
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image610.png)
Determines the corner where the dashboard is displayed on the chart. Selecting "Hidden" will hide the dashboard.
### Dashboard Size
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/dashboard/image584.png)
Determines the size of the dashboard on the chart, options include **Tiny**, **Small**, **Normal**, and **Large**.
# Indicator Overlay
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/image634.png)
Signals & Overlays® Indicator allows the user to display various technical indicators directly on their chart. These can be used in confluence with the confirmation/contrarian signals or optionally used as a standalone.
Each overlay has an associated setting affecting its output. These settings range from 1 to 5, with higher values allowing the overlay to return indications for longer-term trends.
Each of the overlays is covered below.
## Smart Trail
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/smart.png)
The Smart Trail is a trailing stop that diverges from the price in the presence of unwanted price variations in a trend.
An up-trend is indicated when the price is above the trailing stop, and a down-trend when the price is below the trailing stop.
The smart trail also displays support (in blue) and resistance (in red) areas and aims to indicate when the price might reverse when entering the area.
## Reversal Zones
When enabled, one upper and one lower zone will be displayed on your chart, each zone is designed to help the user find tops and bottoms whether the market is ranging or trending (however the indicator will still be more effective during ranging markets).
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/reversal.png)
These zones can be great areas to take profit or find early entries to use alongside the confirmation or contrarian signals.
During periods of increased volatility, the price may move outside the zones, you can wait for the price to go back within each zone to take a decision.
## Trend Tracer
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/tracer.png)
The Trend Tracer is a trend-following algorithm that aims to estimate the underlying trend in the price. When the indicator indicates an uptrend its color will be blue, while orange in the case of a downtrend.
The Trend Tracer can be used as a trailing support/resistance tool, you can also use it in confluence with the confirmation signals, either by waiting for the price to reach the trend tracer in order to enter a trade corresponding to the current confirmation signal or by filtering shorter-term signals by only trading those in accordance by the trend estimated by the trend tracer.
## Trend Catcher
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/catcher.png)
The Trend Catcher is a similar algorithm to the previous **Trend Tracer**, however, it aims to detect very early trends, and is thus more reactive.
Like with the **Trend Tracer**, the color of the indicator determines the detected trend.
## Neo Cloud
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/indicator-overlay/neo.png)
When enabled, a simple cloud-like indicator will be displayed on your chart. The Neo Cloud is similar in effect to the Ichimoku Cloud, and can determine the current trend direction.
The cloud is filled with a gradient color showing how new a detected trend is, with brighter colors indicating older trends.
This cloud can provide a support when an uptrend is detected or resistance when a downtrend is detected. This makes it perfect for entries into precise trades.
# Introduction
**Signals & Overlays®** is the most popular toolkit provided by LuxAlgo which contains a variety of signal modes, indicator overlays, and advanced dynamic features to help users make improved decisions when trading.
This toolkit is great for beginners & serious traders alike who want the most powerful signals & dynamic features possible for their charts.
Provided below are pages describing all features included.
## Alerts
Most features included within the Signals & Overlays® toolkit include built-in alerts.
Users can also utilize the "any alert() function call" conditions at the bottom of the settings to be alerted for multiple conditions at once. Further, the Signals & Overlays® toolkit allows users to set extremely complex alerts with its “Custom Alert Creator” feature at the bottom of the settings menu.
## Settings Reference
Signals & Overlays® includes various settings affecting the appearance and behavior of the toolkit, most of which are specific to the feature they affect.
Users can access the list of user settings and their descriptions in the following page:
Users can access the list of user settings and their descriptions in the following page:
# Settings Reference
To open the settings menu, place your mouse pointer over the indicator title on your chart, you will then see a list of icons appear, and click on the gear ⚙️ icon.
You can also open the settings panel by double-clicking any element displayed by the toolkit.
## Basic Settings
***
### Presets / Filters
No presets/filter enabled.
* Confirmation Signals
* Smart Trail
* Trend Catcher
* Confirmation Signals
* Confirmation gradient coloring
* Reversal Zones
* Take Profit/Stop Losses
* Confirmation Signals
* Long-Term Frequency Autopilot
* Simple confirmation candle coloring
* Neo Cloud
* Contrarian Signals
* Mid-Term Frequency Autopilot
* Contrarian candle coloring
* Reversal Zones
Show bullish signals when price is above the Smart Trail, and bearish signals when price is under the Smart Trail.
Show bullish signals when Trend Tracer is indicating an up-trend, and bearish signals when Trend Tracer is indicating a down-trend.
Show bullish signals when Trend Catcher is indicating an up-trend, and bearish signals when Trend Catcher is indicating a down-trend.
Show bullish signals above Neo cloud, and bearish signals under Neo Cloud.
Show bullish/bearish signals when the Trend strength is above 50%.
Presets allows users to easily enable multiple features at once from a selected option.
Note that when a preset is selected some settings such as the toggles of the displayed overlay indicators can become inactive/not usable. If you wish to further customize the Signals & Overlays® toolkit, we suggest disabling the Preset and manually customizing the settings.
On the other hand filters allow users to display confirmation/contrarian signals when a specific overlay or metric behavior is respected.
### Signal Mode
Confirmation signals alongside exit signals.
Contrarian signals alongside exit signals.
No signals.
Controls the type of signal generation algorithm to use.
### ML Signal Classifier
Enable the ML Classifier for the returned signals. Signals will be classified between groups 1, 2, 3, and 4, with 1/2 indicating replacements and 3/4 signals in accordance with a main trend.
### Signals Sensitivity
The sensitivity setting controls how sensitive the signals generation algorithms are to shorter term price variations, with higher values of the setting returning longer term signals.
To learn more about signal settings see the following [page](/docs/toolkits/signals-overlays/settings).
### Candle Coloring
Color candles using three shades based on the Confirmation signal algorithm.
Color candles using a gradient based on the Confirmation signal algorithm.
Color candles using a gradient based on the Contrarian signal algorithm.
Change the color of the candle/bars on the user chart based on the selected option.
To learn more about candle coloring see the following [page](/docs/toolkits/signals-overlays/candle-coloring).
## Indicator Overlay
***
### Smart Trail
Enable the Smart Trail overlay on the chart when toggled on.
Smart Trail numerical period. Greater values will allow the Smart Trail to return indications of longer term trends.
### Reversal Zones
Enable the Reversal Zones overlay on the chart when toggled on.
Reversal Zones numerical period. Greater values will allow the Reversal Zones to return indications of longer term trends.
### Trend Catcher
Enable the Trend Catcher overlay on the chart when toggled on.
Trend Catcher numerical period. Greater values will allow the Trend Catcher to return indications of longer term trends.
### Trend Tracer
Enable the Trend Tracer overlay on the chart when toggled on.
Trend Tracer numerical period. Greater values will allow the Trend Tracer to return indications of longer term trends.
### Neo Cloud
Enable the Neo Cloud overlay on the chart when toggled on.
Neo Cloud numerical period. Greater values will allow the Neo Cloud to return indications of longer term trends.
## Take Profits/Stop Losses
***
### TP/SL Levels
No take profits/stop losses levels are displayed.
Return take profits/stop losses levels based on Confirmation/Contrarian signals.
Return take profits/stop losses levels based on Smart Trail sentiment changes.
Return take profits/stop losses levels based on the contact between the price and Reversal Zones extremities.
Return take profits/stop losses levels based on the Trend Catcher sentiment changes.
Return take profits/stop losses levels based on the Trend Tracer sentiment changes.
Return take profits/stop losses levels based on the Neo Cloud sentiment changes.
Return take profits/stop losses levels based on the user set custom alert creator condition triggering. Unlike other options this one assumes a bullish sentiment, returning take profits above the price and stop losses below the price.
### Distance
Control how far away take profits/stop losses levels are located from the price, with higher values returning levels located farther away from the price.
## Advanced Settings
***
### ML Classifier
ML Classifier filter. This input allows filtering out classified signals that are not specified in the input.
For example if the input only contains `12` then only signals classified as either 1 or 2 will be displayed.
### Autopilot Sensitivity
Disable the autopilot sensitivity algorithm.
Enable the autopilot sensitivity algorithm to return shorter term signals.
Enable the autopilot sensitivity algorithm to return medium term signals.
Enable the autopilot sensitivity algorithm to return longer term signals.
Allows enabling autopilot sensitivity for the selected signal algorithm. When autopilot is enabled changes in the `sensitivity` settings will not affect signals.
## Dashboard
***
### Dashboard Location
Hide the dashboard on the chart.
Display the dashboard to the top right of the chart.
Display the dashboard to the bottom right of the chart.
Display the dashboard to the bottom left of the chart.
Dashboard location on the chart.
### Dashboard Size
Size of the dashboard on the chart.
### Trend Strength
Display Trend Strength metric on the dashboard.
### Volatility
Display the Lux Volatility metric on the dashboard.
### Squeeze
Display the squeeze index on the dashboard.
### Volume Sentiment
Display the Volume Sentiment on the dashboard.
## Custom Alert Creator
***
### Signal
Enable the selected signal condition to be used in the custom alert creator.
Specific type of signal used in the custom alert creator.
#### Step
Signal condition step in the custom alert creator sequence.
### ML Classifier
Enable the ML Classifier to be used in the custom alert creator.
Determines to which group a signal should be classified.
#### Step
ML Classifier step in the custom alert creator sequence.
### Smart Trail
Enable the selected Smart Trail condition to be used in the custom alert creator.
Specific Smart Trail condition used in the custom alert creator.
#### Step
Smart Trail condition step in the custom alert creator sequence.
### Trend Tracer
Enable the selected Trend Tracer condition to be used in the custom alert creator.
Specific Trend Tracer condition used in the custom alert creator.
#### Step
Trend Tracer condition step in the custom alert creator sequence.
### Trend Catcher
Enable the selected Trend Catcher condition to be used in the custom alert creator.
Specific Trend Catcher condition used in the custom alert creator.
#### Step
Trend Catcher condition step in the custom alert creator sequence.
### Neo Cloud
Enable the selected Neo Cloud condition to be used in the custom alert creator.
Specific Neo Cloud condition used in the custom alert creator.
#### Step
Neo Cloud condition step in the custom alert creator sequence.
### Reversal Zones
Enable the selected Reversal Zones condition to be used in the custom alert creator.
Specific Reversal Zones condition used in the custom alert creator.
#### Step
Reversal Zones condition step in the custom alert creator sequence.
### Trend Strength
Enable the selected Trend Strength condition to be used in the custom alert creator.
Comparison operator used to compare the current Trend Strength value with the inline numerical input.
Value used to compare Trend Strength with.
#### Trend Strength Step
Trend Strength condition step in the custom alert creator sequence.
### External Condition (1)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (1)
First external source condition step in the custom alert creator sequence.
### External Condition (2)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
First source input.
Comparison operator used to compare the two selected sources.
...
Other external indicator outputs can be used as source.
Second source input.
#### External Step (2)
Second external source condition step in the custom alert creator sequence.
### External Condition (3)
Enable the selected External condition to be used in the custom alert creator.
...
Other external indicator outputs can be used as source.
Source input.
Comparison operator used to compare the selected source to the selected numerical value.
Numerical input.
#### External Step (3)
Third external source condition step in the custom alert creator sequence.
### Invalidation Behavior
No invalidation behavior.
The "Invalidate On Step 1" behavior allows to reset an incomplete sequence of conditions when the condition on step 1 trigger. This prevents the first step condition from happening in between other steps of the condition sequence.
This behavior is useful when the first step of our sequence of conditions needs to never be repeated during the sequence.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 condition trigger, we start evaluating step 2 from now.
The "Invalidate On Any Repeated Step" behavior allows to reset an incomplete sequence of conditions when a step is triggered such that it does not respect the user-set order of conditions.
This behavior is useful when we want a perfectly ordered sequence of conditions to complete, without any step repeating itself.
Let's take an example where we use 3 regular steps.
Step 1 condition trigger, we will now evaluate step 2 from now on.
Step 2 condition trigger, we will now evaluate step 3 from now on.
Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below.
### Maximum Step Interval
Maximum allowed horizontal distance (in bars) between two steps.
If the amount of bars since a step exceed the selected threshold, then the conditions sequence is reset, and we start evaluating from step 1 again.
### Highlight Custom Alert Triggers
When a custom alert condition is set, a visual element is displayed at the bottom of the chart in order to more easily visualize when the custom alert conditions occurs (displayed by default).
# Signal Settings
The settings affecting the signal generation algorithm within Signals & overlays plays an important role in using the signals effectively. We give our users the possibility to adjust the settings so that the signals can fit their trading style but we also provide ways to easily adjust settings by using a wide variety of methods.
Each method for adjusting signal settings is designed to fit specific user needs, one method will not necessarily be more accurate than another.
It's critical to understand Confirmation Signals are generally meant to be used as trend confirmations, not direct entries & exits. Focusing on ease of use with the signal settings & using other features within our toolkits will likely be the best decision for you rather than trying to find the "holy grail" of optimized signal settings & following the signals alone.
## Manual Adjustments
Manual adjustment of signals settings allow the user to fit the signals to their trading style and allows a greater degree of customizability.
### Confirmation Signals
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signal-settings/image565.png)
Confirmation signals are affected by the **Signals Sensitivity** setting. Increasing this setting will allow the trader to make decisions for longer-term trends.
### Method For Manually Adjusting Confirmation Signals
First, identify which price movements you are looking to trade (regardless of timeframes). Depending on how you are on your charts (on any timeframe) you can adjust the sensitivity value higher or lower to catch the price movements you are looking for. If you are looking for shorter term price movements on those timeframes, you should consider using a lower sensitivity. If you are looking for longer term price movements on those timeframes you should consider using a higher sensitivity.
### Contrarian Signals
Contrarian signals are also affected by the **Signals Sensitivity** setting, increasing it will aim to make contrarian signals spot longer term tops and bottoms.
## Automatic Settings Estimation
### Autopilot Signal Settings
The downside of adjusting signal settings is that this task needs to be constantly repeated due to ever-changing market conditions. **Autopilot** is a feature that allows the user to avoid adjusting signal settings completely. Instead, the currently selected signal generation algorithm (Confirmation or Contrarian) adjusts dynamically to the market conditions in order to provide the best signals possible.
This setting can be enabled from the **Advanced Settings** settings section.
Compared to other automatic methods the "Autopilot" feature is the most user-friendly since it avoids adjusting inputs within the indicator entirely.
[](/public/images/lux-algo/signal-settings/autopilotfreq.png)
The **Autopilot Sensitivity** advanced setting allows autopilot to adjust to shorter or longer term trends depending on user preference.
### Dashboard Optimal Sensitivity
The Optimal Sensitivity is a value displayed on the Lux Dashboard showing the optimal **Sensitivity** setting when using Confirmation or Contrarian signal modes. This optimization is based on a grid search algorithm and as such will backtest every generated signals using a sensitivity ranging from 10 to 20 over the most recent 250 bars.
This feature works on any ticker & timeframe as long as at least 250 bars of historical data are available.
## Choosing The Right Method
While the optimal sensitivity provided by the dashboard is the most precise method since it's performing grid search, there is no "best" method for optimizing signals as it's up to the user to understand their style of trading and the price variations they want to trade (regardless of timeframes).
### Manual Adjustments
Do you specifically want to trade **shorter**-term trends on the timeframes you use?
* Consider using lower sensitivity values such as 5-10
Do you specifically want to trade **longer**-term trends on the timeframes you use?
* Consider using higher sensitivity values such as 20+
Alternatively, you can use the default of 12 for trading medium-term trends. This provides simple and responsive signals.
### Automatic Adjustments
Do you rely a lot on optimizing signals and are you ok with updating these manually over time?
* Use the Optimal Sensitivity provided by the dashboard to find more precise signal settings.
Do you completely dislike the process of adjusting signal settings altogether?
* Use the Autopilot sensitivity to allow the signals to adjust dynamically and work without the need of any user interaction.
Using Autopilot or the default settings are overall the simplest user experience as it allows you to completely avoid adjusting settings altogether.
# Signal Modes
The Signals & Overlays® toolkit displays signals that can indicate the current trend direction in the price and aim to support the analysis of a trader. There are two main signal modes available, each one fitting a different trading style, **Confirmation** signals, and **Contrarian** signals. The following sections on this page describe these two methodologies in detail.
Focusing on using other features within our toolkit alongside the provided signals will likely be the best decision for you rather than using them alone.
## Confirmation + Exits
![Confirmation Signals](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image470.png)
Confirmation signals are based on a performance adaptive trend following methodology. As the name suggests, they aim to confirm any potential action a trader might take and are more effective when used in confluence with other features like our indicator overlays.
There are two types of Confirmation signals, **normal** signals, and **strong (+)** signals. Strong (+) signals are signals that are in accordance with the current estimated trend, while normal signals can be caused by a retracement.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image316.png)
The Confirmation signals mode includes exit signals (represented by colored crosses). A bullish exit signal is displayed as a blue cross, while a bearish exit is displayed as an orange cross.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image592.png)
These exits signals aim to help traders find areas to consider exiting a position based on a previous confirmation signal at the highest price possible. Also, note that these exits would always exit a previous confirmation signal on a win.
Successive exit signals can occur during longer-term trends, as such the user can do partial exits instead of exiting an entire position. These exit signals can also be used within a user's analysis as potential reversal points, as such they do not necessarily have to be used as take profits using the Signals & Overlays toolkit.
## Contrarian + Exits
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image607.png)
Contrarian signals by design go in opposition to the current trend and aim to deliver extremely fast decision timing. More simply put, Contrarian signals aim to spot potential tops and bottoms.
The advantage of Contrarian methodologies is that they are less subject to lag than most trend-following methodologies, thus allowing for potentially higher profits, however, it is important to note that going against the trend exposes a trader to larger price variations, which means potentially **higher losses**.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image588.png)
Like Confirmation signals, some Contrarian signals can also be labeled as **strong (+)**. These strong signals occur when the price is excessively overbought or oversold and can have more of a chance of indicating a potential reversal.
Extra confluence such as declining volume or the occurrence of the signal near a significant support/resistance can be useful to tell when a signal is indicative of a reversal.
You can also use the Contrarian signals more safely as an alternative exit point for a position. Timing tops/bottoms is very challenging, however, these can be useful for the natural reversal trader in combination with other features within the Signals & Overlays toolkit.
The Contrarian signals mode also includes exit signals. A bullish exit signal is displayed as a blue cross, while a bearish exit is displayed as an orange cross.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/contrarian_exits.png)
Like Confirmation signals, Contrarian exit signals would always exit a previous confirmation signal on a win. Do note that successive exits will not occur for Contrarian signals.
Contrarian Exits can be particularly useful for when price temporarily moves in accordance with a displayed Contrarian signal before reversing, rendering the signal as false for a larger trend reversal.
If the user is confident that a larger reversal might still occur in accordance with a previously displayed Contrarian signal, the exit can be ignored or could lead to a partial exit only for a "scalp" trade.
## ML Classifier
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/classifier.png)
For users who want a deeper interpretation of signals, an adaptive threshold classifier is built-in to optionally enable at the top of the settings menu that automatically classifies both Confirmation & Contrarian signals between a range of 1 to 4 directly on the signal labels.
The displayed number indicates a degree of strength to your signals & can give user a deeper interpretation rather than just showing the base layer of normal vs strong. Do note the base layer of detecting normal vs strong trends is still displayed within the Confirmation Simple candle coloring mode which is on by default.
For Confirmation signals, lower-numbered signals (1-2) can be indicative of a potential reversal or retracement, while higher-numbered signals (3-4) can be more indicative of a trend continuation.
For Contrarian signals lower numbered signals can be indicative of an early trend with a lower chance of a larger reversal. Whereas higher numbers (3-4) will tend to occur on more developed trends, with a higher chance of larger trend reversal.
### ML Classifier Filter
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/classifier_settings.png)
Users can take their analysis even deeper by filtering out specific numbered signals from the advanced settings by entering the numbers that should stay on the chart. By default it shows "1234" as this would show all signals with the ML Classifier.
As an example, users could type into this box "12" to only display 1's and 2's on their chart. The same with "134" to only display 1's, 3's, and 4's on their chart depending on their preference for filtering specific signals.
## Display
It is possible to choose what type of signals you want to display here as well as displaying no signals at all, this is done from the settings menu in the **Signal Mode** drop-down menu.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/signals/image630.png)
By default, **Confirmation + Exits** is selected. **None** will not display any signal on the chart.
Signals are confirmed at the opening of the next candle, if you see a signal displayed on the most recent candle remember that it might be subject to change.
*CFTC Rule 4.41 - Hypothetical or Simulated performance results have certain limitations, unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.*
# TP/SL Points
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/tp-sl/settings.png)
The TP/SL feature displays 4 take profits/stop losses levels and aims to help the user set stop losses and take profits by estimating points of potential support/resistance from an initial user-selected condition.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/tp-sl/tpsl.png)
Take-profits/stop-loss levels are based on the option selected in the "TP/SL Levels" dropdown menu. Options include the following:
| Option | Description |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Signals` | Will calculate new take-profits/stop-losses when a new confirmation or contrarian signal is detected. If the signal is bullish, take profits will be located above the price and stop losses below; if bearish, the opposite applies. |
| `Smart Trail` | Will calculate new take-profits/stop-losses when the Smart Trail turns bullish or bearish. If it turns bullish, take profits will be located above the price and stop losses below; if bearish, the opposite applies. |
| `Reversal Zones` | Will calculate new take-profits/stop-losses when the price reach the outer bands of the reversal zones. If the price goes below the bottom zone, take profits will be located above the price and stop losses below; if the price goes above the top zone, the opposite applies. |
| `Trend Catcher` | Will calculate new take-profits/stop-losses when the Trend Catcher turns bullish or bearish. If it turns bullish, take profits will be located above the price and stop losses below; if bearish, the opposite applies. |
| `Trend Tracer` | Will calculate new take-profits/stop-losses when the Trend Tracer turns bullish or bearish. If it turns bullish, take profits will be located above the price and stop losses below; if bearish, the opposite applies. |
| `Neo Cloud` | Will calculate new take-profits/stop-losses when the Neo Cloud turns bullish or bearish. If it turns bullish, take profits will be located above the price and stop losses below; if bearish, the opposite applies. |
| `Custom Alert Creator` | Will calculate new take-profits/stop-losses when the user-set custom alert creator condition is true. |
When the price significantly deviates from the highest take profit or lowest stop loss, these will update, returning new relevant take profits and stop losses.
Users can notice when a tp/sl has updated based on where their levels start, if the levels start where the initial condition is located then it hasn't updated.
![](https://mintlify.s3.us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/tp-sl/tpsl_dist.png)
Users can control the distance between the price and the take profits/stop losses using the "Distance" setting, with higher values returning take profits/stop losses farther away from the price.
Make sure to adjust this setting according to the price variations you are trading. If you are trading large price variations, use a higher setting value.
### Alerts
Users can be alerted when the price reaches a take profit or stop loss level using the "Take Profit" and/or "Stop Loss" "any alert() function call" conditions. This alert triggers once per bar.
#### TP/SL Placeholders
Plots for accessing take profits and stop losses levels are available in order for users to set alerts based on them.
Use the placeholder `{{plot("Take Profit")}}` for accessing the nearest take profit value and `{{plot("Stop Loss")}}` for accessing the nearest stop loss value.
*CFTC Rule 4.41 - Hypothetical or Simulated performance results have certain limitations, unlike an actual performance record, simulated results do not represent actual trading. Also, since the trades have not been executed, the results may have under-or-over compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profit or losses similar to those shown.*