English Русский 中文 Español Deutsch 日本語
Linguagem MQL4 para Iniciantes. Indicadores técnicos e funções integradas

Linguagem MQL4 para Iniciantes. Indicadores técnicos e funções integradas

MetaTrader 4Exemplos | 22 fevereiro 2016, 14:23
5 847 0
Antoniuk Oleg
Antoniuk Oleg

Introdução

Este é o terceiro artigo da série "Linguagem MQL4 para Iniciantes". Nos dois primeiros artigos, aprendemos os fundamentos da MQL4, a base do desenvolvimento futuro. Agora, vamos aprender a utilizar funções integradas e funções para trabalhar com indicadores técnicos. Estes últimas serão essenciais para o desenvolvimento futuro de seus Expert Advisors e indicadores. Além disso, veremos em um exemplo simples, como rastrear sinais de trading para entrar no mercado, assim, você entenderá como usar indicadores corretamente. E no final do artigo você aprenderá algo novo e interessante sobre a própria linguagem.


Funções matemáticas

Vamos começar com as funções matemáticas mais simples, mas que ainda são utilizadas e são de grande utilidade.


MathAbs

Função protótipo:

double MathAbs(double value)

É uma função muito simples que retorna o valor absoluto (módulo de número). Isso significa que, se você, por exemplo, usá-la para um número negativo, como resultado, você receberá um número positivo.
Exemplo de uso:

int a=-10;
double b=-20.0;
double c=7.0;
 
a=MathAbs(a); // now a is equal to 10
b=MathAbs(b); // now b is equal to 20.0
c=MathAbs(c); // the value of c will not change, for it was positive

MathCeil, MathFloor e MathRound

Protótipos das funções:

double MathCeil(double x)
double MathFloor(double x)
double MathRound(double value)

Estas três funções são muito semelhantes: todas elas completam o número para torná-lo um número inteiro. Porém, cada uma delas tem sua própria peculiaridade:
MathCeil arredonda de tal forma, que mesmo que tenhamos um milésimo de um número inteiro (por exemplo, 1.001), considera-se um número inteiro. Isto é, o número é arredondado para um valor mais alto. Por exemplo:

double a;
a=MathCeil(1.001);  // a=2.0, even one thousandth is rounded off to a whole number
a=MathCeil(1.999);  // a=2.0
a=MathCeil(-1.001); // a=-1.0, it is correct, because -1.0 is more than -1.001
a=MathCeil(-1.999); // a=-1.0, it is correct, -1.0 is more than -1.999

MathFloor faz o mesmo que Math Ceil, mas de forma completamente oposta. Isto é, se precisarmos arredondar para baixo um número positivo, ele simplesmente vai perder uma parte fracionária:

double a;
a=MathFloor(1.999); // a=1.0, no matter how large the fractional part is, it will be taken away
a=MathFloor(1.001); // a=1.0
a=MathFloor(-1.001); // a=-2.0, correct, because -2.0 is less than -1.001
a=MathFloor(-1.999); // a=-2.0, correct, -2.0 is less than -1.999

MathRound arredonda números em um familiar para o nosso caminho. Isto é, se uma parte fracionária é grande (0,5 ou mais), ela será arredondada para 1. Se a parte fracionária for pequena (inferior a 0,5), ela será arredondada para 0, ou seja, ela será simplesmente omitida. Exemplos:

double a;
a=MathRound(1.1);   // a=1.0, the fractional part is too small (0.1)
a=MathRound(1.57);  // a=2.0, the fractional part is enough to be rounded off to 1
a=MathRound(-3.1);  // a=-3.0 not enough
a=MathRound(-6.99); // a=-7.0 enough

MathMax

MathMin

Protótipos das funções:

double MathMax(double value1, double value2)
double MathMin(double value1, double value2)

Estas duas funções são muito semelhantes. Eles aceitam 2 argumentos e retornam de acordo com o maior e o menor. Exemplos:

double a;
a=MathMax(50.0,1.0);  // a=50.0
a=MathMin(10.0,12.0); // a=10.0

MathPow

Função protótipo:

double MathPow(double base, double exponent)

Esta função permite aumentar uma base de numeração para o expoente de energia. Exemplos:

double a;
a=MathPow(5.0,2.0);  // a=25.0, 5 to the power 2
a=MathPow(2.0,8.0);  // a=256.0, 2 to the power 8
a=MathPow(25.0,0.5); // a=5.0, you know, a number to the power 0.5 is its square root

MathSqrt

Função protótipo:

double MathSqrt(double x)


Obtenha a raiz quadrada utilizando esta função. Mas não tente obter a raiz quadrada de um número negativo. Neste caso, um zero será retornado. Exemplos:

double a;
a=MathSqrt(9.0);    // a=3.0
a=MathSqrt(25.0);   // a=5.0
a=MathSqrt(-256.0); // a=0.0, I explained

MathLog

Função protótipo:

double MathLog(double x)

Alguém lembra o que é um logaritmo? O Logaritmo de a para a base b é igual a energia necessária para aumentar b, para obter a. Os logaritmos para as bases e (número de Euler) - logaritmos naturais (LNA) e para a base 10 - logaritmo comum (Brigg) (lg a) são amplamente utilizados. Informações mais detalhadas sobre logaritmos podem ser encontradas em:
https://en.wikipedia.org/wiki/Logarithm
Assim, a função MathLog destina-se a tomar o logaritmo natural do número x. Não tente obter o logaritmo natural de números negativos ou zero. Nesse caso, você obterá -1. Exemplos do uso desta função:

double a;
a=MathLog(10.0);  // a=2.30258509
a=MathLog(0.0);   // a=-1.0, incorrect
a=MathLog(-10.0); // a=-1.0, incorrect

MathExp

Função protótipo:

double MathExp(double d)

Esta função retorna o número elevado à potência d. Muitos de vocês devem ter esquecido deste número.
e é uma constante matemática, base do logaritmo natural, irracional e do número transcendental. e = 2,718281828459045… Às vezes é chamado de Número de Euler ou Número de Napier. Desempenha um papel importante no cálculo diferencial e integral. Mais informações sobre o número de Euler em:
http://en.wikipedia.org/wiki/Eulerian_number
Se você indicar um grau muito grande, dará lugar ao excesso, zero será retornado. Quão grande deve ser o grau para que ocorra um erro? Vamos descobrir isto realizando uma pequena experiência:

double exponent=1.0; // here the degree value will be stored
double result=1.0;   // result, returned by the function
int i=0;             // number of cycle iterations
 
while(result!=0.0)   // while the result is not equal to zero (while there is no overflowing)
{
   result=MathExp(exponent); // remember the result
   exponent*=10.0;           // increase the degree
   i++;                      // the next iteration is over
}
MessageBox("i="+i); // result of the experiment

Acontece o seguinte: cada vez que tentamos chamar a função MathExp e com cada iteração o grau é aumentado 10 vezes até que finalmente obtemos o excesso e zero é retornado. Obtive o seguinte resultado: i = 310. Isso significa que você pode usar como um grau números de 1*10 elevado à potência 309 (apenas imagine um número com 309 dígitos!). Sendo assim, acho que você não deve ter medo de excessos.


MathMod

Função protótipo:

double MathMod(double value,double value2)

Esta função permite encontrar um resíduo da divisão. Por exemplo, dividindo 5 por 2 temos 2 e 1 resíduo. O primeiro valor do argumento - dividendo, valor2 - divisor. O resíduo é retornado. Exemplos:

double a;
 
a=MathExp(5,2); // a=1.0
a=MathExp(10,3); // a=1.0, correct
a=MathExp(50,10); // a=0.0, divided without residue

MathRand e MathSrand

Protótipos das funções:

int MathRand()
void MathSrand(int seed)

MathRand retorna um por um dos números inteiros pseudo aleatórios no intervalo de 0 até 32.767. Aqui você pode se perguntar: o que significa "pseudo"? Que intervalo estranho, e se eu precisasse de 5 a 10? Por que exatamente 32.767? Aqui estão as respostas:
"Pseudo" significa que os números não são inteiramente aleatórios e dependem de alguma coisa. Suponha que você tenha escrito um script que retorna 5 números pseudo aleatórios. Por exemplo:

int a=0;
 
while(a<5)
{
   MessageBox(“random=”+MathRand());
   a++;
}

Bem, os números são realmente aleatórios, mas se você iniciar o script novamente, a sequência será sempre a mesma. É assim porque existe um número, a partir do qual a função MathRand repulsa. Chamaremos este número de o número inicial. Para mudá-lo, use outra função - MathSrand. Esta função aceita um único argumento - o número inicia em que todos os números pseudo aleatórios dependerão. Imagine que o número inicial é uma fruta que crescerá de uma árvore (números aleatórios). Por padrão, o número inicial é 1. Assim, a fim de obter uma sequência realmente aleatória, precisamos primeiro atribuir um valor único para o número inicial. Como podemos fazer isso? Há mais uma função - TimeLocal, que não possui argumentos e retorna o número de segundos após as 00:00 de 01 de janeiro de 1970. Esta função serve muito bem pois na maioria dos casos, ela receberá um único número. Você ainda não está confuso? Ela parece com isso:

int a=0;
MathSrand(TimeLocal()); // assign a unique value to the beginning number
 
while(a<5)
{
   MessageBox(“random=”+MathRand());
   a++;
}

Agora teremos uma nova sequência a cada momento. Vamos continuar.
De 0 a 32.767. Por que 32.767? Veja: o valor máximo de energia que a função int pode aceitar é de 2 a 16 (porque o valor da variável int ocupa 16 bits na memória do computador, não considerando o sinal), é igual a 32.768, mas como nós contamos a partir de zero, precisamos subtrair um. Então obtemos 32.767.
A fim de obter qualquer intervalo necessário, use o operador % - resíduo da divisão. Por exemplo, se for necessário obter números aleatórios no intervalo de 0 a 5:

int a=0;
MathSrand(TimeLocal());
while(a<5)
{
   MessageBox(“random=”+MathRand()%6);
   a++;
}

Por favor, observe que escrevemos MathRan ()%6, não MathRand()%5 - já que nosso intervalo começa a partir de zero, precisamos adicionar 1. Suponha que precisamos obter números aleatórios no intervalo de 5 a 10:

MessageBox(“random=”+MathRand()%6+5); // just add the necessary shift

É da mesma forma de quando precisamos obter um intervalo com números negativos, por exemplo, de -5 a 5:

MessageBox(“random=”+MathRand()%11-5);

Se você só precisar de números negativos, multiplique o resultado por -1. Por exemplo, se for necessário obter números aleatórios no intervalo de -10 a -20:

MessageBox(“random=”+(MathRand()%11+10)*(-1));

Se você precisar obter um não integral, por exemplo, no intervalo de 0,0 a 1,0 com uma precisão de milésimos, use o seguinte código:

MessageBox(“random=”+MathRand()%1001/1000.0);

Primeiro, criamos um número aleatório no intervalo de 0 a 1.000 e depois o dividimos por 1.000,0. Observe que devemos dividir exatamente por 1.000,0 (com um ponto flutuante), e não por 1000 (inteiro). Caso contrário, obtemos zero, porque ele vai ser arredondado.


Funções trigonométricas e arco-trigonométricas

Funções trigonométricas são funções matemáticas de um ângulo. Elas são importantes para a análise de processos periódicos Muito perto delas estão as funções arco-trigonométricas. Maiores informações aqui:
https://en.wikipedia.org/wiki/Trigonometric_function
https://en.wikipedia.org/wiki/ArcSin
Em MQL4 todas estas funções aceitam argumentos em radianos, não em graus. Isto é, se você precisar encontrar o seno de 20 graus, você deve primeiro transformar 20 graus em radianos. Por exemplo:

MathSin(20.0*3.14159/180.0);

Isto é, 1 grau = pi / 180. Se você costuma usar funções trigonométricas, é conveniente declarar e usar a constante no início de um programa:

#define PI 3.1415926535897

MathSin, MathCos, MathTan, MathArcsin, MathArccos e MathArctan

Protótipos das funções:

double MathSin(double value)
double MathCos(double value)
double MathTan(double x)
double MathArcsin(double x)
double MathArccos(double x)
double MathArctan(double x)

Vamos tratar das peculiaridades de algumas funções. MathTan aceita valores na faixa de -263 a 263, se você exceder os limites, o número será indefinido. MathArcsin e MathArccos aceita valores na faixa de -1 a 1, caso contrário você terá zero e a mensagem apropriada no EA. MathArctan retorna 0, se ele aceita 0.


Novas funções para exibição de mensagens

No momento, você conhece apenas uma função para exibir informações - MessageBox. Agora você vai saber mais três funções que são muito parecidas, mas têm suas próprias peculiaridades.


Alerta

Função protótipo:

void Alert(...)

Exibe uma janela de diálogo que contém seus sinais (informações). Ao chamar a função, você ouvirá um sinal especial que pode ser alterado ou desativado nas configurações do terminal: Serviço -> Configurações -> Guia Eventos. A janela ficará assim:

É possível alterar o tamanho da janela para visualizar melhor uma grande quantidade de informação. Além disso, você sempre pode ver as últimas chamados da função porque elas não são excluídas. Você também pode executar diversas chamadas sucessivamente, você obterá uma janela com um último sinal ativo, e você não precisará clicar em "OK" cada vez. Você pode usar a função semelhante à função MessageBox:

Alert(“signal type:”+signalType);
Alert(“random=”+MathRand()%1001);

Embora a intenção seja diferente. Você é deve simplesmente enumerar os parâmetros de entrada, separados por vírgulas. Isto é, é como no exemplo acima, mas utilizando "," em vez de "+". Recomendo utilizar a segunda variante.

Alert(“signal type:”,signalType);
Alert(“random=”,MathRand()%1001);

Comentário

Função protótipo:

void Comment(...)

Função semelhante, idêntica em uso, mostra uma mensagem no canto superior esquerdo do gráfico. Aqui você não precisa clicar em nada para ter o código executado. Utilizar esta função, por exemplo, para mostrar o estado atual. Exemplo:

Comment(“some usefull information”);




Print

Função protótipo:

void Print( ...)

Mais uma função análoga que exibe mensagens no periódico do Expert Advisors:

Print(“processing...”);



Além disso, o periódico salva todas as mensagens em um arquivo correspondente (o nome do arquivo corresponde à data) no seu computador na pasta MetaTrader4\ experts\logs:



Além disso, algumas observações sobre as três funções devem ser feitas. Você não pode exibir matrizes, basta indicá-las como um parâmetro. Elas devem ser exibidas elemento por elemento, por exemplo, assim:

for(int a=0;a<100;a++)
Alert("Close[",a,"]=",Close[a]);

Você pode exibir no máximo 64 parâmetros em cada função. Cada chamada da função Alerta também é escrita no periódico do Expert Advisor. O tipo duplo será exibido com uma precisão de 4 números após um ponto.


Indicadores técnicos

Quase todos Expert Advisors utilizam indicadores técnicos. Se você olhar para um simples EA incluído no arquivo de instalação (Amostra MACD), você vai ver que ele utiliza indicadores técnicos. Agora você aprenderá como obter valores de todos os indicadores técnicos disponíveis. Há uma função correspondente a cada indicador técnico, que pode contar o valor em qualquer segurança e prazo disponível. E você não tem que se preocupar se esse indicador está aberto agora em um gráfico ou não. Não importa.

Agora veremos em detalhes os parâmetros das funções dos indicadores técnicos. Na verdade, a maioria deles são repetidos.
Por exemplo, todas as função que veremos agora, possuem 2 primeiros argumentos e 1 último para contar os valores dos indicadores técnicos:

  • símbolo – o primeiro argumento define qual segurança financeira (par de moeda) deve ser utilizada para a contagem de um indicador de valores técnicos. Isto é, para qual gráfico o indicador técnico deve ser utilizado. Para utilizar um indicador no gráfico atual, use a constante NULO (ou 0). O gráfico atual, aqui, significa o gráfico no qual você vai iniciar seu script (Expert Advisor, indicador). Se você precisar de outra segurança, você pode usar o seu nome como uma string ("EURUSD", "GBPUSD" etc.).
  • calendário – o segundo argumento que define em que período de tempo o indicador deve ser usado. Se você precisa de um calendário, usado no gráfico atual, use 0 (zero). Se você precisar de um outro período de tempo, use uma das constantes predefinidas:
    • PERÍODO_M1 - 1 minuto
    • PERÍODO_M5 - 5 minutos
    • PERÍODO_M15 - 15 minutos
    • PERÍODO_M30 - 30 minutos
    • PERÍODO_H1 - 1 hora
    • PERÍODO_H4 - 4 horas
    • PERÍODO_D1 - 1 dia
    • PERÍODO_W1 - 1 semana
    • PERÍODO_MN1 - 1 mês
  • deslocamento – o último argumento que define em que barra o indicador deve ser usado. Lembre-se do primeiro artigo: para encontrar o preço de fechamento da última barra usamos índices a partir de zero. Isto é, Fechamento [0] - preço de fechamento da última barra, Fechamento [1] - o penúltimo etc. Bem, este argumento funciona da mesma maneira que um índice em matrizes. Para encontrar o valor do indicador na último barra, o deslocamento deve ser igual a 0, na penúltima - 1 e assim por diante.

Os indicadores técnicos muitas vezes, para contagem, utilizam os valores médios em várias barras. Isto é, eles pegam preços diferentes (de abertura, fechamento, etc.) de várias barras e encontram o valor médio usando um método definido. Além disso, muitas vezes o deslocamento é utilizado. Assim, entre os parâmetros, você pode encontrar o seguinte:

  • preço_aplicado – preço Aplicada - define o tipo de preços que devem ser utilizados para obter o valor médio. Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • ma_method – define um método utilizado para a recepção de valores médios. Existem as seguintes constantes predefinidas para a escolha de um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • período – define quantas barras serão utilizadas para obter o valor médio.
  • ma_shift – deslocamento da linha média nas barras. Se o deslocamento for positivo, a linha é deslocada para a direita. Caso contrário, a linha é deslocada para a esquerda.

Os parâmetros descritos acima irão ocorrer com muita frequência. Então, quando você ver esses parâmetros, você deve entender que essa função usa valores médios para o cálculo dos seus valores. Para aprender exatamente como os valores são calculados, e qual a função dos valores principais, use o link que está localizado após de uma breve descrição de cada função.

Mais um momento importante: todos estes indicadores (funções) podem ser divididos em duas categorias:

  • simples – quando o indicador possui apenas um valor. Por exemplo: Aceleração/desaceleração (AC), Acumulo/ Distribuição (A/D), DeMarker (DeM) etc.Isto é, o indicador tem apenas uma linha/histórico, o qual o valor é devolvido ao chamar a função apropriada. Aqui está um exemplo de vários indicadores simples utilizados em um gráfico:


  • complexo – quando o indicador possui diversos valores (linhas). Por exemplo: Jacaré, Média do índice de movimento direcional (ADX), Bandas de Bollinger (BB), Média de convergência/divergência (MACD), etc. Nesse caso, deve-se indicar, qual valor (linha) o indicador deve retornar. Para este efeito, em todas as funções dos indicadores complexos, o parâmetro modo é utilizado. Use certas constantes que você indicar para apontar o que deve ser devolvido. Aqui está um exemplo de vários indicadores complexos utilizados em um gráfico:



Cada descrição de função será suportada por uma imagem descritiva, exemplos de uso (diferentes cores são usadas para melhor visualização do que está no comando do que) e um link com a descrição do indicador (como usá-lo no trading, o significado do indicador ). Você supostamente está familiarizado com indicadores e seu uso. Eu recomendo a leitura da descrição das funções neste artigo, a fim de entender como usá-las, e ver os exemplos. Para lembrar a atribuição de cada argumento, no futuro, use a ajuda no MetaEditor. Abra a janela CaixadeFerramentas usando atallhos Ctrl+T e vá para a guia Ajuda. Lá você vai encontrar a descrição de cada parâmetro, bem como uma lista conveniente de todas as funções, você encontrará facilmente o que precisar. A linguagem da Ajuda pode ser alterada utilizando o menu Visualizar->Linguagens. Depois disso, reinicie o MetaEditor.


Aceleração/desaceleração (AC)

O indicador Aceleração/desaceleração (AC) é utilizado para alterar a velocidade das mudanças de preços (aceleração,desaceleração). https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/ao

Função protótipo:

double iAC(string symbol, int timeframe, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double ac;
 
ac=iAC(0,0,0);
// acceleration of the last bar on the active chart and timeframe
 
ac=iAC(0,0,1);
// acceleration of the last but one baron the active chart and timeframe
 
ac=iAC("GBPUSD",PERIOD_M30,0);
// acceleration of the last bar on the chart GBPUSD, timeframe - 30 minutes

Acúmulo/Distribuição (A/D)

O indicador Acúmulo/Distribuição (A/D) é utilizado para confirmar alterações de preços através do cálculo de volume.
https://www.metatrader5.com/en/terminal/help/indicators/volume_indicators/ad

Função protótipo:

double iAD(string symbol, int timeframe, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double ad;
 
ad=iAD(0,0,0);
// accumulation on the last bar on the current chart and period
 
ad=iAD(0,0,Bars-1);
// accumulation on the first available bar, active chart and period
 
ad=iAD("GBPUSD",PERIOD_M5,5);
// accumulation on the 6th last bar on GBPUSD, period - 5 minutes


Jacaré

O indicador Jacaré é uma combinação de 3 médias móveis que utilizam geometria fractal e dinâmica não linear.
https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/alligator
Função protótipo:

double iAlligator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, 
                   int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, 
                   int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • jaw_period - o período de média do maxilar do jacaré (linha azul)
  • jaw_shift - deslocamento do maxilar do jacaré
  • teeth_period - o período de cálculo da média dos dentes do jacaré (linha vermelha)
  • teeth_shift - descolamento dos dentes do jacaré
  • lips_period - o período de cálculo da média dos lábios do jacaré (linha verde)
  • lips_shift - deslocamento dos lábios do jacaré
  • ma_method – define um método utilizado para a recepção de valores médios. Existem as seguintes constantes predefinidas para a escolha de um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • modo - define o valor que você quer encontrar (maxilares, dentes ou lábios). Para escolher, use uma das constantes:
    • MODE_GATORJAW - linha do maxilar do jacaré (azul)
    • MODE_GATORTEETH - linha dos dentes do jacaré (vermelha)
    • MODE_GATORLIPS - linha dos lábios do jacaré (verde)
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Veja que argumentos da função são responsáveis pela utilização do Jacaré no gráfico. Essa analogia irá ajudá-lo:



Utilizando o parâmetro modo, defina o que deve ser retornado:


Exemplos de uso:

double jaw;
double teeth;
double lips;
 
jaw=iAlligator(0,0,13,8,8,5,5,3,MODE_SMA,PRICE_MEDIAN,MODE_GATORJAW,0);
// find the values of "jaws" (blue line) on the current chart and period.  
// Here simple moving average is used, price – average. Periods 
// of averaging for jaws, teeth and lips – 13, 8 and 8 accordingly. Shift: 
// 5, 5 and 3 accordingly. The value is taken for the last bar. 
 
teeth=iAlligator(EURUSD,PERIOD_H1,128,96,64,0,0,0,MODE_EMA,PRICE_TYPICAL,MODE_GATORTEETH,1);
// find the values of "teeth" (red line) on an hour chart EURUSD. 
// Exponential moving average and typical price are used. 
// Periods of averaging: 128, 96 and 64. Shift is not used. The value
// is taken for the last but one bar.
 
lips=iAlligator(GBPUSD,PERIOD_D1,21,18,13,5,3,0,MODE_SMMA,PRICE_WEIGHTED,MODE_GATORLIPS,5);
// find the values of "lips" (green line) on a daily chart GBPUSD. 
// Uses smoothed moving average and weighted close price.
// Periods of averaging: 21, 18 and 13. Shift: 5, 3 and 0. The value
// is taken for the 5th last bar.


Média do índice de movimento direcional (ADX)

O indicador Média do índice de movimento direcional (ADX) é utilizado para determinar a presença de uma tendência de preços.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/admi
Função protótipo:

double iADX(string symbol,int timeframe,int period,int applied_price,int mode,int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • modo – escolha uma linha da qual o valor será recebido. Utilize as seguintes constantes:
    • MODE_MAIN - a linha principal
    • MODE_PLUSDI - linha +DI
    • MODE_MINUSDI - linha –DI
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:


Exemplos de uso:

double main;    // main line
double plusDi;  // line +DI
double minusDi; // line -DI
 
main=iADX(0,0,3,PRICE_CLOSE,MODE_MAIN,0);
// find the value of the main line on the active chart and period on the last bar. 
// Uses averaging on 3 bars, uses close price.
 
plusDi=iADX(USDCAD,PERIOD_M1,6,PRICE_OPEN,MODE_PLUSDI,1);
// find the value of line +DI on the minute chart USDCAD on the second last bar. 
// Uses averaging on 6 bars, uses open price.
 
minusDi=iADX(AUDUSD,PERIOD_H1,10,PRICE_HIGH,MODE_MINUSDI,5);
// find the value of line -DI on the hour chart AUDUSD on the 6th last bar. 
// Uses averaging on 10 bars, uses maximal price.


Gama média verdadeira (ATR)

O indicador Gama média verdadeira (ATR) é utilizado para determinar a volatilidade do mercado.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/atr
Função protótipo:

double iATR(string symbol,int timeframe,int period,int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double atr;
 
atr=iATR(0,0,15,0);
// volatility of the last bar on the active chart and period. 
// Uses 15 bars to get the mean value.
 
atr=iATR(EURUSD,PERIOD_M15,5,1);
// volatility of the last but one bar on a 15 minute chart EURUSD. 
// Uses 5 bars to get the mean value.
 
atr=iATR(USDCAD,PERIOD_H1,32,0);
// volatility of the last bar on an hour chart USDCAD. 
// Uses 32 bars to get the mean value.


Oscilador incrível (AO) por Bill Williams

O indicador Oscilador incrível (AO) por Bill Williams é usado para determinar as forças de movimentação do mercado.
https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/awesome
Função protótipo:

double iAO( string symbol, int timeframe, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double ao;
 
ao=iAO(0,0,0);
// moving force of the last bar on the active chart and period
 
ao=iAO(EURUSD,PERIOD_M5,0);
// moving force of the last bar on 5-minute chart EURUSD
 
ao=iAO(EURAUD,PERIOD_W1,1);
// moving force of the last but one bar on a weekly chart EURAUD


Bears Power

O indicador Bears Power é utilizado para estimar o equilíbrio da força "bears".
http://www.fibo-forex.ru/pages.php?page=1799
Função protótipo:

double iBearsPower(string symbol,int timeframe,int period,int applied_price,int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:

double bp;
 
bp=iBearsPower(0,0,5,PRICE_OPEN,0);
// balance of the last bar on the active chart and period. Use 5 bars for averaging and opening prpice.
 
bp=iBearsPower("EURUSD",PERIOD_M5,32,PRICE_CLOSE,1);
// balance of the last but one bar on 5-minute chart EURUSD. Use 32 bars for averaging and close price.
 
bp=iBearsPower("EURGBP",PERIOD_D1,51,PRICE_MEDIAN,0);
// balance of the last bar on a daily chart EURGBP. Use 51 bars for averaging and average price.


Bandas Bollinger (BB)

O indicador Bandas Bollinger (BB) é usado para determinar os limites superiores e inferiores do intervalo normal de variação de preços.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/bb
Função protótipo:

double iBands( string symbol, int timeframe, int period, int deviation, int bands_shift,
               int applied_price, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • desvio – desvio da linha principal.
  • bands_shift - mudança de preços.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • modo – escolha uma linha da qual o valor será encontrado. Utilize as seguintes constantes:
    • MODE_UPPER - linha superior
    • MODE_LOWER - linha inferior
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double bb;
 
bb=iBands(0,0,20,2,0,PRICE_LOW,MODE_LOWER,0);
// lower limit of the last bar on the active chart and period. 
// Use 20 bars for averaging, and the minimal price.
// Deviation from the main line is 2, shift is not used.
 
bb=iBands("EURUSD",PERIOD_H1,13,2,3,PRICE_HIGH,MODE_UPPER,1);
// upper limit of the last but one bar on an hour chart EURUSD. 
// Use 13 bars for averaging, and the maximal price.
// Deviation from the main line is 2, shift is 3 bars.
 
bb=iBands("EURGBP",PERIOD_D1,21,3,4,PRICE_HIGH,MODE_UPPER,0);
// upper limit of the last bar on a daily chart EURGBP. 
// Use 21 bars for averaging, and the maximal price.
// Deviation from the main line is 2, shift is 4 bars.


Bulls Power

O indicador Bulls Power é utilizado para estimar o equilíbrio da força "bulls".
http://www.forexdealer.net/help/bul_hlp.htm
Função protótipo:

double iBullsPower(string symbol, int timeframe, int period, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double bp;
 
bp=iBullsPower(0,0,10,PRICE_CLOSE,1);
// balance of the last but one bar on the active chart and period. Use 10 bars for averaging
// and close price.
 
bp=iBullsPower("EURGBP",PERIOD_M1,21,PRICE_HIGH,1);
// balance of the last bar on a minute chart EURGBP. Use 21 bars for averaging and the maximal price.
 
bp=iBullsPower("EURUSD",PERIOD_H1,33,PRICE_MEDIAN,0);
// balance of the last bar on an hour chart EURUSD. Use 33 bars for averaging and the average price.


Índice de canal de commodities (CCI)

O indicador Índice de canal de commodities (CCI) é utilizado para medir o desvio do preço do seu preço de média estatística.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/cci
Função protótipo:

double iCCI( string symbol, int timeframe, int period, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:

double cci;
   
cci=iCCI(0,0,14,PRICE_TYPICAL,0);
// index of the last bar on the active chart and period.
// Use 14 bars for finding the mean value and
// typical price.
 
cci=iCCI("EURUSD",PERIOD_M1,21,PRICE_HIGH,1);
// index of the last but one bar on a minute chart EURUSD.
// Use 21 bars for finding the mean value and
// maximal price.
 
cci=iCCI("EURGBP",PERIOD_D1,7,PRICE_CLOSE,0);
// index of the last bar on a daily chart EURGBP.
// Use 7 bars for finding the mean value and
// close price.


DeMarker (DeM)

O indicador DeMarker (DeM) é utilizado para prever mudanças de preço em função da diferença de preço das barras passadas.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/demarker
Função protótipo:


double iDeMarker( string symbol, int timeframe, int period, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:

double dm;
   
dm=iDeMarker(0,0,13,0);
// DeMarker value of the last bar on the current chart and period.
// Use 13 bars to find the mean value.
 
dm=iDeMarker("EURJPY",PERIOD_H4,51,1);
// DeMarker value of the last but one bar on 4-hour chart EURJPY.
// Use 51 bars to find the mean value.
 
dm=iDeMarker("USDCAD",PERIOD_M30,21,0);
// DeMarker value of the last bar on 30-minutes chart USDCAD.
// Use 21 bars to find the mean value.


Envelopes

O indicador Envelopes é utilizado para determinar os limites das flutuações de preços com base em duas médias móveis.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/envelopes
Função protótipo:

double iEnvelopes( string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, 
                   int applied_price, double deviation, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • ma_period – o número de barras usado para encontrar a linha principal.
  • ma_method – define o método utilizado para encontrar valores médios. Existem as seguintes constantes predeterminadas para a escolha de um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • ma_shift – deslocamento das linhas do indicador nas barras. Se o deslocamento for positivo, as linhas do indicador são deslocadas para a direita. Caso contrário, se o deslocamento for negativo, as linhas são deslocadas para a esquerda.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • desvio – desvio da linha principal em porcentagem. Por exemplo, se você escrever de 0,1, isto significa 10%, 0,25 - 25% etc.
  • modo – escolhe uma linha da qual o valor será encontrado. Utilize as seguintes constantes:
    • MODE_UPPER - linha superior
    • MODE_LOWER - linha inferior
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double e;
   
e=iEnvelopes(0,0,21,MODE_SMA,0,PRICE_CLOSE,0.05,MODE_LOWER,0);
// lower limit of the last bar on the active chart and period.
// Use 21 bars and close price for finding the value of simple moving 
// average. Shift is not used. Deviation from the main 
// line: 5%.
 
e=iEnvelopes("EURUSD",PERIOD_H1,13,MODE_SMMA,3,PRICE_MEDIAN,0.15,MODE_UPPER,1);
// upper limit of the last but one bar on an hour chart EURUSD.
// Use 13 bars and average price for finding the value of smoothed moving 
// average. Shift: 3 bars. Deviation from the main line: 15%.
 
e=iEnvelopes("EURAUD",PERIOD_D1,7,MODE_EMA,2,PRICE_CLOSE,0.20,MODE_LOWER,0);
// lower limit of the last bar on a daily chart EURAUD.
// Use 7 bars and close price for finding the value of exponential 
// moving average. Shift: 2 bars. Deviation from the main 
// line: 20%.


Índice de força (FRC)

O indicador Índice de força (FRC) é utilizado para a medição da força "bulls" em cada subida e a força "bears" em cada queda.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/fi
Função protótipo:

double iForce( string symbol, int timeframe, int period, int ma_method, 
               int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • ma_period - o número de barras utilizadas para encontrar a linha principal.
  • ma_method – define um método utilizado para encontrar valores médios. Aqui estão as seguintes constantes predeterminadas para seguir um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double f;
   
f=iForce(0,0,13,MODE_SMA,PRICE_CLOSE,0);
// force index of the last bar on the active chart and period. Period
// of averaging: 13 bars. Method of averaging: simple moving average.
// Use close price.  
 
f=iForce("EURGBP",PERIOD_M5,21,MODE_LWMA,PRICE_HIGH,1);
// force index of the last but one bar on 5-minute chart EURGBP. Period
// of averaging: 21 bars. Method of averaging: linearly-weighted moving average.
// Use maximal price.
 
f=iForce("EURUSD",PERIOD_M1,32,MODE_SMMA,PRICE_MEDIAN,0);
// force index of the last bar on a minute chart EURUSD. Period
// of averaging: 32 bars. Method of averaging: smoothed moving average.
// Use average price.


Fractais

Fractais são um dos cinco indicadores do sistema de trading de Bill Williams, usado para detectar fundos e topos de uma tabela de preços. Os Fractais não aparecem em todas as barras. Assim, se um fractal não aparecer em um barra, a função retorna zero.
https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/fractals
Função protótipo:


double iFractals( string symbol, int timeframe, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • modo – escolhe uma linha da qual o valor será recebido. Os seguintes constantes predeterminadas são utilizadas:
    • MODE_UPPER - fractais superiores
    • MODE_LOWER - fractais inferiores
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplo de uso:

double f;
 
f=iFractals(0,0,MODE_UPPER,0);
// upper fractal of the last bar on the active chart and
// period.
 
f=iFractals("USDCAD",PERIOD_M5,MODE_LOWER,1);
// lower fractal of the last but one bar on 5-minute chart
// USDCAD.
 
f=iFractals("USDJPY",PERIOD_D1,MODE_UPPER,0);
// upper fractal of the last bar on a daily chart USDJPY.


Oscilador jacaré:

OOscilador jacaré é construído sobre a base no indicador Jacaré o e é usado para medir o grau de convergência ou divergência das linhas de equilíbrio.
https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/go
Função protótipo:

double iGator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period, 
               int teeth_shift, int lips_period, int lips_shift, int ma_method, 
               int applied_price, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • jaw_period - o período de média do maxilar do jacaré (linha azul)
  • jaw_shift - deslocamento do maxilar do jacaré
  • teeth_period - o período de cálculo da média dos dentes do jacaré (linha vermelha)
  • teeth_shift - descolamento dos dentes do jacaré
  • lips_period - o período de cálculo da média dos lábios do jacaré (linha verde)
  • lips_shift - deslocamento dos lábios do jacaré
  • ma_method – define um método utilizado para encontrar valores médios. Aqui estão as seguintes constantes predeterminadas para seguir um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • modo - define o valor que você quer encontrar (maxilares, dentes ou lábios). Para escolher, use uma das constantes:
    • MODE_UPPER - histograma superior
    • MODE_LOWER - histograma inferior
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double g;
 
g=iGator(0,0,13,8,8,0,0,0,MODE_SMA,PRICE_CLOSE,MODE_UPPER,0);
// upper histogram of the last bar on the active chart and period. Periods of 
// averaging for jaw, teeth and lips accordingly: 13,8,8. Shift is not used. 
// For averaging use close price and the method of a simple moving average.
 
g=iGator("EURGBP",PERIOD_M1,21,13,9,4,3,2,MODE_SMMA,PRICE_OPEN,MODE_LOWER,1);
// lower histogram of the last but one bar on a minute chart EURGBP. Periods of 
// averaging for jaw, teeth and lips accordingly: 21,13,9. Shifts accordingly:
// 4,3 and 2. For averaging use open price and the method of smoothed 
// moving average.
 
g=iGator("USDCAD",PERIOD_D1,51,21,13,8,5,4,MODE_EMA,PRICE_MEDIAN,MODE_UPPER,0);
// upper histogram of the last bar on a daily chart USDCAD. Periods of
// averaging for jaw, teeth and lips accordingly: 51,21,13. Shifts accordingly: 8,5 and 4.
// For averaging use average price and the method of exponential moving average.


Ichimoku Kinko Hyo

O indicador Ichimoku Kinko Hyo é usado para definir uma tendência, suportar e resistir níveis, bem como sinais para comprar e vender.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/ikh
Função protótipo:

double iIchimoku( string symbol, int timeframe, int tenkan_sen, int kijun_sen, 
                  int senkou_span_b, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • tenkan_sen - período de média Tenkan Sen.
  • kijun_sen - período de média Kijun Sen.
  • senkou_span_b - período de média Senkou intervalo B.
  • modo - define o valor que você quer encontrar. Para escolher, use uma das constantes:
    • MODO_TENKANSEN - Tenkan-sen
    • MODO_KIJUNSEN - Kijun-sen
    • MODO_SENKOUSPANA - Senkou Intervalo A
    • MODO_SENKOUSPANB - Senkou Intervalo B
    • MODO_CHINKOUSPAN - Intervalo Chinkou
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double i;
 
i=iIchimoku(0,0,13,21,53,MODE_KIJUNSEN,0);
// the value of the line Kijun-sen on the last bar on the current security and period.
// Periods for finding mean values for Tenkan Sen, Kijun Sen and Senkou Span B
// accordingly: 13,21 and 53.
 
i=iIchimoku("EURUSD",PERIOD_M5,21,53,96,MODE_TENKANSEN,1);
// the value of the line Tenkan-sen on the last but one bar on 5-minute chart EURUSD.
// Periods for finding mean values for Tenkan Sen, Kijun Sen and Senkou Span B
// accordingly: 21,53 and 96.
 
i=iIchimoku("USDCAD",PERIOD_D1,3,5,9,MODE_CHINKOUSPAN,0);
// the value of the line Chinkou Span on the last bar on a daily chart USDCAD.
// Periods for finding mean values for Tenkan Sen, Kijun Sen and Senkou Span B
// accordingly: 3,5 and 9.


Índice de facilitação de mercado (BW MFI)

O indicador Índice de facilitação de mercado (BW MFI) é usado para medir o preço de um crédito.
https://www.metatrader5.com/en/terminal/help/indicators/bw_indicators/market_facilitation
Função protótipo:

double iBWMFI( string symbol, int timeframe, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double mfi;
 
mfi=iBWMFI(0,0,0);
// index of market facilitation of the last bar on the active chart and period.
 
mfi=iBWMFI("EURUSD",PERIOD_H1,1);
// index of market facilitation of the last but one bar on an hour chart EURUSD.
 
mfi=iBWMFI("EURGBP",PERIOD_D1,0);
// index of market facilitation of the last bar on a daily chart EURGBP.


Momento

O indicador Momento é utilizado para medir a quantidade de uma mudança de preço ao longo de um período de tempo.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/momentum
Função protótipo:

 double iMomentum( string symbol, int timeframe, int period, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double m;
 
m=iMomentum(0,0,12,PRICE_CLOSE,1);
// momentum of the last but one bar on the active chart and period. Use 
// 12 bars and close price for finding a mean value.
 
m=iMomentum("EURUSD",PERIOD_D1,21,PRICE_OPEN,0);
// momentum of the last bar on a daily chart EURUSD. Use 
// 21 bars and open price for finding a mean value.
 
m=iMomentum("USDCAD",PERIOD_H1,7,PRICE_MEDIAN,1);
// momentum of the last but one bar on an hour chart USDCAD. Use 
// 7 bars and average price for finding a mean value.


Índice de fluxo de dinheiro (MFI)

O indicador Índice de fluxo de dinheiro (MFI) é usado para medir a intensidade de investimentos.
https://www.metatrader5.com/en/terminal/help/indicators/volume_indicators/mfi
Função protótipo:


double iMFI( string symbol, int timeframe, int period, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double mfi;
 
iMFI(0,0,14,1);
// intensity of investments of the last but one bar on the current chart and period.
// Use 14 bars to find the mean value.
 
iMFI("EURGBP",PERIOD_H4,32,0);
// intensity of investments of the last bar on 4-hour chart EURGBP.
// Use 32 bars to find the mean value.
 
iMFI("EURUSD",PERIOD_W1,9,1);
// intensity of investments of the last but one bar on a weekly chart EURUSD.
// Use 9 bars to find the mean value.


Média móvel (MA)

O indicador Média Móvel (MA) mostra a média de preço para certos períodos.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/ma
Função protótipo:

double iMA( string symbol, int timeframe, int period, int ma_shift, 
            int ma_method, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • ma_shift – deslocamento da linha em barras. Se o deslocamento for positivo, a linha é deslocada para a direita. Caso contrário, a linha é deslocada para a esquerda.
  • ma_method – define um método utilizado para encontrar valores médios. Aqui estão as seguintes constantes predeterminadas para seguir um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double ma;
 
ma=iMA(0,0,13,0,MODE_SMA,PRICE_CLOSE,0);
// moving average of the last bar on the active chart and period.
// Use 13 bars and close price for finding simple moving average.
// Shift is not used.
 
ma=iMA("GOLD",PERIOD_M15,21,6,MODE_LWMA,PRICE_LOW,1);
// moving average of the last but one bar on 15-minute chart GOLD.
// Use 21 bars and minimal price for finding linearly-weighted moving average.
// Shift: 6 bars.
 
ma=iMA("EURCHF",PERIOD_D1,18,4,MODE_SMMA,PRICE_TYPICAL,0);
// moving average of the last bar on a daily chart EURCHF.
// Use 18 bars and typical price for finding smoothed moving average.
// Shift: 4 bars.


Convergência/Divergência média (MACD)

O indicador Convergência/Divergência média (MACD) é utilizado para identificar as tendências com base na correlação de duas médias móveis.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/macd
Função protótipo:

double iMACD( string symbol, int timeframe, int fast_ema_period, 
              int slow_ema_period, int signal_period, int applied_price,
              int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • fast_ema_period - o número de barras utilizado para o cálculo de uma média móvel rápida.
  • slow_ema_period - o número de barras utilizado para o cálculo de uma média móvel lenta.
  • signal_period - o número de barras utilizado para o cálculo de uma linha de sinal.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • modo - define o valor que você quer encontrar. Para escolher, use uma das constantes:
    • MODE_MAIN - linha principal
    • MODE_SIGNAL - sinal da linha
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double ma;
 
ma=iMACD(0,0,9,21,9,PRICE_CLOSE,MODE_MAIN,0);
// value of the main line for the last bar on the active chart and period.
// Bars, used to find mean values of a fast, slow and signal 
// moving average accordingly: 9,21 and 9. Use close price.
 
ma=iMACD("EURUSD",PERIOD_H1,21,52,18,PRICE_HIGH,MODE_SIGNAL,1);
// value of the signal line for the last but one bar on an hour chart EURUSD.
// Bars, used to find mean values of a fast, slow and signal
// moving average accordingly: 21,52 and 18. Use maximal price.
 
ma=iMACD("USDCAD",PERIOD_D1,7,13,7,PRICE_MEDIAN,MODE_MAIN,1);
// value of the main line for the last but one bar on a daily chart USDCAD.
// Bars, used to find mean values of a fast, slow and signal
// moving average accordingly: 7,13 and 7. Use average price.


Média móvel do Oscilador (OsMA)

O indicador Média móvel do Oscilador (OsMA) é usado para medir a diferença entre a linha de sinal e a linha principal do indicador Convergência/Divergência média (MACD)
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/macd
Função protótipo:

double iOsMA( string symbol, int timeframe, int fast_ema_period, int slow_ema_period,
              int signal_period, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • fast_ema_period - o número de barras utilizado para o cálculo de uma média móvel rápida.
  • slow_ema_period - o número de barras utilizado para o cálculo de uma média móvel lenta.
  • signal_period - o número de barras utilizado para o cálculo de uma linha de sinal.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double osma;
 
osma=iOsMA(0,0,12,26,9,PRICE_CLOSE,0);
// difference of the last bar on the active chart and period. Bars, used 
// to find mean values for the fast, slow and signal 
// moving average accordingly: 12,26 and 9. Use close price.
 
osma=iOsMA("EURUSD",PERIOD_M1,7,13,6,PRICE_OPEN,1);
// difference of the last but one bar on a minute chart EURUSD. Bars, used 
// to find mean values for the fast, slow and signal
// moving average accordingly: 7,13 and 6. Use open price.
 
osma=iOsMA("EURAUD",PERIOD_H1,21,48,18,PRICE_TYPICAL,0);
// difference of the last bar on an hour chart EURAUD. Bars, used 
// to find mean values for the fast, slow and signal
// moving average accordingly: 21,48 and 18. Use typical price.


Saldo de volume (OBV)

O indicador Saldo de volume (OBV) relaciona o volume com a mudança de preço que acompanha este volume.
https://www.metatrader5.com/en/terminal/help/indicators/volume_indicators/obv
Função protótipo:


double iOBV( string symbol, int timeframe, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double obv;
 
obv=iOBV(0,0,PRICE_OPEN,0);
// Balance volume of the last bar on the current chart and period. Use open price
 
obv=iOBV("GBPCHF",PERIOD_M30,PRICE_CLOSE,1);
// Balance volume of the last but one bar on 30-minutes chart GBPCHF. Use close price.
 
obv=iOBV("GBPJPY",PERIOD_H4,PRICE_MEDIAN,0);
// Balance volume of the last bar on 4-hour chart GBPJPY. Use average price.


Parada parabólica e sistema reverso (SAR Parabólico)

O indicador Parada parabólica e sistema reverso (SAR Parabólico) é utilizado para a análise dos mercados de tendência e definir pontos de saída.
https://www.metatrader5.com/en/terminal/help/indicators/trend_indicators/psar
Função protótipo:


double iSAR( string symbol, int timeframe, double step, double maximum, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • passo - incremento do nível de paragem, usualmente 0,02.
  • máximo - nível de paragem máximo, normalmente 0,2.
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double sar;
 
sar=iSAR(0,0,0.02,0.2,0);
// indicator value for the last bar on the current chart and period.
// Step of stop level increment: 0.02. Maximal stop level: 0.2.
 
sar=iSAR("EURUSD",PERIOD_M1,0.03,0.18,1);
// indicator value for the last but one bar on a minute chart EURUSD.
// Step of stop level increment: 0.03. Maximal stop level: 0.18.
 
sar=iSAR("EURCHF",PERIOD_H1,0.01,0.15,0);
// indicator value for the last bar on an hour chart EURCHF.
// Step of stop level increment: 0.01. Maximal stop level: 0.15.


Índice de força relativa (RSI)

O indicador Índice de força relativa (RSI) é usado para prever uma virada de preço.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/rsi
Função protótipo:

double iRSI( string symbol, int timeframe, int period, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double rsi;
 
rsi=iRSI(0,0,14,PRICE_CLOSE,0);
// indicator value for the last bar on the active chart and period. 
// Use 14 bars and close price to find the mean value.
 
rsi=iRSI("USDCAD",PERIOD_M1,9,PRICE_OPEN,1);
// indicator value for the last but one bar on a minute chart USDCAD. 
// Use 9 bars and close price to find the mean value.
 
rsi=iRSI("EURAUD",PERIOD_H1,25,PRICE_TYPICAL,0);
// indicator value for the last bar on an hour chart EURAUD. 
// Use 25 bars and typical price to find the mean value.


Índice de vigor relativo (RVI)

O indicador Índice de vigor relativo (RVI) é usado para definir sinais de compra e venda. Recomenda-se utilizar este indicador com o anterior para eliminar a ambigüidade.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/rvi
Função protótipo:

double iRVI( string symbol, int timeframe, int period, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • modo - define o valor que você quer encontrar. Para escolher, use uma das constantes:
    • MODE_MAIN - linha principal
    • MODE_SIGNAL - sinal da linha
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double rvi;
 
rvi=iRVI(0,0,12,MODE_MAIN,1);
// value of the main line of the last but one bar on the active chart and period. 
// Use 12 bars to find the mean value.  
 
rvi=iRVI("EURUSD",PERIOD_D1,21,MODE_SIGNAL,0);
// value of the signal line on the last bar on a daily chart EURUSD. 
// Use 21 bars to find the mean value.  
 
rvi=iRVI("GBPJPY",PERIOD_H1,19,MODE_MAIN,1);
// value of the main line on the last but one bar on an hour chart GBPJPY. 
// Use 19 bars to find the mean value.


Desvio Padrão

O indicador Desvio padrão é utilizado para medir a volatilidade do mercado.
https://ta.mql4.com/indicators/trends/standard_deviation
Função protótipo:

double iStdDev( string symbol, int timeframe, int ma_period, int ma_shift,
                int ma_method, int applied_price, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • ma_period - o número de barras utilizadas para obter as linhas do indicador.
  • ma_shift – deslocamento das linhas do indicador nas barras. Se o deslocamento for positivo, a linha é deslocada para a direita. Caso contrário, a linha é deslocada para a esquerda.
  • ma_method – define um método utilizado para encontrar valores médios. Aqui estão as seguintes constantes predeterminadas para seguir um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • applied_price – define to preço a ser utilizado (que será a média). Existem as seguintes constantes predefinidas para a escolha do preço utilizado:
    • PRICE_CLOSE - fechar preço;
    • PRICE_OPEN - abrir preço;
    • PRICE_HIGH - preço máximo
    • PRICE_LOW - preço mínimo
    • PRICE_MEDIAN - o preço médio, (alta+baixa)/2;
    • PRICE_TYPICAL - o preço típico, (alta+baixa+fechamento)/3;
    • PRICE_WEIGHTED - o preço de fechamento ponderado, (alta+baixa+fechamento+fechamento)/4;
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:



double sd;
 
sd=iStdDev(0,0,10,0,MODE_SMA,PRICE_CLOSE,1);
// deviation of the last but one bar on the active chart and period. 
// Use 10 bars and close price to find simple 
// moving average. Shift is not used.
 
sd=iStdDev("EURUSD",PERIOD_D1,21,3,MODE_SMMA,PRICE_MEDIAN,0);
// deviation of the last bar on a daily chart EURUSD. 
// Use 21 bars and average price to find smoothed 
// moving average. Shift: 3 bars.
 
sd=iStdDev("USDCAD",PERIOD_H4,17,2,MODE_EMA,PRICE_OPEN,1);
// deviation of the last but one bar on 4-hour chart USDCAD. 
// Use 17 bars and open price to find exponential
// moving average. Shift: 2 bars.



Oscilador estocástico

O indicador Oscilador estocástico é usado para definir sinais de compra e venda.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/so
Função protótipo:

double iStochastic( string symbol, int timeframe, int %Kperiod, 
                    int %Dperiod, int slowing, int method, 
                    int price_field, int mode, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • %K period - quantidade de barras, utilizado para gerar a linha %K.
  • %D period - quantidade de barras, utilizado para gerar a linha %D.
  • desaceleração - valor da desaceleração.
  • método – define um método utilizado para encontrar valores médios. Aqui estão as seguintes constantes predeterminadas para escolher um método:
    • MODO_SMA - média móvel simples
    • MODO_EMA - média móvel exponencial
    • MODO_SMMA - média móvel suavizada
    • MODO_LWMA - média móvel linearmente ponderada
  • price_field – define os preços que devem ser utilizados para o cálculo. Aqui estão os seguintes valores predeterminados para escolha de preço:
    • 0 - Baixa/Alta
    • 1 - Fechar/Fechar
  • modo - define o valor que você quer encontrar. Para escolher, use uma das constantes:
    • MODE_MAIN - linha principal
    • MODE_SIGNAL - sinal da linha
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Utilizando o parâmetro modo, defina o que deve ser retornado:

Exemplos de uso:

double s;
 
s=iStochastic(0,0,10,6,6,MODE_SMA,0,MODE_MAIN,0);
// value of the main line for the last bar on the current chart and period. 
// Bars used to calculate lines %K, %D and slowing 
// accordingly: 10, 6 and 6. Method of averaging: simple moving average. 
// Use prices: Low/High.
 
s=iStochastic("EURUSD",PERIOD_M1,6,3,3,MODE_SMMA,1,MODE_SIGNAL,1);
// value of the signal line for the last but one bar on a minute chart EURUSD.
// Bars used to calculate lines %K, %D and slowing
// accordingly: 6, 3 and 3. Method of averaging: smoothed moving average. 
// Use prices: Close/Close.
 
s=iStochastic("EURGBP",PERIOD_M5,9,7,7,MODE_EMA,0,MODE_MAIN,0);
// value of the main line for the last bar on 5-minute chart EURGBP.
// Bars used to calculate lines %K, %D and slowing
// accordingly: 9, 7 and 7. Method of averaging: exponential moving average.
// Use prices: Low/High.


Faixa Percentual de Williams (%R)

O indicador Faixa Percentual de Williams (%R) é usado para determinar se o mercado está sobrecomprado/sobrevendido.
https://www.metatrader5.com/en/terminal/help/indicators/oscillators/wpr
Função protótipo:

double iWPR( string symbol, int timeframe, int period, int shift)

Parâmetros:

  • símbolo – define qual segurança financeira (par de moeda) deve ser utilizada para o cálculo de um indicador de valores técnicos. Use NULO (ou 0), se você precisar da segurança (gráfico) atual (ativa).
  • calendário – define em qual calendário (período de tempo) o indicador deve ser utilizado. Use 0 para o período atual ou uma das constantes (PERÍODO_M1, PERÍODO_M5, PERÍODO_M15, PERÍODO_M30, PERÍODO_H1, PERÍODO_H4, PERÍODO_D1, PERÍODO_W1, PERÍODO_MN1).
  • período – o número de barras usado para encontrar o valor médio.
  • deslocamento – define para qual barra o indicador deve ser utilizado.

Exemplos de uso:


double wpr;
 
wpr=iWPR(0,0,14,1);
// overbought: the last but one bar on the active chart and period.
// Use 14 bars to get the mean value.
 
wpr=iWPR("USDCHF",PERIOD_D1,9,0);
// overbought: The last bar on a daily chart USDCHF.
// Use 9 bars to get the mean value.
 
wpr=iWPR("GBPJPY",PERIOD_H1,23,1);
// overbought: the last but one bar on an hour chart GBPJPY.
// Use 23 bars to get the mean value.


A utilização correta das funções de indicadores técnicos

Para utilizar corretamente essas funções você precisa saber exatamente como um indicador é organizado e como usá-lo (sinais de trading). É claro que eles devem ser usados em seus próprios Expert Advisors ou indicadores. Ainda assim, como tarefa de casa, tenta escrever um script informando sobre os pontos de entrada, com base nos sinais de qualquer indicador (escolha você mesmo).

Como exemplo, vamos escrever uma dessas tarefas domésticas que irá mostrar pontos de entrada com base nos sinais de trading do Oscilador estocástico. Para entrar no mercado, usaremos as seguintes regras:
Se a linha principal subir mais que a linha do sinal, compre. Se a linha principal baixar mais que a linha do sinal, venda.
Na imagem, os pontos de entrada estão circulados:

Primeiro vamos declarar diversas variáveis em que armazenaremos os valores do sinal e da linha principal na barra atual e na barra anterior:

double mainLine;
double prevMainLine;
double signalLine;
double prevSignalLine;

Agora, vamos encontrar os valores para essas variáveis:

mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);
prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);

Observe que nos restringimos à ultima e penúltima barra do gráfico. Agora vamos verificar se existem sinais de compra e venda:

if(prevMainLine<prevSignalLine && mainLine>signalLine)
   Alert("Signal to buy");
// if the main line was under the signal one and rised over it,
// this is a signal to buy
         
if(prevMainLine>prevSignalLine && mainLine<signalLine)
   Alert("Signal to sell");         
// if the main line was over the signal one and fell bellow it,
// this is a signal to sell

Usamos operadores de comparação e lógico &&. Tente entender isto corretamente.
Agora vamos colocá-los em um ciclo para verificar uma centena de últimas barras:

for(int a=0;a<100;a++)
{
   mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a);
   prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a+1);
   signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a);
   prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a+1);
 
   if(prevMainLine<prevSignalLine && mainLine>signalLine)
      Alert("Signal to buy");
         
   if(prevMainLine>prevSignalLine && mainLine<signalLine)
      Alert("Signal to sell");         
}

Viu? Simplesmente adicionamos um contador de um ciclo para verificar as barras. E agora, por conveniência, em vez de uma centena, vamos declarar a constante BARS_TO_ANALYSE que definirá quantas últimas barras serão analisadas. Aqui está a versão final do script:

//+------------------------------------------------------------------+
//|                                        showStochasticSignals.mq4 |
//|                                    Antonuk Oleg Copyright © 2007 |
//|                                                   banderass@i.ua |
//+------------------------------------------------------------------+
#property copyright "Antonuk Oleg Copyright © 2007"
#property link      "banderass@i.ua"
 
#define BARS_TO_ANALYSE 100
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
   double mainLine;
   double prevMainLine;
   double signalLine;
   double prevSignalLine;
      
   for(int a=0;a<BARS_TO_ANALYSE;a++)
   {
      mainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a);
      prevMainLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_MAIN,a+1);
      signalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a);
      prevSignalLine=iStochastic(0,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,a+1);
 
      if(prevMainLine<prevSignalLine && mainLine>signalLine)
         Alert("Signal to buy. Time: ",TimeToStr(Time[a]));
         
      if(prevMainLine>prevSignalLine && mainLine<signalLine)
         Alert("Signal to sell. Time: ",TimeToStr(Time[a]));
   }
   return(0);
}

Neste script, o pequeno fragmento de código a seguir deve p
arecer estranho para você (se isso acontecer, você deve ser um bom aluno):
TimeToStr(Time[a])

Esta função aceita a quantidade de segundos que se passaram desde 01 de janeiro de 1970 e retorna uma string com esta data. O tempo da matriz[] predeterminado retorna o mesmo número de segundos tal como aplicado a uma barra escolhida. Aqui está um par ideal.
Como subtarefa, tente adicionar uma média móvel pesada (com o período 200-500) e filtre sinais desnecessários da seguinte maneira: se o preço estiver acima da linha média, não venda. Se o preço estiver abaixo da linha média, não compre.
Bem, você sabe como fazer isso? Não? Mais informações a seguir.


Novidades sobre a declaração de variáveis

Geralmente, declaramos variáveis da seguinte forma:

double maxPrice;
double minPrice;
double lastPrices[100];
 
int maxIndex;
int minIndex;
int levels[10];

Não faça mais desse jeito. Faça da seguinte maneira:

double maxPrice,
       minPrice,
       lastPrices[100];
 
int maxIndex,
    minIndex,
    levels[10];

Isto é, primeiro indique o tipo, e depois separe por vírgulas os nomes das variáveis (matrizes). Não há diferença, mas assim, evitamos ações desnecessárias. O mesmo acontece com a inicialização:

int value1=10,
    value2=12,
    matrix[2][2]={1,2,
                  3,4};


Funções que retornam diversos valores

Existem tais funções? Claro, você pode escrevê-las. Vamos ver o que você consegue fazer.
A função mais simples retorna um valor:

int func()
{
   return(100);
}

E se precisarmos do retorno de diversos valores de diferentes tipos ao mesmo tempo? Veja:

void SuperFunc(int& valueForReturn1,double& valueForReturn2,string& valueForReturn3)
{
   valueForReturn1=100;
   valueForReturn2=300.0;
   valueForReturn3="it works!!";
}

Agora, vamos tentar chamar essa função "incrível":

int value1=0;
double value2=0.0;
string value3="";
 
SuperFunc(value1,value2,value3);
MessageBox("value1="+value1+" value2="+value2+" value3="+value3);

O resultado é o seguinte:

Esta função tem uma diferença comum das funções simples: quando nós a declaramos, depois do argumento colocamos o caractere ampersand (&). Se você fizer isso com um argumento, você pode alterar seu valor dentro da função, e depois de chamá-lo, o resultado permanecerá. Tal operação com argumentos é chamada transferência de parâmetros por referência. Assim, você pode retornar quantas variáveis de diferentes tipos você desejar. Tente omitir os caracteres ampersand no código acima e veja o resultado:



Novo tipo de comentários

Você sabe como comentar uma linha:

// it is a one string comment

Mas, às vezes, é mais útil comentar um determinado bloco de código, a fim de desativá-lo temporariamente. O método acima não é conveniente para comentar 20-30 strings. Aqui podemos usar os comentários multilinha:

/*
   it is a multi-line comment.
   Very convenient, try it.
*/


Conclusão

Hoje você aprendeu um monte de coisas novas. Analisamos funções matemáticas e trigonométricas para operação com indicadores técnicos. Você viu em um exemplo simples como rastrear sinais de trading corretamente. E embora não seja conveniente usá-los em scripts, já que eles não foram criados com este propósito, em breve, nas seguintes lições você verá como usá-los em seus próprios indicadores e Expert Advisors. E então você verá quão útil eles realmente são.


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

Arquivos anexados |
superFunction.mq4 (1.14 KB)
Como implementar seus próprios critérios de otimização Como implementar seus próprios critérios de otimização
Neste artigo um exemplo de otimização com critérios de lucro/levantamento de crédito com resultados retornados em um arquivo é desenvolvido para um Expert Advisor Padrão - Média Móvel.
Modelo Universal do Expert Advisor Modelo Universal do Expert Advisor
Este artigo ajudará iniciantes em trading a criar Expert Advisors ajustáveis.
Abordagem do objeto no MQL Abordagem do objeto no MQL
Este artigo vai ser interessante, em primeiro lugar, para programadores novatos e profissionais que trabalham no ambiente MQL. Também seria útil se este artigo fosse lido por desenvolvedores e ideólogos do ambiente MQL pois as questões aqui analisadas podem tornar-se projetos para uma futura implementação do MetaTrader e da MQL.
Romper o limite do verificador de estratégia em testes de cobertura do EA Romper o limite do verificador de estratégia em testes de cobertura do EA
Uma ideia de teste de cobertura dos Expert Advisors utilizando o verificador de estratégia.