Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 507

 
lil_lil:

Indicador MTF, coloco H1 em configurações externas, anexo-o ao gráfico M15. O sinal pisca na barra 4. Quando a barra H1 está fechada, o sinal não pisca, na M15 o sinal pára de piscar na barra 4. Se eu colocá-lo em М1, respectivamente, ele pára de piscar na barra 60. Assim, i+N deve ser calculado para que N varie dependendo do período selecionado nas configurações e no gráfico do período, no qual o indicador está anexado.

Você tem o código completo?

 

Boa tarde. Eu não consigo entender, OOP apologistas, por favor, ajudem.

Portanto, existe uma classe, por exemplo, a CCandle. Nesta classe, haverá os mesmos parâmetros para todos os objetos desta classe. Estes parâmetros também podem ser inicializados no OnInit() e serão os mesmos para todos os objetos desta classe. Portanto, como posso fazê-lo corretamente, para que não sejam inicializados toda vez que se cria um novo objeto. Suponha que todos eles em CCandle::Init() funcionam. Eu não consigo entender.

 
Juer:

Boa tarde. Eu não consigo entender, OOP apologistas, por favor, ajudem.

Existe uma classe, por exemplo a CCandle. Nesta classe, haverá os mesmos parâmetros para todos os objetos desta classe. Estes parâmetros também podem ser inicializados no OnInit(), e serão os mesmos para todos os objetos desta classe. Portanto, como posso fazê-lo corretamente, para que não sejam inicializados toda vez que se cria um novo objeto. Suponha que todos eles em CCandle::Init() funcionam. Eu não consigo entender.

Isto é feito na lista de inicialização, que está localizada na construtora da classe:

class CCandle
{
   int      m_nA;
   double   m_fB;
   datetime m_dtC;


   void CCandle::CCandle(void);
};

CCandle::CCandle(void)
            : m_nA(0)
            , m_fB(0.0)
            , m_dtC(0)
{
}
 
Juer:

Boa tarde. Eu não consigo entender, OOP apologistas, por favor, ajudem.

Portanto, existe uma classe, por exemplo, a CCandle. Nesta classe, haverá os mesmos parâmetros para todos os objetos desta classe. Estes parâmetros também podem ser inicializados no OnInit() e serão os mesmos para todos os objetos desta classe. Portanto, como posso fazê-lo corretamente, para que não sejam inicializados toda vez que se cria um novo objeto. Suponha que todos eles em CCandle::Init() funcionam. Eu não consigo entender.

Fazer um construtor paramétrico em uma classe, e passar a ele os parâmetros necessários para inicializar o objeto
 
Eu não entendi nada. A inicialização de um objeto não é um problema. Como rubricar de uma vez por todas os objetos de uma determinada classe? Ou seja, um novo objeto é criado e os parâmetros já são inicializados com valores, sem ter que inicializá-los a cada vez para cada novo objeto.
 
Colegas, favor informar se é correto usar ooperador de retorno do corpo do laço? Por exemplo, temos uma função com um loop. Em algum momento, precisamos devolver algum valor e assim sair da função. A maneira correta é usar a pausa e depois retornar(valor). Mas podemos usar retorno(valor) imediatamente?
 
Juer:
Eu não entendi nada. A inicialização de um objeto não é um problema. Como rubricar de uma vez por todas os objetos de uma determinada classe? Ou seja, um novo objeto é criado e os parâmetros já são inicializados com valores, sem ter que inicializá-los a cada vez para cada novo objeto.
Os parâmetros podem ser inicializados a partir do que existe.
 
lsv107:
Colegas, favor informar se é correto usar ooperador de retorno do corpo do laço? Por exemplo, temos uma função que tem um loop. Em algum momento, precisamos devolver algum valor e assim sair da função. A maneira correta é usar a pausa e depois retornar(valor). Mas podemos simplesmente retornar (valor) de uma vez?
Nada o impede de sair do laço.
 
Artyom Trishkin:
Os parâmetros podem ser inicializados a partir de algo que existe.

É uma pergunta simples, não é? O objetivo é rubricar a mesma coisa.

 
Artyom Trishkin:
Não há nada que o impeça de sair do loop.

Eu tinha apenas medo que o loop permanecesse ativo dentro da função e que o operador de retorno transferisse o controle do loop ativo para o ponto de chamada, haveria um risco de transbordamento da pilha se a função fosse chamada novamente (recursividade). Este foi exatamente o caso em Pascal e, pelas regras de programação estrutural em geral, os laços devem ser terminados um após o outro e, em seguida, a função é abandonada. Se o retorno, juntamente com uma função, termina o loop, ótimo, mas eu deveria ter esclarecido isso, já que estou de volta à programação após uma longa pausa.