# LuxAlgo

## Docs

- [Alerts](https://docs.luxalgo.com/docs/backtesters/alerts)
- [Forecasting](https://docs.luxalgo.com/docs/backtesters/forecasting)
- [Entry Rules](https://docs.luxalgo.com/docs/backtesters/osc/entry)
- [Exit Conditions](https://docs.luxalgo.com/docs/backtesters/osc/exits)
- [Introduction](https://docs.luxalgo.com/docs/backtesters/osc/introduction)
- [Take Profit & Stop Loss](https://docs.luxalgo.com/docs/backtesters/osc/tpsl)
- [Entry Rules](https://docs.luxalgo.com/docs/backtesters/pac/entry)
- [Exit Rules](https://docs.luxalgo.com/docs/backtesters/pac/exits)
- [Introduction](https://docs.luxalgo.com/docs/backtesters/pac/introduction)
- [Take Profit & Stop Loss](https://docs.luxalgo.com/docs/backtesters/pac/tpsl)
- [Entry Rules](https://docs.luxalgo.com/docs/backtesters/s-o/entry)
- [Exit Conditions](https://docs.luxalgo.com/docs/backtesters/s-o/exits)
- [Introduction](https://docs.luxalgo.com/docs/backtesters/s-o/introduction)
- [Optimization](https://docs.luxalgo.com/docs/backtesters/s-o/optimization)
- [Take Profit & Stop Loss](https://docs.luxalgo.com/docs/backtesters/s-o/tpsl)
- [FAQ](https://docs.luxalgo.com/docs/getting-started/faq): Get answers to frequently asked questions including how to get access, product questions, and everything you need to know about billing.
- [How To Get Updates](https://docs.luxalgo.com/docs/getting-started/how-to-update)
- [Quickstart](https://docs.luxalgo.com/docs/getting-started/introduction): Start learning about how LuxAlgo works within minutes.
- [How To Use Discord](https://docs.luxalgo.com/docs/getting-started/join-discord)
- [TradingView Alerts](https://docs.luxalgo.com/docs/getting-started/setup-alerts)
- [How To Setup](https://docs.luxalgo.com/docs/getting-started/setup-toolkits)
- [What Is TradingView?](https://docs.luxalgo.com/docs/getting-started/tradingview)
- [What Is LuxAlgo?](https://docs.luxalgo.com/docs/getting-started/what-is-luxalgo)
- [Elements](https://docs.luxalgo.com/docs/screeners/osc/elements): This page list out all the information returned by the OSC screener.
- [Filtering](https://docs.luxalgo.com/docs/screeners/osc/filtering): This page explain how users can curate the information returned by the OSC screener using the filtering features.
- [Introduction](https://docs.luxalgo.com/docs/screeners/osc/introduction)
- [Sorting](https://docs.luxalgo.com/docs/screeners/osc/sorting): This page explain how users can sort a specific element returned by the PAC screener using the Sort By feature.
- [Elements](https://docs.luxalgo.com/docs/screeners/pac/elements): This page list out all the information returned by the PAC screener.
- [Filtering](https://docs.luxalgo.com/docs/screeners/pac/filtering): This page explain how users can curate the information returned by the PAC screener using the filtering features.
- [Introduction](https://docs.luxalgo.com/docs/screeners/pac/introduction)
- [Sorting](https://docs.luxalgo.com/docs/screeners/pac/sorting): This page explain how users can sort a specific element returned by the OSC screener using the Sort By feature.
- [Elements](https://docs.luxalgo.com/docs/screeners/s-o/elements): This page list out all the information returned by the S&O screener.
- [Filtering](https://docs.luxalgo.com/docs/screeners/s-o/filtering): This page explain how users can curate the information returned by the S&O screener using the filtering features.
- [Introduction](https://docs.luxalgo.com/docs/screeners/s-o/introduction)
- [Sorting](https://docs.luxalgo.com/docs/screeners/s-o/sorting): This page explain how users can sort a specific element returned by the S&O screener using the Sort By feature.
- [Alerts](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/alerts)
- [Confluence](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/confluence)
- [HyperWave](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/hyperwave)
- [Introduction](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/introduction)
- [Reversal Signals](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/reversal-signals)
- [Settings Reference](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/settings)
- [Smart Money Flow](https://docs.luxalgo.com/docs/toolkits/oscillator-matrix/smart-money-flow)
- [Alerts](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/alerts)
- [Fibonacci Retracements](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/fibonacci)
- [Imbalance Concepts](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/imbalances)
- [Introduction](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/introduction)
- [Liquidity Concepts](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/liquidity)
- [Market Structure](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/market-structures)
- [Volumetric Order Blocks](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/order-blocks)
- [Premium & Discount Zones](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/pdzones)
- [Highs & Lows MTF](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/previous-high-low)
- [Settings Reference](https://docs.luxalgo.com/docs/toolkits/price-action-concepts/settings)
- [Alerts](https://docs.luxalgo.com/docs/toolkits/signals-overlays/alerts)
- [Candle Coloring](https://docs.luxalgo.com/docs/toolkits/signals-overlays/candle-coloring)
- [Dashboard](https://docs.luxalgo.com/docs/toolkits/signals-overlays/dashboard)
- [Indicator Overlay](https://docs.luxalgo.com/docs/toolkits/signals-overlays/indicator-overlay)
- [Introduction](https://docs.luxalgo.com/docs/toolkits/signals-overlays/introduction)
- [Settings Reference](https://docs.luxalgo.com/docs/toolkits/signals-overlays/settings)
- [Signal Settings](https://docs.luxalgo.com/docs/toolkits/signals-overlays/signal-settings)
- [Signal Modes](https://docs.luxalgo.com/docs/toolkits/signals-overlays/signals)
- [TP/SL Points](https://docs.luxalgo.com/docs/toolkits/signals-overlays/tp-sl-points)


## Optional

- [Community](https://discord.com/invite/LUX)


# 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)

<Note>
  Backtester (PAC) does not have Exit Long/Short TP/SL alerts, instead only having Exit Long/Short
</Note>

## 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                                                  |
| :----------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: |
|    <div style={{ textAlign: 'left' }}>`{open}`</div>   |                         <div style={{ textAlign: 'left' }}>Current opening price</div>                         |
|    <div style={{ textAlign: 'left' }}>`{high}`</div>   |                           <div style={{ textAlign: 'left' }}>Current high price</div>                          |
|    <div style={{ textAlign: 'left' }}>`{low}`</div>    |                           <div style={{ textAlign: 'left' }}>Current low price</div>                           |
|   <div style={{ textAlign: 'left' }}>`{close}`</div>   |                         <div style={{ textAlign: 'left' }}>Current closing price</div>                         |
|   <div style={{ textAlign: 'left' }}>`{volume}`</div>  |                             <div style={{ textAlign: 'left' }}>Current volume</div>                            |
|    <div style={{ textAlign: 'left' }}>`{time}`</div>   |                  <div style={{ textAlign: 'left' }}>Current unix time (in milliseconds)</div>                  |
|   <div style={{ textAlign: 'left' }}>`{ticker}`</div>  |   <div style={{ textAlign: 'left' }}>Chart ticker (e.g: for BINANCE:BTCUSDT the ticker name is BTCUSDT)</div>  |
|   <div style={{ textAlign: 'left' }}>`{prefix}`</div>  | <div style={{ textAlign: 'left' }}>Ticker prefix (e.g: for BINANCE:BTCUSDT the ticker prefix is BINANCE)</div> |
| <div style={{ textAlign: 'left' }}>`{timeframe}`</div> |                            <div style={{ textAlign: 'left' }}>Chart timeframe</div>                            |
|     <div style={{ textAlign: 'left' }}>`{tp}`</div>    |                           <div style={{ textAlign: 'left' }}>Take profit value</div>                           |
|     <div style={{ textAlign: 'left' }}>`{sl}`</div>    |                            <div style={{ textAlign: 'left' }}>Stop loss value</div>                            |

<Note>
  New long entry generated at `{time}` and price `{close}` on `{ticker}{timeframe}` with take profit `{tp}` and stop loss `{sl}`
</Note>


# 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.

<Note>
  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.
</Note>

### 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.

<Note>
  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.
</Note>

### 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.

<Warning>
  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.
</Warning>


# 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.

<Tip>
  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)
</Tip>

### 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.

<Card title="Example">
  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.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Invalidation Step">
      Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
    </Step>
  </Steps>
</Card>

### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 Trigger">
      Step 1 condition trigger, we start evaluating step 2 from now.
    </Step>
  </Steps>
</Card>

#### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 or 2 Trigger">
      Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
    </Step>
  </Steps>
</Card>

## 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.

<Note>
  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.
</Note>


# 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.

<Note>
  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.
</Note>

### 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.

<Note>
  The timezone is the same as the one of the chart symbol.
</Note>

### 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` : <Tooltip tip="(high + low) / 2"> Median price </Tooltip>
*   `ohlc4` : <Tooltip tip="(open + high + low + close) / 4"> Average price </Tooltip>
*   `hlc3` : <Tooltip tip="(high + low + close) / 3"> Typical price </Tooltip>
*   `hlcc4` : <Tooltip tip="(high + low + 2 * close) / 4"> Weighted price </Tooltip>

## 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:

<CardGroup cols={3}>
  <Card title="Entry" icon="arrow-up-arrow-down" href="/backtesters/osc/entry" />

  <Card title="Exits" icon="xmark" href="/backtesters/osc/exits" />

  <Card title="Take Profits/Stop Losses" icon="shield" href="/backtesters/osc/tpsl" />
</CardGroup>

# 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

<Warning>
  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.*
</Warning>


# 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.

<Note>
  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.
</Note>

## 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     |                                                       <div align="left">Set the take profit/stop loss orders at the specified price.</div>                                                       |
|    Currency   |                <div align="left">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.</div>                |
|     Ticks     |                  <div align="left">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.</div>                 |
|       %       |                    <div align="left">Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.</div>                    |
|      ATR      | <div align="left">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.</div> |
|    Forecast   |        <div align="left">(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.</div>        |
| Trailing Stop |                <div align="left">(Only available for stop loss orders) Enable a percentage based trailing stop. A position will be exited if price reach the trailing stop.</div>                |

<Note>
  The average true range used to set take profits/stop losses orders make use of a period of 200 bars.
</Note>

### 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.

<Warning>
  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.
</Warning>


# 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)

<Note>
  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)
</Note>

## 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.

<Note>
  Session timezone is the same as the one of the chart symbol exchange (UTC for cryptocurrencies)
</Note>

## 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.

<Tip>
  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)
</Tip>

### 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.

<Card title="Example">
  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.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Invalidation Step">
      Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
    </Step>
  </Steps>
</Card>

### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 Trigger">
      Step 1 condition trigger, we start evaluating step 2 from now.
    </Step>
  </Steps>
</Card>

#### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 or 2 Trigger">
      Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
    </Step>
  </Steps>
</Card>

## 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.

<Note>
  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.
</Note>


# 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.

<Note>
  The timezone is the same as the one of the chart symbol.
</Note>

## 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.

<Tip>
  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.
</Tip>


# 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:

<CardGroup cols={3}>
  <Card title="Entry" icon="arrow-up-arrow-down" href="/backtesters/pac/entry" />

  <Card title="Exits" icon="xmark" href="/backtesters/pac/exits" />

  <Card title="Take Profits/Stop Losses" icon="shield" href="/backtesters/pac/tpsl" />
</CardGroup>

# 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

<Warning>
  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.*
</Warning>


# 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.

<Note>
  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.
</Note>

## 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     |                                                       <div align="left">Set the take profit/stop loss orders at the specified price.</div>                                                       |
|    Currency   |                <div align="left">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.</div>                |
|     Ticks     |                  <div align="left">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.</div>                 |
|       %       |                    <div align="left">Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.</div>                    |
|      ATR      | <div align="left">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.</div> |
|    Forecast   |        <div align="left">(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.</div>        |
| Trailing Stop |                <div align="left">(Only available for stop loss orders) Enable a percentage based trailing stop. A position will be exited if price reach the trailing stop.</div>                |

<Note>
  The average true range used to set take profits/stop losses orders make use of a period of 200 bars.
</Note>

### 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.

<Warning>
  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.
</Warning>


# 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.

<Tip>
  More information regarding signal settings can be found [here](/docs/toolkits/signals-overlays/signal-settings)
</Tip>

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     |                                                               <ul style={{ textAlign: 'left' }}><li>Confirmation</li><li>Contrarian</li></ul>                                                               | <ul style={{ textAlign: 'left' }}><li>Any Bullish</li><li>Any Bearish</li><li>Normal Bullish</li><li>Normal Bearish</li><li>Strong Bullish</li><li>Strong Bearish</li><li>Bullish Classifier</li><li>Bearish Classifier</li></ul> | <div align="left"> 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.<br /><br />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. </div> |
|    Reversal Zones    |   <ul style={{ textAlign: 'left' }}><li>Above R3</li> <li>Within \[R3-R2]</li> <li>Within \[R2-R1]</li> <li>Within \[R1-S1]</li> <li>Within \[S1-S2]</li> <li>Within \[S2-S3]</li> <li>Under S3</li></ul>   |                                                                                                                                                                                                                                   |                                                                                                                                                                                                         <div align="left"> Enter a position if price is above/under or within the specified extremities.</div>                                                                                                                                                                                                        |
|      Smart Trail     |                                            <ul style={{ textAlign: 'left' }}><li>Bullish</li><li>Bearish</li><li>Switch Bullish</li><li>Switch Bearish</li></ul>                                            |                                                                                                                                                                                                                                   |                                                                                                                                                                                             <div align="left"> Enter a position if the Smart Trail switch bullish/bearish or if it is currently bullish or bearish.</div>                                                                                                                                                                                             |
|     Trend Tracer     |                                            <ul style={{ textAlign: 'left' }}><li>Bullish</li><li>Bearish</li><li>Switch Bullish</li><li>Switch Bearish</li></ul>                                            |                                                                                                                                                                                                                                   |                                                                                                                                                                                             <div align="left"> Enter a position if the Trend Tracer switch bullish/bearish or if it is currently bullish or bearish.</div>                                                                                                                                                                                            |
|     Trend Catcher    |                                            <ul style={{ textAlign: 'left' }}><li>Bullish</li><li>Bearish</li><li>Switch Bullish</li><li>Switch Bearish</li></ul>                                            |                                                                                                                                                                                                                                   |                                                                                                                                                                                            <div align="left"> Enter a position if the Trend Catcher switch bullish/bearish or if it is currently bullish or bearish.</div>                                                                                                                                                                                            |
|       Neo Cloud      | <ul style={{ textAlign: 'left' }}><li>Bullish</li><li>Bearish</li><li>Switch Bullish</li><li>Switch Bearish</li><li>Lead Step Up</li><li>Lead Step Down</li><li>Lag Step Up</li><li>Lag Step Down</li></ul> |                                                                                                                                                                                                                                   |                                                                                                                                                                                              <div align="left"> Enter a position if the Neo Cloud switch bullish/bearish or if it is currently bullish or bearish.</div>                                                                                                                                                                                              |
|    Trend Strength    |                                                               <ul style={{ textAlign: 'left' }}><li>Greater Than</li><li>Lower Than</li></ul>                                                               |                                                                                                                                                                                                                                   |                                                                                                                                                                                                     <div align="left"> Enter a position if the Trend Strength is greater or lower than the specified value.</div>                                                                                                                                                                                                     |
|        Session       |                                                                                               Session interval                                                                                              |                                                                                                                                                                                                                                   |                                                                                                                                                                                                             <div align="left"> Enter a position if it is within the user specified session interval.</div>                                                                                                                                                                                                            |
| External Condition 1 |                         <ul style={{ textAlign: 'left' }}><li>Greater Than</li><li>Lower Than</li><li>Equal</li><li>Crossing Over</li><li>Crossing Under</li><li>Crossing</li></ul>                         |                                                                                                                                                                                                                                   |                                                                                                                                                                                         <div align="left"> Enter a position if the tested condition between the first specified external source and second one is true.</div>                                                                                                                                                                                         |
| External Condition 2 |                         <ul style={{ textAlign: 'left' }}><li>Greater Than</li><li>Lower Than</li><li>Equal</li><li>Crossing Over</li><li>Crossing Under</li><li>Crossing</li></ul>                         |                                                                                                                                                                                                                                   |                                                                                                                                                                                         <div align="left"> Enter a position if the tested condition between the first specified external source and second one is true.</div>                                                                                                                                                                                         |
| External Condition 3 |                         <ul style={{ textAlign: 'left' }}><li>Greater Than</li><li>Lower Than</li><li>Equal</li><li>Crossing Over</li><li>Crossing Under</li><li>Crossing</li></ul>                         |                                                                                                                                                                                                                                   |                                                                                                               <div align="left"> 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.</div>                                                                                                              |

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.

<Note>
  If the **Exit On Signal** setting is enabled, existing positions will be exited on the occurrence of a confirmation/contrarian signal if enabled.
</Note>

## 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.

<Note>
  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.
</Note>


# 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` : <Tooltip tip="(high + low) / 2"> Median price </Tooltip>
*   `ohlc4` : <Tooltip tip="(open + high + low + close) / 4"> Average price </Tooltip>
*   `hlc3` : <Tooltip tip="(high + low + close) / 3"> Typical price </Tooltip>
*   `hlcc4` : <Tooltip tip="(high + low + 2 * close) / 4"> Weighted price </Tooltip>

## 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.

<Note>
  Builtin exits will always exit a position on a profit.
</Note>

## 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.

<Note>
  The timezone is the same as the one of the chart symbol.
</Note>

## 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:

<CardGroup cols={2}>
  <Card title="Entry" icon="arrow-up-arrow-down" href="/backtesters/s-o/entry" />

  <Card title="Exits" icon="xmark" href="/backtesters/s-o/exits" />

  <Card title="Take Profits/Stop Losses" icon="shield" href="/backtesters/s-o/tpsl" />

  <Card title="Optimization" icon="flask-gear" href="/backtesters/s-o/optimization" />
</CardGroup>

# 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           | 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

<Warning>
  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.*
</Warning>


# 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.

<Note>
  Certain settings will disable the optimization procedure, such as disabling the backtesting window or using autopilot.
</Note>

## 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.

<Tabs>
  <Tab title="Net Profit">
    The overall profit or loss achieved (higher is better).
  </Tab>

  <Tab title="Winrate">
    The percentage of winning trades (higher is better).
  </Tab>

  <Tab title="Profit Factor">
    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.
  </Tab>

  <Tab title="Maximum Drawdown">
    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.
  </Tab>

  <Tab title="Potential Ratio (φ)">
    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.
  </Tab>
</Tabs>

Optimization can be performed on any given range for the **Sensitivity** setting.

<Warning>
  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.
</Warning>

<Note>
  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.
</Note>

### 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.

<Note>
  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.
</Note>

## 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     |                                                       <div align="left">Set the take profit/stop loss orders at the specified price.</div>                                                       |
|    Currency   |                <div align="left">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.</div>                |
|     Ticks     |                  <div align="left">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.</div>                 |
|       %       |                    <div align="left">Set the take profit/stop loss orders a specified percentage away from the closing price preceding the entry of a long/short order.</div>                    |
|      ATR      | <div align="left">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.</div> |
|    Forecast   |        <div align="left">(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.</div>        |
| Trailing Stop |             <div align="left">(Only available for stop loss orders) Enable a percentage-based trailing stop. A position will be exited if the price reaches the trailing stop.</div>             |

<Note>
  The average true range used to set take profits/stop losses orders uses a period of 200 bars.
</Note>

### 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.

<Warning>
  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.
</Warning>


# FAQ

Get answers to frequently asked questions including how to get access, product questions, and everything you need to know about billing.

## Access

<AccordionGroup>
  <Accordion title="How do I get access?">
    <Steps>
      <Step title="First Step">Sign up to any plan on [our website](https://luxalgo.com).</Step>
      <Step title="Second Step">After purchasing a subscription, you will be prompted to **connect your accounts** & get instant access.</Step>
      <Step title="Third Step">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.</Step>
    </Steps>
  </Accordion>

  <Accordion title="Which plan should I choose?">
    The **Premium Plan** is the most popular choice since it works for any trading style and includes the full set of our Signals & Overlays™, Oscillator Matrix™, and Price Action Concepts™ toolkits & screeners.

    Choose the Essential Plan for simple features like support/resistance, trend lines, patterns and more. This plan is also great for serious traders who just want to speed up their analysis with our Price Action Concepts™ toolkit & screener.

    Choose the Ultimate Plan if you're a data-driven trader. It has 3 backtesters that allow you to backtest all of our toolkits seamlessly.
  </Accordion>

  <Accordion title="Why don't I have access?">
    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.
  </Accordion>
</AccordionGroup>

## Products

<AccordionGroup>
  <Accordion title="What markets & timeframes do LuxAlgo exclusive tools work on?">
    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.
  </Accordion>

  <Accordion title="What is the accuracy of LuxAlgo signals?">
    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.
  </Accordion>

  <Accordion title="Do your indicators repaint?">
    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.
  </Accordion>

  <Accordion title="When is a signal confirmed?">
    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.
  </Accordion>

  <Accordion title="Do I need to pay for TradingView to use LuxAlgo?">
    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).
  </Accordion>

  <Accordion title="Are LuxAlgo paid plans friendly for beginners?">
    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.
  </Accordion>

  <Accordion title="Can I automate my trades with LuxAlgo?">
    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.
  </Accordion>

  <Accordion title="Can I use LuxAlgo on MetaTrader (MT4 or MT5)?">
    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.
  </Accordion>

  <Accordion title="Can I see every indicator in real-time data?">
    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.
  </Accordion>

  <Accordion title="How are the paid tools better than the free LuxAlgo indicators?">
    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.
  </Accordion>

  <Accordion title="Why am I getting 'Study_not_auth' error?">
    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).
  </Accordion>

  <Accordion title="Why am I getting 'Internal Server Study' error?">
    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.
  </Accordion>

  <Accordion title="Why am I getting 'Memory limits exceeded. The study allocates X times more than allowed' error?">
    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.
  </Accordion>
</AccordionGroup>

## Billing

<AccordionGroup>
  <Accordion title="How do I cancel?">
    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.
  </Accordion>

  <Accordion title="How do I reactivate my subscription?">
    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.
  </Accordion>

  <Accordion title="How do I upgrade my 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.
  </Accordion>

  <Accordion title="How can I extend my current subscription plan?">
    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.
  </Accordion>

  <Accordion title="How do discounts work?">
    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.
  </Accordion>

  <Accordion title="Is there a free trial?">
    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.
  </Accordion>

  <Accordion title="Will the price of my subscription ever change?">
    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.
  </Accordion>

  <Accordion title="How long does it take to get access after purchasing?">
    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.
  </Accordion>

  <Accordion title="How do downgrades work?">
    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.
  </Accordion>

  <Accordion title="Can I switch access to a different TradingView account?">
    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.
  </Accordion>

  <Accordion title="How long does customer support take to respond?">
    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.
  </Accordion>
</AccordionGroup>


# 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.

<Tip>
  Make sure to save your **Chart Layout** on Tradingview after successfully installing an update so you can ensure it will stay
</Tip>

![](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)

<Tip>
  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!
</Tip>


# Quickstart

Start learning about how LuxAlgo works within minutes.

<img className="block dark:hidden" src="https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/banner.jpg" alt="Hero Light" />

<img className="hidden dark:block" src="https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/banner.jpg" alt="Hero Dark" />

## 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.

<CardGroup cols={2}>
  <Card title="How To Setup" icon="screwdriver-wrench" href="/docs/getting-started/setup-toolkits">
    Learn how to setup exclusive LuxAlgo tools on TradingView
  </Card>

  <Card title="Toolkits" icon="toolbox" href="/docs/toolkits/price-action-concepts/introduction">
    In-depth guides on how to use our exclusive toolkits
  </Card>

  <Card title="Screeners" icon="magnifying-glass-waveform" href="/docs/screeners/s-o/introduction">
    In-depth guides on how to use our screeners
  </Card>

  <Card title="Backtesters" icon="sliders" href="/backtesters/s-o/introduction">
    In-depth guides on our toolkit backtesters
  </Card>
</CardGroup>

## Frequently Asked Questions

Need quick answers to general questions about our website, products, or billing? Click the button below to visit our FAQ.

<Card title="FAQ" icon="clipboard-question" href="/docs/getting-started/faq">
  Read through our frequently asked questions
</Card>

## 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.

<Note>
  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.
</Note>

## 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.png)

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.

<Note>
  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.
</Note>


# 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 LuxAlgo 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.

<Note>
  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.
</Note>

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>
  Note that `plot("Name")` must be part of the indicator selected in the alert condition.
</Note>

## 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 toolkit names 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)

<Note>
  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.
</Note>

If you want to quickly access our toolkits 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.

<Note>
  This is the platform where we host our exclusive LuxAlgo toolkits. 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 toolkits.
</Note>

## 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.

<Note>
  You can also directly type the name of the symbol on your keyboard.
</Note>

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.

<Note>
  You can also type the timeframe directly on your keyboard to change it.
</Note>

### 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)

<Note>
  You can also save a chart layout by pressing `ctrl + s` or `cmd + s` for mac users, on your keyboard.
</Note>


# What Is LuxAlgo?



LuxAlgo is the world’s largest provider of trading indicators (free & paid).

We're mostly known for the hundreds of free tools we've created for 5+ charting platforms like TradingView, however, we also have exclusive tools on [our website](https://luxalgo.com).

The exclusive tools we offer are the best of our best work and are actively updated from our community's feedback.

![](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 toolkits, receive thousands of alerts, and improve their strategies with a large strategy forum.

LuxAlgo users typically integrate a few features in the toolkits and incorporate them as an additional workflow in their trading analysis.

Access to these tools are all within our subscription 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 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 20,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 indicators 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 indicators we provide work like a charm and 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 for your analysis and we actively update the toolkits over time which is what actually can make them useful for you in your trading journey.

## The User And The Indicator

A trader may expect indicators to work by themselves without requiring any user interaction; just set them running, forget them, and make profits. "If an indicator can't generate returns under these conditions then it isn't worth using."

The worth of a technical indicator will hardly be found in its ability to make you money by itself, the complexity of price variations makes this far too difficult. A technical indicator is not smart nor adaptable enough to overcome such extreme conditions, however, this is not the case of the experienced trader, who will not use the 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.*

The indicator can access and process large amounts of data, delivering a large quantity of useful and easy to interpret 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.

> *When I was passing tests to work at a private investment fund, we needed to work alongside an automated trading algorithm, I thought that we just had to let it run, but no, we had to stop the algorithm during huge volatile markets movements, limiting risk, so we had to team up with the algorithm to make it work, this changed my vision on technical indicators and their usability in trading.*
>
> — *alexgrover*

An indicator that gives non-redundant information that is easy to customize throughout any trader's journey will create a strong pairing; and this is what LuxAlgo aims to provide.

## 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 toolkits give you features that absolutely any style of trader can use to their fullest potential.

This is part of the success of our toolkits with traders; while a lot of indicators give you a two-dimensional picture of the market, we give you a three-dimensional picture, giving you the liberty to trade the indicators the way you want via easily customizable all-in-one indicators, used either as as a standalone 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.

<Frame caption="OSC Screener with △ Bullish Rating filter enabled">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/screeners/osc/filtering/filter.png" />
</Frame>

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.

<CardGroup cols={3}>
  <Card title="Elements" icon="puzzle-piece" href="/screeners/osc/elements" />

  <Card title="Filtering" icon="filter" href="/screeners/osc/filtering" />

  <Card title="Sorting" icon="arrow-up-wide-short" href="/screeners/osc/sorting" />
</CardGroup>

<Info>
  Having access to the **Oscillator Matrix™** will automatically grant you access to the OSC screener.
</Info>

## 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

<Note>When "None" is selected the screener tickers appear as per their order in the Tickers settings.</Note>

![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.

<Frame caption="PAC Screener with △ Bullish Rating filter enabled">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/screeners/pac/filtering/filter.png" />
</Frame>

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.

<CardGroup cols={3}>
  <Card title="Elements" icon="puzzle-piece" href="/screeners/pac/elements" />

  <Card title="Filtering" icon="filter" href="/screeners/pac/filtering" />

  <Card title="Sorting" icon="arrow-up-wide-short" href="/screeners/pac/sorting" />
</CardGroup>

<Info>
  Having access to the **Price Action Concepts™** will automatically grant you access to the PAC screener.
</Info>

## 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

<Note>When "None" is selected the screener tickers appear as per their order in the Tickers settings.</Note>

![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.

<Frame caption="S&O Screener with △ Bullish Rating filter enabled">
  <img src="https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/screeners/s-o/filtering/filter.png" />
</Frame>

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.

<CardGroup cols={3}>
  <Card title="Elements" icon="puzzle-piece" href="/screeners/s-o/elements" />

  <Card title="Filtering" icon="filter" href="/screeners/s-o/filtering" />

  <Card title="Sorting" icon="arrow-up-wide-short" href="/screeners/s-o/sorting" />
</CardGroup>

<Info>
  Having access to the **Signals & Overlays™** will automatically grant you access to the S\&O screener.
</Info>

## 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

<Note>When "None" is selected the screener tickers appear as per their order in the Tickers settings.</Note>

![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)


# Alerts



<iframe width="560" height="315" src="https://www.youtube.com/embed/olKQq5XR5S0?t=38?si=Vl1jU1PYFnzWDQve" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

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).

<Note>
  In order for an alert to work in the toolkit make sure the related feature is enabled
</Note>

## Any alert() function call

<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/alerts/any-alert.png)
</div>

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.

<Note>
  Alert conditions for the "any alert() function call" use a `once per bar close` frequency
</Note>

### 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.

<Tip>
  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)
</Tip>

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.

<Tip>
  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)
</Tip>

<Warning>
  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.
</Warning>

#### 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.

<Tip>
  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.
</Tip>

#### 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.

<Card title="Example">
  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.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Invalidation Step">
      Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
    </Step>
  </Steps>
</Card>

### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 Trigger">
      Step 1 condition trigger, we start evaluating step 2 from now.
    </Step>
  </Steps>
</Card>

#### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 or 2 Trigger">
      Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
    </Step>
  </Steps>
</Card>

### 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                                                           |
| ------------------------- | --------------------------------------------------------------------- |
| 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}) => (
    <Tooltip tip={tooltip}>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16" fill="gray">
            <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/>
        </svg>
    </Tooltip>
);

| Alert                | Description                                                           | Default                                                                    |
| -------------------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| HWO Signal Up        | Triggers on the event of an HyperWave signal up                       | <Exclamation tooltip="Hyper Wave oscillator upward signal" />              |
| Oversold             | Triggers on the event of an HyperWave oversold signal up              | <Exclamation tooltip="Oversold Hyper Wave oscillator upward signal" />     |
| HWO Signal Down      | Triggers on the event of an HyperWave signal down                     | <Exclamation tooltip="Hyper Wave oscillator downward signal" />            |
| Overbought           | Triggers on the event of an HyperWave overbought signal down          | <Exclamation tooltip="Overbought Hyper Wave oscillator downward signal" /> |
| Reversal Up          | Triggers on the event of a detected reversal up signal                | <Exclamation tooltip="Bullish reversal" />                                 |
| +                    | Triggers on the event of a detected reversal up + signal              | <Exclamation tooltip="Bullish reversal +" />                               |
| Reversal Down        | Triggers on the event of a detected reversal down signal              | <Exclamation tooltip="Bearish reversal" />                                 |
| +                    | Triggers on the event of a detected reversal down + signal            | <Exclamation tooltip="Bearish reversal +" />                               |
| Bullish Overflow     | Triggers when bullish overflow is detected                            | <Exclamation tooltip="Bullish overflow" />                                 |
| Bearish Overflow     | Triggers when bearish overflow is detected                            | <Exclamation tooltip="Bearish overflow" />                                 |
| Bullish Divergence   | Triggers on the event of a detected bullish divergence                | <Exclamation tooltip="Bullish divergence" />                               |
| Bearish Divergence   | Triggers on the event of a detected bearish divergence                | <Exclamation tooltip="Bearish divergence" />                               |
| Bullish Confluence   | Triggers when a weak bullish confluence is detected                   | <Exclamation tooltip="Weak bullish confluence" />                          |
| Strong               | Triggers when a strong bullish confluence is detected                 | <Exclamation tooltip="Strong bullish confluence" />                        |
| Bearish Confluence   | Triggers when a weak bearish confluence is detected                   | <Exclamation tooltip="Weak bearish confluence" />                          |
| Strong               | Triggers when a strong bearish confluence is detected                 | <Exclamation tooltip="Strong bearish confluence" />                        |
| Custom Alert Creator | Triggers on the event of a user set custom alert condition being true | <Exclamation tooltip="Custom step condition triggered" />                  |


# Confluence



<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/confluence/settings.png)
</div>

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.

<Note>
  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
</Note>

## 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.

<Note>
  The confluence meter had an associated numerical that can be used in external scripts using the output "Confluence Meter Value"
</Note>


# HyperWave



<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/settings.png)
</div>

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.

<Note>
  The HyperWave and every associated components (Signal line, turning points, divergences) can be disabled by toggling off "Show HyperWave"
</Note>

## 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.

<Tip>
  It can be more interesting to use a higher signal line length when the **Main Length** setting is high.
</Tip>

## 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

<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/hyper-wave/divergences-settings.png)
</div>

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.

<Note>
  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.
</Note>


# Introduction



<iframe width="560" height="315" src="https://www.youtube.com/embed/ujisD2JieZA?si=Tm2iUEPWj2gxxi4G" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

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:

<CardGroup cols={2}>
  <Card title="HyperWave" icon="wave-pulse" href="/docs/toolkits/oscillator-matrix/hyperwave" />

  <Card title="Smart Money Flow" icon="chart-area" href="/docs/toolkits/oscillator-matrix/smart-money-flow" />

  <Card title="Reversal Signals" icon="sort" href="/docs/toolkits/oscillator-matrix/reversal-signals" />

  <Card title="Confluence" icon="infinity" href="/docs/toolkits/oscillator-matrix/confluence" />
</CardGroup>

## Alerts

Oscillator Matrix™ can alert the user for multiple conditions, learn more about the provided alert conditions/setups here:

<Card title="Alerts" icon="bell" href="/docs/toolkits/oscillator-matrix/alerts" />

## 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:

<Card title="Settings Reference" icon="gear" href="/docs/toolkits/oscillator-matrix/settings" />


# Reversal Signals



<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/reversal-signals/settings.png)
</div>

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



<Info>
  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.
</Info>

## Smart Money Flow

***

### Show Money Flow

<ResponseField name="Toggle" type="default: true" />

Display Smart Money Flow oscillator

### Money Flow

<ResponseField name="Numerical Input" type="default: 35" />

Money flow oscillator length, higher values will highlight longer term money flow.

### Smooth

<ResponseField name="Numerical Input" type="default: 6" />

Money flow oscillator smoothing amount, higher values will return a smoother Money Flow oscillator.

## HyerWave

***

### Show HyerWave

<ResponseField name="Toggle" type="default: true" />

Display HyperWave oscillator

### HyperWave Length

<ResponseField name="Numerical Input" type="default: 7" />

HyperWave length setting. Higher values will highlight longer term variations from the HyperWave oscillator.

### Signal

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="SMA" default />

    <ResponseField name="Trailing Stop" />
  </Expandable>
</ResponseField>

Type of signal line displayed alongside the HyperWave.

<ResponseField name="Numerical Input" type="default: 3" />

Length of the signal method applied to the HyperWave oscillator, higher values will return longer term signals returned from the HyperWave.

### Colors

<ResponseField name="Numerical Input" type="default: 80" />

Transparency of the area between the HyperWave and its signal plot.

## HyperWave Divergences

***

### Divergences Sensitivity %

<ResponseField name="Numerical Input" type="default: 10" />

Sensitivity of the divergences detection algorithm, with lower values will return fewer and longer-term divergences.

### Show Divergences

<ResponseField name="Toggle" type="default: true" />

Display divergences between the price and HyperWave oscillator on the oscillator pane.

### Show Divergences On Chart

<ResponseField name="Toggle" type="default: true" />

Display divergences between the price and HyperWave oscillator on the price chart.

## Reversals

***

### Reversal Factor

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" default />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />
  </Expandable>
</ResponseField>

Controls the frequency at which reversals are detected by the HyperWave, with higher values returning less frequent and longer term potential reversals.

### Show Reversals

<ResponseField name="Toggle" type="default: true" />

Display reversal signals at the top/bottom of the indicator pane.

## Confluence

***

### Upper Confluence

<ResponseField name="Toggle" type="default: true" />

Display upper confluence area.

### Lower Confluence

<ResponseField name="Toggle" type="default: true" />

Display lower confluence area.

### Show Confluence Meter

<ResponseField name="Toggle" type="default: false" />

Display confluence meter.

### Meter Width

<ResponseField name="Numerical" type="default: 3" />

Width of the confluence meter.

## Custom Alert Creator

***

### Money Flow

<ResponseField name="Toggle" type="default: false" />

Enable the selected Money Flow condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the current Money Flow value with the inline numerical input.

<ResponseField name="Numerical Input" type="default: 50" />

Value used to compare the Money Flow with.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Money Flow condition step in the custom alert creator sequence.

### Overflow

<ResponseField name="Toggle" type="default: false" />

Enable the selected Overflow condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Equal" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the current Overflow value with the inline numerical input.

<ResponseField name="Numerical Input" type="default: 50" />

Value used to compare the Overflow with.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Overflow condition step in the custom alert creator sequence.

### HyperWave

<ResponseField name="Toggle" type="default: false" />

Enable the selected HyperWave condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any" default />

    <ResponseField name="Any Bullish" />

    <ResponseField name="Regular Bullish" />

    <ResponseField name="Oversold Bullish" />

    <ResponseField name="Any Bearish" />

    <ResponseField name="Regular Bearish" />

    <ResponseField name="Overbought Bearish" />

    <ResponseField name="Greater Than" />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />
  </Expandable>
</ResponseField>

HyperWave conditions. Includes comparison operators used to compare the current HyperWave value with the inline numerical input.

<ResponseField name="Numerical Input" type="default: 50" />

Value used to compare the HyperWave with if a comparison operator is selected in the dropdown conditions.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

HyperWave condition step in the custom alert creator sequence.

### Reversals

<ResponseField name="Toggle" type="default: false" />

Enable the selected Reversal condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any Reversal" default />

    <ResponseField name="Any Reversal Up" />

    <ResponseField name="Reversal Up -" />

    <ResponseField name="Reversal Up +" />

    <ResponseField name="Any Reversal Down" />

    <ResponseField name="Reversal Down -" />

    <ResponseField name="Reversal Down +" />
  </Expandable>
</ResponseField>

Reversal conditions.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Reversal condition step in the custom alert creator sequence.

### Divergences

<ResponseField name="Toggle" type="default: false" />

Enable the selected Divergences condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any" default />

    <ResponseField name="Bullish" />

    <ResponseField name="Bearish" />
  </Expandable>
</ResponseField>

Divergences conditions.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Divergences condition step in the custom alert creator sequence.

### Confluence

<ResponseField name="Toggle" type="default: false" />

Enable the selected Confluence condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Strong Bullish" default />

    <ResponseField name="Weak Bullish" />

    <ResponseField name="Strong Bearish" />

    <ResponseField name="Weak Bearish" />
  </Expandable>
</ResponseField>

Confluence conditions.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Confluence condition step in the custom alert creator sequence.

### Confluence Meter

<ResponseField name="Toggle" type="default: false" />

Enable the selected Confluence Meter condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Equal" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the current Confluence Meter value with the inline numerical input.

<ResponseField name="Numerical Input" type="default: 50" />

Value used to compare the Confluence Meter with.

#### Confluence Meter Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Confluence Meter condition step in the custom alert creator sequence.

### External Condition (1)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (1)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

First external source condition step in the custom alert creator sequence.

### External Condition (2)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (2)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Second external source condition step in the custom alert creator sequence.

### External Condition (3)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the selected source to the selected numerical value.

<ResponseField name="Numerical Input" type="default:0" />

Numerical input.

#### External Step (3)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Third external source condition step in the custom alert creator sequence.

### Invalidation Behavior

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="None" default>
      No invalidation behavior.
    </ResponseField>

    <ResponseField name="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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 Trigger">
            Step 1 condition trigger, we start evaluating step 2 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>

    <ResponseField name="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 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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 or 2 Trigger">
            Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>
  </Expandable>
</ResponseField>

Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below.

### Maximum Step Interval

<ResponseField name="Numerical Input" type="default:10" />

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

<ResponseField name="Toggle" type="default:true" />

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

<ResponseField name="Numerical" type="default:10000" />

Amount of most recent bars used for the calculation of the toolkit. Lower values allow returning faster computation times.


# Smart Money Flow



<div align="center">
  ![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-oscillator/smart-money-flow/settings.png)
</div>

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.

<Note>
  The Money Flow and every associated components (overflow, thresholds) can be disabled by toggling off "Show Money Flow"
</Note>

## 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



<iframe width="560" height="315" src="https://www.youtube.com/embed/olKQq5XR5S0?t=38?si=Vl1jU1PYFnzWDQve" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

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).

<Note>
  In order for an alert to work in the toolkit make sure the related feature is enabled
</Note>

## 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.

<Tip>
  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)
</Tip>

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.

<Tip>
  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*.
</Tip>

<Warning>
  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.
</Warning>

#### 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.

#### 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.

<Tip>
  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.
</Tip>

#### 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.

<Card title="Example">
  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.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Invalidation Step">
      Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
    </Step>
  </Steps>
</Card>

### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 Trigger">
      Step 1 condition trigger, we start evaluating step 2 from now.
    </Step>
  </Steps>
</Card>

#### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 or 2 Trigger">
      Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
    </Step>
  </Steps>
</Card>

### 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}) => (
    <Tooltip tip={tooltip}>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16" fill="gray">
            <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/>
        </svg>
    </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 | <Exclamation tooltip="Custom step condition triggered" /> |

#### Market Structures

| Alert            | Description                                                                        | Default                                                  |
| ---------------- | ---------------------------------------------------------------------------------- | -------------------------------------------------------- |
| Bullish I-BOS    | Triggers on the event of an internal bullish break of structure (BOS)              | <Exclamation tooltip="Internal bullish BOS formed" />    |
| Swing BOS        | Triggers on the event of a swing bullish break of structure (BOS)                  | <Exclamation tooltip="Bullish BOS formed" />             |
| Bearish I-BOS    | Triggers on the event of an internal bearish break of structure (BOS)              | <Exclamation tooltip="Internal bearish BOS formed" />    |
| Swing BOS        | Triggers on the event of a swing bearish break of structure (BOS)                  | <Exclamation tooltip="Bearish BOS formed" />             |
| Bullish I-CHOCH  | Triggers on the event of an internal bullish change of character (CHOCH)           | <Exclamation tooltip="Internal bullish CHoCH formed" />  |
| Swing CHOCH      | Triggers on the event of a swing bullish change of character (CHOCH)               | <Exclamation tooltip="Bullish CHoCH formed" />           |
| Bullish I-CHOCH+ | Triggers on the event of a Supported internal bullish change of character (CHOCH+) | <Exclamation tooltip="Internal bullish CHoCH+ formed" /> |
| Swing CHOCH+     | Triggers on the event of a Supported swing bullish change of character (CHOCH+)    | <Exclamation tooltip="Bullish CHoCH+ formed" />          |
| Bearish I-CHOCH  | Triggers on the event of an internal bearish change of character (CHOCH)           | <Exclamation tooltip="Internal bearish CHoCH formed" />  |
| Swing CHOCH      | Triggers on the event of a swing bearish change of character (CHOCH)               | <Exclamation tooltip="Bearish CHoCH formed" />           |
| Bearish I-CHOCH+ | Triggers on the event of a Supported internal bearish change of character (CHOCH+) | <Exclamation tooltip="Internal bearish CHoCH+ formed" /> |
| Swing CHOCH+     | Triggers on the event of a Supported swing bearish change of character (CHOCH+)    | <Exclamation tooltip="Bearish CHoCH+ formed" />          |

#### Volumetric Order Blocks

| Alert      | Description                                                                      | Default                                                               |
| ---------- | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| Bullish OB | Triggers when a new bullish order block is created                               | <Exclamation tooltip="New Bullish Order Block [top, bottom]" />       |
| Mitigated  | Triggers when a bullish order block (visible or not) is mitigated                | <Exclamation tooltip="Bullish Order Block Mitigated [top, bottom]" /> |
| Breaker    | Triggers when a bullish order block (visible or not) becomes a breaker block     | <Exclamation tooltip="New Bullish Breaker Block [top, bottom]" />     |
| Entered    | Triggers when the price enters a bullish order block (visible or not)            | <Exclamation tooltip="Bullish Block Entered [top, bottom]" />         |
| Within     | Triggers when the price is located within a bullish order block (visible or not) | <Exclamation tooltip="Within Bullish Block [top, bottom]" />          |
| Exit       | Triggers when the price exits a bullish order block                              | <Exclamation tooltip="Exit Bullish Block [top, bottom]" />            |
| Bearish OB | Triggers when a new bearish order block is created                               | <Exclamation tooltip="New Bearish Order Block [top, bottom]" />       |
| Mitigated  | Triggers when a bearish order block (visible or not) is mitigated                | <Exclamation tooltip="Bearish Order Block Mitigated [top, bottom]" /> |
| Breaker    | Triggers when a bearish order block (visible or not) becomes a breaker block     | <Exclamation tooltip="New Bearish Breaker Block [top, bottom]" />     |
| Entered    | Triggers when the price enters a bearish order block (visible or not)            | <Exclamation tooltip="Bearish Block Entered [top, bottom]" />         |
| Within     | Triggers when the price is located within a bearish order block (visible or not) | <Exclamation tooltip="Within Bearish Block [top, bottom]" />          |
| Exit       | Triggers when the price exits a bearish order block                              | <Exclamation tooltip="Exit Bearish Block [top, bottom]" />            |

#### Imbalances

| Alert             | Description                                                   | Default                                               |
| ----------------- | ------------------------------------------------------------- | ----------------------------------------------------- |
| Bullish Imbalance | Triggers when a bullish imbalance is identified               | <Exclamation tooltip="Bullish Imbalance" />           |
| Mitigated         | Triggers when a bullish imbalance is mitigated                | <Exclamation tooltip="Mitigated bullish imbalance" /> |
| Entered           | Triggers when the price enters a bullish imbalance            | <Exclamation tooltip="Entered bullish imbalance" />   |
| Within            | Triggers when the price is located within a bullish imbalance | <Exclamation tooltip="Within bullish imbalance" />    |
| Exit              | Triggers when the price exits a bullish imbalance             | <Exclamation tooltip="Exit bullish imbalance" />      |
| Bearish Imbalance | Triggers when a bearish imbalance is identified               | <Exclamation tooltip="Bearish Imbalance" />           |
| Mitigated         | Triggers when a bearish imbalance is mitigated                | <Exclamation tooltip="Mitigated bearish imbalance" /> |
| Entered           | Triggers when the price enters a bearish imbalance            | <Exclamation tooltip="Entered bearish imbalance" />   |
| Within            | Triggers when the price is located within a bearish imbalance | <Exclamation tooltip="Within bearish imbalance" />    |
| Exit              | Triggers when the price exits a bearish imbalance             | <Exclamation tooltip="Exit bearish imbalance" />      |

#### Liquidity Concepts

| Alert                | Description                                               | Default                                              |
| -------------------- | --------------------------------------------------------- | ---------------------------------------------------- |
| Up-Trendline Break   | Triggers when the price breaks above an upward trendline  | <Exclamation tooltip="Price broke up-trendline" />   |
| Down-Trendline Break | Triggers when the price breaks below a downward trendline | <Exclamation tooltip="Price broke down-trendline" /> |
| Detected Pattern     | Triggers when a user-set chart pattern is identified      | <Exclamation tooltip="Pattern detected" />           |
| Equal High           | Triggers when a new equal high is detected                | <Exclamation tooltip="Equal highs formed" />         |
| Equal Low            | Triggers when a new equal low is detected                 | <Exclamation tooltip="Equal lows formed" />          |
| Bullish Grab         | Triggers when a bullish liquidity grab occurs             | <Exclamation tooltip="Bullish grab" />               |
| Bearish Grab         | Triggers when a bearish liquidity grab occurs             | <Exclamation tooltip="Bearish grab" />               |


# 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:

<AccordionGroup>
  <Accordion title="Swing Points">
    *   Internal High
    *   Internal Low
    *   Swing High
    *   Swing Low
  </Accordion>

  <Accordion title="Premium/Discount">
    *   Discount
    *   Equilibrium Average
    *   Premium
  </Accordion>

  <Accordion title="CHoCH/BOS">
    *   Bullish I-CHoCH
    *   Bearish I-CHoCH
    *   Bullish I-BOS
    *   Bearish I-BOS
  </Accordion>

  <Accordion title="Orderblock">
    *   Highest OB Top
    *   Lowest  OB Bottom
  </Accordion>

  <Accordion title="Imbalance">
    *   Imbalance Top
    *   Imbalance Bottom
    *   Imbalance Average
  </Accordion>

  <Accordion title="Previous H/L">
    *   Previous Day High
    *   Previous Day Low
    *   Previous Week High
    *   Previous Week Low
    *   Previous Month High
    *   Previous Month Low
    *   Previous Quarterly High
    *   Previous Quarterly Low
  </Accordion>
</AccordionGroup>

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 |

<Info>
  Only the above extremities are compatible with "Anchor To Origin".
</Info>

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.

<Info>
  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.
</Info>

## 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.                                                                                  |

<Note>
  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.
</Note>

## Volatility Threshold

The volatility threshold allows filtering out less significant imbalances, with higher values preserving imbalances with a larger range.

<Note>
  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.
</Note>

## Alerts

Users can be alerted on the detection of a bullish or bearish imbalance, as well as when an imbalance area is mitigated.


# Introduction



<iframe width="560" height="315" src="https://www.youtube.com/embed/WuEaLfeiz20?si=9fZTrIk51Hr9Caxz" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

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

<CardGroup cols={3}>
  <Card title="Market Structure" icon="florin-sign" href="/docs/toolkits/price-action-concepts/market-structures" />

  <Card title="Volumetric Order Blocks" icon="bars-progress" href="/docs/toolkits/price-action-concepts/order-blocks" />

  <Card title="Liquidity Concepts" icon="droplet" href="/docs/toolkits/price-action-concepts/liquidity" />

  <Card title="Imbalance Concepts" icon="scale-unbalanced" href="/docs/toolkits/price-action-concepts/imbalances" />

  <Card title="Premium/Discount Zones" icon="distribute-spacing-vertical" href="/docs/toolkits/price-action-concepts/pdzones" />

  <Card title="Previous Highs/Lows" icon="bars-staggered" href="/docs/toolkits/price-action-concepts/previous-high-low" />
</CardGroup>

## 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".

<Card title="Alerts" icon="bell" href="/docs/toolkits/price-action-concepts/alerts" />

## 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:

<Card title="Settings Reference" icon="gear" href="/docs/toolkits/price-action-concepts/settings" />


# 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.

<Note>
  Once the conditions for a trendline to be displayed are met, the indicator will display it retrospectively.
</Note>

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.

<Note>
  Builtins alerts for trendlines breakouts are available to the users.
</Note>

## 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.

<Note>
  Builtins alerts for detected patterns are available to the users.
</Note>

## 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).

<Note>
  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.
</Note>

## 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.

<Note>
  Built-in alerts for liquidity grabs are available to users within Price Action Concepts™.
</Note>


# 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.

<Note>
  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.
</Note>

### 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.

<Note>
  The size of the labels for internal and swing structure can be changed from the **General Styling** settings section.
</Note>

## 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

<Note>
  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.
</Note>

## 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.

<Warning>
  Swing points are displayed retrospectively, and as such are not detected where they are located. They should not be used for real-time applications.
</Warning>

## 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.

<Tip>
  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.
</Tip>

## 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.

<Note>
  Breaker blocks are differentiated from Volumetric Order Blocks by their non-solid background color.
</Note>

## 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.

<Note>
  Internal activity and metrics both require volume data in order to be displayed.
</Note>

### 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.

<Tip>
  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*.
</Tip>

### 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. |

<Note>
  This data is always associated with the most recent order block, regardless of its mitigation status.
</Note>

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.                                                                    |

<Note>
  Builtins alerts for Volumetric Order Blocks mitigation are available to the users.
</Note>

## 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.

<Warning>
  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.
</Warning>


# 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.

<Note>
  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.
</Note>

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



<Info>
  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.
</Info>

## Market Structure

***

### Internal

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="All" default>
      Show all types of internal market structures.
    </ResponseField>

    <ResponseField name="CHoCH (All)">
      Show all types of change of characters (CHoCH).
    </ResponseField>

    <ResponseField name="CHoCH+">
      Only show "supported" change of characters (CHoCH+).
    </ResponseField>

    <ResponseField name="CHoCH">
      Only show "leading" change of characters (CHoCH).
    </ResponseField>

    <ResponseField name="BOS">
      Only show break of structures (BOS).
    </ResponseField>

    <ResponseField name="None">
      Show no internal market structure.
    </ResponseField>
  </Expandable>
</ResponseField>

Type of internal market structures to display.

<ResponseField name="Numerical" type="default: 5">
  Determines the sensitivity of the swing detection algorithm.

  Higher values will return longer-term swing points, and as such longer-term internal market structures.
</ResponseField>

### Swing

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="All" default>
      Show all types of swing market structures.
    </ResponseField>

    <ResponseField name="CHoCH (All)">
      Show all types of change of characters (CHoCH).
    </ResponseField>

    <ResponseField name="CHoCH+">
      Only show "supported" change of characters (CHoCH+).
    </ResponseField>

    <ResponseField name="CHoCH">
      Only show "leading" change of characters (CHoCH).
    </ResponseField>

    <ResponseField name="BOS">
      Only show break of structures (BOS).
    </ResponseField>

    <ResponseField name="None">
      Show no swing market structure.
    </ResponseField>
  </Expandable>
</ResponseField>

Type of swing market structures to display.

<ResponseField name="Numerical" type="default: 50">
  Determines the sensitivity of the swing detection algorithm.

  Higher values will return longer-term swing points, and as such longer-term swing market structures.
</ResponseField>

### Timeframe

<ResponseField name="Timeframe" type="default: Chart">
  Chart timeframe used for the detection of internal and swing market structures.
</ResponseField>

### Show Swing High/Low

<ResponseField name="Toggle" type="default: false">
  Display detected swing points when enabled.

  <Note>
    Detected swing points are displayed retrospectively, and as such do not appear in real-time.
  </Note>
</ResponseField>

### Show Strong/Weak HL

<ResponseField name="Toggle" type="default: false">
  Display strong/weak swing levels when enabled.
</ResponseField>

### Color Candles

<ResponseField name="Toggle" type="default: false">
  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
</ResponseField>

## Volumetric Order Blocks

***

### Show Last

<ResponseField name="Toggle" type="default: true">
  Display volumetric order blocks.
</ResponseField>

<ResponseField name="Numerical" type="default: 5">
  Determines how many of the most recent volumetric order blocks to display on the chart.
</ResponseField>

### Internal Buy/Sell Activity

<ResponseField name="Toggle" type="default: true">
  Display volumetric order blocks.
</ResponseField>

### Show Breakers

<ResponseField name="Toggle" type="default: false">
  Display breaker blocks.
</ResponseField>

### Length

<ResponseField name="Numerical" type="default: 5">
  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.
</ResponseField>

### Mitigation Method

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Close" default>
      Mitigate order blocks using the closing price.
    </ResponseField>

    <ResponseField name="Wick">
      Mitigate order blocks using candle wicks (high/low price).
    </ResponseField>

    <ResponseField name="Average">
      Mitigate order blocks using the crossing from the closing price and the order block area average level.
    </ResponseField>
  </Expandable>
</ResponseField>

Determines the method used to mitigate order blocks.

### Timeframe

<ResponseField name="Timeframe" type="default: Chart">
  Chart timeframe used for the detection of order blocks.
</ResponseField>

### Show Metrics

<ResponseField name="Toggle" type="default: true">
  Display order block metrics such as total volume and percentage located at the right of the chart.
</ResponseField>

### Show Mid-Line

<ResponseField name="Toggle" type="default: true">
  Display order block area average level (dashed line).
</ResponseField>

### Hide Overlap

<ResponseField name="Toggle" type="default: true">
  Hide overlapping order blocks, conserving the most recent one.
</ResponseField>

## Liquidity Concepts

***

### Trend Lines

<ResponseField name="Toggle" type="default: false">
  Display trend lines when enabled.
</ResponseField>

<ResponseField name="Numerical" type="default: 5">
  Determines how many of the most recent respective bullish/bearish trend lines to display on the user chart.
</ResponseField>

### Patterns

<ResponseField name="Toggle" type="default: false">
  Display detected pattern when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" default />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />
  </Expandable>
</ResponseField>

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

<ResponseField name="Toggle" type="default: true">
  Display zones around the pattern lines.
</ResponseField>

### Equal H\&L

<ResponseField name="Toggle" type="default: false">
  Display equal highs/lows on the chart.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Short-Term" default>
      Use short term swing point detection for detecting equal highs/lows, returning shorter term EQHL as a result.
    </ResponseField>

    <ResponseField name="Long-Term">
      Use long term swing point detection for detecting equal highs/lows, returning longer term EQHL as a result.
    </ResponseField>
  </Expandable>
</ResponseField>

Determines the sensitivity of the swing detection algorithm used to detect equal highs/lows.

### Liquidity Grabs

<ResponseField name="Toggle" type="default: false">
  Display liquidity grabs on the chart.
</ResponseField>

## Imbalance Concepts

***

<ResponseField name="Toggle" type="default: false">
  Display the selected imbalance on the chart.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="FVG" default>
      Detect fair value gaps (FVG) when selected.
    </ResponseField>

    <ResponseField name="Inverse FVG">
      Detect inverse fair value gaps when selected.
    </ResponseField>

    <ResponseField name="Double FVG">
      Detect double fair value gaps when selected.
    </ResponseField>

    <ResponseField name="Volume Imbalance">
      Detect volume imbalances when selected.
    </ResponseField>

    <ResponseField name="Opening Gap" default>
      Detect opening gaps when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Determines which imbalance to detect.

### Mitigation Method

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Close" default>
      Mitigate imbalances using the closing price.
    </ResponseField>

    <ResponseField name="Wick">
      Mitigate imbalancess using candle wicks (high/low price).
    </ResponseField>

    <ResponseField name="Average">
      Mitigate imbalances using the crossing from the closing price and the imbalance area average level.
    </ResponseField>
  </Expandable>
</ResponseField>

Determines the method used to mitigate imbalances.

### Timeframe

<ResponseField name="Timeframe" type="default: Chart">
  Chart timeframe used for the detection of imbalances.
</ResponseField>

### Extend Imbalance

<ResponseField name="Numerical" type="default: 10">
  Extend the imbalance area to the right by the selected amount of bars.
</ResponseField>

### Volatility Threshold

<ResponseField name="Numerical" type="default: 0">
  Threshold used to filter out imbalances with a low area height. Higher values will preserver more volatility imbalances.
</ResponseField>

## Premium & Discount Zones

### Premium/Discount Zones

<ResponseField name="Toggle" type="default: false">
  Display premium/discount and equilibrium zones on the chart when enabled.
</ResponseField>

***

## Highs & Lows MTF

***

### Daily

<ResponseField name="Toggle" type="default: false">
  Display previous daily high/low on the chart when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="⎯⎯⎯" default>
      Use solid line style when selected.
    </ResponseField>

    <ResponseField name="----">
      Use dashed line style when selected.
    </ResponseField>

    <ResponseField name="····">
      Use dotted line style when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Level line style.

### Monday's

<ResponseField name="Toggle" type="default: false">
  Display previous high/low monday prices on the chart when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="⎯⎯⎯" default>
      Use solid line style when selected.
    </ResponseField>

    <ResponseField name="----">
      Use dashed line style when selected.
    </ResponseField>

    <ResponseField name="····">
      Use dotted line style when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Level line style.

### Weekly

<ResponseField name="Toggle" type="default: false">
  Display previous weekly high/low on the chart when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="⎯⎯⎯" default>
      Use solid line style when selected.
    </ResponseField>

    <ResponseField name="----">
      Use dashed line style when selected.
    </ResponseField>

    <ResponseField name="····">
      Use dotted line style when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Level line style.

### Monthly

<ResponseField name="Toggle" type="default: false">
  Display previous monthly high/low on the chart when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="⎯⎯⎯" default>
      Use solid line style when selected.
    </ResponseField>

    <ResponseField name="----">
      Use dashed line style when selected.
    </ResponseField>

    <ResponseField name="····">
      Use dotted line style when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Level line style.

### Quarterly

<ResponseField name="Toggle" type="default: false">
  Display previous quarterly high/low on the chart when enabled.
</ResponseField>

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="⎯⎯⎯" default>
      Use solid line style when selected.
    </ResponseField>

    <ResponseField name="----">
      Use dashed line style when selected.
    </ResponseField>

    <ResponseField name="····">
      Use dotted line style when selected.
    </ResponseField>
  </Expandable>
</ResponseField>

Level line style.

## Fibonacci Retracements

***

### Fibonacci Top

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="None" default />

    <ResponseField name="Internal High" />

    <ResponseField name="Internal Low" />

    <ResponseField name="Swing High" />

    <ResponseField name="Swing Low" />

    <ResponseField name="Discount" />

    <ResponseField name="Equilibrium Average" />

    <ResponseField name="Premium" />

    <ResponseField name="Bullish I-CHoCH" />

    <ResponseField name="Bearish I-CHoCH" />

    <ResponseField name="Bullish I-BOS" />

    <ResponseField name="Bearish I-BOS" />

    <ResponseField name="Highest OB Top" />

    <ResponseField name="Lowest  OB Bottom" />

    <ResponseField name="Imbalance Top" />

    <ResponseField name="Imbalance Bottom" />

    <ResponseField name="Imbalance Average" />

    <ResponseField name="Previous Day High" />

    <ResponseField name="Previous Day Low" />

    <ResponseField name="Previous Week High" />

    <ResponseField name="Previous Week Low" />

    <ResponseField name="Previous Month High" />

    <ResponseField name="Previous Month Low" />

    <ResponseField name="Previous Quarterly High" />

    <ResponseField name="Previous Quarterly Low" />
  </Expandable>
</ResponseField>

Upper value used to calculate the retracements.

### Fibonacci Bottom

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="None" default />

    <ResponseField name="Internal High" />

    <ResponseField name="Internal Low" />

    <ResponseField name="Swing High" />

    <ResponseField name="Swing Low" />

    <ResponseField name="Discount" />

    <ResponseField name="Equilibrium Average" />

    <ResponseField name="Premium" />

    <ResponseField name="Bullish I-CHoCH" />

    <ResponseField name="Bearish I-CHoCH" />

    <ResponseField name="Bullish I-BOS" />

    <ResponseField name="Bearish I-BOS" />

    <ResponseField name="Highest OB Top" />

    <ResponseField name="Lowest  OB Bottom" />

    <ResponseField name="Imbalance Top" />

    <ResponseField name="Imbalance Bottom" />

    <ResponseField name="Imbalance Average" />

    <ResponseField name="Previous Day High" />

    <ResponseField name="Previous Day Low" />

    <ResponseField name="Previous Week High" />

    <ResponseField name="Previous Week Low" />

    <ResponseField name="Previous Month High" />

    <ResponseField name="Previous Month Low" />

    <ResponseField name="Previous Quarterly High" />

    <ResponseField name="Previous Quarterly Low" />
  </Expandable>
</ResponseField>

Lower value used to calculate the retracements.

### Ratios

<ResponseField name="Toggle" type="default: true">
  Display the level with the associated ratio when enabled.
</ResponseField>

<ResponseField name="Numerical">
  Numerical input determining the ratio used to construct the retracement.
</ResponseField>

<Note>These settings are available for 5 ratios</Note>

### Show Top/Bottom Levels

<ResponseField name="Toggle" type="default: true">
  Display the top/bottom extremities used to construct the retracements.
</ResponseField>

### Anchor To Origin

<ResponseField name="Toggle" type="default: true">
  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.
</ResponseField>

## General Styling

***

### Internal Label Style

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Tiny" default />

    <ResponseField name="Small" />

    <ResponseField name="Normal" />
  </Expandable>
</ResponseField>

Determine the size of the internal market structures labels.

### Swing Label Style

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Tiny" />

    <ResponseField name="Small" default />

    <ResponseField name="Normal" />
  </Expandable>
</ResponseField>

Determine the size of the swing market structures labels.

### Structures Theme

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Colored" default>
      Use user set internal market structures colors as palette for market structures graphical elements.
    </ResponseField>

    <ResponseField name="Monochrome">
      Use white/gray tones as palette for market structures graphical elements.
    </ResponseField>
  </Expandable>
</ResponseField>

Determine the color theme of market structures related graphical elements such as levels, labels, and candle coloring.

### EQHL Label Style

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Tiny" default />

    <ResponseField name="Small" />

    <ResponseField name="Normal" />
  </Expandable>
</ResponseField>

Determine the size of the equal highs/lows labels.

### OB Metrics Size

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Tiny" />

    <ResponseField name="Small" default />

    <ResponseField name="Normal" />

    <ResponseField name="Auto">
      Automatically adjust text size to fit in the order block area.
    </ResponseField>
  </Expandable>
</ResponseField>

Determine the size of the swing market structures labels.

## Custom Alert Creator

***

### Market Structure

<ResponseField name="Toggle" type="default: false" />

Enable the selected Market Structure condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any Internal" default />

    <ResponseField name="Any Internal Bullish" />

    <ResponseField name="Any Internal Bearish" />

    <ResponseField name="Any Internal Bullish CHoCH" />

    <ResponseField name="Any Internal Bearish CHoCH" />

    <ResponseField name="Internal Bullish CHoCH+" />

    <ResponseField name="Internal Bearish CHoCH+" />

    <ResponseField name="Internal Bullish CHoCH" />

    <ResponseField name="Internal Bearish CHoCH" />

    <ResponseField name="Bullish BOS" />

    <ResponseField name="Bearish BOS" />
  </Expandable>
</ResponseField>

List of market structure conditions to be used in the custom alert creator.

#### Market Structure Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Market structure conditions step in the custom alert creator sequence.

### Order Block

<ResponseField name="Toggle" type="default: false" />

Enable the selected Order Block condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Bullish Order Block" default />

    <ResponseField name="Bearish Order Block" />

    <ResponseField name="Bullish OB Mitigation" />

    <ResponseField name="Bearish OB Mitigation" />

    <ResponseField name="Bullish Breaker" />

    <ResponseField name="Bearish Breaker" />

    <ResponseField name="Within Bullish OB" />

    <ResponseField name="Within Bearish OB" />

    <ResponseField name="Entered Bullish OB" />

    <ResponseField name="Entered Bearish OB" />

    <ResponseField name="Exit Bullish OB" />

    <ResponseField name="Exit Bearish OB" />
  </Expandable>
</ResponseField>

List of Order Block conditions to be used in the custom alert creator.

#### Order Block Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Order Block conditions step in the custom alert creator sequence.

### Imbalance

<ResponseField name="Toggle" type="default: false" />

Enable the selected Imbalance condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any Imbalance" default />

    <ResponseField name="Bullish Imbalance" />

    <ResponseField name="Bearish Imbalance" />

    <ResponseField name="Any Mitigated" />

    <ResponseField name="Mitigated Bullish Imbalance" />

    <ResponseField name="Mitigated Bearish Imbalance" />

    <ResponseField name="Within Any" />

    <ResponseField name="Within Bullish" />

    <ResponseField name="Within Bearish" />

    <ResponseField name="Entered Any" />

    <ResponseField name="Entered Bullish" />

    <ResponseField name="Entered Bearish" />

    <ResponseField name="Exit Bullish" />

    <ResponseField name="Exit Bearish" />
  </Expandable>
</ResponseField>

List of Imbalance conditions to be used in the custom alert creator.

#### Imbalance Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Imbalance condition step in the custom alert creator sequence.

### Trendline

<ResponseField name="Toggle" type="default: false" />

Enable the selected Trendline condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Up-Trendline Break" default />

    <ResponseField name="Down-Trendline Break" />
  </Expandable>
</ResponseField>

List of Trendline conditions to be used in the custom alert creator.

### Trendline Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Trendline condition step in the custom alert creator sequence.

### Pattern

<ResponseField name="Toggle" type="default: false" />

Enable the selected Pattern condition to be used in the custom alert creator.

<Expandable title="Expand">
  <ResponseField name="Ascending Triangle" default />

  <ResponseField name="Descending Triangle" />

  <ResponseField name="Symmetrical Triangle" />

  <ResponseField name="Rising Wedge" />

  <ResponseField name="Falling Wedge" />

  <ResponseField name="Ascending Broadening Wedge" />

  <ResponseField name="Descending Broadening Wedge" />

  <ResponseField name="H&S" />

  <ResponseField name="Inverted H&S" />

  <ResponseField name="Double Top" />

  <ResponseField name="Double Bottom" />
</Expandable>

List of Pattern conditions to be used in the custom alert creator.

#### Pattern Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Pattern condition step in the custom alert creator sequence.

### Liquidity Grabs

<ResponseField name="Toggle" type="default: false" />

Enable the selected Liquidity Grabs condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any Grab" default />

    <ResponseField name="Bullish Grab" />

    <ResponseField name="Bearish Grab" />
  </Expandable>
</ResponseField>

List of Liquidity Grabs conditions to be used in the custom alert creator.

#### Liquidity Grabs Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Liquidity Grabs condition step in the custom alert creator sequence.

### Premium/Discount

<ResponseField name="Toggle" type="default: false" />

Enable the selected Premium/Discount condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Premium" default />

    <ResponseField name="Discount" />
  </Expandable>
</ResponseField>

List of Premium/Discount conditions to be used in the custom alert creator.

#### Premium/Discount Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Premium/Discount condition step in the custom alert creator sequence.

### Session

<ResponseField name="Toggle" type="default: false" />

Enable session condition in the custom alert creator.

<ResponseField name="Session" type="default: 00:00" />

Session times used in the custom alert creator.

#### Session Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Session condition step in the custom alert creator sequence.

### OB Volume

<ResponseField name="Toggle" type="default: false" />

Enable the selected OB Volume condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Buy Volume (Numerical)" />

    <ResponseField name="Sell Volume (Numerical)" />

    <ResponseField name="Total Volume (Numerical)" default />

    <ResponseField name="Percentage (Numerical)" />

    <ResponseField name="Buy Volume > Sell Volume (Bool)" />

    <ResponseField name="Buy Volume < Sell Volume (Bool)" />

    <ResponseField name="Positive Association (Bool)" />

    <ResponseField name="Negative Association (Bool)" />
  </Expandable>
</ResponseField>

List of OB Volume data sources to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the selected OB data source to the selected numerical input.

<ResponseField name="Numerical Input" type="default:0" />

Numerical input.

#### Ob Volume Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

OB Volume condition step in the custom alert creator sequence.

### External Condition (1)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (1)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

First external source condition step in the custom alert creator sequence.

### External Condition (2)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (2)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Second external source condition step in the custom alert creator sequence.

### External Condition (3)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the selected source to the selected numerical value.

<ResponseField name="Numerical Input" type="default:0" />

Numerical input.

#### External Step (3)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="11" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Third external source condition step in the custom alert creator sequence.

### Invalidation Behavior

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="None" default>
      No invalidation behavior.
    </ResponseField>

    <ResponseField name="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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 Trigger">
            Step 1 condition trigger, we start evaluating step 2 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>

    <ResponseField name="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 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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 or 2 Trigger">
            Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>
  </Expandable>
</ResponseField>

Invalidation behaviors allow adding more restrictions to a sequence of conditions; users can use two different invalidation behaviors described below.

### Maximum Step Interval

<ResponseField name="Numerical Input" type="default:10" />

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

<ResponseField name="Toggle" type="default:true" />

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

<ResponseField name="Numerical" type="default:10 000" />

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



<iframe width="560" height="315" src="https://www.youtube.com/embed/olKQq5XR5S0?t=38?si=Vl1jU1PYFnzWDQve" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

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).

<Note>
  In order for an alert to work in the toolkit make sure the related feature is enabled
</Note>

## 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.

<Note>
  This alert would use **once per bar close** by default.
</Note>

![](https://mintlify.s3-us-west-1.amazonaws.com/luxalgo/public/images/lux-algo/alerts/image117.png)

<Note>
  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.
</Note>

### 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.

<Tip>
  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)
</Tip>

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.

<Tip>
  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*.
</Tip>

<Warning>
  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.
</Warning>

#### 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.

<Tip>
  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.
</Tip>

#### 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.

<Card title="Example">
  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.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Invalidation Step">
      Invalidation step condition trigger, we reset the sequence and evaluate step 1 just after.
    </Step>
  </Steps>
</Card>

### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 Trigger">
      Step 1 condition trigger, we start evaluating step 2 from now.
    </Step>
  </Steps>
</Card>

#### 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.

<Card title="Example">
  Let's take an example where we use 3 regular steps.

  <Steps>
    <Step title="Step 1">
      Step 1 condition trigger, we will now evaluate step 2 from now on.
    </Step>

    <Step title="Step 2">
      Step 2 condition trigger, we will now evaluate step 3 from now on.
    </Step>

    <Step title="Step 1 or 2 Trigger">
      Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
    </Step>
  </Steps>
</Card>

### 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}) => (
    <Tooltip tip={tooltip}>
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="16" height="16" fill="gray">
            <path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z"/>
        </svg>
    </Tooltip>
);

| Alert                  | Description                                                                     | Default                                                   |
| ---------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Bullish Confirmation   | Triggers when a normal bullish Confirmation signal is displayed                 | <Exclamation tooltip="Bullish Confirmation" />            |
| Bearish Confirmation   | Triggers when a normal bearish Confirmation signal is displayed                 | <Exclamation tooltip="Bearish Confirmation" />            |
| Bullish +              | Triggers when a strong bullish Confirmation signal is displayed                 | <Exclamation tooltip="Bullish Confirmation+" />           |
| Bearish +              | Triggers when a strong bearish Confirmation signal is displayed                 | <Exclamation tooltip="Bearish Confirmation+" />           |
| Bullish Contrarian     | Triggers when a normal bullish Contrarian signal is displayed                   | <Exclamation tooltip="Bullish Contrarian" />              |
| Bearish Contrarian     | Triggers when a normal bearish Contrarian signal is displayed                   | <Exclamation tooltip="Bearish Contrarian" />              |
| Bullish +              | Triggers when a strong bullish Contrarian signal is displayed                   | <Exclamation tooltip="Bullish Contrarian+" />             |
| Bearish +              | Triggers when a strong bearish Contrarian signal is displayed                   | <Exclamation tooltip="Bearish Contrarian+" />             |
| Bullish Exit           | Triggers when a bullish exit signal is displayed                                | <Exclamation tooltip="Bullish Exit" />                    |
| Bearish Exit           | Triggers when a bearish exit signal is displayed                                | <Exclamation tooltip="Bearish Exit" />                    |
| Take Profit            | Triggers when a take profit is reached (TP1 or TP2)                             | <Exclamation tooltip="TP(1/2) Reached" />                 |
| Stop Loss              | Triggers when a stop loss is reached (SL1 or SL2)                               | <Exclamation tooltip="SL(1/2) Reached" />                 |
| Bullish Turn +         | Triggers when a weak bullish trend turns strong (purple candle switch to green) | <Exclamation tooltip="Bullish Turn +" />                  |
| Bearish Turn +         | Triggers when a weak bearish trend turns strong (purple candle switch to red)   | <Exclamation tooltip="Bearish Turn +" />                  |
| Custom Alert Condition | Triggers on the event of a user set custom alert condition being true           | <Exclamation tooltip="Custom step condition triggered" /> |


# 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)

<Tip>
  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.
</Tip>

### 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.

<Warning>
  Note that this metric is not indicative of future results.
</Warning>

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.

<Note>
  A percentage superior to 50% would indicate a trending market, while inferior percentages would indicate a sideway market.
</Note>

### 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.

<Note>
  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.
</Note>

## 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.

<Note>
  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.
</Note>

## 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



<iframe width="560" height="315" src="https://www.youtube.com/embed/wIJgI1905aA?si=t2HqgUzJhfCPcCOG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

**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.

<CardGroup cols={3}>
  <Card title="Signal Modes" icon="sort" href="/docs/toolkits/signals-overlays/signals" />

  <Card title="Signal Settings" icon="wrench" href="/docs/toolkits/signals-overlays/signal-settings" />

  <Card title="TP/SL Points" icon="bullseye-arrow" href="/docs/toolkits/signals-overlays/tp-sl-points" />

  <Card title="Indicator Overlays" icon="function" href="/docs/toolkits/signals-overlays/indicator-overlay" />

  <Card title="Candle Coloring" icon="chart-candlestick" href="/docs/toolkits/signals-overlays/candle-coloring" />

  <Card title="Dashboard" icon="table-rows" href="/docs/toolkits/signals-overlays/dashboard" />
</CardGroup>

## 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.

<Card title="Alerts" icon="bell" href="/docs/toolkits/signals-overlays/alerts" />

## 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:

<Card title="Settings Reference" icon="gear" href="/docs/toolkits/signals-overlays/settings" />

Users can access the list of user settings and their descriptions in the following page:

<Card title="Signal Settings" icon="gear-complex-code" href="/docs/toolkits/signals-overlays/signal-settings" />


# Settings Reference



<Info>
  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.
</Info>

## Basic Settings

***

### Presets / Filters

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="None" type="none" default>
      No presets/filter enabled.
    </ResponseField>

    <ResponseField name="Trend Trader" type="preset">
      *   Confirmation Signals
      *   Smart Trail
      *   Trend Catcher
    </ResponseField>

    <ResponseField name="Scalper" type="preset">
      *   Confirmation Signals
      *   Confirmation gradient coloring
      *   Reversal Zones
      *   Take Profit/Stop Losses
    </ResponseField>

    <ResponseField name="Swing Trader" type="preset">
      *   Confirmation Signals
      *   Long-Term Frequency Autopilot
      *   Simple confirmation candle coloring
      *   Neo Cloud
    </ResponseField>

    <ResponseField name="Contrarian Trader" type="preset">
      *   Contrarian Signals
      *   Mid-Term Frequency Autopilot
      *   Contrarian candle coloring
      *   Reversal Zones
    </ResponseField>

    <ResponseField name="Smart Trail" type="filter">
      Show bullish signals when price is above the Smart Trail, and bearish signals when price is under the Smart Trail.
    </ResponseField>

    <ResponseField name="Trend Tracer" type="filter">
      Show bullish signals when Trend Tracer is indicating an up-trend, and bearish signals when Trend Tracer is indicating a down-trend.
    </ResponseField>

    <ResponseField name="Trend Catcher" type="filter">
      Show bullish signals when Trend Catcher is indicating an up-trend, and bearish signals when Trend Catcher is indicating a down-trend.
    </ResponseField>

    <ResponseField name="Neo Cloud" type="filter">
      Show bullish signals above Neo cloud, and bearish signals under Neo Cloud.
    </ResponseField>

    <ResponseField name="Trend Strength" type="filter">
      Show bullish/bearish signals when the Trend strength is above 50%.
    </ResponseField>
  </Expandable>
</ResponseField>

Presets allows users to easily enable multiple features at once from a selected option.

<Note>
  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.
</Note>

On the other hand filters allow users to display confirmation/contrarian signals when a specific overlay or metric behavior is respected.

### Signal Mode

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Confirmation + Exits" default>
      Confirmation signals alongside exit signals.
    </ResponseField>

    <ResponseField name="Contrarian + Exits">
      Contrarian signals alongside exit signals.
    </ResponseField>

    <ResponseField name="None">
      No signals.
    </ResponseField>
  </Expandable>
</ResponseField>

Controls the type of signal generation algorithm to use.

### ML Signal Classifier

<ResponseField name="Toggle" type="default: false" />

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

<ResponseField name="Numerical Input" type="default: 12" />

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

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Confirmation Simple" default>
      Color candles using three shades based on the Confirmation signal algorithm.
    </ResponseField>

    <ResponseField name="Confirmation Gradient">
      Color candles using a gradient based on the Confirmation signal algorithm.
    </ResponseField>

    <ResponseField name="Contrarian Gradient">
      Color candles using a gradient based on the Contrarian signal algorithm.
    </ResponseField>

    <ResponseField name="None" />
  </Expandable>
</ResponseField>

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

<ResponseField name="Toggle" type="default: true" />

Enable the Smart Trail overlay on the chart when toggled on.

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" default />

    <ResponseField name="4" />

    <ResponseField name="5" />
  </Expandable>
</ResponseField>

Smart Trail numerical period. Greater values will allow the Smart Trail to return indications of longer term trends.

### Reversal Zones

<ResponseField name="Toggle" type="default: false" />

Enable the Reversal Zones overlay on the chart when toggled on.

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" default />

    <ResponseField name="4" />

    <ResponseField name="5" />
  </Expandable>
</ResponseField>

Reversal Zones numerical period. Greater values will allow the Reversal Zones to return indications of longer term trends.

### Trend Catcher

<ResponseField name="Toggle" type="default: false" />

Enable the Trend Catcher overlay on the chart when toggled on.

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" default />

    <ResponseField name="4" />

    <ResponseField name="5" />
  </Expandable>
</ResponseField>

Trend Catcher numerical period. Greater values will allow the Trend Catcher to return indications of longer term trends.

### Trend Tracer

<ResponseField name="Toggle" type="default: false" />

Enable the Trend Tracer overlay on the chart when toggled on.

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" />

    <ResponseField name="3" default />

    <ResponseField name="4" />

    <ResponseField name="5" />
  </Expandable>
</ResponseField>

Trend Tracer numerical period. Greater values will allow the Trend Tracer to return indications of longer term trends.

### Neo Cloud

<ResponseField name="Toggle" type="default: false" />

Enable the Neo Cloud overlay on the chart when toggled on.

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" />

    <ResponseField name="2" default />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />
  </Expandable>
</ResponseField>

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

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="None" default>
      No take profits/stop losses levels are displayed.
    </ResponseField>

    <ResponseField name="Signals" default>
      Return take profits/stop losses levels based on Confirmation/Contrarian signals.
    </ResponseField>

    <ResponseField name="Smart Trail" default>
      Return take profits/stop losses levels based on Smart Trail sentiment changes.
    </ResponseField>

    <ResponseField name="Reversal Zones" default>
      Return take profits/stop losses levels based on the contact between the price and Reversal Zones extremities.
    </ResponseField>

    <ResponseField name="Trend Catcher" default>
      Return take profits/stop losses levels based on the Trend Catcher sentiment changes.
    </ResponseField>

    <ResponseField name="Trend Tracer" default>
      Return take profits/stop losses levels based on the Trend Tracer sentiment changes.
    </ResponseField>

    <ResponseField name="Neo Cloud" default>
      Return take profits/stop losses levels based on the Neo Cloud sentiment changes.
    </ResponseField>

    <ResponseField name="Custom Alert Creator" default>
      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.
    </ResponseField>
  </Expandable>
</ResponseField>

### Distance

<ResponseField name="Numerical Input" type="default: 5" />

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

<ResponseField name="Numerical Input" type="default: 1234" />

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

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Off" default>
      Disable the autopilot sensitivity algorithm.
    </ResponseField>

    <ResponseField name="Short-Term">
      Enable the autopilot sensitivity algorithm to return shorter term signals.
    </ResponseField>

    <ResponseField name="Medium-Term">
      Enable the autopilot sensitivity algorithm to return medium term signals.
    </ResponseField>

    <ResponseField name="Long-Term">
      Enable the autopilot sensitivity algorithm to return longer term signals.
    </ResponseField>
  </Expandable>
</ResponseField>

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

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Hidden">
      Hide the dashboard on the chart.
    </ResponseField>

    <ResponseField name="Top Right">
      Display the dashboard to the top right of the chart.
    </ResponseField>

    <ResponseField name="Bottom Right" default>
      Display the dashboard to the bottom right of the chart.
    </ResponseField>

    <ResponseField name="Bottom Left">
      Display the dashboard to the bottom left of the chart.
    </ResponseField>
  </Expandable>
</ResponseField>

Dashboard location on the chart.

### Dashboard Size

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Tiny" default />

    <ResponseField name="Small" />

    <ResponseField name="Normal" />

    <ResponseField name="Large" />
  </Expandable>
</ResponseField>

Size of the dashboard on the chart.

### Trend Strength

<ResponseField name="Toggle" type="default: true" />

Display Trend Strength metric on the dashboard.

### Volatility

<ResponseField name="Toggle" type="default: false" />

Display the Lux Volatility metric on the dashboard.

### Squeeze

<ResponseField name="Toggle" type="default: false" />

Display the squeeze index on the dashboard.

### Volume Sentiment

<ResponseField name="Toggle" type="default: false" />

Display the Volume Sentiment on the dashboard.

## Custom Alert Creator

***

### Signal

<ResponseField name="Toggle" type="default: false" />

Enable the selected signal condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Any Bullish Confirmation" default />

    <ResponseField name="Any Bearish Confirmation" />

    <ResponseField name="Bullish Confirmation" />

    <ResponseField name="Bullish Confirmation+" />

    <ResponseField name="Bearish Confirmation" />

    <ResponseField name="Bearish Confirmation+" />

    <ResponseField name="Any Bullish Contrarian" />

    <ResponseField name="Any Bearish Contrarian" />

    <ResponseField name="Bullish Contrarian" />

    <ResponseField name="Bullish Contrarian+" />

    <ResponseField name="Bearish Contrarian" />

    <ResponseField name="Bearish Contrarian+" />
  </Expandable>
</ResponseField>

Specific type of signal used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Signal condition step in the custom alert creator sequence.

### ML Classifier

<ResponseField name="Toggle" type="default: false" />

Enable the ML Classifier to be used in the custom alert creator.

<ResponseField name="Numerical Input" type="default: 1234" />

Determines to which group a signal should be classified.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

ML Classifier step in the custom alert creator sequence.

### Smart Trail

<ResponseField name="Toggle" type="default: false" />

Enable the selected Smart Trail condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Uptrending" default />

    <ResponseField name="Downtrending" />

    <ResponseField name="Switch Up" />

    <ResponseField name="Switch Down" />
  </Expandable>
</ResponseField>

Specific Smart Trail condition used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Smart Trail condition step in the custom alert creator sequence.

### Trend Tracer

<ResponseField name="Toggle" type="default: false" />

Enable the selected Trend Tracer condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Uptrending" default />

    <ResponseField name="Downtrending" />

    <ResponseField name="Switch Up" />

    <ResponseField name="Switch Down" />
  </Expandable>
</ResponseField>

Specific Trend Tracer condition used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Trend Tracer condition step in the custom alert creator sequence.

### Trend Catcher

<ResponseField name="Toggle" type="default: false" />

Enable the selected Trend Catcher condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Uptrending" default />

    <ResponseField name="Downtrending" />

    <ResponseField name="Switch Up" />

    <ResponseField name="Switch Down" />
  </Expandable>
</ResponseField>

Specific Trend Catcher condition used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Trend Catcher condition step in the custom alert creator sequence.

### Neo Cloud

<ResponseField name="Toggle" type="default: false" />

Enable the selected Neo Cloud condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Uptrending" default />

    <ResponseField name="Downtrending" />

    <ResponseField name="Switch Up" />

    <ResponseField name="Switch Down" />

    <ResponseField name="Lead Step Up" />

    <ResponseField name="Lead Step Down" />

    <ResponseField name="Lag Step Up" />

    <ResponseField name="Lag Step Down" />
  </Expandable>
</ResponseField>

Specific Neo Cloud condition used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Neo Cloud condition step in the custom alert creator sequence.

### Reversal Zones

<ResponseField name="Toggle" type="default: false" />

Enable the selected Reversal Zones condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Within Upper Zone" default />

    <ResponseField name="Within Lower Zone" />

    <ResponseField name="Entering Upper Zone" />

    <ResponseField name="Entering Lower Zone" />
  </Expandable>
</ResponseField>

Specific Reversal Zones condition used in the custom alert creator.

#### Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Reversal Zones condition step in the custom alert creator sequence.

### Trend Strength

<ResponseField name="Toggle" type="default: false" />

Enable the selected Trend Strength condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the current Trend Strength value with the inline numerical input.

<ResponseField name="Numerical Input" type="default: 50" />

Value used to compare Trend Strength with.

#### Trend Strength Step

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Trend Strength condition step in the custom alert creator sequence.

### External Condition (1)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (1)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

First external source condition step in the custom alert creator sequence.

### External Condition (2)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

First source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the two selected sources.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Second source input.

#### External Step (2)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Second external source condition step in the custom alert creator sequence.

### External Condition (3)

<ResponseField name="Toggle" type="default: false" />

Enable the selected External condition to be used in the custom alert creator.

<ResponseField name="Dropdown" type="Source">
  <Expandable title="Expand">
    <ResponseField name="open" />

    <ResponseField name="high" />

    <ResponseField name="low" />

    <ResponseField name="close" default />

    ...

    <ResponseField name="Others">
      Other external indicator outputs can be used as source.
    </ResponseField>
  </Expandable>
</ResponseField>

Source input.

<ResponseField name="Dropdown" type="String">
  <Expandable title="Expand">
    <ResponseField name="Greater Than" default />

    <ResponseField name="Lower Than" />

    <ResponseField name="Crossing Over" />

    <ResponseField name="Crossing Under" />

    <ResponseField name="Crossing" />

    <ResponseField name="Equal" />
  </Expandable>
</ResponseField>

Comparison operator used to compare the selected source to the selected numerical value.

<ResponseField name="Numerical Input" type="default:0" />

Numerical input.

#### External Step (3)

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="1" default />

    <ResponseField name="2" />

    <ResponseField name="3" />

    <ResponseField name="4" />

    <ResponseField name="5" />

    <ResponseField name="6" />

    <ResponseField name="7" />

    <ResponseField name="8" />

    <ResponseField name="9" />

    <ResponseField name="10" />

    <ResponseField name="All" />

    <ResponseField name="Invalidate" />

    <ResponseField name="OR" />
  </Expandable>
</ResponseField>

Third external source condition step in the custom alert creator sequence.

### Invalidation Behavior

<ResponseField name="Dropdown" type="Numerical">
  <Expandable title="Expand">
    <ResponseField name="None" default>
      No invalidation behavior.
    </ResponseField>

    <ResponseField name="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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 Trigger">
            Step 1 condition trigger, we start evaluating step 2 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>

    <ResponseField name="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 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.

      <Card title="Example">
        Let's take an example where we use 3 regular steps.

        <Steps>
          <Step title="Step 1">
            Step 1 condition trigger, we will now evaluate step 2 from now on.
          </Step>

          <Step title="Step 2">
            Step 2 condition trigger, we will now evaluate step 3 from now on.
          </Step>

          <Step title="Step 1 or 2 Trigger">
            Step 1 or 2 conditions trigger, we start evaluating step 1 from now.
          </Step>
        </Steps>
      </Card>
    </ResponseField>
  </Expandable>
</ResponseField>

Invalidation behaviors allows adding more restrictions to a sequence of conditions, users can use two different invalidation behaviors described below.

### Maximum Step Interval

<ResponseField name="Numerical Input" type="default:10" />

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

<ResponseField name="Toggle" type="default:true" />

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.

<Warning>
  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.
</Warning>

## 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.

<Note>
  Compared to other automatic methods the "Autopilot" feature is the most user-friendly since it avoids adjusting inputs within the indicator entirely.
</Note>

[](/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.

<Note>
  Using Autopilot or the default settings are overall the simplest user experience as it allows you to completely avoid adjusting settings altogether.
</Note>


# 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.

<Note>
  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.
</Note>

## 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.

<Note>
  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.
</Note>

## 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.

<Note>
  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.
</Note>

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.

<Tip>
  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.
</Tip>

## 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.

<Warning>
  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.*
</Warning>


# 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.

<Info>
  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.
</Info>

![](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.

<Tip>
  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.
</Tip>

### 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.

<Warning>
  *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.*
</Warning>