Marco vd Heijden: You can just press F1 in metaeditor to pull up the latest reference. Thanks a lot for the file, it was really helpful. MQL4 Book - PDF format - Ebook download as PDF File .pdf), Text File .txt) or read book online. Pdf format of MQL4 book. In this series, I will try to strip the mystique and confusion from MQL4 by 3- Built -in a dictionary book which you can access by highlight the.
|Language:||English, Spanish, Arabic|
|ePub File Size:||20.61 MB|
|PDF File Size:||10.68 MB|
|Distribution:||Free* [*Sign up for free]|
MetaQuotes Language 4 (MQL4) is a built-in language for programming trading strategies. This language is developed by MetaQuotes Software Corp. based on . Nowadays, a personal computer became indispensable for everybody. The rapid development of Internet and performance of modern computers opened up. Table of Contents. Preface · Introduction to MQL4 · Basics of MQL4 · Some Basic Concepts · Constants and Variables · Data Types · Operations and Expressions.
Quoting JimDandy Disliked After teaching myself some mql4 I was still amazed at how few video tutorials there are on places like youtube about it.. Just do a search either on google or on youtube for mql4 lessons. Start with the intro video and work your way thru. The audio was horrible when I first started recording but I eventually get it figure out. I can't believe no one is helping the dummies like I was. This is all free for the taking.
Constants and Variables The terms of constants and variables are introduced, the difference between these terms is explained. As the term suggests, a constant is something continuous, set once for all. Unlike the constant, a variable is a programming code object that can modify its content. Data Types Certain types of data are used in any programming language.
The type of a variable is chosen according to its purpose. How can we declare a variable, how can we initialize it preset its initial value? A wrong choice of the type for a variable may slow down the program or even result in its wrong actions.
Operations and Expressions Operations operate upon operands. What types of operations are there? What is typecasting used for? What are special features of operations on integers? Why is it important to remember about precedences of data of different types? Without knowing about the features of some operations, you can make subtle errors. Operators Simple and compound operators. A necessary action should not always be executed by a simple operator.
If it is required that a group of operators is executed as one big operator, this group should be included into one compound operator. Requirements and specific examples of using operators are given. Functions The necessity of getting a simple code brings us to the term of Function. In order to use the function from different locations in the program, it is necessary to provide it with Function Parameters.
We will consider the process of the custom function creation. The examples of using standard functions are given. Program Types Scripts, indicators and Expert Advisors are the types of MQL4 programs that allow you to cover practically the whole class of problems concerning trading in fincancial markets. It is necessary to understand the purposes of each type of programs in order to use MetaTrader 4 Client Terminal in the best way.
Before we start a detailed presentation of the rules of writing programs, it is necessary to describe the basic concepts that characterize a program and its interrelations with information environment. The MetaTrader 4 Client Terminal is known to work online. The situation on financial markets changes continuously, this affects symbol charts in the client terminal.
Ticks provide the client terminal with information about price changes on the market. The Notion of Tick Tick is an event that is characterized by a new price of the symbol at some instant.
Ticks are delivered to every client terminal by a server installed in a dealing center. As appropriate to the current market situation, ticks may be received more or less frequently, but each of them brings a new quote - the cost of one currency expressed in terms of another currency.
An application operating with the client terminal may work within a long period of time, for example, several days or weeks. Each application is executed according to the rules set for programs of a certain type. For example, an Expert Advisor EA does not work continuously all the time. An Expert Advisor is usually launched at the moment when a new tick comes.
For this reason, we don't characterize tick as just a new quote, but as an event to be processed by the client terminal.
The duration of Expert Advisor's operation depends on what program code is included in it. Normal EAs complete one information-processing cycle during some tenths or hundredths of a second. Within this time, the EA can have processed some parameters, make a trading decision, provide the trader with some useful information, etc. Having finished this part of its work, the EA goes to waiting mode until a new tick comes.
This new tick launches the Expert Advisor again, the program makes its appropriate operations again and returns to the waiting mode. The detailed description of how the appearance of a new tick influences program operation follows below.
The Notion of Control Speaking about the code execution flow in a program, as well as its interaction with the client terminal, we will use the term of 'control'. Control is a process of carrying out of actions preset by the program algorithm and the client terminal features. Control can be transferred within the program from one code line to another one, as well as from the program to the client terminal. Control is transferred in a way similar to that of giving someone the floor to speak at a meeting.
Like speakers address a meeting and then give the floor to others, the client terminal and the program transfer control to each other. At that, the client terminal dominates. Its status is higher than that of the program, like the authority of the chairman of a meeting is larger than those of an ordinary speaker. Before the program is launched, the control is under the supervision of the client terminal. When a new tick is received, the client terminal transfers the control to the program.
The program code starts to be executed at this moment. The client terminal, after it has transferred the control to the program, does not stop its operation. It continues working with maximum performance during the entire period of time it is launched on PC.
The program can only start operating at the moment when the client terminal has transferred control to it like the chairman of a meeting controls the meeting all the time it is going on, whereas the current speaker takes the word for only a limited period of time. After it has completed its operation, the program returns control to the client terminal and cannot be launched by its own.
However, when the control has already been transferred to the program, it returns control to the client terminal by itself.
Some Basic Concepts Such terms as 'tick' a price change. A wrong choice of the type for a variable may slow down the program or even result in its wrong actions.
The main event when trading on financial markets is the change of price. If it is required that a group of operators is executed as one big operator.
Functions The necessity of getting a simple code brings us to the term of Function. As the term suggests. Program Types Scripts. We will consider the process of the custom function creation. How can we declare a variable. What to do when a new tick incomes? What actions to take? This is control that moves to the forefront here. Constants and Variables The terms of constants and variables are introduced.
Operations and Expressions Operations operate upon operands.. Unlike the constant. What types of operations are there? What is typecasting used for? What are special features of operations on integers?
Why is it important to remember about precedences of data of different types? Without knowing about the features of some operations. Basics of MQL4.
In order to use the function from different locations in the program. A necessary action should not always be executed by a simple operator. The type of a variable is chosen according to its purpose. But don't forget to comment upon your code.
It is necessary to understand the purposes of each type of programs in order to use MetaTrader 4 Client Terminal in the best way.
Data Types Certain types of data are used in any programming language. Its status is higher than that of the program. As appropriate to the current market situation. Before the program is launched. In other words. Normal EAs complete one information-processing cycle during some tenths or hundredths of a second. The client terminal. Control is a process of carrying out of actions preset by the program algorithm and the client terminal features.
Having finished this part of its work. When discussing the matters of performance and internal structures of programs.. An application operating with the client terminal may work within a long period of time.
The program code starts to be executed at this moment. For example. Ticks provide the client terminal with information about price changes on the market.
Each application is executed according to the rules set for programs of a certain type. For this reason. Within this time. The program can only start operating at the moment when the client terminal has transferred control to it like the chairman of a meeting controls the meeting all the time it is going on.
After it has completed its operation. It continues working with maximum performance during the entire period of time it is launched on PC. The Notion of Control Speaking about the code execution flow in a program. An Expert Advisor is usually launched at the moment when a new tick comes. Control can be transferred within the program from one code line to another one.
The Notion of Tick Tick is an event that is characterized by a new price of the symbol at some instant. The duration of Expert Advisor's operation depends on what program code is included in it.
The situation on financial markets changes continuously. Control is transferred in a way similar to that of giving someone the floor to speak at a meeting.
This new tick launches the Expert Advisor again. The detailed description of how the appearance of a new tick influences program operation follows below. Dynamic actions of the user for example. Ticks are delivered to every client terminal by a server installed in a dealing center. Circles shown in the figure characterize some small.
Before we start a detailed presentation of the rules of writing programs. The MetaTrader 4 Client Terminal is known to work online. Some Basic Concepts. At that. Let's refer to Fig. When a new tick is received. Like speakers address a meeting and then give the floor to others.
We will use comments. Comment is an optional and nonexecutable part of a program.. Comments are widely used in coding. The sign of a one-line comment is ended by line feed. Example of comments in a program. Until the current fragment of the program is executed.
A good program always contains comments. It means that a ready program will work according to its code irrespective of whether there are comments in it or not.
The program contains program lines. As soon as the last fragment is executed. The Notion of Comment A program consists in two types of records: After it has been fully completed. They are usually displayed in gray in codes. What and according to what rules can be written in these lines will be considered below in all details. Comments are used to explain the program code. Transferring control in a program A program that has accepted control from the client terminal the executing program starts to make some actions according to its inherent algorithm..
There are one-line and multi-line comments. The state of the memory cell of a constant when setting the value to the program. Constants of the kind cannot be considered similar to constants in an algorithmic language. Exemplary Constants: The difference between them consists only in that the value of a mk: The human race has discovered the constants. The value of a constant cannot be changed during the program operation.. The constant is characterized only by its value.
The term of variable in MQL4 is similar to that accepted in mathematics. It is an invariable value. A constant as a value is placed by a programmer in the code at the stage of its creation.
Constants and Variables. For each constant in the program. To describe the nature of a constant used in an algorithmic language in as many details as possible. Those are. The term of constant is also used in mathematical equations. A Constant in the memory of a PC. The Notion of Constant Constant is a part of a program. The value of a constant cannot be changed during execution of the program neither by programmer nor by computer Fig.
The term of constant in a program is similar to the same term used in mathematical equations. The values of such constants are fully dependent on the will of the person that has made the equation. It is impossible to change the value of a constant during the program operation.
The value of the constant remains always the same. This is the closest analogy of constants used in MQL4 programs. The Properties of Constants The property of a constant is its power to retain during the time of the program operation the value set by the programmer and set this value to the program when the program requests this Fig. MQL4 Tutorial Page 1 of 3 Constants and Variables The terms of 'constant' and 'variable' are considered in one section since these terms are very close in themselves.
The Notion of Variable Variable is a program part that has a value and a name. Let us refer to Fig. If a program has referred to a variable. The state of the memory cell of a variable when setting the value to the program. The variable is put into the code text by its author at the stage of coding as a variable name.
Exemplary variable names: MQL4 Tutorial Page 2 of 3 variable in mathematics is always implied. There is a value of a variable in the memory cell of the computer. The term of 'variable identifier' is the full synonym of 'variable name'. The Properties of Variable The property of a variable is its capability to get a certain value from the program. A and B are variables. MQL4 is case-sensitive. This results in that the preceding value of the variable is deleted.
Between "sessions" of communication with the program. When the value of a variable is set to a program. The name of a variable will never be changed. Exemplary values of variables: If a program while being executed meets the name of a variable. A Variable in the memory of a computer. During this period. The name of the variable is always unchanged.
In this case. The state of the memory cell of a variable when getting the value from the program. The name identifier of a variable can consist of letters.
The name of a variable is never changed. The value of a variable can be changed by the program. A variable is not related to the executing program for a certain period of time. In the code below. This value can be requested for processing and changed by the program. At that..
Exemplary Constants and Variables in a Program In a program. According to the algorithm of the program. When writing a code. For each variable in the program. S and s are not the same. All necessary modifications are made in the memory cell. The name of variable B remains unchanged during all these events. Constant 3 sets its value to the program. Line 2: The program refers to variable A by the name. Variable B gets new value 33 from the program.
The program has found an expression to the right from the equality sign and is trying to calculate it. Variable A gets value 7 from the program.
A constant and a variable in a program. The value of a variable can be changed during the program operation. Constant 33 sets its value to the program. Executing these lines. Constant 7 sets its value to the program. It is easy to notice that variable B gets value 10 at a certain stage of the program execution. Line 1: Variable A sets its value 7 to the program.. The integer part and the fractional part are made of digits from 0 to 9.
An example of using a variable of double type in a program: What type should be the same variable A if the total amount of orders opened within a week is 10? Values of int type must be within the range from -2 to 2 An example of using a variable of int type in a program: If the value of a constant or a variable is beyond the above range.
Like normal objects of life have certain types characterizing their color red. The values can be positive or negative. They must begin with 0x or 0X and take positive or negative values: Example values of this type can be any values that have a fractional part: Hexadecimal values can consist of Latin letters from A to F or from a to f.
The current value of a variable can have a fraction part consisting of only zeros.
Sometimes you can face problems designating variables when writing your code. The values of constants and variables of int type take 4 bytes of the memory of a computer. Similar limitations can be found in most of modern algorithmic languages..
The separating point must also be shown in the constant record in the program: The amount of significant figures after decimal point can reach the value of In MQL4. Let us consider a small example: A program has opened 12 orders within a week. Speaking about data type. Data Types. It is important that that value of this variable is real by its nature. This type includes values that are integer by their nature. The following values are integers.
There are 2 types of integer values: Decimal values can consist of digits from 0 to 9 and be either positive or negative: Amounts representing such objects as events can also be integers only.
Boolean logical values. Type int The values of int type are integers. In the computer memory. What is the type of variable A that considers the mean amount of orders daily opened by this program? The answer is obvious: MQL4 uses data of different types. It is a constant or a variable..
The length of a string constant ranges from 0 to characters. The value itself is the totality of characters framed by the quotes. Quotes are used only to mark the beginning and the end of a string constant.. This combination is not displayed in the text.. They are not the values of color.. Representation of the values of color type as integers and as hexadecimal literals is very user-friendly. The values of color constants and variables can be represented as one of three kinds: Literals The value of color type represented as a literal consists of three parts representing the numeric values of intensity of three basic colors: If there is a necessity to introduce a double quote ".
It is easy to imagine what a variable or a constant of color type may mean. Integer Representation Integer representation is recorded as a hexadecimal or a decimal number. The meaning of 'color' blue. An example of using a variable of string type in a program: They represent the decimal value of a hexadecimal integer representation. Thompson Textbook on Physics V V. A string-type value is recorded as a set of characters placed in double quotes not to be mixed with doubled single quotes!
V Textbook on Biology V. The value of this kind starts with 'C' and is quoted by single quotes. It may seem to be a bit unusual.. The values of constants and variables of bool type take 4 bytes in the computer memory. These values cannot be attributed to either of the types considered above since they are not numbers at all. Like the value of an integer constant is a number. The internal representation is a structure of 8 bytes. Constants and variables of bool type are characterized through that they can only take 2 possible values: The majority of modern text and graphics editors provide information about the intensity of red..
The numeric values of RGB intensity range from 0 to and can be recorded both decimally and hexadecimally.. You have just to select a color in your editor and copy the values found in its description to the corresponding color value representation in your code. The string value as such is the set of characters. The quotes are used only to mark the value borders.
If the length of a string constant exceeds its maximum. List of Pupils 1 2 3. The value of string type is recorded as a set of characters framed by double quotes: An example of using a variable of bool type in a program: Decimal constants are not directly reflected in RGB. V The values in right columns can be of only 2 types: A combination of two characters.
In our everyday life.. V Textbook on Chemistry V V. Color Names The easiest way to set a color is to specify its name according to the table of web colors. An example of using such a variable in a program: Color parameters for literal and integer representation of the constant color value can be taken in modern editors. The range of values: The values of this type can be used in programs to analyze the moment of beginning or ending of some events. The type of a variable is declared at the first mentioning of the name of this variable.
Variables can also be initialized within operators: A value represents the amount of seconds elapsed from Every variable can be initialized. The name of a variable has no relation to its type.. A variable can be declared in a single line: It means that the variables listed above will be considered by the program as variables of integer type. Variable Declaration is the first mentioning of a variable in a program..
At declaration of a variable. As calculations progress in the program. The type of declared variables will not be changed during execution of the program. The values of constants and variables of datetime type take 4 bytes in the computer memory. The type of variables is never specified anywhere in the subsequent lines of the program.
A name given to a variable can also be used for variables of any types in different programs. When it is mentioned for the second and all subsequent times. Box and Comm.
Examples of Variable Declaration and Initialization Variables can be declared in several lines or in a single line. It is allowed to use truncated values: Before a variable starts to participate in any calculations.
It is allowed to declare several variables of one type simultaneously. The type of a variable can be declared in single lines or operators. The constant is framed in single quotes and starts with 'D'. The constants of date and time can be represented as a literal line consisting of 6 parts that represent the numeric value of year. If no initial value is set explicitly. An example of using a variable of datetime type in a program: May In one line. In the course of execution of the program.
Variable Initialization means assignment to it a value corresponding with its type at its declaration. Example of variable declaration in a single line. The type will not be specified anymore for the second and all subsequent times when the variable is mentioned. It is allowed to declare and initialize variables in operators..
Variable initialization in the header of a compound operator. Example of variable initialization. The type of variables is declared only once. Here we will get into possible relationships between these data square meters still cannot be added to apples. Operations are used in operators see Operators. The Notions of 'Operand'. The possibility to use an operation is determined by the properties of operators if the operator's properties allow you to utilize this specific operation.
Operation symbol is a preset character or a group of characters that order to execute an operation. Expression is a sequence of operands and operation symbols..
Operations and Expressions. Boolean logical operations. In the preceding section of the book. Only in operators their use makes sense and is realized in a program. Arithmetical Operations The following symbols belong to arithmetical operations symbols: Operation is an action made upon operands. It is prohibited to use operations outside operators.
The value of the expression contains 1 in all places. TRUE 1. The bitwise operation OR of the binary representations of x and y. This right shift is logical. The following operations belong to bitwise operations: One's complement of the value of the variable. FALSE 0. The type and value of the result coincide with the type and value of the right expression.
Operations on Similar Operands mk: The binary representation of x is shifted by y places to the right. The binary representation of x is shifted by y places to the left. It contains 0 in all other places. Functions and in the chapter named Operators Function Call Function call is described in all details in the section of Function Call.
All side effects of calculations in the left expression can only occur before the right expression is calculated. The value of the expression contains 1 in the places. The bitwise operation AND of the binary representations of x and y. The value of the expression contains 1 TRUE in all places. Comma Operation Expressions separated by commas are calculated left to right. Pete went 3 times. So we can code the solution.
Pete's passages as variable Y. We will get the similar answer for the difference between the values How many more pencils does Pete have than John? To be sure that this is really so. In our case. Pete has 3 pencils. John has 2 pencils. Looking at the symbols of operations. Let us denote the number of John's pencils as variable A and the number of Pete's pencils as variable B. How many times did boys go to the blackboard in total?
John went 2 times.
How many pencils do these boys have?: Problem In this example. Problem 2. The solution of this problem can be written as: Pencils are things. Let us denote John's passages as variable X. Pupils go to the blackboard and answer in class. The value type of the expression: The answer will be: At one corner of the house.
At another corner of the same house. Any other arithmetical operations with variables of string type are prohibited: It is easy to code a program that would give us the necessary answer: How many in total?. How many in total? As far as the formal logic is concerned. Of course. The values of string type are the values of character type. The internal representation of constants and variables of int.
The values of string type are represented in the computer memory as a sequence of characters. With the same degree of hopelessness as far as normal reasoning is concerned we can ask either: Problem 4.
If we add together variables of string type. ArcticHairdressing Saloon We obtained a not-much-to-look-at. The values of double type are represented in the computer memory as real numbers. What is written on the house?
If you want to solve both problems above correctly in MQL4. The variables of int. Before execution of operations all but assignment operations. The value of constants and variables of string type is a set of characters Fig. Data types. Let's consider some problems that deal with typecasting.
It stands to reason that events cannot be added together with things. Problem 5. Problem 3. The values of int. A similar situation occurs.
Solution 4. Please note: During execution of the assignment operation: There can be two solutions for it. No questions come up at initialization of variables: A possible solution for this problem: The final result of calculations and manipulations is as follows: The value of the integer variable F is integer 5.
The values of bool. In the expression: In compliance with the rule of implied typecasting. The value of this expression is real number 5. The result of calculations the value of the double-type variable F is real number 5.
We mentioned above that the values of the variables of int. Representation of different data types in the computer memory. The calculations have been performed according to the second part of the implied typecasting rule. Let's now find a solution for Problem 5. Calculation of the result of int type: This is an error that will be detected by MetaEditor at creation of the program at compilation.
According to the rule of implied typecasting. Features of Integer Calculations Integers are known to be the numbers without a fractional part.
At the next stage. If you calculate any values. The rule of integer calculations consists in that the fractional part is always discarded. Typecasting with lowered priority is allowed only for numeric values. When the assignment operation is executed.
Order of Operations mk: As a result. In the above example. The type of the resulting value to the right of the assignment operation sign will be string. If you add them together or subtract them.. This value zero will be assigned to variable Z at the end. This solution is wrong: N consists of two factors. The value of an expression is calculated according to the priorities of arithmetical operations and left to right.
In such a case.
This expression contains two operations multiplication and division of the same rank. In the section of Operators. As is easy to see.
The result of calculation is intuitively expected to be the same. To demonstrate this. Let's consider the calculating order for an expression in the following example: N and D. When calculating expressions containing integers. Problem 6. The summand 2.
The expression in parentheses. Particularly unlike the rules accepted in mathematics. If we replace these variables with constants with the same values.
In order to calculate the expression to the right from the equality sign. After that. If we calculate the values of expressions composed of the operands of int type. X and Z.
The result is integer 0 zero. According to the above rules. Such troubles do not occur in calculations using real numbers. Specific properties of operators are considered in all details in the corresponding sections of chapter Operators in this book.
Any program contains operators. Types of Operators There are two types of operators: Compound Operators Compounds A compound operator consists of several simple ones separated by character ". For a computer. Every simple operator ends with character ". Operator as such is just a record. Operator does not have any levers. The presence of a closing brace marks the end of a compound operator.
In order to be able to use several operators where only one is expected to be located. Operator is a part of a program.
Specific Properties of Operators There are several kinds of operators. Properties of Operators There are two kinds of properties of operators. The list of operators in a compound is separated by braces. One operator may take several lines. The closest analogy to 'operator' is a sentence. We will only say here that all types of operators have their own properties that are typical only for their type and are not repeated in any other types.
If your PC has executed some transformations of data according to the instruction contained in an operator. It starts with the conditional operator if expression followed by a compound. Several operators may be placed in one line.
The sooner and more properly a programmer learns what operators are and how they are applied in a program. Common Property of Operators All operators have one common property. Coding seems to be impossible for the person that has not completely learned this term. Examples of simple operators: Character ".
Using this separator. Just as normal sentences compose the text of a story or of a novel. An exemplary use of a compound in a conditional operator. Operators of each type have their specific properties. This is why. The compound operator contains a list of executable operators. We can say that operator is an instruction containing the guide to operations the description of an order. The body of a compound operator is enclosed in braces.
An exemplary block of operators: Examples of compound operators: Every compound operator ends with a closing brace. Requirements for Operators mk: This use is fully acceptable. This is a rare. This is the programmer who decides whether to enclose operators in braces or not.. Compound operator.
They can only be used to inform the programmer about the relations between the variables. Operators cannot be executed for no reason or by exception. No operator may be composed beyond these rules. Any assignment operator gives the machine the following order.
Recording the numeric value 5 in the memory cell of variable Y. Operators are executed in the order. Calculate the value of the expression to the right of the equality sign and assign the obtained value to the variable to the left of the equality sign.
Passing on the next operator line 2. We'll solve a simple linear equation system and compare the representation of some mathematical calculations in a normal text and in a program code.
Operator formats are in all details considered in the corresponding sections in chapter Operators of this book. Let's follow the computer during execution of operators of the second solution. A normal text allows the notes to be placed in any sequence. If the program contains an operator composed against the format rules. All operators without any exceptions represent precise instructions that allow no ambiguities.
You should understand the phrase "operator format" as a set of format rules typical for the given type of operator. Operators composing a compound operator are executed in the same way: Both operators in Solution 2 are the assignment operators. Writing and Execution of Operators: Examples The text of a program containing operators is not dissimilar in aspect to a normal text or a mathematical notation.
A normal text on a sheet of paper: MQL4 Tutorial Page 3 of 4 Operators must be written in the text of a program according to the format rules how they must be represented in a code. This means that both simple and compound operators are executed just one by one like the lines in poems: A text in a program: The direction of operators execution is accepted as left to right and downwards.
Each type of operator has its own format. This is why there is no memory cell for placing the numeric value of the expression calculated to the right of the equality sign. If there are several operators in one line. Referencing to the right part of the operator the right part is located between the equality sign and the semicolon.
As an example. This means that the program containing the wrong operator cannot be used. The notes given in Solution 1 represent some dependences in paper form.
Solution 1. Order of Operators Execution A very important characteristic of any program is the order of operators execution in it. We have an equation system: The computer has detected that the right part of the operator contains a numeric value.
Problem 7. Passing on the operator line 1. Operators in a program are assigned for other purposes. MetaEditor will produce an error message at compilation..
Performing steps by the computer is execution of the first operator line 1. In order to code a workable program. Referencing to the right part of the operator. Calculating the numeric value of the right part of the operator 5.
The machine will store this value of variable X until the variable X occurs in the left part of the equality sign in another assignment operator. Execution of this assignment operator results in that the variable X gets the new value 4. Only meaningful solutions can be included into a program. Performing steps by the computer is execution of the second operator line 2. In this operator.
The computer has detected that the right part of the operator contains an expression. In the preceding example. They can help a mathematician to find a proper solution.