Step1- Set your indicators

Indicator Type: This expert supports all types of standard indicators , oscillators, volumes and bill Williams. You can make any expression by these indicators and oscillators. For example, if you want to have a function that gives you the distance between two moving averages as a number, then you can define an expression and set the value of this expression as the distance of these two moving averages. From now on whenever you use the name of this expression you will have the relating value of this expression. Here will explain more about the expressions later.

There are some kinds of expressions ESB supports. One of them is “If Expressions“. Conditional expressions can define as an indicator. Sometimes you need to check if a specific condition is true do a specific task and else do another task. This kind of situation can de bone by “IF Expressions” which are conditional. In “IF WAIT WHILE” expressions, we can say if a condition is met, wait for second condition while a specific expression is true. We also can set max number of candles or max duration for checking of the condition.

Some expressions are true only for a moment. For example, “Ask=1.12345” is true only in a moment that ask price is 1.12345. Sometimes you need to keep value on true for a certain number of candles or amount of time. In this cases there is another type of indicator called Trigger and Keeper that keeps value as long as another expression is true.

If you need to check some expressions in series, you can use series indicators. There are two types of series in ESB: Expression Series and Expression Machine. ESB checks them in order and the last expression turns to true, the output will be true. The expression machine waits for expression and as it starts for checking expression N, it doesn’t care to previous expressions. It is like a machine that waits for an expression to go to the next state. In the new state, it doesn’t care about previous steps.

Another type of indicator is custom indicators. Imagine you want to use an indicator that is not in the indicator list of ESB, you’ll only need to copy your indicator in MetaTrader indicator folder and create a custom indicator with its name in ESB. This way, you have access to the output of this indicator.

If your custom indicator uses arrow to show signals, you can use Custom Indicator Signal Arrow to detect arrows and signals. It is exactly same as normal custom indicator but ESB knows how to handle arrows.

If you don’t have the source code of the Custom Indicator, you can use Custom indicator by Object and try to read the value of your desired custom indicator using detecting its objects on chart. You can detect indicator’s objects by color, prefix, some including word or time.

You can put an object on the chart and then read its value in any shift by the “Chart Object” indicator. For example, you can put a trend line on the chart and then ESB used this type of indicator to get trend line value and every time price crosses it up, it sends a notification for you. For creating a shared memory and sharing variables and signals between two or more instants of ESB on different charts, you can use Memoryindicators.

For reading data or values from Files you can use File indicator. It would be very useful in case of catching data from other applications or other experts by sharing them in file.

ESB has a strong engine to catch the live news. You can check the news using News Indicators which are unique. For example, if there is a high priority news in next hour do a buy.

As mentioned above you have all MetaTrader indicators and oscillators which we call them standard.

If you want to read a candle parameter like its open, long shadow, high & low or…, you can use all the indicators with abbreviation letter “C” in indictor type. Any candle with any shift you need. For using Heiken-Ashi candles just write in custom parameters “Heiken-Ashi”.

If you want to deal with a group of candles, for example, you want to know the value of the lower low of ascending group candles, then you have them with abbreviation “NxC“.

If you want to have tick values for example, when you want to read market current ask value, then you can use the indicators with the word “Ticks”.

For accessing properties of every single order you can use the Order indicators and for working with a group of orders can use indicators that start with “Orders“. History orders are accessible by “Closed Order” and “Closed Orders” indicators. All account information like balance, equity, margin, and … can be gotten using Account indicators.

If you need an indicator relating candle patterns, for example, engulfing pattern, then you can go to the type of indicators called “Patterns”. They can detect many kinds of Japanese candlestick patterns in the market.

Some Indicators relate to extremum and swing points, which can give you the value of the minimum and maximum points. For example, you can have a 4th last price peak in the market.

If you need indicators to determine support and resistance levels, they are also supported. For instance, if you need to trail you Stop Loss based on new support or resistance levels, or if you need to have a break out strategy which is based on important support and resistance levels, you can use them here.

You can work with trend lines here for example, you may have an indicator that has a true value when a trend line is touched. you may also work with the trend line slope.

You have an indicator here called “Pivot” which deals with the famous PRS indicator, it updates 7 price levels very day. Three of them are Resistance, 3 of them are Support and one of them is Pivot. For example, you may want to know if the price has passed any of them or not.

If your strategy is based on zig-zag, you can do it by its indicator.

You can also define any indicator or any condition by yourself in user-defined indicators. For example, you can make a function that gives the value 5 when two moving averages cross each other.

So in ESB, you have no restraint about your desired indicators. Many types of indicators are supported. And you can make the unsupported ones by yourself. Many of the builders in the market aren’t capable of supporting lots of the indicators we have supported here.

Name: Keep in mind when you want to set an indicator you have to choose a name for it, this name can only be any alphabet letter, lower or uppercase, numbers and underline sign. It must start with a letter and shouldn’t be a keyword for example ‘IsAbove’ or ‘CrossUp’ are forbidden to be an indicator name.

You can also determine the currency pair for any indicator you’ve defined and thus you can work with more than one pair at a time. But if you leave it empty it automatically works on the pair that the expert is working on, and in the backtest, it works on your selected currency pair.

Shift: This is the number of candles that you need its indicator value and must not be confused with indicator shift. If indicator needs shift it can be set by parameters. We consider the shift number of current candle zero. The previous candle with shift number 1 the one before that 2 then 3 and so on.

Therefore, if you need the value of RSI for the 3rd candle, just set shift to 3. ESB also supports another type of shift that can be useful for gathering indicator value for a group of candles. In this case, you can set a shift by this format:

Start, End, Step, [min | max | avg | sum | pi | and | or | first | last | Nth]

That means you want a specific type (the minimum or maximum or average or sum or multiply or “and” or “or” or “first” or “last” or “Nth”) of the values from the candle’s number Start to End. For example, if you create a moving average and set shift to “1,10, max”, this returns a maximum of moving average from candle 1 to candle 10. “1,10, AVG” returns average of moving average from candle 1 to candle 10, and “1,10, sum” returns their sum and so on. If you write “1,10,2, AVG” it returns the average of the moving average from candle 1 to candle 10 with a step size of 2. It calculates 1 to 10 like this: 1,3,5,7,9.  If you don’t mention step size, it will be 1 by default.

Note that if use shift for expressions, you should add “[SHIFT]” everywhere in expression that needs to check. For example, if you want to ensure that MA1 is less than MA2 for the last 10 candles, create expression and set shift by “1,10, and” and write an expression like this: MA1[SHIFT]<MA2[SHIFT]. This type of expression checks conditions from shift 1 to shift 10 and then get the result by calculating like this:

(MA1[1]<MA2[1] and MA1[2]<MA2[2] and MA1[3]<MA2[3] and … and MA1[10]<MA2[10])

You can also write expressions as Start and End. For example, “3*ind1-10, exp3, MAX“. This is very useful for creating complicated plans. Sometimes you need find the first or last or N’th place that a specific condition meets. For example, you want to find candle number that ma1 crosses ma2 for first time. Just set shift by “1,100, FIRST” and write an expression like this: “MA1 CROSS MA2”. If you need to find candle number of the last occurrence of cross from candle 1 to 100, shift would be like this:  “1,100, LAST”. This return the last candle number that ma1 crosses ma2. For find the fifth cross, shift would be like “1,100,5TH”.

Period: Your indicator may have a period number, for example, you can set the period of your moving average to 14.

Applied Price: determines the applied price which can be open, median, closed, low or high of a candle.

Parameters: In front of the name of an indicator you see spaces for the parameters and you should set your preferred numbers in order, according to their fields. And they are separated from each other by commas.

For example, if you create a MACD indicator, you see “MACD {fast ema, slow ema, macd sma}” as the type of indicator. This means that MACD has 3 parameters. For setting these parameters, just write like “12,26,9” in the “Parameters” field. This means you set: fast ema=12 and slow ema=26 and macd sma=9. All parameters have a default value; ESB uses its default values in case you don’t set them manually.

In case you want to give value to only some of the parameters, you could write the “parameter name=value” for the ones you want to change its value and keep in default values for the other parameters. For example, you can write “slow ema=26” in the parameters field. This means you change only the “slow ema” parameter to 26 and other parameters use their default values. You also can write “fast ema=12, macd sma=9” for changing two of them.