[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 321

 
hoz:

https://www.mql5.com/ru/forum/144705 Aqui, eu comecei uma linha separada. Ela tem todos os detalhes do que é necessário.


Sim, é mais divertido com fonte completa. Imediatamente visível, o que de onde e por onde passa, que diabos e quantas vezes. Bem, isso foi o que imediatamente me chamou a atenção:

hoz:
int GetStateOfMA()
{
   if (GetMA(1) > GetMA(2))
   {
       pr ("GetStateOfMA() = CROSS_UP");
       return (CROSS_UP);
   }
       
   if (GetMA(1) < GetMA(2))
   {
       pr ("GetStateOfMA() = CROSS_DN");
       return (CROSS_DN);
   }
       
    pr ("GetStateOfMA() = CROSS_NO");
    return (CROSS_NO);
}

Você pode simplificá-lo até praticamente uma linha:

int GetStateOfMA(){
   if(GetMa(2)==GetMa(1)) return(0); else return(MathAbs(GetMA(2)-GetMA(1))/(GetMA(2)-GetMA(1)));
}

Aqui retornamos zero ou o sinal da diferença (mais ou menos). Veja: o módulo de um número dividido pelo próprio número é praticamente o mesmo que dividir um número por um número, ou seja, um, somente se o número for negativo, naturalmente menos um é devolvido.

Descobrindo mais a fundo.

 
gyfto:


Sim, é mais divertido com fonte completa. Imediatamente visível, o que de onde e por onde passa, que diabos e quantas vezes. Bem, isso foi o que imediatamente me chamou a atenção:

pode ser simplificado para quase uma linha:

Aqui retornamos zero ou o sinal da diferença de valores (mais ou menos). Veja: o módulo de um número dividido pelo próprio número é quase o mesmo que dividir um número por um número, ou seja, um, somente se o número for negativo, naturalmente menos um é devolvido.

Descobrindo mais a fundo.


Com que facilidade você compara dois números reais
 
gyfto:


Sim, é mais divertido com fonte completa. Você pode ver num relance o que é passado de onde e onde, que diabos e quantas vezes. Bem, isso foi o que imediatamente me chamou a atenção:

pode ser simplificado para quase uma linha:

Aqui retornamos zero ou o sinal da diferença de valores (mais ou menos). Veja: o módulo de um número dividido pelo próprio número é quase o mesmo que dividir um número por um número, ou seja, um, somente se o número for negativo, naturalmente menos um é devolvido.

Vou investigar mais a fundo.

Sim, faz sentido. Mas por que eu tenho que passar por todo esse trabalho?gyfto, vejo que você, a propósito, como eu, tende a universalizar tudo. Eu diria mais. Aqui você pode adicionar uma variável para o tamanho do desvio, e assim filtrar pequenos cruzamentos de médias. Tudo isso é compreensível, mas a legibilidade não será particularmente útil. Afinal, o valor da função precisará ser comparado a 0. Como <0 ou >0.

Vinina:

Com que facilidade você compara dois números reais.

Bem, se não estamos interessados na variação, o que nos impede? Onde isso está estipulado?
 
Vinin:

Com que facilidade você compara dois números reais

Você quer dizer que o dobro dividido pelo dobro ainda será o dobro, e o retorno só pode retornar int? Bem, você pode definir localmente int temp; e atribuir a ele, e retornar(temp);
 
gyfto:

No sentido de que o dobro dividido pelo dobro ainda será o dobro, e o retorno só pode retornar int? Bem, você pode definir localmente int temp; e atribuir a ela, e retornar(temp);
Dois números de pontos flutuantes obtidos após o cálculo quase nunca serão iguais. Ou melhor, mais freqüentemente eles não serão iguais, quando se pensa que deveriam ser iguais.
 
gyfto:

e o retorno só pode retornar int?

Não. Você pode devolver o que quiser. Não necessariamente int. Afinal de contas, se a função é do tipo duplo, como você retornará int a partir dela?
Em princípio não faz nenhuma diferença, o principal é retornar de uma função de um determinado tipo, o mesmo retorno. É assim que eu entendo isto.

Zhunko:
Dois números de pontos flutuantes obtidos após o cálculo quase nunca são iguais. Ou melhor, mais freqüentemente não serão iguais, quando se pensa que deveriam ser iguais.

Então você tem que definir constantemente alguma distância variável para comparar a diferença entre os mashups que você está comparando? Quero dizer, como:

extern dist = 0.1 // Расстояние между сравниваемыми машками.
//---------------------------
GetMA(2) - GetMA(1) >= dist;
 
hoz:

uma tendência para tornar tudo universal.


Não, de acordo com minha psicologia, ao me analisar, é mais um desejo de fazer um programa para as pessoas, não apenas para mim mesmo.

hoz:

Por que ficar tão retorcido?


Você provavelmente não vai acreditar em mim, mas é uma falta de escolaridade. Sinto muito. O problema é que, quando saí da escola (6ª série), as crianças daquela idade ainda têm uma curiosidade vívida de criança, uma sede de conhecimento. Então, no ensino médio, o sistema escolar mata tudo isso. Estou agora na casa dos trinta, mas ainda tenho essa curiosidade viva e ainda não estou ciente dessas restrições condicionais, não estou ciente do que é "lata" e do que é "pervertido", porque para mim é tudo "lata". Desculpe...

hoz:
Zhunko:
Dois números de ponto flutuante, obtidos após o cálculo, quase nunca serão iguais. Ou melhor, com mais freqüência eles não serão iguais, quando você acha que deveriam ser.


Então, é necessário definir constantemente algum tipo dedistância variável para comparar a diferença entre os mashups que estão sendo comparados? Quero dizer, como:

extern dist = 0.1 // Расстояние между сравниваемыми машками.
//---------------------------
GetMA(2) - GetMA(1) >= dist;
Sim, isso mesmo, isso é lógico.
 
gyfto:

Você provavelmente não vai acreditar em mim, mas é a falta de escolaridade que está saindo. Desculpe. O fato é que quando saí da escola (6ª série), as crianças daquela idade ainda têm uma curiosidade vívida de criança, uma sede de conhecimento. Então, no ensino médio, o sistema escolar mata tudo isso. Estou agora na casa dos trinta, mas ainda tenho essa curiosidade viva e ainda não estou ciente dessas restrições condicionais, não estou ciente do que é "lata" e do que é "pervertido", porque para mim é tudo "lata". Desculpe...


Na verdade, eu sou meio educado, mas ensinei o que precisava, ignorando o resto puramente. Descobri que eu não estava interessado em muitas coisas e me afastei dessas coisas triviais (história, geografia, etc.). Eu mesmo não penso assim, não como os outros. Mas sua abordagem é realmente peculiar. Pensei imediatamente que sua educação não falta, mas, pelo contrário, é algo assim. Porque eu não entendi imediatamente tudo das análises acima.
 
hoz:
A abordagem é peculiar.


Deixe-me explicar em outras palavras: isto é autodidata, eu sou autodidata toda a minha vida, portanto NÃO sei que abordagem adotou. NÃO sei o que é aceito por você, o que não é.

OK, de volta às velas. Suponha que temos i_AnyBarsToHistory = 30, i_ѕеqceptBarsConnt = 3. Se em uma janela de 30 castiçais cntUp == i_ѕеԛceptBarsCount e cntDn == i_ѕеԛceptBarsCount uma vez, então o que deve acontecer? Ou conta sempre apenas um contador por passe?

Sim, e por que saímos prematuramente do loop antes de chegarmos a Close[1].

 

Ajuda, não consigo descobrir como fazer um indicador comparar um determinado número de barras recentes e calcular quantas delas estavam para cima, quantas estavam para baixo e quantas eram pinbars e quem tinha que preços fechar/abrir, alto/baixo e volumes?

Precisamos fazer isso especificamente no indicador.

Razão: