Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
sToken - biblioteca para MetaTrader 5
- Visualizações:
- 1669
- Avaliação:
- Publicado:
- 2014.01.15 08:23
- Atualizado:
- 2016.11.22 07:33
- 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:
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
- Registre uma nova função. Ela deve ser feito na função Init().
- 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
Implementação da opção de mudar o modo de desenho, como exemplificado pelo indicador CCI.
Classe CDownLoadHistoryA classe CDownLoadHistory fornece os métodos para download de dados históricos.
Este indicador desenha um período de funcionamento que especifica a hora de início e término da negociação.
up3x1O 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.