English Русский 中文 Español Deutsch 日本語
Linguagem MQL4 para Iniciantes. Introdução

Linguagem MQL4 para Iniciantes. Introdução

MetaTrader 4Exemplos | 22 fevereiro 2016, 09:38
12 105 0
Antoniuk Oleg
Antoniuk Oleg

Introdução

Esta sequência de artigos destina-se para operadores que não sabem nada sobre programação, mas desejam aprender a linguagem MQL4 o mais rápido possível em pouco tempo e sem dificuldades. Se você tem medo de frases como "orientação de objetos" ou "três matrizes dimensionais", este artigo é o que você precisa. As aulas são projetadas para fornecerem resultados rapidamente. Além disso, a informação é entregue de forma compreensível. Não iremos aprofundar na parte teórica, mas você vai ganhar o benefício prático já a partir da primeira aula.



Conselho

Se você nunca trabalhou com programação antes, você pode achar difícil entender o significado de alguns casos na primeira leitura. Leia lentamente o texto mais de uma vez e pense a respeito de cada frase. Finalmente, você vai entender tudo, pois não há nada realmente difícil. Não avance sem entender as informações anteriores. Estude exemplos de código. Escreva seus próprios exemplos com base no que você já entendeu.



Primeiro contato com MQL4

Antes de tudo, veremos o que você pode fazer usando esta linguagem. Ela é utilizada para criar scripts, indicadores personalizados, expert advisors e bibliotecas:


  • Scripts são sequências de comandos, programas que operam apenas uma vez a seu pedido. Eles podem substituir as operações que você executa todos os dias no trading. Por exemplo, quando você abre indentações. Eles também podem executar funções específicas, por exemplo, analisar gráficos e gerar informação estatística.
  • Indicadores personalizados são indicadores técnicos escritos para integrarem indicadores integrados. Eles desenvolvem gráficos ou outras informações visuais. Ao contrário de scripts, indicadores personalizados operam em cada mudança de preço, isto é, em cada crédito. O que será mostrado pelos indicadores depende apenas de você. Pode ser uma carta do seno inútil ou algo que irá ajudá-lo a orientar-se na situação do mercado. Por exemplo, se você sabe exatamente em que circunstâncias o mercado experimenta tendências e quando ele está estável, você pode escrevê-los como indicadores.
  • Expert advisors são sistemas de trading mecânicos destinados a qualquer instrumento financeiro. Como indicadores personalizados, expert advisors operam a cada crédito, mas ao contrário de indicadores, eles podem informá-lo sobre a situação do mercado (por exemplo, dar alguns conselhos para comprar ou vender) ou negociar por si mesmos, sem sua ajuda. Um terminal suporta o teste de estratégias que permite a avaliação rápida da rentabilidade de seu expert advisor. Você descreve a sua estratégia em linguagem MQL4 enquanto um terminal friamente segue todas as suas instruções.
  • Bibliotecas são conjuntos de funções para executar tarefas específicas. Por exemplo, um de seus advisors pode usar funções matemáticas especiais para decidir quando vender e quando comprar.

Neste artigo, vamos aprender a escrever scripts comuns. Um programa especial, MetaEditor 4 é utilizado para este propósito. Para iniciá-lo, pressione a tecla F4 no terminal aberto do cliente. Para criar um novo script, clique no botão Arquivo-> Nono no menu do MetaEditor 4 ou use os botões Ctrl+N:





Na janela que aparecer, escolha o que você irá criar. Escolha Script e clique em Avançar:


Na janela seguinte, imprima o nome do script no campo Nome. Adicione seu nome no campo Autor e seu e-mail ou site no campo Link. Depois, clique OK:



Depois disso, você verá uma nova janela com a qual você vai trabalhar a maior parte do tempo. Ela mostra o texto original:

Por favor, note que mesmo um script vazio que não está em operação contém um código. Agora está tudo pronto para começar a programação. Mas, infelizmente, você não tem ideia de como isto deve ser feito. Vamos tentar melhorar a situação.


Código fonte, Compilação e outros

Você deve entender um assunto importante. O que é escrito no MetaEditor é um código fonte. Isto é, ele é uma sequência de comandos que um terminal seguirá descendentemente um após o outro. Mas o terminal não pode seguir os códigos fonte. O código fonte é compreensível para você, mas não para o MetaTrader. Para tornar o código fonte compreensível para o terminal, ele deve ser "traduzido" para uma "linguagem" adequada. Para fazer isto, pressione o botão F5 no MetaEditor. Depois disso o código fonte será compilado em um arquivo run. Compilação é o processo de "traduzir" um código fonte escrito/compreendido por você em um arquivo especial que seja compreensível e executável pelo MetaTrader. Confira você mesmo. Crie um novo script chamado "Test1" e salve-o, mas não compile-o. Abra o terminal e, usando "navegador", insira a pasta "Scripts". Você vê, não há script chamado "Test1":




Agora compile o script (teclaF5):



Entre no terminal novamente. Existe um script chamado "Test1":



Clique duas vezes sobre o nome do script no terminal do Navegador e abra-o. Mas nada acontece pois o script está vazio.

Você já deve ter entendido o processo de escrita do script: você escreve o código fonte, compila ele, abre o script no terminal, olha o resultado, altera o código específico, compila, assiste... e assim por diante até chegar ao resultado necessário.


Onde os Scripts devem ser escritos?

Você já viu que um script vazio contém um código específico. Mas onde você deve escrever o código fonte que vai funcionar? Ele deve ser escrito entre as linhas int start(){ e return(0);}, como demonstrado na imagem:



Escreva aqui tudo o que vou lhe oferecer, tudo isso funcionará. Mais tarde veremos em detalhes o que essas linhas significam.

Variáveis

O que é uma variável? Tente responder esta pergunta a si mesmo, vou ajudá-lo. Qual sua idade? Quantos anos você terá daqui a cinco anos? Agora veja: sua idade é uma variável. Sua idade muda com o passar do tempo, como qualquer outra variável. Isto é, a primeira característica de uma variável é a sua alteração com o decorrer do tempo. Outro exemplo: qual era a sua altura quando você tinha cinco anos? Provavelmente, muito menos do que agora. Altura é outro exemplo de uma variável. Mas há uma diferença importante. Note que a idade é calculada em números inteiros. A altura é melhor avaliada em decimais ("número de ponto flutuante"). Idade: 20 anos, 30 anos. Altura: 1,80 metros, 1,95 metros. Esta é uma característica muito importante: cada variável pertence a um determinado tipo. Vamos ver que outros tipos de variáveis existem. Você pode descrever em figuras muitos parâmetros, mas como devemos descrever um texto? Os tipos especiais de strings são usados para este propósito. Tais tipos de variáveis tipos contém apenas linhas. Agora vamos ver, como criar e descrever uma variável na linguagem MQL4. Exemplo:

int age = 25;

Aqui vemos uma variável tipo inteiro (int - inteiro). Int é uma palavra chave da linguagem MQL4 que mostra que nós usamos um tipo de número inteiro. Então nós escrevemos "idade" - é o nome de uma variável, ou seja, uma palavra, usando o que vamos chegar ao significado, armazenada nessa variável. Depois disso, atribuímos valor 25 à variável, usando o símbolo "=". Depois de cada instrução ";" deve ser colocado. Note que a declaração e a inicialização de qualquer variável chega à variável da seguinte forma:

[ variável tipo] [ variável nome] = [ variável valor];

A propósito, não é necessário atribuir um valor a uma variável (inicializar), você poderia escrevê-lo assim:

int age;

Mais um exemplo:

double height = 1.95;

Aqui declaramos uma variável chamada "altura", que armazena valores de tipo duplo (número de ponto flutuante, decimal) e atribui um valor 1,95 usando o operador "=".

Agora vamos ver uma variável string:

string name = "Janet";

string é um tipo de variável, nome é um nome variável, "Janet" é um valor variável. Note que o valor da variável do tipo string é colocado entre aspas (").

Há um outro tipo muito útil de variável, a variável booleana. Variáveis deste tipo podem aceitar apenas dois valores: Verdadeiro ou Falso. Exemplo:

bool trend = false;

Agora você deve se lembrar de algumas coisas fáceis. A linguagem MQL4 é uma linguagem confiável, ou seja, é muito importante se você escreve um código em MAIÚSCULAS ou minúsculas. Por exemplo, se você declarar diversas variáveis com nomes idênticos, mas de casos diferentes, você obterá variáveis absolutamente diferentes:

double HIGHTPRICE;
double hightprice; 
double HightPrice; 
double hightPrice;

O código mostrado acima irá criar quatro variáveis absolutamente diferentes. Também, por favor, note que todas as palavras-chave da linguagem MQL4 são escritos em letras pequenas.

Próximo exemplo:

DOUBLE hightPrice1;
Double hightPrice2;

O código acima mencionado não vai funcionar, porque a palavra "double" não será aceita como uma palavra-chave da linguagem MQL4. Outro fato a considerar é que os nomes de variáveis não podem começar com números ou caracteres especiais (*, &,,%, $). Por exemplo:

double 1price;
double %price;

Mais um elemento de linguagem é um comentário. Se você escrever "//" antes de uma linha, tudo será comentado. Isso significa que, durante a compilação, será ignorado. Por exemplo:

// this is a comment 

Agora você pode ver que um código de script vazio inclui muitos comentários de caráter informativo. Comente seu código. Às vezes, pode ajudá-lo a economizar muito tempo.

Trabalhando com Variáveis

Agora veremos o que podemos fazer com as variáveis depois que as declaramos. Vamos ver um exemplo simples:

double a = 50.0;// declare a value with a floating point and
                // assign the value 50 to it
double b = 2.0; 
double c;   

c = a + b;      // assign to the variable c sum of variables
                // a and b. Now the value is equal to 52. Like after
                // any other instruction put a semicolon (“;”) 

c = a - b;      // diminution, c = 48 
c = a*b;        // multiplication, c = 100 
c = a / b;      // division, c = 25   
c = (a + b)*a;  // place the operations that should be performed
                // first inside the brackets. In our case 
                // first we get the sum of a and b 
                // after that this sum will be multiplied by a and assigned to c

c = (a + b) / (a - b); // if there are several operations in brackets, 
                // they will be performed  
c = a + b*3.0;  // according to mathematic rules first you will get 
                // multiplication b and 3, and then the sum

Se você precisa executar uma operação com uma variável e atribuir um resultado para ela, por exemplo, adicionar 5, faça de uma das seguintes maneiras:

int a = 5;
a = a + 5;  // add 5 
a += 5;     // analogous 
a = a*5;
a *= 5;     // multiply a by 5 and assign to it 
a /= 5;     // divide and assign

Se você quiser adicionar ou subtrair 1, utilize o seguinte método:

int a = 5;
a++;  // add1, it is called increment
а--;  // subtract 1, it is decrement

É tudo ok, mas trabalhar com esses scripts que você só pode imaginar, tudo deve correr corretamente pois nada acontece na tela.
É por isso que é conveniente mostrar os resultados. Para este efeito, há uma função integrada MessageBox().

MessageBox()

Uma função é um conjunto de instruções que aceita os parâmetros e, dependendo deles, mostra o resultado. No nosso caso a função MessageBox() aceita dois parâmetros: primeiro - texto da mensagem, segundo - texto do título. Aqui está um exemplo:

MessageBox("Hello, World! There is some text.","caption");

Para executar uma função, primeiro escreva o nome da função. Não se esqueça do assunto! Em seguida, abra parênteses e escreva os parâmetros usando vírgulas. No nosso caso, parâmetros são um tipo de string. Como sabemos, todas as linhas são escritas dentro de aspas("). Como em qualquer instrução, coloque um ponto e vírgula no final. Para entender corretamente vamos ver a imagem. Ela mostra como o código e os resultados estão ligados:

Claro, está tudo bem. Mas como podemos mostrar variáveis de outros tipos? Simples - faça uma nota mental:

int a = 50; 
int b = 100;   
MessageBox("It is very simple. a+b=" + (a + b), "a+b=?") 

Como resultado, temos:

Como você já deve ter adivinhado, o MQL4 é projetado de modo que, quando tentamos adicionar outro tipo de número a uma linha, ele transfere automaticamente os números em linhas e combina-os. É uma propriedade realmente maravilhosa! Você pode fazer essas operações também com variáveis de string:

int a = 50; 
int b = 100; 
string str1 = "a + b =";   
str1 += a + b; // now str1 = "a + b = 150"   
// now use the variable str1 as 
// a first parameter
MessageBox(str1, "a + b = ?");

Agora você sabe como desenhar dados diferentes usando a função MessageBox(). Mas qual é o motivo de mostrar os resultados de operações matemáticas simples? Não precisamos do MQL4 simplesmente para encontrar somas e multiplicações, não é?


Matrizes

Não fique com medo. É muito fácil. Veja. Suponha que você queira lembrar de cinco preços. O que devemos fazer? Bem, nós podemos fazer isso:

double price1 = 1.2341; 
double price2 = 1.2321; 
double price3 = 1.2361; 
double price4 = 1.2411; 
double price5 = 1.2301;

Recebemos cinco variáveis, cada uma possui um tipo de dados e descreve um parâmetro - preço. Podemos ir de outra forma, usando uma matriz. Uma matriz é um conjunto de variáveis, que diferem em índices, mas têm um nome. Assim que declaramos uma matriz de cinco elementos:

double price[5];


Forma comum:

(matriz tipo) (matriz nome) [número de elementos];

No nosso caso: tipo da matriz - duplo, nome - preço, número de elementos - 5. Vamos ver como podemos nos referir aos elementos da matriz:

double price[5];   // declare an array of 5 elements

price[0] = 1.2341; // refer to the first element of the array and 
                   // assign a price to it. Note 
                   // that the index of the first element starts with 0 
                   // It is an important feature,
                   // you should get used to it.   

price[1] = 1.2321;  // refer to the second element 
price[2] = 1.2361;  // and so on 
price[3] = 1.2411; 
price[4] = 1.2301;

Podemos realizar quaisquer operações com os elementos da matriz, como com variáveis comuns. Na verdade, os elementos da matriz são variáveis comuns:

double price[2];   
price[0] = 1.2234; 
price[1] = 1.2421;   
MessageBox("Middle price is " + (price[0] + 
           price[1]) / 2.0,"middle price");

Ao declarar uma matriz podemos atribuir valores iniciais para todos os elementos:

double price[2] = {1.2234, 1.2421};

Nós simplesmente enumeramos os valores iniciais dos elementos separados por vírgula nas chaves. Nesse caso, você pode deixar um compilador automaticamente colocar o número de elementos, em vez de escrevê-lo você mesmo:

double price[] = {1.2234, 1.2421};

Sem dúvida, tudo isso é ok, mas ... Infelizmente, é inútil. Devemos de alguma forma chegar a dados reais! Por exemplo, preços atuais, tempo, quantidade de dinheiro livre e assim por diante.


Matrizes integradas ou incorporadas e Variáveis

Claro que não podemos fazer isso sem dados reais. Para acessá-los, devemos simplesmente nos referir a uma matriz integrada correspondente. Existem várias dessas matrizes, por exemplo:

High[0];   // refer to the last maximal price, 
           // that the bar has achieved in the current timeframe 
           // and current currency pair. Currency pair and 
           // the timeframe depend on the chart, on which you 
           // have started a script. It is very important to remember! 

Low[0];    // minimal price of the last bar 
           // in the current chart. 

Volume[0]; // value of the last bar in the current chart.

Para entender as matrizes integradas e os índices corretamente, veja isso:

Veja que o índice de última barra (número) é 0, ao lado da último é 1 e assim por diante.
Há também variáveis comuns integradas. Por exemplo, Bars mostra o número de barras no gráfico atual. É uma variável comum, mas foi declarada antes de você e fora de seu script. Esta variável sempre existiu, assim como outras matrizes integradas e variáveis.


Ciclos

Suponha que você decidiu calcular um valor médio das máximas de preços de todas as barras no gráfico. Para este efeito, você alternativamente adiciona cada elemento de uma variável, por exemplo:

double AveragePrice = 0.0;   
AveragePrice += High[0];
AveragePrice += High[1]; 
AveragePrice += High[2]; 
AveragePrice += High[3]; 
AveragePrice += High[4];   // ... and so on
AveragePrice /= Bars;

Posso dizer apenas o seguinte: Pode funcionar, mas é absurdo. Para tais fins, há ciclos. Observe que todas as operações são absolutamente semelhantes, apenas as alterações do índice de 0 para Barras da variável-1. Teria sido muito mais conveniente, de alguma forma, determinar um contador e usá-lo para se referir aos elementos da matriz. Podemos resolver essa tarefa usando ciclos:

double AveragePrice = 0.0;   
for(int a = 0; a < Bars; a++)
{     
    AveragePrice += High[a];
}

Vamos ver cada linha:

double AveragePrice = 0.0; // everything is clear
// this is a cycle.
or(int a = 0; a < Bars; a++)

Veja, o ciclo começa com a palavra-chave para. (Existem outros tipos de ciclos, por exemplo enquanto, mas não vamos aprendê-los agora). Entre aspas ponto ponto e vírgula contador separado, condições de funcionamento do ciclo, contador de aumento de funcionamento. Em um caso geral, pode ser apresentado desta forma:

for(declaration of a counter; the cycle operation conditions;
   counter changes)
  {
    // the source code, that will be repeated is in braces,
  }

Vamos ver cada fase do ciclo de declaração mais de perto.


Declaração de contagem: o tipo int é utilizado para contagem. O nome da variável contagem não importa. Você deve inicializar o valor primário, por exemplo, 0.


Condições de funcionamento da contagem: isto é fácil. Aqui você determina uma condição, e se for verdadeira, o ciclo continua. Caso contrário, o ciclo é encerrado. Por exemplo:

a < Bars

É claro que o ciclo vai continuar enquanto a variável de contagem for menor que as Barras variáveis. Suponha, Barras variáveis = 10, em seguida, em cada movimento ao longo do ciclo, a variável vai aumentar em 1 até que ele atinja 10. Depois disso, o ciclo pára.

Alteração do contador: se não alterarmos o contador (no nosso caso aumentá-lo)? O ciclo nunca vai acabar, porque a condição nunca será cumprida. Para uma melhor compreensão do significado do ciclo, eu escrevi um código que irá realizar um ciclo descrevendo comentários:

// the cycle:
// double AveragePrice=0.0;
//
// for(int a=0;a>
// {
//   AveragePrice+=High[a];
// }
//
// will be performed in this way:
//

double AveragePrice=0.0;

int a=0;

AveragePrice+=High[a];
a++;                    // now a=1, suppose Bars=3.
                        // then the cycle goes on, because Bars > a 

AveragePrice+=High[a];
a++;                   // a=2

AveragePrice+=High[a];
а++;                   // a=3

// the conditions is not fulfilled any more, so the cycle 
// stops, because a=3 and Bars=3

Agora você deve entender como funciona o ciclo. Mas você deve saber mais alguns detalhes.

As condições de funcionamento do ciclo podem ser diferentes. Por exemplo:

a>10    // the cycle works while a>10
a!=10   // the cycle works while a is not equal to 10
a==20   // while a is not equal to 20
a>=2    // while a is more or equal to 2
a<=30   // while a is less or equal to 30

O contador pode ser modificado de uma maneira diferente. Por exemplo, você não tem que aumentá-lo cada vez de um em um. Você pode fazer ida seguinte maneira:

a--     // the counter will each time decrease by 1 
a += 2  // the counter will each time increase by 2

Ao lado, você pode colocar o contador alterado dentro do ciclo. Por exemplo:

for(int a=0; a<Bars;)
 {
   AveragePrice+=High[a];
   
   a++; // the counter changes inside the cycle body
  }
>

Também não é necessário declarar o contador variável no ciclo. Você pode fazer isto de outra forma:

int a = 0;
 
for(;a < Bars;)
 {
   AveragePrice += High[a];
 
   a++; // the counter changes inside the cycle body
 }

Se o corpo do ciclo conter apenas um operador, como este:

for(int a = 0; a < Bars; a++)
 {
   AveragePrice += High[a];
 }

então, não é necessário colocar chaves

for(int a = 0; a < Bars; a++)
    AveragePrice += High[a];


É tudo sobre ciclos agora. Existem outros tipos de ciclo, mas vamos discuti-los na próxima lição. Agora você deve saber quando usar os ciclos e lembrar da sintaxe. Tente escrever vários ciclos que mostrarão os valores do contador através da função MessageBox(). Tente escrever um ciclo descontínuo e veja o que vai acontecer depois da partida.


Condições

Há mais uma coisa importante que você vai usar sempre - condições. Nossa vida contém uma série de condições e ações que seguem estas condições. Muitas vezes pensamos pela cláusula condicional. Por exemplo: "Se eu tiver tempo suficiente, eu vou ler este livro. Se não, então é melhor ler uma revista". Você pode gerar centenas de tais condições e ações. Mas como podemos escrevê-los em MQL4? Aqui está um exemplo:

// of course the conditionsn should be written in MQL4
if( I have enough time )   
  {  
    // here we place any actions, directions in MQL4
    will read this book; 
  }
// if the first condition is not fulfilled, 
// the second is fulfilled
else   
  {
    read a magazine;  // code
  }

Agora você deve entender a sintaxe das condições. Vamos ver condições totalmente escritas em linguagem MQL4:

int a = 10;
int b = 0;
 
if(a > 10 )
  {
    b = 1;
  }
else
  {
    b = 2;
  }
 
MessageBox("b=" + b,".");

Tudo é bem fácil. O que é o valor de b depois do preenchimento? Claro que b=2, porque a condição a > 10 não está preenchida. É fácil. Além disso, não é necessário usar a palavra-chave outra:

int a = 10;
int b = 0;
 
if(a > 10)
  {
    b = 1;
  }

Neste caso, se a condição não for preenchida, o bloco de código que segue a condição entre chaves é omitido. No nosso caso, após preencher b = 0. Também, preste atenção na maneira que as condições são construídas. Sabe-se que diferentes tipos de variáveis podem adquirir valores diferentes, por exemplo:

  • int - inteiros (1, 60, 772);
  • duplo - com um ponto flutuante (1.0021, 0.221);
  • string - apenas linhas ("palavra", "Algum texto.");
  • booleano- apenas verdadeiro ou falso (verdadeiro, falso).

Portanto, a conclusão é: em condições de comparar variáveis apenas com os valores, elas podem aceitar, por exemplo:

int Integer=10;
double Double=1.0;
string String="JustWord";
bool Bool=true;
 
if(Integer<10) // the condition is correct
{
  MessageBox("It works!","Really!");
}
 
if(Double!=1.0) // the condition is correct
{
   MessageBox("works!","Simple!");
}
 
if(String==10) // this is nonsense!! 
               // we found the variable 
               //String with string type, but 10 is int
{
   MessageBox("Wrong type","u can't c this");
}
 
if(String!="Word") // ok
{{
  // ...
}
 
if(Bool==true) // correct
{
  // ...
}

Observe que fazemos comparações utilizando os operadores condicionais (==,! =,>, <,> =, <=). Para string e tipos booleanos usamos apenas comparações == e !=.

Agora vamos conhecer o significado de inclusões. Sim, você pode usar condições em ciclos e ciclos em condições; é possível usar condições em outras condições e assim por diante. Por exemplo:


int a=0;
double b=0.0;
bool e;
 
if(a==0)
{
  for(int c=0;c<Bars;c++)
  {
     b+=High[c];
  }
  
  if(b>500.0)
  {
     e=true;
  }
  else
  {
     e=false;
  }
}

O exemplo seguinte mostra uma outra maneira de utilizar condições:


int a=0;
int result;
 
if(a==0)
{
  result=1;
}
else if(a==1)
{
  result=2;
}
else if(a==2)
{
  result=3;
}
else
{
  result=4;
}

Se no caso de uma condição padrão você tem uma outra condição, escreva-a após a palavra-chave "outra", como no código acima. Isto também funcionará. O número de outras condições é ilimitado. Se as ações da preenchimento da condição couberem em uma operação, você pode omitir as chaves como nos ciclos:

if(a==1)
{ 
  b=2;
} 

// or this way:

if(a==1)
  b=2;

Condições Complexas

Muitas vezes, uma condição não é suficiente. Você precisa comparar muitos parâmetros; aqui você tem que fazer com condições complexas. Por exemplo, se eu tiver tempo e paciência, vou aprender a linguagem MQL4. Podemos escrever como um código:

if((enough time) && (enough oatience))
{
     I will learn MQL4 language;
}

Isso significa que você deve primeiro dividir condições complexas em condições simples, coloque-as entre parênteses, e coloque && (logical AND) ou || (logical OR) entre elas. Se ambas condições forem verdadeiras, coloque && (AND). Se apenas uma condição for verdadeira, coloque || (OR). Aqui está um exemplo:

nt a=10;
int b=20;
 
if((a>5) && (b<50))
  MessageBox("Its works!","Yes");

Você pode colocar e combinar quantas condições desejar:

int a=10;
int b=20;
 
if ( ((a>5) || (a<15)) && ( b==20))
  MessageBox("It works, too!","Yes");

Todas juntas

Ao utilizar condições complexas e simples juntas, você pode escrever um código muito complicado. Quase todos os mecanismos podem ser descritos usando estas estruturas de linguagem MQL4. Se você entender como essas coisas simples são escritas e funcionam, você entenderá metade da MQL4 ou qualquer outra linguagem de programação! É muito fácil. Tudo que você precisa é praticar. Tente escrever o máximo de scripts que você conseguir para lembrar a sintaxe e pegar prática. Além disso, veja as amostras anexadas no arquivo examples.mq4 e tente compreendê-las.

Outras variáveis integradas e matrizes

Você já conhece matrizes como High[], Low[], Volume[] e Barras variáveis. Aqui estão mais algumas variáveis úteis:

double Open[]  // the array of prices of the current
               // chart opening bars
double Close[] // the array of prices of the current 
               // chart closing bars 

double Bid  // the last known buying price in 
            // the current currency pair
double Ask  // the last known selling price in
            // the current currency pair

Conclusão

Então, você aprendeu um monte de coisas novas. Provavelmente você tem uma confusão em sua cabeça. Leia o texto novamente, lembre-se, pratique e tente entender. Prometo que muito em breve tudo vai endireitar. O que está escrito neste artigo é a base de toda a linguagem MQL4. Quanto melhor você entender este material, mais fácil será aprofundar seus estudos. Direi mais, será muito mais fácil de estudar mais, porque o material, descrito neste artigo, é a parte mais difícil. Nos próximos artigos vamos estudar diferentes peculiaridades da linguagem MQL4 e veremos outras funções integradas que oferecem grandes possibilidades de programação.


Traduzido do Inglês pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/en/articles/1475

Arquivos anexados |
examples.mq4 (3.11 KB)
Escolha automatizada de corretora para um funcionamento eficiente do Expert Advisors Escolha automatizada de corretora para um funcionamento eficiente do Expert Advisors
Não é segredo que, para um funcionamento eficaz do Expert Advisors, precisamos encontrar uma corretora adequada. Este artigo descreve um sistema de abordagem para esta busca. Você vai se familiarizar com o processo de criação de um programa com dll para trabalhar com diferentes terminais.
Strings: Tabela de Símbolos ASCII e seus usos Strings: Tabela de Símbolos ASCII e seus usos
Neste artigo iremos analisar a tabelo de símbolos ASCII e o modo de utilização. Também vamos lidar com algumas novas funções com o princípio de funcionamento baseado nas peculiaridades da tabela ASCII, e, em seguida, vamos criar uma nova biblioteca que incluirá essas funções. Elas são muito populares em outras linguagens de programação mas não são incluídos na lista de funções embutidas. Além disso, vamos examinar em detalhes os conceitos básicos do trabalho com strings. Acho que você certamente aprenderá algo novo sobre este tipo útil de dados.
O mercado Forex pode ser previsto? Como criar uma estratégia de trading própria para este mercado? O mercado Forex pode ser previsto? Como criar uma estratégia de trading própria para este mercado?
Todo mundo que começa a trabalhar no Forex tenta responder estas questões. Mas nem todos encontram a resposta, mesmo depois de muitos anos de trabalho duro e pesquisas. Eu, pessoalmente, respondi esta questão, assim como muitas outras questões deste artigo. Como resultado dessas respostas, uma maneira de criar uma estratégia eficiente de trading foi determinada.
Como facilitar a detecção e recuperação de erros em um código Expert Advisor Como facilitar a detecção e recuperação de erros em um código Expert Advisor
No desenvolvimento do Expert Advisors, as questões de detecção e recuperação de erros de código são muito importantes. A peculiaridade é que um erro não detectado a tempo pode arruinar uma ideia preciosa de um sistema de trading já no estágio de seus primeiros testes. É por isso que qualquer desenvolvedor EA sensato leva esses problemas em consideração desde o início. Este artigo trata sobre algumas abordagens, ajudando nesta difícil questão.