# About Forex Alerts & Crypto Alerts App

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_top)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_top)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)

<mark style="color:blue;">**Best app for trading forex, stock, crypto, synthetic indices (Deriv.com), SynTx (weltrade.com)...Avatrade, Exness, Icmarket, Binance.**</mark>

{% hint style="success" %}

#### *Trusted source of live exchange rates and historical data from:*

&#x20;[![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FTDD4QUaITikvnV9XakuH%2Fexness.png?alt=media\&token=183a93db-cc63-4e85-95fe-01cde2150f22)  ](https://one.exnessonelink.com/a/11210410)[<img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FLPu51yfFi6U6FfvMJ6z9%2Ficmarket.png?alt=media&amp;token=002c4a04-6b92-4f21-b58c-c5ea8c4256db" alt="" data-size="original">](https://www.icmarkets.com/?camp=53011) [![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FgvZ89bxyROF9c6cPVXDd%2Fbinance.png?alt=media\&token=bcad71aa-0ccd-4fa1-94f0-cae4184d1997)](https://accounts.binance.com/register?ref=28987603)[<img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FQNqSBFo4QUfzKDVuQepc%2Fderiv96.png?alt=media&amp;token=834a1119-4513-4585-ae90-7845d726a754" alt="" data-size="original">](https://track.deriv.com/_-1NbAC9Zxee2vdm9PpHVCmNd7ZgqdRLk/1/?payload=docs)[![](https://tracking.avapartner.com/imp/?affid=214848\&logoId=35113\&adTheme=766\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_top)](https://tracking.avapartner.com/click/?affid=214848\&logoId=35113\&adTheme=766\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_top)[![](https://gowt.ck-cdn.com/tn/serve/?cid=409555)](https://track.gowt.me/visit/?bta=48244\&nci=5343)

:thumbsup::clap:**Download App Now:**

&#x20;[![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FFWlrhQXoXK307veiWGHS%2Fplaystore114.png?alt=media\&token=65cd7d83-bfba-413a-8c22-6e93ee451f68)](https://play.google.com/store/apps/details?id=com.funfungames.forexalarm)  [<img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F8PBzw4dnEXjiaUAgMCHp%2Fappstore114.png?alt=media&amp;token=4984a000-6065-4b6d-8752-0d69f88505a1" alt="" data-size="original">](https://apps.apple.com/app/id1660357412)&#x20;
{% endhint %}

{% hint style="info" %}

* Get powerful tracker of Forex, Crypto, indices, Stocks, Synthetic on Deriv, Binance, weltrade, icmarket, exness, Avatrade with trading alerts in real-time.
* Set custom price/rate targets or custom indicator (RSI/MACD...) signals with just a few taps.
* Trusted by 100K+ traders for fast and accurate Notifications / Email Alerts.
  {% endhint %}

{% hint style="info" %}

## Features: Track all market with Price Alerts , Indicator Alerts, Technical Alerts , Strategy Alerts

* Multi-Timeframe Analysis: Combine indicators and patterns across different timeframes for a comprehensive view.
* Customizable Indicators: Access a vast library of technical indicators with customizable parameters.
* Candlestick Pattern Recognition: Identify over 40 candlestick patterns for enhanced technical analysis.
* Easy execute your trading strategy with Indicator Alert feature: you can customize everything in one alert include combine multiple indicators/patterns, multi-timeframe, custom indicator parameter and some other advanced customizations provide by our system.
* Real-time Alerts: Get instant notifications for price movements with Price Alert feature and technical signal on over 100 forex pairs & over 2000 crypto pairs include Currencies, Indices, Commodities, Energies, Cryptocurrencies, Stock, Synthetic indices from world's largest exchanges: Exness,Icmarket,Deriv,Binance...
* Custom alert sound.
* Over 40 Japanese Candlestick Patterns: Hammer, Inverted hammer, Hanging Man, Shooting Star, Engulfing, Harami Cross, Doji Star, Morning Star, Morning Doji Star, Belt Hold, Pin bar...
* Most popular indicators: Accelerator , Alligator, ADXW, ATR (Suppertrend / Average True Range), Awesome Oscillator, Auto Fibonacci Retracement, BB, CCI, DeMarker, Donchain channel, Envelopes, Force Index, Fractals, Ichimoku,KDJ, Heiken Ashi, HMA (Hull Moving Average), MACD, Momentum, MFI, Parabolic SAR, Pivot, RSI, RVI, SMA, EMA, SMMA, LWMA, Standard Deviation, Stochastic, Stochastic RSI, TDI (Traders Dynamic Index oscillator), OsMA (Moving Average of Oscillator), VWAP (Volume Weighted Average Price), VWMA (Volume-Weighted Moving Average), Volume Average, Williams %R  ....

\*\*\* Download Forex Alerts & Crypto Alerts today and take control of your Forex trading!
{% endhint %}

{% hint style="info" %}

### If any feedback or feature request,please contact us via:

* For support:
  * Email: <cacom2401@gmail.com>
  * Telegram live support: <https://t.me/forex_alert_support>
* [Privacy Policy](/info/privacy-policy)
* [Terms & Conditions](/info/terms-and-conditions)

Thanks for use this app!\
\#forexalert #traingalert #cryptoalert #tradingsignal #indicatoralert #pricealert #technicalalert #*Strategyalert #deriv #exness #icmartket #binance*
{% endhint %}

\
[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_bot)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_bot)[![](https://gowt.ck-cdn.com/tn/serve/?cid=409549)](https://track.gowt.me/visit/?bta=48244\&nci=5343)


# Promotion

Exness is a world-leading broker.

&#x20;[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)

{% hint style="info" %}
**Register Exness account to Get up to 3 months free of plan tier 1**\
**Conditions:**

* Register real Exness account via this [link](https://one.exnessonelink.com/a/11210410) and make any first deposit: [signup](https://one.exnessonelink.com/a/11210410)
  * [x] get 1 month.
* If first deposit from 30 usd and make at least 3 trade in 30 days from first deposit:
  * [x] get next 2 months.
* This promotion only apply for new user who not have Exness account before and not have active subscription in Forex Alert app. After complete conditions above please send email to <cacom2401@gmail.com> with your Exness account ID / Email that register Exness and Forex Alert app user ID to get reward.
* The program is expected to run until the end of Apr 2026.
  {% endhint %}


# General Settings

<div><figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F3SCYhqwArv48MBm1tNnn%2F1.jpg?alt=media&amp;token=267f3f54-d399-4315-a86b-d893121f0980" alt=""><figcaption></figcaption></figure> <figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F9gF9Gco7qR90LM6nresx%2F2.jpg?alt=media&amp;token=cc16a510-8067-41a8-bb76-6c53f0f51054" alt=""><figcaption></figcaption></figure></div>

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Config app to run correctly in background

Config for app can run in background will tell Android that this app is important for you so Android will not automatic stop or delay notification send to you when your alerts trigger.

{% hint style="warning" %}
[**"**&#x53;et don’t optimize batter&#x79;**"**](/config-app-android-only/config-app-to-run-correctly-in-background/set-dont-optimize-battery) **section is&#x20;**<mark style="color:red;">**important**</mark>**,in case not receive or delayed notification you can continue do the rest section.**
{% endhint %}

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Set don’t optimize battery

Some devices need set again after restart phone.

Go to setting screen and tap on “<mark style="color:red;">SET DON’T OPTIMIZE BATTERY</mark>” button

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FSpMx1GcPKj3nohQwn3GU%2Fturn%20off%20battery%20opt.png?alt=media\&token=c8508e34-c744-436f-b8c3-b404de9aa4db)

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Prevent app go to sleep

Different devices may have different configurations,bellow guide for Samsung,Vivo,Oppo,Infinix,Tecno

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3) &#x20;


# Samsung device

* **For android 11 and above**: Add this app into "Never sleeping apps" list to prevent system sleep this app.Please make sure this app "Forex Live Alarm" always in this list.

&#x20;           ![](https://lh4.googleusercontent.com/1V6jgICjUGJJVFooO-yFyACXShvmyAzSdIeoJus7vgO2rgFpvIl6S7Ir2vndulkXHwzrY5ZO-jOj-7pTdcZyen5_AB2D-L2ZPfa9TKDu_GsaklOH9BxN-8ZtvHqL5ZLm4mIqB59ClalGcWOBwg)   &#x20;

* **For android 10**: Add this app into "Apps that won’t be put to sleep" list to prevent system sleep this app.Please make sure this app "Forex Live Alarm" always in this list.

&#x20;           ![](https://lh4.googleusercontent.com/QeKCxqsA_gAwIucsK2WII0_ha_-zrsB4NLHBC1jST7446c85U_9ocL5esQ6z8dUMSmvFV9zNxwmjPc0olvLOdZvH47vIRtuVGswyXlPCKJiCyyPcDP5z0NwfLNz4m4y4i83Ays36JOWysGzPcQ)

* **For android 8 and below**: Add this app into “Unmonitored Apps” to prevent system sleep this app.Please make sure this app "Forex Live Alarm" alway in this list.

&#x20;           ![](https://lh5.googleusercontent.com/5qKt3DTtvnAy9VORjLtDtsxRbD9fGNHclyr-4ZQSjFA0FOZFHcurDmtO11xN-QjK3qFyyzmHYGXaf0KQU8UVx3e_waqjRaF3_jorMc3McS357DmpnsWY9dmfV-WjeddlLzucha5w6Ua5UqhVmg)

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3) &#x20;


# Vivo device

Find <mark style="color:red;">"Forex alarm app"</mark> then <mark style="color:red;">turn on/allow</mark> it as instruction form Vivo global support site: <https://www.vivo.com/en/support/questionByTitle?title=How%20to%20turn%20on/off%20High%20background%20power%20consumption?>.

## How to turn on/off High background power consumption?

For Funtouch OS 3.0 and higher version, go to **Settings>Battery>High background power consumption**, then you can allow or disallow apps to run in the background even though they consume much power.

![](https://asia-exstatic-vivofs.vivo.com/PSee2l50xoirPK7y/1541584293910/5141d50f5b85193c2a7eaf638d44945a.gif)

For the below Funtouch OS 3.0 version, go to **i Manager>Power manager>Excessive background battery usage**, then you can allow or disallow apps to run in the background even though they consume much power.

![](https://asia-exstatic-vivofs.vivo.com/PSee2l50xoirPK7y/1541584302932/3938cdee59dc10203d1b6e6381507192.gif)

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Oppo device

Find <mark style="color:red;">"Forex alarm app"</mark> then <mark style="color:red;">turn on “Allow background activity” and “Allow auto startup”</mark> as instruction form Oppo global support site: <https://support.oppo.com/en/answer/?aid=2020322>

## App Battery management with ColorOS 7.2

Now, easily check and manage the battery usage by the apps on your OPPO phone. You can check the foreground and background battery usage of each app and restrict its activity. The "Phone Battery Usage" shows the record of battery consumed by apps for up to two days. This helps you to find out which apps is consuming more battery. "App Battery Management" lets you control the activity of an app in the background. Please follow the article below to learn how to manage the app battery usage.

<br>

**Situation**: You want to learn more about App Battery Management.

**Applicable to**: ColorOS 7 and above. Check your ColorOS version in \[**Settings**] > \[**About Phone**].

<br>

<br>

Foreground activity refers to when the app is being used by you or you are interacting with the application. Whereas, an app's background activity is when the app is not being used by you and running in the background.<br>

<br>

### How to Check the Battery Usage of Apps?

Head over to \[**Settings**] > \[**Battery**] > \[**Phone Battery Usage**] > \[**Select the App**] > This will show you the foreground & background active duration, Power Consumed.\
![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FaXmcS6RflQhJA9MeMcDh%2Foppo1.png?alt=media\&token=102d03ae-39a3-4cef-8492-efdeeef28da0)    ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FLDJZG3BLAp1VL1QYW6at%2Foppo2.png?alt=media\&token=78d96814-a8be-41d7-8e8a-7704feae371b)

### How to Control Background or Foreground Activity?

Go to \[**Settings**] > \[**Battery**] > \[**App Battery Management**] > \[**Select App**] > Enable/ Disable \[**Allow foreground/ Background activity**]. You can also disable \[**Allow auto startup**]  to stop the application from automatically starting everytime you restart or power on the device.

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fy2iuxyqJGR7zIWcNz2yM%2Foppo3.png?alt=media\&token=bfe37ec2-70ef-4b2f-a996-c1283b67d6df) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fdm0PZEeHvcEva8nEz5zk%2Foppo4.png?alt=media\&token=aaff4aa8-0e4d-4552-a482-99fd61a8f3a8) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FPNqQMNOmYXjD9MLfWrwE%2Foppo5.png?alt=media\&token=21e63bc4-7d3b-4e58-b930-16db84e02856)<br>

\* Pictures, settings, and paths might differ from those of your phone, but these won't affect the description in this article.

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Infinix device

&#x20;       ![](https://lh3.googleusercontent.com/pBfBftSKL6mVJ9mszFqNzJGmjDsj4l-YysxtEhutqJJoK4t3IpYvj6Rvo3VjEgo24vPCmkziNteDKpOzzkh4bVH2u5DRXyaMkOHVyrZv5GZzwwNqeKHGSsnKLYuNxEUCKIzKvne3k9JcPJPGKA)

Web

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Tecno device

&#x20;       ![](https://lh5.googleusercontent.com/fLjucvx5nRhTU5MKSoBk9WyPoySj-n3N4_Rw8lFOQn7n33sPre1aIn_b3QPwbgHN9AEUvlncOsILba1XUoZcMyY1PN6jhYhkrc6KqatgvcMawiG1cxVWy2zT_oT33iQSM2cXoeTk30mhiYR0Fw)

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Enable auto-launch permission

Note: only some devices have this function.

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/imp/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Vivo device

Find <mark style="color:red;">"Forex alarm app"</mark> then <mark style="color:red;">turn on</mark> it as instruction form Vivo global support site: <https://www.vivo.com/en/support/questionByTitle?title=How%20to%20turn%20on/off%20Autostart%20for%20my%20apps?>

## How to turn on/off Autostart for my apps?

You can go to Settings>More settings>**Permission management(Applications)>Autostart** to turn on/off the app switch.

![](https://asia-exstatic-vivofs.vivo.com/PSee2l50xoirPK7y/1541575550840/a0607df6e9dab8f73e024a00aa32c74c.gif)

For Funtouch OS **2.6 and lower version**: Go to i Manager>App manage&#x72;**>Autostart manager** to turn on/off the app switch.

![](https://asia-exstatic-vivofs.vivo.com/PSee2l50xoirPK7y/1541575592191/b61ff0ab6e1ef25f20f79242cf9f6b95.gif)

Warmly Tips: The Autostart of some built-in apps is turned on by default


# Oppo device

Find <mark style="color:red;">"Forex alarm app"</mark> then <mark style="color:red;">turn on “Allow auto startup”</mark> as instruction form Oppo global support site: <https://support.oppo.com/en/answer/?aid=2020322>

{% content-ref url="/pages/u4ZeahKAShFAzbJcNx4s" %}
[Oppo device](/config-app-android-only/config-app-to-run-correctly-in-background/prevent-app-go-to-sleep/oppo-device)
{% endcontent-ref %}


# Xiaomi,Huawei,other device

Can skip if your phone not support this function

Go to “Setting” screen and tap on “Check Auto Launch” button

![](https://lh5.googleusercontent.com/sJmA8nW7BfoONaApoWNNeGCAjyVloBNLFFxGLoONJqVMr8_Us9CWsGfy5ppNtYVFpeeP4B-SJXzi_vqTr23MlbYFx1X7V8pscvPKibg9QVEqI4z1Y6CaUoBnvwLrxQW-ebDzkQSLk-fsBesR1w)

In next screen:

* &#x20;For Xiaomi device:

![](https://lh3.googleusercontent.com/MC5Vu2tZtkuvc4Ebva5hH4Wltiu7bckU78PitQD2QbryfIrzUo1Kwkn5qEpPZoVu4rgu-8acZPJrr8l3CIw-zlpuTv1ETFqHOlhG3nmo3j7Su18Q4Nv0bN0xFsbmKsJrfm_NMd7PmAwfzO2pBw)

* For Huawei device: Turn off <mark style="color:red;">automatic manage launch</mark> setting to use <mark style="color:red;">manually</mark> <mark style="color:red;">manage</mark>

![](https://lh4.googleusercontent.com/wP06O1FuZjTrzY4KB6uA0iIp-9GTbb9KZbk0B9nRqE2LcSir8_Kt6l-F9edWOs_IUCBp64jjiESVCN4DxRP0vbPPaDuduKfL2493gKQAN5huh1byEPkC-Pxc9FDDZCi4dKkF_ISSYFOtahZDSw)


# Allow background data

* <mark style="color:blue;">**Allow data for this app**</mark>: Open <mark style="color:red;">“App info/Data usage”</mark> screen in <mark style="color:red;">“system settings/manage apps/Forex Live Alarm”</mark> and turn on <mark style="color:red;">“mobile/wifi/background data”</mark>

![](https://lh6.googleusercontent.com/gMgNKwm86YusbOpCTftXr_jo0uPRDW8UAE6MkSmHRZkdeY_iBbfaEcVdeGpkrOsLKJSke9njkRTOrawIpnmLOwrR5-eZM3fWjLcxcMDGoOxe_w_gFRXXG6pdcXgYX-ybV-t4hbLsQZ8InKq-ug)

* <mark style="color:blue;">**Turn on “Unrestricted data usage”**</mark>: When this setting is turned on, the application will not be subject to any data restrictions even if you turn on data saving features on the phone.

![](https://lh6.googleusercontent.com/r9T4thHTe2bWgXxFrkHHLs1LFkA4adlEICUQUwCk-pF-Gx9wwbFy1-SHzbqcnm4woxmsPbg5TzIwni9hIPLvzrXQ3rakITWySKbsj7NhIe-rG7XXmTEdFuaXPMPE7xDz9FMpuycmTtCbTeCdAg)


# What is "Price Alert" ?

Support Forex(currencies, indices, energies, Metals), Stocks, Crypto, binary.com (deriv.com) ...Avatrade, Exness, Icmarket, Binance

{% hint style="info" %}
"Price Alert" feature give you away to get notification when your target price reach.

:thumbsup:That mean you can set your stop loss, profit, buy, sell price and get notification right after these price point reach.
{% endhint %}

***

{% hint style="success" %}
**Local Price Alert (Android only)** : The app will get price data from the server, then check and send a notification from your phone if your alert is triggered. When using this feature, you will consume a lot of network data and battery because the app needs to work in the background.
{% endhint %}

{% hint style="danger" %}
Note: this feature is required to do this section [***"config app run in background"***](/config-app-android-only/config-app-to-run-correctly-in-background) for work correctly.
{% endhint %}

***

{% hint style="success" %}
**Cloud Price Alert (Android & IOS) :** You will set up then add an alert to our server, then our server will check and send you a notification right after your alert is triggered. App won't need to be constantly fetching data from server to check like "Local Price Alert" feature.
{% endhint %}

{% hint style="danger" %}
Note for Android: In some case like DND mode, sleeping, low battery... Android maybe drop or delay your notification alert. In this case you can do this section [***"config app run in background"***](/config-app-android-only/config-app-to-run-correctly-in-background) to avoid this issue.
{% endhint %}

&#x20; [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_price_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How to add "Price Alert" ?

<div align="center" data-full-width="false"><figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FN1FqlVTdIyRCcmQN7ul1%2F1p.jpg?alt=media&amp;token=36c36cc4-82f4-4433-91b3-8df696807655" alt="" width="324"><figcaption></figcaption></figure></div>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FSeTNmJE5FCZzFSV1SJ9L%2F2p.jpg?alt=media&amp;token=0a6f1356-f023-4644-a06b-3cdf19084338" alt="" width="243"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FkTQxmWjGxCamCLoL8j1d%2F3p.jpg?alt=media&amp;token=78277bcf-044e-4141-847a-4d8852846629" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FnzeqV1Cx8ESoHmDpccJr%2F4p.jpg?alt=media&amp;token=f1a65a48-f53e-4dd6-84c3-a558c0e63956" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F2Q07g5Lt97Bi9MsGWfmO%2F5p.jpg?alt=media&amp;token=8a1346d9-b4db-42b3-bda4-686266253b63" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FervmSjf6HNoqeZssSngf%2F6p.jpg?alt=media&amp;token=5c26e6a6-f987-4ec5-981a-370d7b3249ab" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FkJW0Eq0r8iq3OslDzIGC%2F7p.jpg?alt=media&amp;token=e364b7d4-df5a-49cb-a989-6d711fe2efb2" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FhhTN13rjRdyE8QoQBpoA%2F8p.jpg?alt=media&amp;token=89b79dd3-ef91-4de0-b0b4-09e4c06fe664" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FOnmR73KnSvXUSYCKXhXQ%2F9p.jpg?alt=media&amp;token=9a2bdbd4-515c-47b1-8fdf-9fb89c35d852" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FjyWdg8YcqVd9vTdt6efo%2F10p.jpg?alt=media&amp;token=5da063f9-c74f-4487-b661-7b651c5c7e92" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F8cS6TvMM7mdvVkTctThH%2F11p.jpg?alt=media&amp;token=7322e3bf-0b84-440b-93db-050a5faccaa8" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fymu2FevlYMsFIMiGdb9Y%2F12p.jpg?alt=media&amp;token=aaaa5232-0775-4019-88c6-733ba018323d" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FytHAI3CT7PWSSGwk3rF9%2F13p.jpg?alt=media&amp;token=07e29dad-35ae-46d5-b31f-af6f7a4920ef" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fdi29FflIOIgkf1FgcNxO%2F14p.jpg?alt=media&amp;token=265f58ac-fb9b-47fa-b62c-c77ea7d6f4e0" alt="" width="324"><figcaption></figcaption></figure>

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fabu3hEjkpBjK86gJrpVZ%2F15p.jpg?alt=media&amp;token=05171d6f-2d28-40be-8e4e-1598e55a5731" alt="" width="324"><figcaption></figcaption></figure>


# How "Alert Mode" & "Alert until I update" work ?

A price alert can notify you **once**, or keep reminding you. Two settings on the **Add / Edit price alert** screen decide that:

* **Alert Mode** — how often the alert repeats **while the price still meets your condition**.
* **Alert until I update** — keep notifying **even after the price moves back**, until you stop the alert yourself.

They are two different ideas and they are never used at the same time: when "Alert until I update" is on, Alert Mode is not used and the app hides it.

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FhryYhu6lPkrevbSnEPhV%2FScreenshot_20260921_102005_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=9ca49ec4-90fa-4b2e-a5f6-fcdf524dfd0e" alt=""><figcaption></figcaption></figure>

*With "Alert until I update" off, Alert Mode is visible and controls how often the alert repeats.*

### Where to find them

Open **Add Alert** (price alert) or tap an existing price alert to edit it, then scroll to the bottom, under the **Under / Over** blocks:

```
Alert until I update   [ off ]
Alert Mode                 [ 30s ▾ ]
```

* **Alert until I update** is a switch. It belongs to the whole alert (both directions share it).
* **Alert Mode** is a dropdown. Turning the switch **on** hides the whole Alert Mode row, because it no longer has any effect.

### Alert Mode

Choose one of:

|     |    |    |    |    |     |     |     |    |
| --- | -- | -- | -- | -- | --- | --- | --- | -- |
| 30s | 1m | 2m | 3m | 5m | 10m | 15m | 30m | 1h |

Default for a new alert is **30s**.

How it works:

1. The price reaches your target → you get the **first** notification right away.
2. As long as the price **keeps** meeting the condition, you get another notification every *Alert Mode* interval.
3. As soon as the price **no longer** meets the condition, the alert **resets** — the repeating stops, and the next time it triggers you get a notification immediately again.

So Alert Mode is a "do not spam me" setting, not a delay: the first notification is never delayed.

#### Example — Alert when price over 2600, Alert Mode = 5m

| Time  | Price  | What happens                                          |
| ----- | ------ | ----------------------------------------------------- |
| 10:00 | 2600.4 | ✅ notification (first time above target)              |
| 10:02 | 2601.0 | silent — still inside the 5 minute window             |
| 10:05 | 2602.3 | ✅ notification (5 minutes passed, price still over)   |
| 10:07 | 2599.1 | silent — condition no longer met, the alert resets    |
| 10:08 | 2600.8 | ✅ notification right away (fresh trigger, no waiting) |

### Alert until I update

Turn it on when you must **not** miss the event — for example price touching a level while you are asleep, or while your phone is in your pocket.

Once the price hits your target:

* You get the first notification as usual.
* The alert **latches**: it keeps notifying you **even after the price moves back** away from your target.
* It only stops when **you** stop it: turn the alert off, edit and save it, or delete it.

The notification also tells you the price of the **moment it triggered**, so a reminder that arrives later is still readable:

```
Alarm Over 2600 - triggered at 2600.4
```

#### How often does it remind me ?

* Reminders come about every **30s**.
* After roughly 20 reminders the gap can grow step by step, up to a maximum of **5 minutes**, so a latched alert you never opened does not drain the battery all day.

#### One direction only

"Alert until I update" works in **one direction at a time**. Under and Over become a pair:

* Turning **Under** on turns **Over** off, and the other way around.
* The app shows: *"Alert until I update works in one direction at a time."*
* The same rule applies to the on/off switches on the alert list.

Reason: the latch is stored for the whole alert. If both directions were allowed, the direction that triggered second could never report its own trigger price correctly.

#### How to stop it

| Action                                     | Result                                                                       |
| ------------------------------------------ | ---------------------------------------------------------------------------- |
| Switch the alert **off** on the alert list | Reminders stop, and the latch is cleared — switching it back on starts fresh |
| Open the alert and **save** it             | Latch cleared, alert armed again                                             |
| **Delete** the alert                       | Gone, of course                                                              |
| Price moves back                           | **Nothing** — this is exactly what the option is for                         |

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F3T4S4kkLWOckfAAiCKG9%2FScreenshot_20260921_102057_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=f0f316f7-2074-48ad-8f5b-fb689c1fd2f4" alt=""><figcaption></figcaption></figure>

*With the switch on, Alert Mode disappears and only one direction stays enabled.*

### Rules and limits

* Both settings belong to **price alerts**. Indicator alerts have their own settings.
* Alert Mode applies **per alert**, not per direction: Under and Over of the same alert share it.
* Alert Mode is **never** used while "Alert until I update" is on. Turning the switch back off brings your Alert Mode choice back exactly as it was.
* Turning the alert off and on again always re-arms a latched alert — it will not notify you again until the price reaches the target once more.
* A latched alert keeps its state when you close the app or restart the phone.
* The list of Alert Mode intervals comes from the server, so it can change without a new app version. If you saved an alert with an interval that is no longer offered, edit the alert and pick a new one.

### Good to know

* Not sure which one you want? Use **Alert Mode** for "tell me while it is happening", and **Alert until I update** for "tell me until I have seen it".
* If you want two directions **and** the never-stop behaviour, create two separate alerts, each with one direction and the switch on.
* A quiet alert is not a broken alert: with Alert Mode, silence means the price left your target zone — look at the reset rule above before reporting a problem.


# What is "Indicator Alert" ?

{% hint style="info" %}
"Indicator Alert" feature gives you a way to get a notification when your trading strategy is met.

:thumbsup:We build a strong server to give you the signal as soon as possible.

:thumbsup:For any support & suggestion: <https://t.me/forex_alert_support>
{% endhint %}

{% hint style="info" %}
Support Forex (Currencies, Indices-Futures, Energies, Metals), Stocks, Crypto (Binance and other exchanges) and Synthetic indices from Binary.com (Deriv). Quote and historical data comes from Exness, Deriv, Binance, Weltrade, AvaTrade, IC Markets and more.
{% endhint %}

* Support over 40 Japanese Candlestick Patterns: Hammer, Inverted Hammer, Hanging Man, Shooting Star, Engulfing, Harami Cross, Doji Star, Morning Star, Morning Doji Star, Belt Hold, Pin Bar and more.
* Most popular indicators: Accelerator, Accumulation/Distribution, ADXW, Alligator, ATR (Supertrend / Average True Range), Auto Fibonacci Retracement, Awesome Oscillator, BB (Bollinger Bands), CCI, DeMarker, Donchian Channel, Envelopes, EMA, Force Index, Fractals, Heikin-Ashi, HMA (Hull Moving Average), Ichimoku, KDJ, LWMA, MACD, MFI, Momentum, OsMA (Moving Average of Oscillator), Parabolic SAR, Pivot, RSI, RVI, SMA, SMMA, Standard Deviation, Stochastic, Stochastic RSI, TDI (Traders Dynamic Index), VWAP, VWMA (Volume-Weighted Moving Average), Volume Average, Williams %R and more.
* Full custom your indicators/patterns signal: custom parameters, combine many indicators/patterns and build your own technical analysis in one alert.

### What you can put in one alert

|                                          |                                                                                                             |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Several conditions in one alert**      | Mark the ones that can never be missing as **Must meet**, and choose how many must reach target — read more |
| **Several timeframes in one alert**      | Set the Global Timeframe to **MTF** and give each condition its own timeframe                               |
| **Check while the candle is still open** | **Calculation Mode: Every Minute** (with MTF), instead of only at the candle close                          |
| **Pick the candle to read**              | Current, 1 Previous, 2 Previous … — read more                                                               |
| **Ask for a repeated signal**            | *n times inside m candles* — read more                                                                      |
| **Filter how far apart two lines are**   | **Distance limit** — read more                                                                              |
| **Real strategy logic**                  | **Advanced** mode: groups of conditions combined with AND / OR / any K of N — read more                     |
| **The same alert on many symbols**       | **Add Multi Alert** creates one alert per symbol you pick                                                   |
| **Your own sound**                       | A custom alert sound per pair                                                                               |
| **Alerts made by others**                | **Alert Exchange**: copy a Strategy Template or an alert shared by another trader, then edit it as your own |

New here? Start with [How to add "Indicator Alert" ?](/indicator-alert-feature/how-to-add-indicator-alert)

&#x20;   [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How to add "Indicator Alert" ?

{% hint style="info" %}
Follow the basic steps **1 → 26** in the pictures below. Steps 10 – 19 are the condition screen, which you visit once per condition.
{% endhint %}

### 1 – 2 · Open a new alert

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fmkk9K7P1JVZLtSuUHfTL%2Fhow-to-add-indicator-alert-1-open.png?alt=media&amp;token=32854c7d-f045-4d7b-b95f-c86e6ae44a6e" alt=""><figcaption></figcaption></figure>

### 3 – 9 · Set up the alert

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F9JivTzskeRAi22WlICxu%2Fhow-to-add-indicator-alert-2-setup.png?alt=media&amp;token=d000cb44-9912-4244-a20e-d7b87e281371" alt=""><figcaption></figcaption></figure>

* **Time Frame** is the alert's global timeframe. Pick **MTF** when the conditions should use different timeframes — only then can each condition choose its own **TF** and **Data Use**.
* **Calculation Mode** decides when the alert is checked: **At End of Candle**, or **Every Minute** (MTF only) so it can also trigger while the candle is still open. On a condition row the same setting is called **Data Use**, with **Closed Candle** for *At End of Candle*.
* The **Advanced** tab is a different way of combining conditions — see [How "Advanced" mode work ?](/indicator-alert-feature/how-advanced-mode-work). It is shown only while the alert is new.

### 10 – 19 · Add a condition (indicator)

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FnkzF93ymBfWKGprznlfn%2Fhow-to-add-indicator-alert-3-condition-indicator.png?alt=media&amp;token=63075b17-68f7-41ab-8586-da8f283b7bbd" alt=""><figcaption></figcaption></figure>

Read more about the options on this screen:

* [How cross over,cross under,over,under work ?](/indicator-alert-feature/how-cross-over-cross-under-over-under-work)
* [How "candle to check" work ?](/indicator-alert-feature/how-candle-to-check-work)
* [How "Multi-Candle" work ?](/indicator-alert-feature/how-multi-candle-work)
* [How "Distance limit" work ?](/indicator-alert-feature/how-distance-limit-work)

### 10.1 – 19.1 · Add a condition (pattern)

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2ForiRe5KY68t6yASWZvha%2Fhow-to-add-indicator-alert-4-condition-pattern.png?alt=media&amp;token=049f0147-a470-4677-9818-725d871feb85" alt=""><figcaption></figcaption></figure>

### 20 – 26 · Must meet, the number of conditions, and finish

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fez3fuAH5XBiYmuRxPR5g%2Fhow-to-add-indicator-alert-5-finish.png?alt=media&amp;token=0f59c74d-4f87-4b14-a490-4c73fbab74fb" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**"Must meet" and "number of conditions reach target" decide whether your alert ever triggers.** Set them wrong and the alert can stay silent forever — read [How "must meet" & "number conditions reach target" work ?](/indicator-alert-feature/how-must-meet-and-number-conditions-reach-target-work) once before you rely on an alert.
{% endhint %}

### After you tap "Add Alert"

* The alert appears in the **Indicator Alert** list, already running. The switch on the row turns it off and on.
* Tap the alert to edit it. The mode (Basic or Advanced) cannot be changed afterwards — create a new alert instead.
* The **copy** button duplicates an alert, which is the fastest way to build the same idea on another pair.
* The **share** button publishes it — see [What is "Alert Exchange" ?](/indicator-alert-feature/what-is-alert-exchange). You can also start from an alert someone else already built instead of doing all of the above.

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# What is "Alert Exchange" ?

**Alert Exchange** is the place where alerts are passed around instead of built from scratch: ready-made **Strategy Templates** from us, alerts other traders made public, and the ones you keep for yourself. One tap copies a share into your own alert list, where you can edit it like any alert you made.

You can also go the other way and publish your own alerts — for everyone, or privately for the people you give your code to.

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FfiKVdQiJImAF4sUVMLO4%2FScreenshot_20260911_222113_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=01d12cb8-8cb0-424b-a3e5-c1f1f3c1771a" alt=""><figcaption></figcaption></figure>

*Templates, Community and Favorites — the same card everywhere, with a "Use" button on each.*

### Where to find it

* Tap the **people icon** in the top bar of the main screen.
* Three tabs: **Templates**, **Community**, **Favorites**.
* **My Shares** (top right) is your own side: your name, your private code, everything you published.

Some parts can be switched off for a while; then the tab or the button is simply not there.

### The three tabs

| Tab           | What is in it                                                                                                                                                                                                                               |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Templates** | *Ready-made examples from us, here to show how an alert is built and how to use the app.* A template is marked **Example** (made by us) or **User pick** (a member's share we picked). Tap the **i** beside the mark to read what it means. |
| **Community** | Everything traders published as **Public**.                                                                                                                                                                                                 |
| **Favorites** | The shares you kept with the **★**.                                                                                                                                                                                                         |

Above the list: **Newest** / **Most used** sorting, and a category chip (**All categories**, Trend, Momentum, Volatility, Price Action, Custom).

### What a card tells you

* Category and, for templates, the **Example** / **User pick** mark.
* Title, author (**@name**, or *Private* when the author has no name yet) and description.
* The alert itself: the trigger line — in **Advanced** shares the group logic, e.g. `Trend and (RSI or MACD)` — and the list of conditions.
* How many people already used it: **12 uses**.
* **★** keep it in Favorites · **⋮** more (Report) · **Use**.

Tap the card to open the **Preview** screen, which shows the whole alert plus its **Share ID**.

### Using a share

**Use** does exactly what the **Copy** button on your own alert does: it opens the normal "add alert" screen with everything already filled in — symbol, timeframe, conditions, note. Nothing is saved until **you** tap **Add Alert**, so you can change the symbol, the values, anything, first.

* You keep the copy. Later changes by the author do not touch your alert.
* The usual alert quota and subscription rules apply — the button says **Use — needs a subscription** when your plan does not cover it.

### Finding one particular share

Use the box at the top of the list. The small selector picks what you are typing:

| Kind             | What to type                              | Answer                                                   |
| ---------------- | ----------------------------------------- | -------------------------------------------------------- |
| **Private code** | 6–8 letters or numbers                    | The whole **collection** of that person's private shares |
| **Share ID**     | numbers only                              | That one share                                           |
| **User name**    | 3–20 characters, letters, numbers and `_` | Everything that trader published publicly                |

You can also tap an author's name on a card to see their other public shares.

### Publishing your own alert

1. In the **Indicator Alert** list, tap the **share icon** on the alert's row. (A brand-new alert has to finish syncing first.)
2. Fill in **Title**, **Description** and **Category**.
3. Choose the visibility:
   * **Public** — *Anyone can find this in the Community tab.*
   * **Private** — *Only people you give your private code to can see this. It never shows up in Community.*
4. Publish. You get a message you can copy and send, containing your **private code** or the **share ID**.

{% hint style="warning" %}
**Your alert note is shared too.** Remove anything private from it before publishing. The characters `"` and `'` are not accepted in the title and description.
{% endhint %}

How many you may have at a time depends on your subscription; the dialog always shows the real numbers, e.g. **Public 1/3 · Private 0/5**. Favorites have their own count (**Favorites 4/20** on the tab).

### My Shares

* **Your name** — 3–20 characters, lowercase letters, numbers and `_`. People can find all your public shares by it. Changing it breaks the links people already have; your share IDs keep working.
* **Private code** — one code for **all** your private shares, so a single code gives someone your whole private collection. You can generate a new one, but *the old code stops working right away*.
* Each share can be **edited**, **removed** — *this removes the shared copy only, your own alert stays on this device* — and has its own **inbox**.
* Two states you may see on your own share:
  * *We disabled this share. Nobody else can see it. You can remove it, but not edit it.*
  * *We picked this as a template, so it now shows in Templates for everyone. It stays as it is — contact us if it needs editing or removing.*

### Reporting a share

**⋮ → Report** on any card. You choose who reads it:

* **Us** — *Only our team sees this. The author is not told who reported them.*
* **The author** — *The author reads this. Your name is not shown to them.*

Reasons: Spam or advertising · Misleading or wrong · Offensive content · This is a copy of my alert · Something else. You can send this **once per share**. Answers come back to the inbox of that share.

### Rules and limits

* Alert Exchange carries **indicator alerts**, not price alerts.
* A share is a **snapshot**. Editing your own alert afterwards does not change what other people copied, and editing the share does not change the copies already taken.
* Everything a share carries is visible to whoever can open it: symbol, timeframe, every condition, and your note.
* When your subscription expires you keep everything, but the app switches to read-only: *Subscription expired. You can view or remove only.*
* A share you removed is gone for everyone; people who already used it keep their own copy.

### Good to know

* Not sure where to start? Open **Templates** and use one as it is — then edit the symbol and the values once you see how it is built.
* **Most used** is the fastest way to see what actually gets copied.
* Keeping a share in **Favorites** is not the same as using it: a favorite still lives on the exchange, a used share is your own alert.
* A private share is private because of the code, not because it is hidden: anyone you give the code to sees the whole collection behind it.

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Indicator Definition & Usage

{% hint style="info" %}
This page provides definitions and usage of the indicators supported in the app.
{% endhint %}

* [KDJ](/indicator-alert-feature/indicator-definition-and-usage/kdj)
* [Pivot Point](/indicator-alert-feature/indicator-definition-and-usage/pivot-point)

&#x20;

[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# KDJ

\#kdj #kdjindicator

{% hint style="info" %}
This is the KDJ version with the same formula as KDJ installed on [Binance](https://accounts.binance.com/register?ref=28987603) It use SMMA instead of SMA like STO.

tradingview chart: <https://www.tradingview.com/script/ChWKJrrr/>
{% endhint %}

> The KDJ indicator is a technical analysis tool and momentum oscillator, an extension of the STO ([Stochastic Oscillator](https://www.google.com/search?sca_esv=99ccd84969507416\&rlz=1C5CHFA_enVN1012VN1012\&cs=0\&sxsrf=AE3TifO2H-5EnTyRJkv7Ii9ZnrP8nd4Kiw%3A1757146768186\&q=Stochastic+Oscillator\&sa=X\&ved=2ahUKEwje25nn2cOPAxWDxzgGHSONHakQxccNegQIBBAB\&mstk=AUtExfC9Vg9c3Y8A6ADEmIiH306OjwHDBsCpqgJkxiRiSYIuWd03L3ufDMRdqy3t8_Y1Kh0ryIaM2sjAYjXc9smFuV-Ibujb-zYh4K56kawnh_cizFMSHEolNY4e4Q8-dweLv6L0tO0KdG6mBIlP6AL2b1WqHjK2YETR1HD0_7IMKTHrCCs\&csui=3)), that uses three lines (%K, %D, and %J) to identify overbought/oversold conditions, market trends, and potential trend reversals. Derived from a security's closing price relative to its recent high-low range, the KDJ helps traders find short-term trading opportunities by providing buy/sell signals based on line crossovers and by signaling extreme market conditions when lines reach 0 or 100.&#x20;

* **How to calculator KDJ indicator:**

> Parameters: KDJ(RSV Period, K  Period, D Period)
>
> *Example: KDJ(9,3,3) calculation for Day chart*
>
> > **RSV** = (Current closing price - 9-day minimum value)/(9-day high price - 9-day minimum value) ×100
> >
> > **K** = SMMA (RSV, 3)
> >
> > **D** = SMMA (K, 3)
> >
> > **J** = 3K - 2D

* **How to Use the KDJ Indicator**

> - **Crossovers:**
>   * **Buy Signal:** When the %K line crosses above the %D line.&#x20;
>   * **Sell Signal:** When the %K line crosses below the %D line.&#x20;
> - **Overbought/Oversold Conditions:**
>   * **Overbought:** When the %J line goes above 100.&#x20;
>   * **Oversold:** When the %J line goes below 0.&#x20;
>   * When the %K and %D lines are above 80, the market is considered overbought.&#x20;
>   * When the %K and %D lines are below 20, the market is considered oversold.&#x20;

* **Key Features and Limitations**

> - **Momentum and Reversals:**&#x54;he KDJ is a momentum indicator that measures the intensity of price changes and is used to spot overbought and oversold signals, indicating potential trend reversals.&#x20;
> - **Short-Term Focus:**&#x49;t is highly sensitive to short-term price movements, making it a favorite for short-term traders.&#x20;
> - **Volatility:**&#x49;n highly volatile or volatile markets, the KDJ can generate false signals due to its high sensitivity, potentially leading to incorrect trades.&#x20;
> - **Combined Use:**&#x54;raders often use the KDJ in conjunction with other indicators, like the [RSI](https://www.google.com/search?sca_esv=99ccd84969507416\&rlz=1C5CHFA_enVN1012VN1012\&cs=0\&sxsrf=AE3TifO2H-5EnTyRJkv7Ii9ZnrP8nd4Kiw%3A1757146768186\&q=RSI\&sa=X\&ved=2ahUKEwje25nn2cOPAxWDxzgGHSONHakQxccNegQIWBAB\&mstk=AUtExfC9Vg9c3Y8A6ADEmIiH306OjwHDBsCpqgJkxiRiSYIuWd03L3ufDMRdqy3t8_Y1Kh0ryIaM2sjAYjXc9smFuV-Ibujb-zYh4K56kawnh_cizFMSHEolNY4e4Q8-dweLv6L0tO0KdG6mBIlP6AL2b1WqHjK2YETR1HD0_7IMKTHrCCs\&csui=3) or [MACD](https://www.google.com/search?sca_esv=99ccd84969507416\&rlz=1C5CHFA_enVN1012VN1012\&cs=0\&sxsrf=AE3TifO2H-5EnTyRJkv7Ii9ZnrP8nd4Kiw%3A1757146768186\&q=MACD\&sa=X\&ved=2ahUKEwje25nn2cOPAxWDxzgGHSONHakQxccNegQIWBAC\&mstk=AUtExfC9Vg9c3Y8A6ADEmIiH306OjwHDBsCpqgJkxiRiSYIuWd03L3ufDMRdqy3t8_Y1Kh0ryIaM2sjAYjXc9smFuV-Ibujb-zYh4K56kawnh_cizFMSHEolNY4e4Q8-dweLv6L0tO0KdG6mBIlP6AL2b1WqHjK2YETR1HD0_7IMKTHrCCs\&csui=3), to confirm signals and reduce the chance of false trading signals.&#x20;

&#x20;  [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Pivot Point

\#pivot #pivotpoint

{% hint style="info" %}
This Pivot indicator **only calculate the last Pivot based on the prior trading day high, low, close.**

tradingview chart: <https://www.tradingview.com/script/y5Amaszl-Pivot-Point-tradingalert-net/>
{% endhint %}

* **Formula**: pHigh(previous day high), pLow(previous day low), pClose(previous day close)\
  PP = (pHigh+pLow+pClose) / 3\
  R1 = PP+(PP-pLow)\
  S1 = PP-(pHigh - PP)\
  R2 = PP + (pHigh - pLow)\
  S2 = PP - (pHigh - pLow)\
  R3 = pHigh + 2 \* (PP - pLow)\
  S3 = pLow - 2 \* (pHigh - PP)

&#x20;  [![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Patterns definition

{% hint style="info" %}
We implement from origin definition here: <https://www.mql5.com/en/articles/101>

With some minor modifications for match the global definition.
{% endhint %}

{% hint style="danger" %}
About the "Period" parameter in this system: It is used to determine the Downtrend/Uptrend using a Moving Average ([learn more here](#define_trend)). *<mark style="color:red;">**If you want to skip the trend checking condition, please set the Period to**</mark>**&#x20;**<mark style="color:green;">**1**</mark>*. More information about the trend condition of each Pattern, please see Pattern definition [here](#pattern-define).

<img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FxMO3eJBoKqUXK54wL6Xz%2FImportedPhoto_1708766101964.jpg?alt=media&amp;token=33ed4aad-6572-4dc8-ad1e-ff8c4a389345" alt="" data-size="original">
{% endhint %}

####

Plotting of candlestick charts and analysis of candlestick patterns is an amazing line of technical analysis. The advantage of candlesticks is that they represent data in a way that it is possible to see the momentum within the data.

Candlesticks give a vivid mental picture of trading. After reading and a little practice, candlesticks will be part of your analytical arsenal. Japanese candlestick charts can help you penetrate "inside" of financial markets, which is very difficult to do with other graphical methods. They are equally suitable for all markets.

####

One of the first analysts who started to predict the movement of prices in the future, based on past prices, was the legendary Japanese [Munehisa Homma](https://www.mql5.com/go?link=http://www.forexwk.com/therms/109). Trading principles applied by Homma in trading on the rice market, initiated the technique of Japanese candlesticks, which is now widely used in Japan and abroad.<br>

![Structure of a candlestick](https://c.mql5.com/2/1/candles__4.png)<br>

Figure 1. Structure of a candlestick

Consider the structure of a candlestick (Fig. 1). The rectangle representing the difference between the open and close prices, is called the body of the candlestick. The height of the body represents the range between the open and close prices of the trading period. When the close price is higher than the open price, the candlestick body is white (Fig. 1 a). If the body is black (Fig. 1 b), this means the close price was below the open price.

Candlesticks can have shadows - the upper and lower, the length of shadows depends on the distance between the open/close prices and the minimum/maximum prices.

Candlestick are plotted on the chart one by one, forming various patterns. According to the theory, some patterns can indicate with a certain probability that the trend is changing, or confirm the trend, or show that the market is indecisive.

Long bodies of candlesticks, as a rule, tell about pressure from buyers or sellers (depending on the color of the candlestick). Short bodies mean that the struggle between the bulls and bears was weak.

<table data-header-hidden><thead><tr><th width="162.99900900041916"></th><th></th></tr></thead><tbody><tr><td> Candlesticks</td><td>Description<br></td></tr><tr><td>  <img src="https://c.mql5.com/2/1/p1__1.jpg" alt=""></td><td><strong>"Long Candlesticks".</strong> Link to long candlesticks is widespread in the literature on Japanese candlesticks.<br>The term "long" refers to a candlestick body length, the difference between the open price and the close price.<br>It is better to consider the most recent price movements to determine what is long, and what is not.<br>Five or ten previous days - that's quite an adequate period to arrive at a correct conclusion.</td></tr><tr><td>  <img src="https://c.mql5.com/2/1/p2__1.jpg" alt=""></td><td> <strong>"Short Candlesticks".</strong> The determination of short candlesticks can be based on the same methodology as in the case of long candlesticks, with similar results.<br>In addition, there are a lot of candlesticks, which do not fall into any of these two categories.</td></tr><tr><td><img src="https://c.mql5.com/2/1/p3__1.jpg" alt=""></td><td><strong>"Marubozu"</strong> . In Japanese "Marubozu" means almost bold.<br>In any case, the meaning of the term reflects the fact that the body of the candlestick either does not have up and/or down shadows at all, or they are very small.<br><br>Black marubozu - a long black body without a shadow on one of the sides. It often becomes a part of the bearish continuation pattern or bull reversal pattern, especially it appears in a downtrend. A long black candlestick indicates a major victory of bears, so it often appears the first day of many reversal patterns of the bullish character.<br><br>White marubozu - a long white body without a shadow on one of the sides. This is a very strong candle. In contrast to the black marubozu it often turns out to be part of the bullish pattern of continuation or a bearish reversal pattern.<br></td></tr><tr><td><img src="https://c.mql5.com/2/1/p4__1.jpg" alt=""></td><td><strong>"Doji"</strong>. If the body of the candlestick is so small that the open and close prices are the same, it is called Doji.<br>The requirement that the open and close prices should be exactly equal, imposes ti strict restrictions on the data, and Doji would appear very rarely.<br>If the price difference between the open and close prices does not exceed a few ticks (minimum price change), this is more than enough.</td></tr><tr><td><img src="https://c.mql5.com/2/1/p5__1.jpg" alt=""></td><td><strong>"Spinning Tops"</strong> are short candlesticks with an upper and/or lower shadow longer than the body.<br>Sometimes they are referred to as "white" and "black" Doji. Koma indicates indecision of bulls and bears.<br>The color of the Koma body, as well as the length of its shadow, is not important. The small body relative to the shadows is what makes the spinning top.</td></tr><tr><td>  <img src="https://c.mql5.com/2/1/p6__1.jpg" alt=""></td><td><strong>"Hanging man" and "Hammer"</strong>. These are candlesticks with long lower shadows and short bodies. The bodies are at the top of the range of prices.<br>The surprising property of these candlesticks is that they can be bullish and bearish, depending on the phase of the trends, in which they appear.<br>The appearance of these candles in a downward trend is a signal that its dominance in the market is coming to an end, in this case the candlestick is called "the hammer".<br>If the candlestick appears during an uptrend, it indicates its possible end, and the candlestick has an ominous name - "hanging man".</td></tr><tr><td><img src="https://c.mql5.com/2/1/p7__1.jpg" alt=""></td><td><strong>"A start"</strong> appears each time when the small body appears whenever a small body opens up or down from the previous long body, body color is unimportant.<br>Ideally, the gap must catch also shadows, but it is not entirely necessary. The star indicates some uncertainty prevailing in the market.<br>Stars are included in many candlestick patterns, mostly reversal.</td></tr></tbody></table>

&#x20;Table 1. Types of Candlesticks

Separate candlesticks are extremely important for the analysis of combinations of candlesticks. When an analyst uses them separately, and then in combination with other candlesticks, the psychological state of the market is revealed.

####

**2.1. Necessary structures**<br>

Candlestick patterns can be a separate candlestick or consist of a few of them. For the candlestick patterns, there are certain rules of recognition.

*Example:**Evening star (bearish pattern)***. The trend upwards. The first and third candlesticks are "long". Shadows of the stars are short, the color does not matter. The classical pattern: separation of the star from the Close of the first candlestick, for forex and within the day: Close of the first candlestick and Open of the star are equal. The third candlestick is closed inside the body of the first one.

So first let's learn to recognize the types of candlesticks. For this purpose, we write a function RecognizeCandle, which will recognize the type of candlesticks and return the necessary information.

```
//+------------------------------------------------------------------+
//|   Function of candlestick type recognition                       |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
```

where:<br>

* symbol - the name of the symbol<br>
* period – chart period,<br>
* time – open time of the candlestick,<br>
* aver\_period - period of averaging<br>
* res - a structure, in which the result is returned.

Let's define what results we need, based on the rules of recognition of candlestick patterns:

* open, close, high and low;
* open time of the candlestick;
* trend direction;
* bullish or bearish candlestick;
* size of the candlestick body – an absolute value;
* type of candlestick (from Table 1).

Let's create a structure:

```
//+------------------------------------------------------------------+
//| Structure CANDLE_STRUCTURE                                       |
//+------------------------------------------------------------------+
struct CANDLE_STRUCTURE
  {
   double            open,high,low,close; // OHLC
   datetime          time;     //Time
   TYPE_TREND       trend;    //Trend
   bool              bull;     //Bull candlestick
   double            bodysize; //Body size
   TYPE_CANDLESTICK  type;    //Type of candlestick
  };
```

where trend and type are variables of enumeration type:

```
//+------------------------------------------------------------------+
//|   ENUM TYPE CANDLESTICK                                          |
//+------------------------------------------------------------------+
enum TYPE_CANDLESTICK
  {
   CAND_NONE,          //Unrecognized
   CAND_MARIBOZU,       //Marubozu
   CAND_MARIBOZU_LONG, //Marubozu long
   CAND_DOJI,           //Doji
   CAND_SPIN_TOP,       //Spinning Tops
   CAND_HAMMER,         //Hammer
   CAND_INVERT_HAMMER, //Reverse hammer
   CAND_LONG,           //Long
   CAND_SHORT,          //Short
   CAND_STAR            //Star
  };
//+------------------------------------------------------------------+
//|   TYPE_TREND                                                     |
//+------------------------------------------------------------------+
enum TYPE_TREND
  {
   UPPER,   //Upward
   DOWN,    //Downward
   LATERAL  //Lateral
  }; 
```

Let us consider the RecognizeCandle function.

**2.2. Recognition of the candlestick type**

```
//+------------------------------------------------------------------+
//| Function of recognition of candlestick type                      |
//+------------------------------------------------------------------+
bool RecognizeCandle(string symbol,ENUM_TIMEFRAMES period, datetime time,int aver_period,CANDLE_STRUCTURE &res)
  {
   MqlRates rt[];
//--- Get data of previous candlesticks
   if(CopyRates(symbol,period,time,aver_period+1,rt)<aver_period)
     {
      return(false);
     }
```

First, using the [CopyRates](https://www.mql5.com/en/docs/series/copyrates) function obtain data from previous aver\_period +1 candlesticks. Note the order, in which data is stored in the array we obtain.

If data were received without errors, start filling out our return structure CANDLE\_STRUCTURE with data.

```
   res.open=rt[aver_period].open;
   res.high=rt[aver_period].high;
   res.low=rt[aver_period].low;
   res.close=rt[aver_period].close;
   res.time=rt[aver_period].time;
```

#### &#x20;<a href="#define_trend" id="define_trend"></a>

**Defining trend.** What is a trend? If this question had a fairly complete answer, the secrets of the market would have been disclosed. In this article we will use the method for determining the trend using a moving average.

MA=(C1+C2+…+Cn)/N,\
where C – close prices, N – number of bars.

L. Morris in his book ["Candlestick Charticng Explained. Timeless techniques for Trading Stocks and Futures" ](https://www.mql5.com/go?link=http://www.alpina.ru/book/199/)uses to a moving average with a period of ten to identify a short-term trend; if the close price is above average - the trend is up, if lower - it is downward.

That's how it looks like:

```
//--- Define the trend direction
   double aver=0;
   for(int i=0;i<aver_period;i++)
   {
      aver+=rt[i].close;
   }
   aver=aver/aver_period;
   
   if(aver<res.close) res.trend=UPPER;
   if(aver>res.close) res.trend=DOWN;
   if(aver==res.close) res.trend=LATERAL;
```

Next we define if our candle is bullish or bearish, we calculate the absolute value of the candlestick body, the size of shadows, the average body size of the candlestick during aver\_period and other necessary intermediate data.

```
//--- Define of it bullish or bearish
   res.bull=res.open<res.close;
//--- Get the absolute value of the candlestick body size
   res.bodysize=MathAbs(res.open-res.close);
//--- Get the size of shadows
   double shade_low=res.close-res.low;
   double shade_high=res.high-res.open;
   if(res.bull)
     {
      shade_low=res.open-res.low;
      shade_high=res.high-res.close;
     }
   double HL=res.high-res.low;
//--- Calculate the average body size of previous candlesticks
   double sum=0;
   for(int i=1; i<=aver_period; i++)
      sum=sum+MathAbs(rt[i].open-rt[i].close);
   sum=sum/aver_period;
```

Now let's deal with the identification of the types of candlesticks.

**2.3. Rules of identification of candlestick types**

**"Long"** candlesticks. To define "long" candlesticks, check the value of the current candlestick relative to the average value of aver\_period previous candles.

***Reference:*** <https://www.candlescanner.com/candlestick-patterns/long-and-short-lines/>

*<mark style="color:red;">**Note: incase aver\_period=1 (skip trend checking mode) we will use the simple Long/Short candle definition:**</mark>*

&#x20;      *<mark style="color:red;">**- long: body >= 0.65 \* (High - Low)**</mark>*

&#x20;      *<mark style="color:red;">**- short: body <= 0.35 \* (High - Low)**</mark>*

**(Body) > (average body of the last** aver\_perio&#x64;**) \*1.3**

<br>

```
//--- long 
   if(res.bodysize>sum*1.3) res.type=CAND_LONG;
//--- simple long
   if(aver_period==1 && res.bodysize>=HL*0.65) res.type=CAND_LONG;   
```

**"Short"** candlesticks. To define "short" candlesticks, use the same principle as for the "long" ones, but with a changed condition.

**(Body) > (average body of the last X days) \*0.5**

```
//--- short 
   if(res.bodysize<sum*0.5) res.type=CAND_SHORT;
//--- simple short
   if(aver_period==1 && res.bodysize<=HL*0.35) res.type=CAND_SHORT;
```

**Doji**. Doji occurs when open and close prices are equal. This is a very strict rule. In the case of most types of data, we can tolerate some deviations in finding patterns. The formula allows finding the percentage difference between the two prices within acceptable limits.

**(Dodji body) < (range from the highest to the lowest prices) \* 0.03**

```
//--- doji
   if(res.bodysize<HL*0.03) res.type=CAND_DOJI;
```

**"Marubozu"** . This is a candlestick with no high or low, or they are very small

**(lower shadow) < (body) \* 0.03 or (upper shadow) < (body) \* 0.03**

```
//--- maribozu
   if((shade_low<res.bodysize*0.01 || shade_high<res.bodysize*0.01) && res.bodysize>0)
     {
      if(res.type==CAND_LONG)
         res.type=CAND_MARIBOZU_LONG;
      else
         res.type=CAND_MARIBOZU;
     }
```

When writing an indicator for this article, it was necessary to separate the "long" "Maribozu", for which I had to add the condition for checking "long" candlesticks.

**"Hammer"** and **"Hanging Man"**.  The body is located in the upper part of the daily range and the lower shadow is much longer than the body. It is also necessary to consider the length of the upper shadow, if there is any. The ratio between the body and the lower shadow is defined as the ratio of the body length to the length of the lower shadow:

**(lower shadow)>(body)\*2 and  (upper shadow)< (body)\*0.1**

```
//--- hammer
   if(shade_low>res.bodysize*2 && shade_high<res.bodysize*0.1) res.type=CAND_HAMMER;
```

**"Shooting Star"** and **"Inverted Hammer"** are similar to the "Hammer", but with the opposite condition:

**(lower shadow)<(body)\*0.1 and (upper shadow)> (body)\*2**

```
//--- invert hammer
   if(shade_low<res.bodysize*0.1 && shade_high>res.bodysize*2) res.type=CAND_INVERT_HAMMER;
```

**"Spinning Tops"**. These are "short" candlesticks" with shadows longer than the body:

**Short candle and (lower shadow) > (body) and (upper shadow) > (body)**

```
//--- spinning top
   if(res.type==CAND_SHORT && shade_low>res.bodysize && shade_high>res.bodysize) res.type=CAND_SPIN_TOP;
```

The source text of the function and structure descriptions are in the attached file CandlestickType.mqh.&#x20;

A;so to the article, the Candlestick Type Color.mq5 indicator is attached, which paints candlesticks on the chart depending on their type.

![](https://c.mql5.com/2/1/type__1.gif)<br>

&#x20;Figure 2. Example of Candlestick Type Color.mq5

So we have created a function that returns all the necessary data.

Now we cane proceed creating an indicator that will recognize candlestick patterns.

#### 3. Candlestick Patterns and Algorithms for Their Identification<br>

A candlestick pattern can be either a single candlestick, or consist of several candlesticks, seldom more than five or six. In Japanese literature, they sometimes refer to the patterns consisting of a larger number of candlesticks. The order in which we will consider the patterns, does not reflect their importance or predictive capabilities.&#x20;

Candlestick patterns are divided into two types - ***reversal patterns*** and ***continuation patterns***.

We will consider simple patterns (one candlestick) first, and then complex (several candlesticks). The figure containing the pattern will start with two small vertical lines. These lines simply indicate the direction of the previous trend of the market, and should not be used as a direct indication of the relations between patterns.

The patterns will be presented in a table, in the first line - bull pattern, in the second - the opposite bearish pattern, if there is such.

#### **3.1. REVERSAL PATTERNS OF CANDLESTICKS** <a href="#pattern-define" id="pattern-define"></a>

**3.1.1. Patterns consisting of a single candlestick**

Obtain data for a single candlestick:

```
//--- calculation of candlestick patterns
   for(int i=limit;i<rates_total-1;i++)
     {
      CANDLE_STRUCTURE cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i],InpPeriodSMA,cand1))
         continue;
/* Checking patterns with one candlestick */
```

and recognize patterns.

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Inverted</strong><br><strong>hammer</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Inverted_Hammer.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Inverted_Hammer__1.gif" alt=""></td><td> Downward trend.<br>The upper shadow is not less than 2 and no more than 3 times larger than the body.<br>There is no lower shadow, or it is very short (no more than 10% of the candlestick range).<br>The color of the body in the long game is not important, with the short - white hammer is much stronger than the black one.<br>Confirmation is suggested.</td></tr><tr><td><strong>Hanging Man</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Handing_Man.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Handing_Man__1.gif" alt=""></td><td> Uptrend.<br>The lower shadow is not less than 2 and no more than 3 times larger than the body.<br>There is no upper shadow, or it is very short (no more than 10% of the candlestick range).<br>The color of the body in the long game is not important, with the short - the black hanging man is much stronger than the white one.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Inverted Hammer the bull model 
      if(cand1.trend==DOWN && // check the trend direction
         cand1.type==CAND_INVERT_HAMMER) // check the "inverted hammer"
        {
         comment=_language?"Inverted hammer";
         DrawSignal(prefix+"Inverted Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      // Handing Man the bear model 
      if(cand1.trend==UPPER && // check the trend direction
         cand1.type==CAND_HAMMER) // check "hammer"
        {
         comment=_language?"Hanging Man";
         DrawSignal(prefix+"Hanging Man the bear model"+string(objcount++),cand1,InpColorBear,comment);
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Hammer</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Hammer.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Hammer__1.gif" alt=""></td><td> Downward trend.<br>The lower shadow is not less than 2 and no more than 3 times larger than the body.<br>There is no upper shadow, or it is very short (no more than 10% of the candlestick range).<br>The color of the body in the long game is not important, with the short - white hammer is much stronger than the black one.<br>Confirmation is suggested.</td></tr><tr><td><strong>Shooting Star</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Shooting_Star.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Shooting_Star_FX.gif" alt=""></td><td> Uptrend.<br>The upper shadow is not less than 3 times is larger than the body.<br>There is no lower shadow, or it is very short (no more than 10% of the candlestick range).<br>The price gap between the star and the previous candlestick.<br> Forex: the Close price of the previous candlestick and Open of the Star are equal.<br>The body color does not matter.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Hammer the bull model 
      if(cand1.trend==DOWN && //check the trend direction
         cand1.type==CAND_HAMMER) // check the hammer
        {
         comment=_language?"Hammer";
         DrawSignal(prefix+"Hammer the bull model"+string(objcount++),cand1,InpColorBull,comment);
        }
      //------      
      // Shooting Star the bear model 
      if(cand1.trend==UPPER && cand2.trend==UPPER && //check the trend direction
         cand2.type==CAND_INVERT_HAMMER) // check the inverted hammer
        {
         comment=_language?"Shooting Star";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open) // close 1 less equal open 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // 2 candlestick detached from 1
              {
               DrawSignal(prefix+"Shooting Star the bear model"+string(objcount++),cand2,InpColorBear,comment);
              }
           }
        }
```

I would like to draw your attention to the fact that in the case of "Shooting Star" we actually need two candlesticks, because under the terms of recognizing the body of the previous day is taken into account.

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Belt Hold</strong><br><strong>(bullish)</strong><br><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Belt_Hold_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br>Opening of a candlestick with a large gap in the direction of the trend.<br> White candlestick — «marubozu» «long».<br> The body of the white candlestick is much larger than the body of the previous candlestick.<br>Confirmation is suggested.</td></tr><tr><td><strong>Belt Hold</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Belt_Hold_Bear.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br>Opening of a candlestick with a large gap in the direction of the trend.<br>Black candlestick — «marubozu» «long».<br> The body of the black candlestick is much larger than the body of the previous candlestick.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Belt Hold the bull model 
      if(cand2.trend==DOWN && cand2.bull && !cand1.bull &&// check the trend direction and direction of the candlestick
         cand2.type==CAND_MARIBOZU_LONG && // check the "long" marubozu
         cand1.bodysize<cand2.bodysize && cand2.close<=cand1.close) // the body of the first candlestick is smaller than the body of the second one, close of the second one is below the close of the first
        {
         comment=_language?"Belt Hold";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Belt Hold the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Belt Hold the bear model
      if(cand2.trend==UPPER && !cand2.bull && cand1.bull && // check the trend direction and direction of the candlestick
         cand2.type==CAND_MARIBOZU_LONG && // check the "long" marubozu
         cand1.bodysize<cand2.bodysize && cand2.close>=cand1.close) // the body of the first candlestick is smaller than the body of the second one, close of the second one is above the close of the first
        {
         comment=_language?"Belt Hold";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Belt Hold the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }
```

Like in the case with the "Shooting Star", two candlesticks are used, because the body of the previous day is taken into account for pattern recognition.

**3.1.2. Patterns consisting of two candlesticks**

Add another candle:

```
/* Checking patterns with two candlesticks */
      CANDLE_STRUCTURE cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-1],InpPeriodSMA,cand1))
         continue;
```

and recognize patterns:\ <br>

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Engulfing</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Engulfing_Bull.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Engulfing_Bull_FX.gif" alt=""></td><td> Downward trend.<br>The body of the second candlestick completely covers the body of the first one.<br> Forex: Close of the black candlestick and Open of the white one match.<br>Shadows do not matter.<br>Confirmation is suggested.</td></tr><tr><td><strong>Engulfing</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Engulfing_Bear.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Engulfing_Bear_FX.gif" alt=""></td><td> Uptrend.<br>The body of the second candlestick completely covers the body of the first one.<br> Forex: Close of the white candlestick and Open of the black one match.<br>Shadows do not matter.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Engulfing the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // check the trend direction and direction of the candlestick
         cand1.bodysize<cand2.bodysize) // the body of the second candlestick is larger than that of the first
        {
         comment=_language?"Engulfing";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Engulfing the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // check the trend direction and direction of the candlestick
         cand1.bodysize<cand2.bodysize) // the body of the second candlestick is larger than that of the first
        {
         comment=_language?"Engulfing";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) //the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // close 1 less equal to open 2 or open 1 larger equal to close 2
              {
               DrawSignal(prefix+"Engulfing the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Harami Cross (Bull)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Harami_Cross_Bull.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Harami_Cross_Bull_FX.gif" alt=""></td><td> Downward trend.<br>The first candlestick of the pattern is long black.<br>Doji is within the range of the first candlestick, including the shades.<br> Forex: doji is on the level of Close of the first candlestick. If Doji shadows are short, the pattern should be considered a Doji Star for forex.<br>Confirmation is suggested.</td></tr><tr><td><strong>Harami Cross</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Harami_Cross_Bear.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Harami_Cross_Bear_FX.gif" alt=""></td><td> Uptrend.<br>The first candlestick of the pattern is long white.<br>Doji is within the range of the first candlestick, including the shades.<br> Forex: doji is on the level of Close of the first candlestick. If Doji shadows are short, the pattern should be considered a Doji Star for forex.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Harami Cross the bull model
      if(cand1.trend==DOWN && !cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking the "long" first candlestick and doji
        {
         comment=_language?""Harami Cross";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami Cross the bear model
      if(cand1.trend==UPPER && cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) //  checking the "long" candlestick and doji
        {
         comment=_language?"Harami Cross";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) //  doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //  doji inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami Cross the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Harami</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Harami_Bull.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Harami_Bull_FX.gif" alt=""></td><td> Downward trend.<br> The body of the first "long" candlestick" completely engulfs the body of the second one.<br>Shadows do not matter.<br>Forex: Close of the black candlestick and Open of white match.<br>Confirmation is suggested.</td></tr><tr><td><strong>Harami</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Harami_Bear.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Harami_Bear_FX.gif" alt=""></td><td> Uptrend.<br> The body of the first "long" candlestick" completely engulfs the body of the second one.<br>Shadows do not matter.<br>Forex: Close of the white candlestick and Open of black match.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Harami the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull &&// check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long"first candlestick
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // the second candlestick is not doji and the body of the first is larger than the body of the second
        {
         comment=_language?"Harami";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // body of the second candlestick is inside the body of the first
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // body of the second candlestick is inside the body of the first
              {
               DrawSignal(prefix+"Harami the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
              }
           }
        }
      // Harami the bear model
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull &&// check the trend direction and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" first candlestick
          cand2.type!=CAND_DOJI && cand1.bodysize>cand2.bodysize) // the second candlestick is not doji and body of the first candlestick is larger than that of the second
        {
         comment=_language?"Harami";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.close>=cand2.close) // doji is inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) //doji is inside the body of the first candlestick
              {
               DrawSignal(prefix+"Harami the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Doji Star</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Star_doji_Bull.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Star_doji_Bull_FX.gif" alt=""></td><td> Downward trend.<br> The first candlestick of the pattern is long black.<br> The second session - doji with a break in the trend direction.<br>Forex: no break.<br>Shadows of doji are short.<br>Confirmation is suggested.</td></tr><tr><td><strong>Doji Star</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Star_doji_Bear.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Star_doji_Bear_FX.gif" alt=""></td><td> Uptrend.<br>The first candlestick of the pattern is long white.<br> The second session - doji with a break in the trend direction.<br>Forex: no break.<br>Shadows of doji are short.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Doji Star the bull model 
      if(cand1.trend==DOWN && !cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking 1 "long" candlestick and 2 doji
        {
         comment=_language?"Doji Star";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open) // open of doji is below or equal to close of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close) // the body of doji is alienated from the body of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);

              }
           }
        }
      // Doji Star the bear model 
      if(cand1.trend==UPPER && cand1.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand2.type==CAND_DOJI) // checking 1 "long" candlestick and 2 doji
        {
         comment=_language?"Doji Star";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open) // // open of doji is above or equal to close of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close) // // the body of doji is alienated from the body of the first candlestick
              {
               DrawSignal(prefix+"Doji Star the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);

              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Piercing Pattern</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Gleam_in_clouds.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Gleam_in_clouds_FX.gif" alt=""></td><td> Downward trend.<br> Both candlesticks are long.<br>Open of the white candlestick is below Low of the black.<br> Forex: Close of the black candlestick and Open of white are equal.<br>The white candlestick is closed inside the black one and covers more than 50% of the body. (For stock markets: unlike Dark-cloud cover, this requirement has no exceptions.)<br>Confirmation is not required for the classical model, is required for Forex.</td></tr><tr><td><strong>Dark Cloud Cover (Bear)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Veil_from_dark_clouds.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Veil_from_dark_clouds_FX.gif" alt=""></td><td> Uptrend.<br> Both candlesticks are long.<br> Open of the black candlestick is above High of the white candlestick.<br> Forex: Close of the white candlestick and Open of black are equal.<br>The black candle closes inside white and covers more than 50% of the body.<br>Confirmation is not required for the classical model, is required for Forex.</td></tr></tbody></table>

```
            //------      
            // Piercing line the bull model 
            if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.trend==DOWN  &&  cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
               cand2.close>(cand1.close+cand1.open)/2)// close of the second is above the middle of the first
              {
               comment=_language?"Piercing Line";
               if(_forex)// if forex
                 {
                  if(cand1.close>=cand2.open && cand2.close<=cand1.open)
                    {
                     DrawSignal(prefix+"Gleam in clouds"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
               else
                 {
                  if(cand2.open<cand1.low && cand2.close<=cand1.open) // open of the second candlestick is below LOW of the first, 
                    {
                     DrawSignal(prefix+"Piercing Line"+string(objcount++),cand1,cand2,InpColorBull,comment);
                    }
                 }
              }
            // Dark Cloud Cover the bear model 
            if(cand1.trend==UPPER  &&  cand1.bull  &&  cand2.trend==UPPER && !cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
               cand2.close<(cand1.close+cand1.open)/2)// close 2 is below the middle of the body of 1
              {
               comment=_language?"Dark Cloud Cover";
               if(_forex)// if forex
                 {
                  if(cand1.close<=cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
               else
                 {
                  if(cand1.high<cand2.open && cand2.close>=cand1.open)
                    {
                     DrawSignal(prefix+"Dark Cloud Cover"+string(objcount++),cand1,cand2,InpColorBear,comment);
                     
                    }
                 }
              }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Meeting Lines</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Meeting_Lines_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first candlestick of the pattern is long black.<br> Open of the white candlestick is with a large gap and is below the Low of the black candlestick.<br> Close prices of both candlesticks are the same.<br>Confirmation is suggested.</td></tr><tr><td><strong>Meeting Lines</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Meeting_Lines_Bear.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br>The first candlestick of the pattern is long white.<br> Open of the black candlestick is with a large gap and is above the High of the white candlestick.<br> Close prices of both candlesticks are the same.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      // Meeting Lines the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close==cand2.close && cand1.low>cand2.open) // close prices are equal, size of the first one is less than of the second one, open of the second is below Low of the first
        {
         comment=_language?"Meeting Lines";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Meeting Lines the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Meeting Lines the bear model 
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close==cand2.close && cand1.high<cand2.open) // // close prices are equal, size of first is less than of second, open of the second is above High of the first
        {
         comment=_language?"Meeting Lines";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Meeting Lines the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Matching Low</strong><br><strong>(bullish)</strong><br><br></td><td></td><td><img src="https://c.mql5.com/2/1/Matching_Low_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first candlestick of the pattern is long black and the second is black.<br> Open of the second candlestick is inside the body of the first one.<br>Close prices of both prices are the same.<br>there are no lower shadows or they are very short.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Matching Low the bull model 
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&
         cand1.close==cand2.close && cand1.bodysize>cand2.bodysize) // close prices are equal, size of the first one is larger than of the second
        {
         comment=_language?"Matching Low";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Matching Low the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Homing Pigeon&#x3C;br1(bullish)</strong><br>Bullish Homing Pigeon<br></td><td></td><td><img src="https://c.mql5.com/2/1/Homing_Pigeon_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first candlestick of the pattern is long black and the second is black.<br> The body of second candlestick is inside the body of the first one.<br>there are no lower shadows or they are very short.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Homing Pigeon the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && !cand2.bull && // check the trend direction and the candlestick direction
        (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" candlestick
         cand1.close<cand2.close && cand1.open>cand2.open) // body of the second is inside that of the first candlestick
        {
         comment=_language?"Homing Pigeon";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Homing Pigeon the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);   
           }
        }
```

&#x20;**3.1.3. Patterns consisting of three candlesticks**

```
/* Checking patterns with three candlesticks */
      CANDLE_STRUCTURE cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-2],InpPeriodSMA,cand1))
         continue;
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Abandoned Baby</strong><br><strong>(bullish)</strong><br><br></td><td><p> </p><h4></h4></td><td><img src="https://c.mql5.com/2/1/Abandoned_Baby_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented<br></td><td> This is a rare but important reversal pattern.<br>Downward trend.<br> The first candlestick of the pattern is long black.<br> The second candlestick is doji with a gap, and the gap is not only between the candlestick bodies, but also between shadows.<br>The third candlestick is "long" white candlestick with the same gap between the shadows and Close inside the body of the first candlestick.</td></tr><tr><td> <strong>Abandoned Baby</strong><br><strong>(bearish)</strong><br><br></td><td><p> </p><h4></h4></td><td> <img src="https://c.mql5.com/2/1/Abandoned_Baby_Bear.gif" alt=""></td><td>The pattern<br>is not<br>implemented<br></td><td> This is a rare but important reversal pattern.<br>Uptrend.<br> The first candlestick of the pattern is long white.<br> The second candlestick is doji with a gap, and the gap is not only between the candlestick bodies, but also between shadows.<br>The third candlestick is "long" black candlestick with the same gap between the shadows and Close inside the body of the first candlestick.</td></tr></tbody></table>

```
      //------      
      // The Abandoned Baby, the bullish model
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check direction of trend and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // check of "long" candlestick
         cand2.type==CAND_DOJI && // check if the second candlestick is Doji
         cand3.close<cand1.open && cand3.close>cand1.close) // the third one is closed inside of body of the first one
        {
         comment=_language?"Abandoned Baby (Bull)":"Abandoned Baby";
         if(!_forex)// if it's not forex
           {
            if(cand1.low>cand2.high && cand3.low>cand2.high) // gap between candlesticks
              {
               DrawSignal(prefix+"Abandoned Baby the bull model"+string(objcount++),cand1,cand1,cand3,InpColorBull,comment);
              }
           }
        }
      // The Abandoned Baby, the bearish model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // check direction of trend and direction of candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // check of "long" candlestick
         cand2.type==CAND_DOJI && // check if the second candlestick is Doji
         cand3.close>cand1.open && cand3.close<cand1.close) // // the third one is closed inside of body of the second one
        {
         comment=_language?"Abandoned Baby (Bear)":"Abandoned Baby";
         if(!_forex)// if it's not forex
           {
            if(cand1.high<cand2.low && cand3.high<cand2.low) // gap between candlesticks
              {
               DrawSignal(prefix+"Abandoned Baby the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Morning Star</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Morning_star.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Morning_star_FX.gif" alt=""></td><td> Downward trend.<br> The first and the third sessions are "long" candlesticks.<br>Shadows of the stars are short, the color does not matter.<br>Separation of the star from the Close of the first candlestick.<br>Forex: Close of the first candlestick and Open of the star are equal.<br>The third candlestick is closed inside the body of the first one.<br></td></tr><tr><td> <strong>Evening Star</strong><br><strong>(bearish)</strong><br><br></td><td><p> </p><h4></h4></td><td><p> </p><p><img src="https://c.mql5.com/2/1/Evening_star.gif" alt="" data-size="original"></p></td><td><p> </p><p><img src="https://c.mql5.com/2/1/Evening_star_FX.gif" alt="" data-size="original"></p></td><td> Uptrend.<br> The first and the third sessions are "long" candlesticks.<br>Shadows of the stars are short, the color does not matter.<br>Separation of the star from the Close of the first candlestick.<br>Forex: Close of the first candlestick and Open of the star are equal.<br>The third candlestick is closed inside the body of the first one.<br></td></tr></tbody></table>

```
      // Morning star the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_SHORT && // checking "short"
         cand3.close>cand1.close && cand3.close<cand1.open) // the third candlestick is closed inside the body of the first one
        {
         comment=_language?"Morning star";
         if(_forex)// if forex
           {
            if(cand2.open<=cand1.close) // open of the second candlestick is below or equal to close of the first one
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // another market
           {
            if(cand2.open<cand1.close && cand2.close<cand1.close) // separation of the second candlestick from the first one
              {
               DrawSignal(prefix+"Morning star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening star the bear model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_SHORT && // checking "short"
         cand3.close<cand1.close && cand3.close>cand1.open) // the third candlestick is closed inside the body of the first one
        {
         comment=_language?"Evening star";
         if(_forex)// if forex
           {
            if(cand2.open>=cand1.close) // open of the second is above or equal to close of the first one
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // another market
           {
            if(cand2.open>cand1.close && cand2.close>cand1.close) //  separation of the second candlestick from the first one
              {
               DrawSignal(prefix+"Evening star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Morning Doji Star</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Star_doji_the_morning.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Star_doji_the_morning_FX.gif" alt=""></td><td> Downward trend.<br> The first candlestick of the pattern is long black.<br> The second session - doji with a break in the trend direction.<br>Forex: no break.<br>Shadows of doji are short.<br>The third candlestick is closed inside the body of the first one.<br></td></tr><tr><td><strong>Evening Doji Star</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Star_doji_the_evening.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Star_doji_the_evening_FX.gif" alt=""></td><td> Uptrend.<br>The first candlestick of the pattern is long white.<br> The second session - doji with a break in the trend direction.<br>Forex: no break.<br>Shadows of doji are short.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Morning Doji Star the bull model 
      if(cand1.trend==DOWN && !cand1.bull && cand3.trend==DOWN && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_DOJI && // checking "doji"
         cand3.close>cand1.close && cand3.close<cand1.open) // third cand. is closed inside body of first
        {
         comment=_language?"Morning Doji Star";
         if(_forex)// if forex
           {
            if(cand2.open<=cand1.close) // open of doji is below or equal to close of the first
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else // another market
           {
            if(cand2.open<cand1.close) // separation of doji from the first
              {
               DrawSignal(prefix+"Morning Doji Star the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Evening Doji Star the bear model
      if(cand1.trend==UPPER && cand1.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand2.type==CAND_DOJI && // checking "doji"
         cand3.close<cand1.close && cand3.close>cand1.open) // third cand. is closed inside body of first
        {
         comment=_language?"Evening Doji Star";
         if(_forex)// if forex
           {
            if(cand2.open>=cand1.close) // open of doji is above or equal to close of the first
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else // another market
           {
            if(cand2.open>cand1.close) // separation of doji from the first
               // check close 2 and open 3
              {
               DrawSignal(prefix+"Evening Doji Star the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Bearish Upside Gap Two Crows</strong><br><br></td><td><strong>Sell</strong></td><td><br><img src="https://c.mql5.com/2/1/Upside_Gap_Two_Crows.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br>The first candlestick is "long" white.<br>A gap between white and black candlesticks.<br>The third candlestick opens higher than the second and engulfs it.<br>Confirmation is suggested.<br> The meaning of the pattern: if prices could not go up during the 4th session, we should expect prices to fall.</td></tr><tr><td><strong>Two Crows</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><br><img src="https://c.mql5.com/2/1/Two_Crows.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br>The first candlestick of the pattern is long white.<br>The gap between white and the first black candlestick.<br>The third candlestick is black and necessarily "long"; opens inside or above the second and closes within or below the white candlestick, covering the gap.<br>Confirmation is suggested.<br>If the second crow (the third candle) engulfs a white candle, the confirmation is not required.</td></tr></tbody></table>

```
      //------      
      // Upside Gap Two Crows the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close<cand2.close && cand1.close<cand3.close && // separation of the second and third from the first one
         cand2.open<cand3.open && cand2.close>cand3.close) // the third candlestick engulfs second
        {
         comment=_language?"Upside Gap Two Crows";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Upside Gap Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
      //------      
      // Two Crows the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && cand3.trend==UPPER && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&(cand3.type==CAND_LONG|| cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         cand1.close<cand2.close && // separation of the second from the first one
         cand3.open>cand2.close && // third one opens higher than close of the second
         cand3.close<cand1.close) // third one closes than close of the first
        {
         comment=_language?"Two Crows";
         if(!_forex)// if not forex
           {
            DrawSignal(prefix+"Two Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three Star in the South</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Three_Star_in_the_South.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_Star_in_the_South_FX.gif" alt=""></td><td> Downward trend.<br>The first candlestick is a long black day with a long lower shadow.<br>The second candlestick is shorter than the first, its Low is above the Low of the first candlestick.<br>The third candlestick is a small black marubozu or a star, an internal day in relation to the second session.<br>Confirmation is suggested.</td></tr><tr><td><strong>Deliberation</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Deliberation.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Deliberation_FX.gif" alt=""></td><td> Uptrend.<br>Three white candlesticks with higher close prices. The first two candlesticks are long days.<br>Open price of each candlestick is inside the body of the preceding one.<br> Forex: open/close prices of white candlesticks are the same.<br> The third candlestick opens at about the close level of the second candlestick.<br> the third candlestick is a star or a spinning top.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Three Star in the South the bull model

      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand3.type==CAND_MARIBOZU || cand3.type==CAND_SHORT) && // checking the "long" candlestick and marubozu
         cand1.bodysize>cand2.bodysize && cand1.low<cand2.low && cand3.low>cand2.low && cand3.high<cand2.high)
        {
         comment=_language?"Three Star in the South";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // another market
           {
            if(cand1.close<cand2.open && cand2.close<cand3.open) // open is inside the previous candlestick
              {
               DrawSignal(prefix+"Three Star in the South the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Deliberation the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick
         (cand3.type==CAND_SPIN_TOP || cand3.type==CAND_SHORT)) // the third candlestick is a star or spinning top
        {
         comment=_language?"Deliberation";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // another market
           {
            if(cand1.close>cand2.open && cand2.close<=cand3.open) // open is inside the previous candlestick
               // check close 2 and open 3
              {
               DrawSignal(prefix+"Deliberation the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three White Soldiers</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Three_White_Soldiers.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_White_Soldiers_FX.gif" alt=""></td><td> Downward trend.<br> Three long white candlesticks appear one after another, close prices of each of them is higher than that of the previous.<br> Open price of each soldier is inside the body of the previous candlestick.<br> Forex: Close/Open of solders are the same.<br> Upper shadows of the soldiers are short.<br>Confirmation is not required.</td></tr><tr><td><strong>Three Black Crows</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Three_Black_Crows.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br> Three long black candlesticks appear one after another, close prices of each of them is lower than that of the previous.<br> Open price of each crow is inside the body of the previous candlestick.<br> Forex: corresponds to pattern Identical three crows.<br> The lower shadows of the crows are short.<br>Confirmation is not required.</td></tr></tbody></table>

```
      //------      
      // Three White Soldiers the bull model
      if(cand1.trend==DOWN && cand1.bull && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // checking the "long" candlestick and marubozu
        {
         comment=_language?"Three White Soldiers";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else // another market
           {
            if(cand1.close>cand2.open && cand2.close>cand3.open) // open inside the previous candlestick
              {
               DrawSignal(prefix+"Three White Soldiers the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Black Crows the bear model
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick and marubozu
         cand1.close<cand2.open && cand2.close<cand3.open)
        {
         comment=_language?"Three Black Crows";
         if(!_forex) // non-forex
           {
               DrawSignal(prefix+"Three Black Crows the bear model"+string(objcount++),cand1,cand3,cand3,InpColorBear,comment);
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three Outside Up</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Three_Outside_Up.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_Outside_Up_FX.gif" alt=""></td><td> Downward trend.<br> First the pattern of Engulfing (bull) is formed: the body of the second candlestick completely covers the body of the first one.<br> Forex: Close of a black candlestick and Open of the white one are equal.<br>Shadows do not matter.<br> Then, on the third day there is a higher close.<br>Confirmation is not required: the pattern itself is a confirmation to the bull Engulfing</td></tr><tr><td><strong>Three Outside Down</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Three_Outside_Down.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_Outside_Down_FX.gif" alt=""></td><td> Uptrend.<br> First the pattern of Engulfing (bear) is formed: the body of the second candlestick completely covers the body of the first one.<br> Forex: Close of the white candlestick and Open of the first black one match.<br>Shadows do not matter.<br> Then, on the third day there is a lower close.<br>Confirmation is not required: the pattern itself is a confirmation to the bear Engulfing</td></tr></tbody></table>

```
      //------      
      // Three Outside Up the bull model
      if(cand1.trend==DOWN && !cand1.bull && cand2.trend==DOWN && cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         cand2.bodysize>cand1.bodysize && // the body of the second candlestick is larger than that of the first
         cand3.close>cand2.close) // the third day is closed higher than the second
        {
         comment=_language?"Three Outside Up";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.open<cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Outside Down the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.trend==UPPER && !cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         cand2.bodysize>cand1.bodysize && // the body of the second candlestick is larger than that of the first
         cand3.close<cand2.close) // the third day is closed lower than the second
        {
         comment=_language?"Three Outside Down";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.open>cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.open>cand2.close) // the body of the first candlestick is inside the body of the second
              {
               DrawSignal(prefix+"Three Outside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three Inside Up</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Three_Inside_Up.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_Inside_Up_FX.gif" alt=""></td><td> Downward trend.<br> In the first two sessions the Harami (bull) pattern is formed: a small white body is engulfed by a large black one.<br> Close in the third session is higher than High of the first two candlesticks.<br>Confirmation is not required: the pattern itself is a confirmation to the bull Harami.</td></tr><tr><td><strong>Three Inside Down</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Three_Inside_Down.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Three_Inside_Down_FX.gif" alt=""></td><td> Uptrend.<br> In the first two sessions the Harami (bear) pattern is formed: a small black body is engulfed by a large white one.<br> Close in the third session is lower than Low of the first two candlesticks.<br>Confirmation is not required: the pattern itself is a confirmation to the bear Harami.</td></tr></tbody></table>

```
      //------      
      // Three Inside Up the bull model
      if(cand1.trend==DOWN  &&  !cand1.bull  &&  cand2.bull && cand3.bull && //check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) &&  //checking the "long" candlestick 
         cand1.bodysize>cand2.bodysize && // the body of the first candlestick is larger than that of the second one
         cand3.close>cand1.open) // the third day is closed higher than the both first one
        {
         comment=_language?"Three Inside Up";
         if(_forex)// if forex
           {
            if(cand1.close<=cand2.open && cand1.close<=cand2.close && cand1.open>cand2.close) // the body of the second candlestick is inside the body of the first one
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
         else
           {
            if(cand1.close<cand2.open && cand1.close<cand2.close && cand1.open>cand2.close) // the body of the second candlestick is inside the body of the first one
              {
               DrawSignal(prefix+"Three Inside Up the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Inside Down the bear model
      if(cand1.trend==UPPER && cand1.bull && !cand2.bull && !cand3.bull &&//check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick 
         cand1.bodysize>cand2.bodysize && // the body of the first candlestick is larger than that of the second one
         cand3.close<cand1.open) // the third day closes lower than the both first one
        {
         comment=_language?"Three Inside Down";
         if(_forex)// if forex
           {
            if(cand1.close>=cand2.open && cand1.close>=cand2.close && cand1.open<=cand2.close) // inside the body of the first candlestick
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
         else
           {
            if(cand1.close>cand2.open && cand1.close>cand2.close && cand1.open<cand2.close) // inside the body of the first candlestick
              {
               DrawSignal(prefix+"Three Inside Down the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three Stars</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Tri_Star_Bull.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Tri_Star_Bull_FX.gif" alt=""></td><td> Downward trend.<br>The gap between the first doji and previous candlesticks is not required.<br> All the three candlesticks are doji.<br> The middle doji has a gap up or down.<br> Forex: all the three doji are on one level.<br>Confirmation is suggested.</td></tr><tr><td><strong>Three Stars</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Tri_Star_Bear.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Tri_Star_Bear_FX.gif" alt=""></td><td> Uptrend.<br>The gap between the first doji and previous candlesticks is not required.<br> All the three candlesticks are doji.<br> The middle doji has a gap up or down.<br> Forex: all the three doji are on one level.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Three Stars the bull model
      if(cand1.trend==DOWN  && // check the trend direction
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // check doji
        {
         comment=_language?"Bullish Three Stars";
         if(_forex)// if forex
           {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) // the second candlestick is on a different level
              {
               DrawSignal(prefix+"Three Stars the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
              }
           }
        }
      // Three Stars the bear model
      if(cand1.trend==UPPER && // check the trend direction
         cand1.type==CAND_DOJI && cand2.type==CAND_DOJI && cand3.type==CAND_DOJI) // check doji
        {
         comment=_language?"Bearish Three Stars";
         if(_forex)// if forex
           {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else
           {
            if(cand2.open!=cand1.close && cand2.close!=cand3.open) //  the second candlestick is on a different level
              {
               DrawSignal(prefix+"Three Stars the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Identical Three Crows</strong><br><strong>(bearish)</strong><br><br></td><td></td><td><br><img src="https://c.mql5.com/2/1/Identical_Three_Crows.gif" alt=""></td><td><br><img src="https://c.mql5.com/2/1/Identical_Three_Crows__1.gif" alt=""></td><td> Uptrend.<br> Three long black candlesticks appear one after another, close prices of each of them is lower than that of the previous.<br> The open price of each crow is approximately equal to Close of the preceding candlestick.<br> The lower shadows of the crows are short.<br>Confirmation is not required.</td></tr></tbody></table>

```
      // Identical Three Crows the bear model
      if(cand1.trend==UPPER && !cand1.bull && !cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // checking the "long" candlestick or marubozu
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG)) // checking the "long" candlestick or marubozu
        {
         comment=_language?"Identical Three Crows";
         if(_forex)// if forex
           {
            DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
         else // a different market
           {
            if(cand1.close>=cand2.open && cand2.close>=cand3.open) // open is less or equal to close of the preceding candlestick
              {
               DrawSignal(prefix+"Identical Three Crows the bear model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
              }
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Unique Three River Bottom</strong><br><strong>(bullish)</strong><br><br></td><td></td><td><br><img src="https://c.mql5.com/2/1/Unique_Three_River_Bottom.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first candlestick of the model is a long black with short shadows.<br> On the second day Harami appears, but with a black body.<br> The lower shadow of the second day gives a new Low.<br>The third day is a short white day lower than the middle day.<br>Confirmation is not necessary but desirable.</td></tr></tbody></table>

```
      // Unique Three River Bottom the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and the candlestick direction
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && cand3.type==CAND_SHORT && // check the "long" candlestick or "marubozu" third short day
         cand2.open<cand1.open && cand2.close>cand1.close && cand2.low<cand1.low && // body of the second candlestick is inside the first, Low is lower than the first
         cand3.close<cand2.close) // the third candlestick is below the second
        {
         comment=_language?"Unique Three River Bottom";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Unique Three River Bottom the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
```

**3.1.4. Patterns consisting of four candlesticks**

```
/* Checking patterns with four candlesticks */      
      CANDLE_STRUCTURE cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-3],InpPeriodSMA,cand1))
         continue; 
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Concealing Baby Swallow (bull)</strong><br><br><br></td><td></td><td><img src="https://c.mql5.com/2/1/Concealing_Baby_Swallow.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first two sessions are two long black marubozu.<br> The third session opens with a break down, but trade is conducted inside the body of the second candlestick, which leads to the formation of a long upper shadow.<br> The fourth black candlestick completely engulfs the third one, including the shadow.<br>Confirmation is not required.</td></tr></tbody></table>

```
      //------      
      // Concealing Baby Swallow the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && !cand4.bull && // check the trend direction and the candlestick direction
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && cand3.type==CAND_SHORT && // checking "marubozu"
         cand3.open<cand2.close && cand3.high>cand2.close && // third candlestick with a gap down, High is inside the 2nd candlestick
         cand4.open>cand3.high && cand4.close<cand3.low) // the fourth candlestick completely engulfs the third
        {
         comment=_language?"Concealing Baby Swallow";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Concealing Baby Swallow the bull model"+string(objcount++),cand1,cand2,cand4,InpColorBull,comment);
           }
        }
```

**3.1.5. Patterns consisting of two candlesticks**

```
/* Checking patterns with five candlesticks */
      CANDLE_STRUCTURE cand5;
      cand5=cand4;
      cand4=cand3;
      cand3=cand2;
      cand2=cand1;
      if(!RecognizeCandle(_Symbol,_Period,time[i-4],InpPeriodSMA,cand1))
         continue; 
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Breakaway</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Breakaway_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first two sessions — a "long" black candlestick and a "short" black candlestick (star) with a gap.<br> The third session is "short", can be of any color.<br> The fourth candlestick is "Short" black.<br> The fifth one is "long" white with Close inside the gap.<br>Confirmation is suggested.</td></tr><tr><td><strong>Breakaway</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><img src="https://c.mql5.com/2/1/Breakaway_Bear.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br> The first two sessions — a "long" white candlestick and a "short" white candlestick (star) with a gap.<br> The third session is a "short" candlestick, can be of any color.<br>The fourth day is "short" white.<br> The fifth one is "long" black with Close inside the gap.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Breakaway the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand4.bull && cand5.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  //checking the "long" first candlestick
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // the second is "short", separated from the first
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // third and fourth are "short"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close<cand1.close && cand5.close>cand2.open) // fifth is "long" white with close inside the gap
        {
         comment=_language?"Bullish Breakaway";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Breakaway the bull model"+string(objcount++),cand1,cand2,cand5,InpColorBull,comment);
           }
        }
      // Breakaway the bear model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand4.bull && !cand5.bull && //  check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG|| cand1.type==CAND_MARIBOZU_LONG) &&  // checking the "long" first candlestick
         cand2.type==CAND_SHORT && cand2.open<cand1.close && // the second is "short", separated from the first
         cand3.type==CAND_SHORT && cand4.type==CAND_SHORT && // third and fourth are "short"
         (cand5.type==CAND_LONG || cand5.type==CAND_MARIBOZU_LONG) && cand5.close>cand1.close && cand5.close<cand2.open) // fifth is "long" black with close inside the gap
        {
         comment=_language?"Bearish Breakaway";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Breakaway the bear model"+string(objcount++),cand1,cand2,cand5,InpColorBear,comment);
           }
        }
```

**3.2. CONTINUATION PATTERNS**

Continuation patterns are the time when the market is resting.

Whatever the model, you need to make a decision about your current position, even if it is to change nothing.

**3.2.1. Patterns consisting of a single candlestick**

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Kicking</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Kicking_Bull.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> The long black "marubozu" is followed by the long white "marubozu".<br> There is a gap between the bodies.<br>Confirmation is not required.</td></tr><tr><td><strong>Kicking</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><img src="https://c.mql5.com/2/1/Kicking_Bear.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> The long white "marubozu" is followed by the long black "marubozu".<br> There is a gap between the bodies.<br>Confirmation is not required.</td></tr></tbody></table>

```
      //------      
      // Kicking the bull model
      if(!cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // two marubozu
         cand1.open<cand2.open) // a gap between them
        {
         comment=_language?"Bullish Kicking";
         if(!_forex)// if non-forex
           {
            DrawSignal(prefix+"Kicking the bull model"+string(objcount++),cand1,cand2,InpColorBull,comment);
           }
        }
      // Kicking the bear model
      if(cand1.bull && !cand2.bull && // check the trend direction and direction of the candlestick
         cand1.type==CAND_MARIBOZU_LONG && cand2.type==CAND_MARIBOZU_LONG && // two marubozu
         cand1.open>cand2.open) // a gap between them
        {
         comment=_language?"Bearish Kicking";
         if(!_forex)// if non-forex
           {
            DrawSignal(prefix+"Kicking the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
           }
        }
```

**3.2.2. Patterns consisting of two candlesticks**

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td> <strong>Bearish On Neck Line</strong><br><br></td><td><p> </p><p><strong>Sell</strong></p></td><td> <img src="https://c.mql5.com/2/1/On_Neck_Line.gif" alt=""></td><td> The pattern<br>is not<br>implemented</td><td> Downward trend.<br>The first candlestick of the pattern is long black.<br> The white candlestick open below Low of the black one and closes at about Low of the black candlestick.<br> The white candlestick - not necessarily a long day.<br>Confirmation is suggested.</td></tr><tr><td><strong>In Neck Line</strong><br><strong>(bearish)</strong><br><br></td><td></td><td><img src="https://c.mql5.com/2/1/In_Neck_Line.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br>The first candlestick of the pattern is long black.<br> The white candlestick opens below Low of the black one and closes a little higher than Close of the black candlestick.<br> The white candlestick - not necessarily a long day.<br> The body of the white candlestick is smaller than the body of the black candlestick.<br> The upper shadow of the white candlestick is very small.<br>Confirmation is suggested.</td></tr><tr><td><strong>Thrusting Line</strong><br><strong>(bearish)</strong><br><br></td><td><h4></h4></td><td><br><img src="https://c.mql5.com/2/1/Thrusting_Line.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br>The first candlestick of the pattern is long black.<br> The white candlestick opens below Low of the black one and closes a higher than Close of the black candlestick, but the close price is still below the middle of the black candlestick.<br> The white candlestick - not necessarily a long day.<br>Confirmation is suggested.</td></tr></tbody></table>

These three models have much in common, so their implementation is somewhat different, please pay attention to it.

```
      //------ Check On Neck patterns
      if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG)) // the first candlestick is "long"
        {
         // On Neck Line the bear model
         if(cand2.open<cand1.low cand2.close<=cand1.low && cand2.close>(cand1.low-cand1.bodysize*0.05)) // the second candlestick opens below 1st and closes at Low of the first
           {
            comment=_language?"On Neck Line Bear";
            if(!_forex)// if not forex
              {
               DrawSignal(prefix+"On Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
              }
           }
         else
           {
            // In Neck Line the bear model
            if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
               (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // the first candlestick is "long"
               cand1.bodysize>cand2.bodysize && // body of 2nd candlestick is smaller than that of the 1st one
               cand2.open<cand1.low && cand2.close>=cand1.close && cand2.close<(cand1.close+cand1.bodysize*0.05)) // the second candlestick opens lower than first and closes a little higher than Close of the first
              {
               comment=_language?"In Neck Line Bear";
               if(!_forex)// если не форекс
                 {
                  DrawSignal(prefix+"In Neck Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                 }
              }
            else
              {
               // Thrusting Line the bear model
               if(cand1.trend==DOWN && !cand1.bull && cand2.bull && // check the trend direction and direction of the candlestick
                  (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && // the first candlestick is "long"
                  cand2.open<cand1.low && cand2.close>cand1.close && cand2.close<(cand1.open+cand1.close)/2) //  the second candlestick opens lower than first and closes a higher than Close of the first but lower than middle
                 {
                  comment=_language?"Thrusting Line Bea";
                  if(!_forex)// if non-forex
                    {
                     DrawSignal(prefix+"Thrusting Line the bear model"+string(objcount++),cand1,cand2,InpColorBear,comment);
                    }
                 }
              }
           }
        }
```

**3.2.3. Patterns consisting of three candlesticks**

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Upside Gap Three Methods</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Upside_Gap_Three_Methods.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br> The first two candlesticks are two "long" white candlesticks with a gap.<br> The third candlestick opens inside the body of the second and fills in the gap.<br>Confirmation is suggested.</td></tr><tr><td><strong>Upside Gap Three Methods</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><br><img src="https://c.mql5.com/2/1/Downside_Gap_Three_Methods.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br> The first two candlesticks are two "long" black candlesticks with a gap.<br> The third candlestick opens inside the body of the second and fills in the gap.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Upside Gap Three Methods the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // the first two candlesticks are "long"
         cand2.open>cand1.close && // a gap between the first and the second
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand1.close) // the third candlestick opens inside the body of the second and fills in the gap
        {
         comment=_language?"Upside Gap Three Methods";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Upside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Gap Three Methods the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // the first two candlesticks are "long"
         cand2.open<cand1.close && // a gap between the first and the second
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand1.close) //the third candlestick opens inside the body of the second and fills in the gap
        {
         comment=_language?"Downside Gap Three Methods";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Downside Gap Three Methods the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
```

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Upside Tasuki Gap</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><br><img src="https://c.mql5.com/2/1/Upside_Tasuki_Gap.gif" alt="">&#x3C;</td><td>The pattern<br>is not<br>implemented</td><td> Uptrend.<br>The gap between two neighboring white candles. White candlesticks are not necessarily "long".<br>The third session opens within the body of the second candlestick.<br>The third session closes inside the gap, but the gap is partially unfilled.<br>Confirmation is suggested.</td></tr><tr><td><strong>Downside Tasuki Gap</strong><br><strong>(bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Downside_Tasuki_Gap.gif" alt=""></td><td>The pattern<br>is not<br>implemented</td><td> Downward trend.<br>The gap between two neighboring black candles. Black candlesticks are not necessarily "long".<br>The third session opens within the body of the second candlestick.<br>The third session closes inside the gap, but the gap is partially unfilled.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Upside Tasuki Gap the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && !cand3.bull && // check the trend direction and direction of the candlestick
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // the first two candlesticks are not doji
         cand2.open>cand1.close && // a gap between the first and the second
         cand3.open>cand2.open && cand3.open<cand2.close && cand3.close<cand2.open && cand3.close>cand1.close) // 3rd candlestick opens inside 2nd and closes inside the gap
        {
         comment=_language?"Upside Tasuki Gap";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Upside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBull,comment);
           }
        }
      //------      
      // Downside Tasuki Gap the bull model
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && cand3.bull && // check the trend direction and direction of the candlestick
         cand1.type!=CAND_DOJI && cand2.type!=CAND_DOJI && // the first two candlesticks are not doji
         cand2.open<cand1.close && // a gap between the first and the second
         cand3.open<cand2.open && cand3.open>cand2.close && cand3.close>cand2.open && cand3.close<cand1.close) // 3rd candlestick opens inside 2nd and closes inside the gap
        {
         comment=_language?"Downside Tasuki Gap";
         if(!_forex)// non-forex
           {
            DrawSignal(prefix+"Downside Tasuki Gap the bull model"+string(objcount++),cand1,cand2,cand3,InpColorBear,comment);
           }
        }
```

**3.2.4. Patterns consisting of four candlesticks**

<table><thead><tr><th width="150">Name of the Pattern</th><th width="150">Order</th><th width="150">Classical pattern</th><th width="150">Forex</th><th>Pattern recognition</th></tr></thead><tbody><tr><td><strong>Three-Line Strike</strong><br><strong>(bullish)</strong><br><br></td><td><strong>Buy</strong></td><td><img src="https://c.mql5.com/2/1/Three-line_strike_Bull.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Three-line_strike_Bull_FX.gif" alt=""></td><td> The bullish trend is continuing with three candlesticks, similar to the Three white soldiers pattern: long white candlesticks with short shadows.<br> Forex: Open/close prices of white candlesticks are the same.<br> The fourth candlestick opens with a gap up and closes below open of the first white candlestick.<br> Forex: close of 3rd and open of 4tha candlesticks are equal.<br>Confirmation is suggested.</td></tr><tr><td><strong>Three-Line Strike (bearish)</strong><br><br></td><td><strong>Sell</strong></td><td><img src="https://c.mql5.com/2/1/Three-line_strike_Bear.gif" alt=""></td><td><img src="https://c.mql5.com/2/1/Three-line_strike_Bear_FX.gif" alt=""></td><td> The bearish trend is continuing with three candlesticks, similar to the Three black crows pattern: long black candlesticks with short shadows.<br> Forex: Open/close prices of black candlesticks are the same (similar to Identical three crows).<br> The fourth candlestick opens with a gap down and closes above open of the first black candlestick.<br> Forex: close of 3rd and open of 4tha candlesticks are equal.<br>Confirmation is suggested.</td></tr></tbody></table>

```
      //------      
      // Three-line strike the bull model
      if(cand1.trend==UPPER && cand1.bull && cand2.bull && cand3.bull && !cand4.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && // check the "long: candlestick or "maruozu"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         cand2.close>cand1.close && cand3.close>cand2.close && cand4.close<cand1.open) // close of 2nd is higher than 1st, that of 3rd is higher than 2nd, the fourth candlestick closes lower than the 1st
        {
         comment=_language?"Three-line strike";
         if(_forex)// if forex
           {
            if(cand4.open>=cand3.close) // 4th opens higher than the 3rd
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
         else // a different market
           {
            if(cand4.open>cand3.close) // 4th opens higher than th 3rd
              {
               DrawSignal(prefix+"Three-line strike the bull model"+string(objcount++),cand1,cand3,cand4,InpColorBull,comment);
              }
           }
        }
      //------      
      // Three-line strike the bear model 
      if(cand1.trend==DOWN && !cand1.bull && !cand2.bull && !cand3.bull && cand4.bull && // check the trend direction and direction of the candlestick
         (cand1.type==CAND_LONG || cand1.type==CAND_MARIBOZU_LONG) && (cand2.type==CAND_LONG || cand2.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         (cand3.type==CAND_LONG || cand3.type==CAND_MARIBOZU_LONG) && //  check the "long: candlestick or "maruozu"
         cand2.close<cand1.close && cand3.close<cand2.close && cand4.close>cand1.open) // close of 2nd is lower than 1st, close of 3rd is lower than 2nd, the fourth candlestick closes higher than 1st
        {
         comment=_language?"Three-line strike";
         if(_forex)// if forex
           {
            if(cand4.open<=cand3.close) // the fourth opens lower than or equal to the third
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
         else // a different market
           {
            if(cand4.open<cand3.close) // the fourth opens lower than 3rd
              {
               DrawSignal(prefix+"Three-line strike the bear model"+string(objcount++),cand1,cand3,cand4,InpColorBear,comment);
              }
           }
        }
```

#### **4. The implementation of the indicator**<br>

Let's select required input parameters.

![Input parameters of the Candlestick Patterns indicator](https://c.mql5.com/2/1/Input__1.PNG)<br>

Figure 3. Input parameters of the Candlestick Patterns indicator

The first parameter is the "Averaging period" - we need it for determining trend direction, defining "long" and "short" candlesticks.

The next parameter is "Enable signal" - responsible for enabling/disabling the signal. The signal notifies that anew pattern has appeared.

![Signals generated by the Candlestick Patterns indicator](https://c.mql5.com/2/1/Alert__1.PNG)<br>

Figure 4. Signals generated by the Candlestick Patterns indicator

Parameter "Number of bars for calculation" is designed to facilitate the work of the indicator. If its value is less or equal to 0 candlestick patterns are searched through the entire available history, otherwise a set number of bars is used for search, which considerably facilitates the work of the indicator.

I think everything is clear with colors...

"Enable comments" means enable/disable names of candlestick patterns.

"Font size" sets the font size for comments.

The implementation of the indicator is very simple.

Expect the appearance of a new bar:

```
//--- Wait for a new bar
   if(rates_total==prev_calculated)
     {
      return(rates_total);
     }
```

Then we calculate the initial value of the counter to start the cycle.

```
   int limit;
   if(prev_calculated==0)
     {
      if(InpCountBars<=0 || InpCountBars>=rates_total)
         limit=InpPeriodSMA*2;
      else
         limit=rates_total-InpCountBars;
     }
   else
      limit=prev_calculated-1;
```

In the loop we check the combinations of candlesticks and display them as it shown in Fig. 5:

* Combination with one candlestick: an arrow with the pattern name above or below it.
* Combination with two candlesticks: a thin rectangle with the pattern name above or below the first candlestick.
* Combination with three or more candlesticks: a thick rectangle with the pattern name above or below the last candlestick.

![Example of how the Candlestick Patterns indicator works](https://c.mql5.com/2/1/EURUSDDaily__1.png)<br>

Figure 5. Example of how the Candlestick Patterns indicator works

Please note that due to the possibility of [function overloading](https://www.mql5.com/en/docs/basis/function/functionoverload), the output of signs of different patterns is done via the functions with the same name DrawSignal(), but with different numbers of parameters.

```
void DrawSignal(string objname,CANDLE_STRUCTURE &cand,color Col,string comment)
```

```
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,color Col,string comment)
```

```
void DrawSignal(string objname,CANDLE_STRUCTURE &cand1,CANDLE_STRUCTURE &cand2,CANDLE_STRUCTURE &cand3,color Col,string comment)
```

The full text of the indicator is in the file Candlestick\_Patterns.mq5 attached to this article.

#### **Conclusion**<br>

In this article we have reviewed most of the candlestick patterns, methods of detecting them and provided examples of how to implement them in the MQL5 programming language. The attachment to the article contains two indicators and an include file. To use them, place indicators in the \Indicators folder and include file in \Include folder, then compile them.

I hope that the analysis of candlestick patterns will help you improve the results of your work.

Looking ahead, I'd like to add that filtered out candlesticks give better results than most of technical indicators, but we will consider this subject in the following article, in which I am going to create a trading system and an Expert Advisor trading by the candlestick patterns.


# How "Advanced" mode work ?

A normal (Basic) indicator alert is **one list of conditions** plus one threshold: *trigger when at least x of y conditions reach target*. That is enough for "RSI over 70 **and** price over EMA200", but it cannot say:

> trend must be up **AND** (RSI crosses 70 **OR** MACD crosses 0)

**Advanced** mode can. It lets you put your conditions into several **groups** and then combine the groups with **All / Any / Custom K of N** logic — and a group can contain other groups, so you can nest.

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FZjWsyOp43khRTJIOCsfc%2FScreenshot_20260921_085946_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=e5692366-7e35-4151-ad0a-9cdfcde5ecdf" alt=""><figcaption></figcaption></figure>

*Advanced mode starts as a single group — exactly like the Basic screen — until you tap "Add Group".*

### Where to find it

Open **Add Alert** for an indicator alert. At the top of the screen there are two tabs:

```
Basic        Advanced
```

* The tabs appear only when you **create** a new alert, and only if Advanced mode is available for your app. If you do not see them, your version has it turned off — nothing is wrong with your settings.
* When you **edit** an alert that already exists, the tabs are **not** shown. An alert keeps the mode it was created with; it cannot be converted later.
* Switching tabs after you started filling in a tab asks: *"Switching tabs will reset your progress on this tab. Continue?"* — **Continue** clears that tab and opens the other one empty. Nothing is converted between the two tabs.

### The two kinds of card

Advanced mode is built from cards. There are only two:

#### 1. Group card — the same screen you already know

A group card is a small copy of the Basic screen:

| Part                                                    | What it does                                                                                            |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| **Group name (optional)**                               | Your own name for the group, e.g. `Trend`. Used in the summary line instead of "Group 1".               |
| *Trigger when at least **x/y** conditions reach target* | The threshold **of this group only**.                                                                   |
| **− / +**                                               | Changes x, between 1 and the number of conditions in the group.                                         |
| condition rows                                          | Same rows as Basic: **Must Meet**, timeframe and **Data Use** when the alert uses MTF, edit and delete. |
| **Add Condition**                                       | Opens the usual condition screen and adds the condition **to this group**.                              |
| **🗑**                                                  | Deletes this group (not shown on the first, outermost card).                                            |

Everything inside a group works exactly as in Basic mode, including **Must Meet** — see [How "must meet" & "number conditions reach target" work ?](/indicator-alert-feature/how-must-meet-and-number-conditions-reach-target-work).

#### 2. Logic card — how the groups are combined

A logic card has no conditions of its own. It has a row:

```
Match:  [ All ]  [ Any ]  [ Custom K of N… ]
```

| Choice             | Meaning                                                                                                 |
| ------------------ | ------------------------------------------------------------------------------------------------------- |
| **All**            | Every group inside this card must be true (AND).                                                        |
| **Any**            | At least one group inside must be true (OR).                                                            |
| **Custom K of N…** | Opens **Match K of N groups** — pick how many groups must be true. The chip then shows **Custom: k/n**. |

Under the row sit the cards it combines — group cards, or more logic cards.

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FenH5LKQvYbAaYBQvAwar%2FScreenshot_20260921_091339_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=f4e05b71-b98a-41ad-b82d-6fe1170d00ed" alt=""><figcaption></figcaption></figure>

*A logic card combines the cards below it. Here, either group is enough.*

### Building an alert step by step

1. Open **Add Alert** → tab **Advanced**. You get one empty group.
2. **Add Condition** twice → set the group's threshold with **− / +**.
3. Tap **Add Group**. What you already built is kept as the first group, and an empty second group appears next to it. The card around them becomes a logic card set to **All**.
4. Fill the second group, then set **Match** to All, Any, or Custom.
5. Need a group **inside** a group? Tap **Add Group** on that group's own card — it splits that card the same way, one level deeper.
6. Name the groups (optional) so the summary reads like your strategy.
7. Tap **Add Alert**.

#### Reading the summary line

Above the **Add Alert** button, the app writes your logic as one sentence and keeps it in sync while you edit:

```
Group 1 and (Group 2 or Group 3)
Trend and (Group 2 or Group 3)
at least 2 of (Group 1, Group 2, Group 3)
```

* Groups are numbered in the order they appear; a group with a name uses the name instead (shortened after 20 characters).
* Brackets show the nesting, and each nesting level has its own colour so you can match the pairs by eye.
* The same line is shown on the **alert list**, in the **alert history** (with which groups actually fired), and on a shared alert — so you can read the logic without opening the alert.
* With only one group there is nothing to combine yet, so the line stays as the normal description text.

### Example — trend filter plus two possible triggers

Wanted: *the trend must be up, and either RSI or MACD must fire.*

| Card            | Setting                                            |
| --------------- | -------------------------------------------------- |
| Logic (outer)   | **All**                                            |
| Group **Trend** | EMA50 Over EMA200, ADX Over 25 — threshold **2/2** |
| Logic (inner)   | **Any**                                            |
| Group **RSI**   | RSI(14) Cross Over 70 — threshold **1/1**          |
| Group **MACD**  | MACD Cross Over 0 — threshold **1/1**              |

Summary: `Trend and (RSI or MACD)`

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FNGCCrBYt5mJzT9ADdkCM%2FScreenshot_20260921_091654_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=85604eb9-a83f-4fcd-836c-4ae3550f95a8" alt=""><figcaption></figcaption></figure>

*Two levels of nesting: the outer card needs both sides, the inner card is happy with one of the two triggers.*

| EMA50>EMA200 | ADX>25 | RSI crosses 70 | MACD crosses 0 | Result                                |
| ------------ | ------ | -------------- | -------------- | ------------------------------------- |
| ✅            | ✅      | ✅              | ❌              | ✅ alert — trend ok, one trigger fired |
| ✅            | ✅      | ❌              | ✅              | ✅ alert                               |
| ✅            | ❌      | ✅              | ✅              | ❌ no alert — Trend needs 2 of 2       |
| ❌            | ✅      | ✅              | ✅              | ❌ no alert                            |

### Rules and limits

* Advanced mode needs at least **2 groups**. With a single group it asks you to add one, or to use Basic mode — a one-group Advanced alert is just a Basic alert with extra steps.
* Every group needs at least **1 condition**.
* Inside a group, the threshold must be **greater than or equal to** the number of **Must Meet** conditions in that same group — the same rule as Basic mode, checked per group.
* Conditions per group: up to the same limit as a Basic alert (20 by default). The limit counts **per group**, not per alert.
* Groups per alert: up to **10** by default.
* Nesting: **2** levels by default. When one more level is not allowed any more, the **Add Group** button disappears on that card instead of showing an error.
* These three limits come from the server and can change without a new app version.
* The outermost card has no name field and no delete button — it is the alert itself, not a group you can remove.
* Mode is fixed once saved: you cannot turn a Basic alert into an Advanced one, or the other way around. Create a new alert instead.
* All conditions of the alert share the alert's **symbol**, **Global Timeframe** and **Calculation Mode**, exactly as in Basic mode. Groups do not change those.

### Good to know

* **Add Condition** on a group that already has conditions opens the dialog pre-filled from that group's last condition, just like Basic mode — quick when you want the same indicator with another value.
* **Add Multi Alert** works in Advanced mode too: it creates the same tree for several symbols at once.
* **🗑** deletes a group immediately, without asking — and it does not merge the cards back together. A logic card with only one group left is still a logic card, and the alert refuses to save until a second group is there.
* "All" with thresholds inside the groups gives you two levels of counting: *how many conditions inside a group* and *how many groups*. Use **Custom K of N** when you want "any 2 of my 3 setups".
* Nothing about Basic mode changed. Alerts you created before still open and behave exactly as before.

[<img src="https://tracking.avapartner.com/imp/?affid=214848&#x26;bannerid=35546&#x26;adTheme=768&#x26;campaign=221449&#x26;campaignName=Default%20Campaign&#x26;tag=214848&#x26;source=general_setting" alt="" data-size="line">](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How "must meet" & "number conditions reach target" work ?

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FF8vddDOuXhHR6ExYTKPE%2Fmust%20meet1.jpg?alt=media\&token=b3c61e38-2516-4aed-9d95-00fbec43e0e9) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FrM0VDwAqRWefQn8ppQg4%2Fmust%20meet2.jpg?alt=media\&token=5617b35a-429b-4fdb-bb75-44a05d4ddbc7) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Frzhwn3vrp1QQeAbXAPDE%2Fmust%20meet3.jpg?alt=media\&token=f8f88f48-5d71-4295-8f2b-9e644c314963) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fe2a8c9k3xJzHCxxvAStC%2Fmust%20meet4.jpg?alt=media\&token=da12fdec-106e-4a05-980d-7b41f675ce0f)

&#x20;[<img src="https://tracking.avapartner.com/imp/?affid=214848&#x26;bannerid=35546&#x26;adTheme=768&#x26;campaign=221449&#x26;campaignName=Default%20Campaign&#x26;tag=214848&#x26;source=general_setting" alt="" data-size="line">](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)

{% hint style="success" %}
In **Advanced** mode the same two settings exist inside **every group**, and the groups are then combined with All / Any / Custom K of N — see [How "Advanced" mode work ?](/indicator-alert-feature/how-advanced-mode-work).
{% endhint %}

[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How cross over,cross under,over,under work ?

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F7q12dqIOTmLNLsBvwJ7L%2Funder-over.jpg?alt=media\&token=bc5c00d1-1ee4-4ad4-85e0-8c652ed00853)

{% hint style="info" %}
Checking cross over, cross under at candle <mark style="color:yellow;">**x**</mark>:

* Take two points at candle <mark style="color:yellow;">**x**</mark> and <mark style="color:yellow;">previous 1 candle of x</mark> on the <mark style="color:blue;">blue line</mark> (**b\[x-1],b\[x]**) and two points on the <mark style="color:red;">red line</mark> (**r\[x-1],r\[x]**)
* If **b\[x-1] < r\[x-1]** and **b\[x] > r\[x]** => <mark style="color:blue;">blue line</mark> cross over <mark style="color:red;">red line</mark>.
* If **b\[x-1] > r\[x-1]** and **b\[x] < r\[x]** => <mark style="color:blue;">blue line</mark> cross under <mark style="color:red;">red line</mark>.
* A cross must really **change side**. If the two lines are **equal** on either candle, it is not a cross — touching is not crossing.

**Note**: in case the condition is <mark style="color:red;">Price cross over/cross under....</mark> if you select price to check:

* **C-C**: take the two points <mark style="color:red;">close</mark> of the previous candle of <mark style="color:yellow;">x</mark> and <mark style="color:red;">close</mark> of candle <mark style="color:yellow;">x</mark> **(c\[x-1],c\[x])**
* **O-C**: take the two points <mark style="color:red;">open and close</mark> of candle <mark style="color:yellow;">x</mark> **(o\[x],c\[x])**
* **H-L**: take the two points <mark style="color:red;">high and low</mark> of candle <mark style="color:yellow;">x</mark>, **in the direction the candle moved**: a <mark style="color:green;">green</mark> candle (close above open) is read **low → high** **(l\[x],h\[x])**, a <mark style="color:red;">red</mark> candle is read **high → low** **(h\[x],l\[x])**. This is what lets a single candle's wick cross a line up or down.
  {% endhint %}

{% hint style="info" %}
Checking over, under at candle <mark style="color:yellow;">**x**</mark>:

* Take one point at candle <mark style="color:yellow;">**x**</mark> on the <mark style="color:blue;">blue line</mark> (**b\[x]**) and one point on the <mark style="color:red;">red line</mark> (**r\[x]**)
* If **b\[x] >= r\[x]** => <mark style="color:blue;">blue line</mark> over <mark style="color:red;">red line</mark>.
* If **b\[x] <= r\[x]** => <mark style="color:blue;">blue line</mark> under <mark style="color:red;">red line</mark>.
* Equal values count as **both** over and under, because only one candle is read and there is no direction to decide.
  {% endhint %}

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FuXgt7cYywDYJJ74VsYCU%2Fprice.jpg?alt=media\&token=a8c2fa73-d68e-4e0a-80b0-9b895881d724)

{% hint style="success" %}
**Which candle is "x" ?** The one you pick in **Candle To Check** — see How "candle to check" work ?. Remember that **cross over / cross under also read the candle before x**, so a cross is never decided by one candle alone.

**Want the same thing to happen more than once ?** See How "Multi-Candle" work ? — the check above is then repeated on every candle of the window.

**Want to filter how far apart the two lines are ?** See How "Distance limit" work ? — the distance is an extra filter on top: the condition above must be true **and** the distance must match.
{% endhint %}

&#x20;[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How "candle to check" work ?

## How "candle to check" work ?

**Candle To Check** tells the app **which candle** the condition is read on: the current one, or one of the candles before it.

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FHlS0Le2AKRB7A5rElGvp%2Fcandle%20to%20check.jpg?alt=media\&token=98b4cdf0-6db9-4db5-8e66-9a9e62c2b037)

{% hint style="info" %}
**What is the "Current" candle ?** It depends on the alert's **Calculation Mode** (and, with **MTF**, on each condition's own **Data Use**):

* **At End of Candle** (on a condition row it is called **Closed Candle**) — "Current" is the last **closed** candle. The condition is checked when a candle closes.
* **Every Minute** — the condition is checked **every minute** on the candle that is still forming, using the price at the moment of the check. Available only when **Global Timeframe** is set to **MTF**.

With **At End of Candle**, an alert can only trigger at the end of a candle. With **Every Minute**, it can trigger while the candle is still open — which also means the value can still change afterwards.
{% endhint %}

{% hint style="info" %}
**Counting backwards.** "1 Previous" is the candle right before Current, "2 Previous" the one before that, and so on. The list only offers the candles the app keeps for that indicator, so it is not the same length for every indicator.

**Cross conditions read one extra candle.** *Cross over / cross under* compare the candle you picked with the candle **before** it — see [How cross over,cross under,over,under work ?](/indicator-alert-feature/how-cross-over-cross-under-over-under-work).
{% endhint %}

{% hint style="success" %}
**Need the condition to happen several times ?** **Candle To Check** picks **one** candle. To ask for *n times inside m candles*, use Multi-Candle — see How ["Multi-Candle" work ?](/indicator-alert-feature/how-multi-candle-work). The window opens at the candle you picked here and walks into the past.
{% endhint %}

{% hint style="warning" %}
Patterns have no **Candle To Check** option — the option only appears for indicator conditions.
{% endhint %}

&#x20;[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How "Multi-Candle" work ?

Normally a condition is checked on **one** candle only — the candle you pick in "Candle To Check".

**Multi-Candle** lets you ask for more: the condition must happen **n times inside m candles**. Use it when one single candle is too easy to trigger, and you want the market to confirm the same thing a few times.

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FeviocKF47wSTyRo1eHRP%2FScreenshot_20260920_132638_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=b6b2f9c9-4e98-4f7d-b180-27e7cfe05d4e" alt=""><figcaption></figcaption></figure>

*The condition above triggers when RSI is over 70 on at least 2 of the last 3 candles.*

### Where to find it

Open **Add / Edit condition**. Right under **Candle To Check** there is a row:

```
Multi-Candle: [x]  [ 2 ] times in [ 3 ] Candles
              Window: Current to 2 Previous
```

* Tick the checkbox to turn it on. The two selectors appear only after you tick it.
* Left selector = **n**, how many candles must match.
* Right selector = **m**, how many candles to look at.
* The line under the row always shows the two ends of the window, so you can read exactly which candles are used.
* Some conditions do not call a candle a "candle" — for those the row reads **Multi-Bar: … Bars**, and so on. It works the same way.

### What it means

* **Candle To Check** decides where the window **starts**.
* The window is that candle plus the `m - 1` candles **before** it. It always counts backwards, into the past.
* The condition is met when **at least n candles inside the window match**. They do **not** need to be next to each other.

| Candle To Check | Multi-Candle         | Candles used                    | Met when              |
| --------------- | -------------------- | ------------------------------- | --------------------- |
| Current         | 2 times in 3 Candles | Current, 1 Previous, 2 Previous | 2 or 3 of them match  |
| Current         | 1 times in 5 Candles | Current … 4 Previous            | any 1 of them matches |
| 10 Previous     | 2 times in 3 Candles | 10, 11, 12 Previous             | 2 or 3 of them match  |
| Current         | off                  | Current only                    | Current matches       |

Be careful with the direction when you do not start at "Current". With **Candle To Check = 10 Previous** and **2 times in 3 Candles**, the window is **10, 11, 12 Previous** — it goes further back in time. It is *not* 10, 9, 8 Previous. The "Window:" line under the row always spells this out:

<figure><img src="https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FQHsuZQNauFBE7l5Sx91K%2FScreenshot_20260920_133323_Forex%20Alerts%20%26%20Crypto%20Alerts.jpg?alt=media&amp;token=fbb23e14-4727-4e9a-b0c5-97871439f155" alt=""><figcaption></figcaption></figure>

*Window: 10 Previous to 12 Previous — the window opens at the candle you picked and walks into the past.*

### Example

Condition: **RSI(14) Over 70**, Candle To Check = **Current**, Multi-Candle = **2 times in 3 Candles**.

| 2 Previous | 1 Previous | Current | Result                                                                 |
| ---------- | ---------- | ------- | ---------------------------------------------------------------------- |
| 71.2       | 69.0       | 70.5    | ✅ alert — 2 candles above 70 (they are not side by side, that is fine) |
| 65.0       | 71.5       | 72.0    | ✅ alert — 2 candles above 70                                           |
| 71.2       | 69.0       | 68.4    | ❌ no alert — only 1 candle above 70                                    |

### Which candle is "Current" ?

This follows the **Calculation Mode** of the alert, exactly like a normal single-candle condition:

* **At End of Candle** (called **Closed Candle** on a condition row) — "Current" is the last **closed** candle.
* **Every Minute** (available only when Global Timeframe is **MTF**) — "Current" is the candle that is still forming, checked every minute.

### Rules and limits

* Multi-Candle is for **indicator** conditions. **Patterns** do not have it, because patterns have no candle option at all.
* It appears only for conditions that have **Candle To Check**. A few conditions let you choose a candle for each side separately; those do not use this row.
* **m** starts at 2. **n** can be 1 up to m.
* The window can never go past the oldest candle we keep for that indicator: `Candle To Check + m - 1` must stay inside the "Candle To Check" list. If you move Candle To Check further back, the choices for m get shorter — this is normal, not a bug.
* Each condition in an alert has its **own** n and m. You can mix: one condition with Multi-Candle, another without.
* Every candle in the window is checked with the **same** settings as the condition itself (Cross Over / Over / Under …, and the Distance limit if you use one).
* Leave the checkbox **off** to keep the old behaviour — one candle, exactly as before. Alerts you created earlier are not changed.

### Works together with "must meet" and "number conditions reach target"

Multi-Candle only decides whether **this one condition** is true or false right now. After that, your alert combines the conditions the usual way — see [How "must meet" & "number conditions reach target" work ?](/indicator-alert-feature/how-must-meet-and-number-conditions-reach-target-work)

So `2 times in 3 Candles` inside a condition, and `2 of 3 conditions` for the alert, are two different things and can be used together.

### Good to know

* **Not enough history** (new symbol, or you just changed the timeframe): only the candles that really exist are counted. When the history is too short the alert stays quiet instead of triggering early.
* A bigger window does **not** make the alert fire more often. How often an alert may trigger is decided by the alert's own settings, not by Multi-Candle.
* Reading the "Window:" line is the fastest way to be sure: it names the first and the last candle of the window, so there is no doubt about which direction it counts.
* The condition text itself carries the setting, so you can check it later without opening the condition again:

```
RSI(14) Over 70 - (2 times in 3 Candles: Current to 2 Previous)
```

[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# How "Distance limit" work ?

{% hint style="info" %}
This option support more customization for setup your strategy with our app.
{% endhint %}

![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FokoHNuSDCysb03ZCVKce%2Fdist4.jpg?alt=media\&token=19951605-9162-4991-9c74-88205307226b) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fnh4PyctxXpGobJL9TgeY%2Fdist1.jpg?alt=media\&token=07554ff0-54f5-4b17-b11f-6bd992d4a63b) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FiUatLdyEOnBisriDWVwq%2Fdist2.jpg?alt=media\&token=a7759bd4-015a-4c66-a023-a85f397760dd) ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fbh7VOmgglwl3qF69BLbz%2Fdist3.jpg?alt=media\&token=39207f46-064f-4af8-84da-29306159e162)

* The distance is an **extra filter**: the alert needs the condition itself (over / under / cross …) to be true **and** the distance between the two points to match. It never triggers on the distance alone.
* Leave the first selector on **Not check** to switch the filter off.
* The distance is measured on the same candle the condition was decided on, and it is shown in the condition text: `Price(Close) Over SMA(20,0),dist(Greater than 0.00053)`.

&#x20;[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Some Example

> ### :tada:**You want alert when&#x20;**<mark style="color:blue;">**Tenkan above Kijun**</mark>**&#x20;and&#x20;**<mark style="color:blue;">**Price above Cloud**</mark>**&#x20;and&#x20;**<mark style="color:blue;">**RSI over 50:**</mark>
>
> * Add <mark style="color:red;">3 condition</mark> and select number of conditions reach target is <mark style="color:red;">3</mark>
> * ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fpi82xxTtzfen44DjsCjs%2F1.jpg?alt=media\&token=d7d1519d-e5a7-4d77-99a8-5498f1731c06)

> ### :tada:**You want receive alert when&#x20;**<mark style="color:blue;">**3 EMA cross over**</mark>**&#x20;like&#x20;**<mark style="color:blue;">**5 EMA cross over 8**</mark> <mark style="color:blue;">**EMA**</mark>**&#x20;and&#x20;**<mark style="color:blue;">**8 EMA**</mark> <mark style="color:blue;"></mark><mark style="color:blue;">above 13 EMA</mark>
>
> ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2Fqjmead1qsopPnWlyFGQg%2F2.jpg?alt=media\&token=0ffe3545-ce3f-4741-9e34-8d8ac484cb30)

> ### :tada:**You want receive alert when&#x20;**<mark style="color:blue;">**Price cross under SMA right after RSI cross under 80 at previous candle**</mark>
>
> ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FPNdDIC5Vuu42DJ9Ob2sd%2F3.jpg?alt=media\&token=153a3845-2198-4b34-83cc-f3aedc00c279)

> ### :tada:**When&#x20;**<mark style="color:blue;">**Price is below SMA**</mark>**&#x20;and you want receive alert if&#x20;**<mark style="color:blue;">**in last 5 candles have 4 candles moving nearly the SMA with distance less than 10 pips**</mark>
>
> &#x20;:point\_right:<mark style="color:orange;">note: pips is the term used for forex so you need to convert pips to value, also you can set percentage or value directly.</mark>
>
> * **Ex for&#x20;**<mark style="color:red;">**XAUUSD 10 pips = 1 (value)**</mark>
>
> &#x20;     ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FzM7iNyYfdfeoSG69ahnI%2F4.2.jpg?alt=media\&token=5bace680-46e2-488a-8a7c-38e1d6887cd1)![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2F2itpM4Gwchny21jlUllS%2F4.1.jpg?alt=media\&token=9087ec66-be9e-475a-8959-de3a9a359c8f)
>
> * **Ex for&#x20;**<mark style="color:red;">**EURUSD 10 pips = 0.001 (value)**</mark>
>
> &#x20;     ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FTKilgNiuiKxr7W2UOpj2%2F4.3.jpg?alt=media\&token=5f04cd1b-7ae6-4c07-a5eb-e09b431ec7d4)![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FvLTCYgpJx0VqRsfIejVn%2F4.4.jpg?alt=media\&token=2833738b-f4f6-4856-bd93-ad470c9be017)

> ### :tada:**You want receive alert when have&#x20;**<mark style="color:blue;">**5 consecutive green candles**</mark>
>
> ![](https://1752735084-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FLEg9b9dcLWBfThsXevkl%2Fuploads%2FhEEcQcYTe6zYXPISEoRW%2F5.jpg?alt=media\&token=77f19cab-86b5-4074-8503-d658cf3ef372)

&#x20;[![](https://tracking.avapartner.com/imp/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=general_setting)](https://tracking.avapartner.com/click/?affid=214848\&bannerid=35546\&adTheme=768\&campaign=221449\&campaignName=Default%20Campaign\&tag=214848\&source=about_indi_alert)[![](https://d3dpet1g0ty5ed.cloudfront.net/EN_Spreads_Pay_less_keep_more_2-4_Google_300x250.jpg)](https://one.exnessonelink.com/intl/en/a/t7p3v7p3)


# Privacy Policy

## Privacy Policy

Last updated: January 01, 2026

This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You.

We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the [Free Privacy Policy Generator](https://www.freeprivacypolicy.com/free-privacy-policy-generator/).

## Interpretation and Definitions

### Interpretation

The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.

### Definitions

For the purposes of this Privacy Policy:

* **Account** means a unique account created for You to access our Service or parts of our Service.
* **Affiliate** means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
* **Application** refers to Forex Alerts & Crypto Alerts, the software program provided by the Company.
* **Company** (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Forex Alerts & Crypto Alerts.
* **Country** refers to: Vietnam
* **Device** means any device that can access the Service such as a computer, a cellphone or a digital tablet.
* **Personal Data** is any information that relates to an identified or identifiable individual.
* **Service** refers to the Application.
* **Service Provider** means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used.
* **Usage Data** refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
* **You** means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.

## Collecting and Using Your Personal Data

### Types of Data Collected

#### Personal Data

While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to:

* Usage Data

#### Usage Data

Usage Data is collected automatically when using the Service.

Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data.

When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data.

We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device.

### Use of Your Personal Data

The Company may use Personal Data for the following purposes:

* **To provide and maintain our Service**, including to monitor the usage of our Service.
* **To manage Your Account:** to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user.
* **For the performance of a contract:** the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service.
* **To contact You:** To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation.
* **To provide You** with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information.
* **To manage Your requests:** To attend and manage Your requests to Us.
* **For business transfers:** We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred.
* **For other purposes**: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience.

We may share Your personal information in the following situations:

* **With Service Providers:** We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You.
* **For business transfers:** We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company.
* **With Affiliates:** We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us.
* **With business partners:** We may share Your information with Our business partners to offer You certain products, services or promotions.
* **With other users:** when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside.
* **With Your consent**: We may disclose Your personal information for any other purpose with Your consent.

### Retention of Your Personal Data

The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.

The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods.

### Transfer of Your Personal Data

Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction.

Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer.

The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information.

### Delete Your Personal Data

You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You.

Our Service may give You the ability to delete certain information about You from within the Service.

You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us.

Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so.

### Disclosure of Your Personal Data

#### Business Transactions

If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy.

#### Law enforcement

Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).

#### Other legal requirements

The Company may disclose Your Personal Data in the good faith belief that such action is necessary to:

* Comply with a legal obligation
* Protect and defend the rights or property of the Company
* Prevent or investigate possible wrongdoing in connection with the Service
* Protect the personal safety of Users of the Service or the public
* Protect against legal liability

### Security of Your Personal Data

The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security.

## Children's Privacy

Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers.

If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information.

## Links to Other Websites

Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit.

We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.

## Changes to this Privacy Policy

We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page.

We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy.

You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.

## Contact Us

If you have any questions about this Privacy Policy, You can contact us:

* By email: <cacom2401@gmail.com>
* By visiting this page on our website: <https://docs.tradingalert.net/>


# Terms & Conditions

## Terms of Use

By installing or using the app (Forex Alerts & Crypto Alerts), these terms will automatically apply to you – you should make sure therefore that you read them carefully before using the app. You’re not allowed to copy, or modify the app, any part of the app, or our trademarks in any way. You’re not allowed to attempt to extract the source code of the app, and you also shouldn’t try to translate the app into other languages, or make derivative versions. The app itself, and all the trade marks, copyright, database rights and other intellectual property rights related to it, still belong to tradingalert.net.

tradingalert.net is committed to ensuring that the app is as useful and efficient as possible. For that reason, we reserve the right to make any changes or updates to the application and to charge and adjust prices for the application's services at any time and for any reason. We will never charge for the application or its services without clearly explaining to you exactly what you are paying for.

The Forex Alerts & Crypto Alerts app stores and processes personal data that you have provided to us, in order to provide my Service. It’s your responsibility to keep your phone and access to the app secure. We therefore recommend that you do not jailbreak or root your phone, which is the process of removing software restrictions and limitations imposed by the official operating system of your device. It could make your phone vulnerable to malware/viruses/malicious programs, compromise your phone’s security features and it could mean that the Forex Alerts & Crypto Alerts app won’t work properly or at all.

You should be aware that there are certain things that tradingalert.net will not take responsibility for. Certain functions of the app will require the app to have an active internet connection. The connection can be Wi-Fi, or provided by your mobile network provider, but tradingalert.net cannot take responsibility for the app not working at full functionality if you don’t have access to Wi-Fi, and you don’t have any of your data allowance left.

Neither we nor any third parties provide any warranty or guarantee as to the accuracy, timeliness, performance, completeness or suitability of the information and materials found or offered on this application for any particular purpose. You acknowledge that such information and materials may contain inaccuracies or errors and we expressly exclude liability for any such inaccuracies or errors to the fullest extent permitted by law.

Your use of any information or materials on this application is entirely at your own risk, for which we shall not be liable. It shall be your own responsibility to ensure that any products, services or information available through this application meet your specific requirements.

At some point, we may wish to update the app. The app is currently available on Android/IOS – the requirements for system (and for any additional systems we decide to extend the availability of the app to) may change, and you’ll need to download the updates if you want to keep using the app. tradingalert.net does not promise that it will always update the app so that it is relevant to you and/or works with the Android/IOS version that you have installed on your device. However, you promise to always accept updates to the application when offered to you, We may also wish to stop providing the app, and may terminate use of it at any time without giving notice of termination to you. Unless we tell you otherwise, upon any termination, (a) the rights and licenses granted to you in these terms will end; (b) you must stop using the app, and (if needed) delete it from your device.

From time to time this application may also include links to other applications. These links are provided for your convenience to provide further information. They do not signify that we endorse the application(s). We have no responsibility for the content of the linked application(s).

## **Changes to This Terms of Use**

I may update our Terms of Use from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Terms of Use on this page. These changes are effective immediately after they are posted on this page.

## Contact Us

If you have any questions about this Terms of Use, You can contact us:

* By email: <cacom2401@gmail.com>
* By visiting this page on our website: <https://docs.tradingalert.net/>


