Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 94
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Eis a questão de chamar uma função dentro de uma classe: como privada: pública:, como passar dados para a classe e como obter um resultado da classe. Até agora é isso!
Dentro da classe, o resultado tem que ser calculado de alguma forma. E como a classe sem seu envolvimento entenderá que precisa devolver o resultado agora, mas não em algum outro momento?
Portanto, você precisa de um método dentro da classe que possa ser chamado de fora. Portanto, deve ser público.
Embora, naturalmente, você possa fazer um método privado que lerá todos os dados dentro da classe e os escreverá na variável de classe, e o método público chamará o método privado. Mas algum método deve ser chamado de qualquer maneira. E o que será contado lá em método privado, como os cálculos serão complexos e que variáveis estarão envolvidas nos cálculos - tudo depende de você, e de sua própria responsabilidade.
Esse é o ponto, como chamar uma função dentro de uma classe, ou seja, como privada: pública:, como passar dados para uma classe e como obter o resultado da classe. Até agora, aqui está!
#property strict
#property script_show_inputs
//--- input parameters
input int inputA=1;
input int inputB=3;
class ASD
{
private:
// Здесь располагаются переменные и функции, доступные только внутри класса
public:
int Add(int a,int b)
{
Print(__FUNCTION__,": Результат сложения: a",a," + b",b," = ",a+b);
return(a+b);
}
} ar;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
ar.Add( inputA, inputB );
}
//+------------------------------------------------------------------+
Acho que deve funcionar, ainda não verifiquei se está correto)
Aqui, obrigado, eu já estou começando a me mover -
o roteiro:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
classe:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Alerta dá um resultado de 8, mas é um alerta da classe, e agora eu preciso de um alerta do roteiro
Aqui, obrigado, eu já estou começando a me mover -
o roteiro:
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
classe:
{
private:
int d;
int g (int a_s,int a_d){d=a_s+a_d;return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
void sf () {Alert (d);}
};
Alerta dá um resultado de 8, mas é um alerta da classe, e agora eu preciso de um alerta do roteiro
Ok, você declara método Alert() na classe e o chama de ar.Alert(), embora agora o método sf() faça o mesmo. Não sei bem o que você quer ver depois de ter escrito um valor para o campo d?
Parece que deve funcionar, ainda não checado)
A todos! Muito obrigado! Consegui -
roteiro:
ASD ar;
void OnStart()
{
ar.fg (3,5);
Alert ( ar.sf ());
}
classe:
{
private:
int d;
int g (int a_s,int a_d) {return (d=a_s+a_d); }
public:
void fg (int a_s,int a_d) { g (a_s,a_d); }
int sf () {return (d);}
};
Vou mastigar!
Não me lembro quem me escreveu neste tópico que o testador está quebrado, mas posso responder que ele pode muito bem estar quebrado. Ou engole diferentes pedaços de tempo ou começa a contar a partir de um segmento arbitrário (embora todas as citações estejam lá).
Acho que quem precisa ver vai entender.
?
(retorna um número arredondado para um múltiplo de um determinado valor)
ou como arredondar, por exemplo, 2285,13 para ser um múltiplo de (0,25) 2285,00 __ 2285,25 ___ 2285,50 ___ 2285,75
como posso saber a alavancagem de um par em vez de uma conta?
A quantidade de alavancagem fornecida: