Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Visualizações:
1669
Avaliação:
(35)
Publicado:
2014.01.15 08:23
Atualizado:
2016.11.22 07:33
\MQL5\Scripts\
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

O script contém uma classe, que pode ser usada para resolver expressões matemáticas e lógicas, definidas como string.

O script possui duas classes: cTokenBase e cToken (um membro de CTokenBase). A classe cTokenBase deve ser configurada antes de seu uso (veja abaixo).

As seguintes funções matemáticas são suportadas: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan.

Operações lógicas e matemáticas:  /, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.

A expressão pode conter números, incluindo números duplos, variáveis ​e arays ​de usuário. Se você for usar variáveis ​​de usuário e arrays, é necessário adicionar funções que retornam os valores destas variáveis ​​e arrays. As funções devem ser adicionadas à classe cTokenBase.

As variáveis ​​de usuário e arrays são nomeados com letras (o caso não é importante), os elementos dos arrays são definidos como: e[0], e[1], f[0], f[1].

Exemplos:

demo das expressões sToken


demo dos resultados sToken


Como configurar a classe cTokenBase

É necessário registrar o nome das variáveis ​​de usuário e os arrays. Isso deve ser feito na função UsersVariables(). A lista de variáveis​/arrays do usuário contêm os nomes separados por ";".

      void UsersVariables()
     {
         UserVariables="a;b;c;d"; // lista de variáveis ​​do usuário
         UserArrays="e;f";       // lista de matrizes do usuário
      } 

2. Você precisa adicionar uma chamada de função correspondente à função UserFunc(string funcname):

      string UserFunc(string FuncName)
     {
         if(FuncName=="a")return(a()); 
         if(FuncName=="b")return(b());
         if(FuncName=="c")return(c());
         if(FuncName=="d")return(d());
         Alert("Função da variável "+FuncName+" não está definida");
         return("0");
      }

3. Adicionar funções para todas as variáveis ​​do usuário:

      string a()
      {
         return("1");
      }
      string b()
      {
         return("2");
      }
      string c()
      {
         return("3");
      }
      string d()
      {
         return("4");
      } 

4. Adicionar uma chamada da função correspondente (dependente de ArrName) a função UserArray(string ArrName, int aIndex). O índice do elemento do array é especificado na variável aIndex.

      string UserArray(string ArrName,int aIndex){
         if(ArrName=="e")return(e(aIndex));
         if(ArrName=="f")return(f(aIndex));
         Alert("Função para o array "+ArrName+" não está definida");
         return("0");
      }

5. Adicionar funções para cada arrays:

      string e(int Index)
      {
         string v[]={"1","2","3","4","5","6","7","8","9"};
         return(v[Index]);
      }
      string f(int Index)
      {
         string v[]={"10","20","30","40","50","60","70","80","90"};
         return(v[Index]);
      }

A utilização da classe

1. Declare uma variável de entrada externa para o expressão:

input string Expression="entre com a expressão aqui";

2. Declare uma variável de classe cToken a nível global:

cToken token;

3. Inicialize a classe com a expressão.

   token.Init(Expression);

4. Chame o método SolveExpression()

double Value=token.SolveExpression();

A classe pode ser usada para resolver diversas expressões, basta usar várias instâncias da classe cToken:

cToken token1;
cToken token2;
cToken token3;
cToken token4;

Neste caso, todas as instâncias de classe usarão as mesmas variáveis ​​do usuário e arrays (declarado na classe cTokenBase)

Você pode adicionar suas funções.


Adicionando novas funções para a classe cToken

  1. Registre uma nova função. Ela deve ser feito na função Init().
  2. Adicione o código de cálculo para a função SolveFunc(string Func, string &aRes[]). Os argumentos da função estão localizados no array aRes[]. O número de argumentos não é limitado.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/303

CCI_DrawMode CCI_DrawMode

Implementação da opção de mudar o modo de desenho, como exemplificado pelo indicador CCI.

Classe CDownLoadHistory Classe CDownLoadHistory

A classe CDownLoadHistory fornece os métodos para download de dados históricos.

Trade_Time Trade_Time

Este indicador desenha um período de funcionamento que especifica a hora de início e término da negociação.

up3x1 up3x1

O Expert Advisor se baseia em três médias móveis e utiliza Stop Loss ou Take Profit para o fechamento de posições. Estabelece-se uma entrada no mercado após o término de uma tendência, iniciando assim, uma inversão da tendência.