[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 204

 
borilunad:
Olá Allis! A impressão precisa ser prescrita onde não há leitura de carrapato! Eu coloco na impressão se houver um erro, e se ela abriu, e assim é prescrito no diário de bordo que ela abriu, e apenas uma vez!

Sim, você é um Feiticeiro)) Obrigado!
 
Allis:

Você é um mágico)) Obrigado!
Exatamente, na programação eu estou longe de ser um "Feiticeiro", estou apenas aprendendo, mas em alguns outros ramos, talvez!)) Obrigado!
 

Boa noite a todos. Há um indicador (superior na figura) que desenha seus valores (+1, 0, -1) na barra número 0, mas o cálculo é realizado pela barra número 1. Preciso escrever um indicador que conte o número de barras em cada bloco contínuo separado de +1 e -1 indicador superior e todo o histórico (a média na figura, a altura do gráfico de barras em unidades correspondentes ao número de barras).Eu fiz um indicador (no fundo da figura), mas ele só começa a ser desenhado no momento da instalação na janela (linha vertical azul).ajuda quem pode!


Código

int start()
  {
    
    int i;
      
    for(i=1;i<Bars-34-1;i++)                                               
     {
      double AO_Sig_Sig_1 =iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i);                           
      double AO_Sig_Sig_2 = iCustom(NULL,0,"AO_His_l-b_Signal-Signal_sploshnoy_PSR",0,i+1);
      
                                  
      if((AO_Sig_Sig_1!=AO_Sig_Sig_2)) break;                                                                
     }
         
    i=i*(AO_Sig_Sig_1);         
               
    if(i>0)            
     {
      UpMapBuffer[0]=i;
     }
    else
     {
      UpMapBuffer[0]=0;
     } 
         
    if(i<0)         
     {
      DnMapBuffer[0]=i;
     }
    else
     {
      DnMapBuffer[0]=0;
     }          
                 
      
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
borilunad:

Este é o restante da divisão! Veja nas etapas aritméticas e em sua impressora!

Coloque-o e você só verá os dois resultados alternadamente:

 int x = MathRand() % 2;
  Print("x =",x);


Eu não entendo a lógica. No livro que eu li:

Se você quiser calcular o restante da divisão da variávela pela variável be escrever o resultado para a variável ostatok, o operador de atribuição se parece com isto:

ostatok = a % b;

Acontece que em nosso caso, quandoMathRand() édividido por 2, o valor de x deve ser 0 ou 1. Por que deveria ser 0 ou 1 de repente? Por exemplo, um número aleatório 9 aparecerá. 9 % 2 = 4.5. O restante de é igual a 4.
 
hoz:


Algo que eu não entendo a lógica de. No livro que eu li:

Acontece que em nosso caso, quandoMathRand() édividido por 2, deve haver um valor de x igual a 0 ou 1. Por que deveria ser 0 ou 1 de repente? Por exemplo, um número aleatório 9 aparecerá. 9 % 2 = 4.5. O restante de é igual a 4.

Quando algo não bate certo, basta um par de cliques para responder...

P.S. ostatok = 9 % 2 = 1.

 
TarasBY:

Quando algo não bate certo, são necessários apenas alguns cliques para responder...

P.S. ostatok = 9 % 2 = 1.


Bem, está escrito:

"Divisão com um restante(divisão modulo,encontrar o restante da divisão,o restante da divisão) é umaoperaçãoaritmética que resulta em doisinteiros:um quociente incompleto eo restante da divisão de um número inteiro por outrointeiro. "

9 : 2 = 4,5 Estes são números duplos.

Se você cortar a parte fracionária, é 4. Onde você conseguiu 1?

 
hoz:


Há algo na lógica que eu não entendo. No livro que eu li:

Acontece que em nosso caso, quandoMathRand() édividido por 2, o valor de x deve ser 0 ou 1. Por que deveria sair 0 ou 1 de repente? Por exemplo, um número aleatório 9 aparecerá. 9 % 2 = 4.5. O restante de é igual a 4.

Victor, não confunda int com duplo! Entãoint x = MathRand() % 2; dá 0 ou 1! Ele não pode dar 0,1 ou 0,9, nem 1,1 ou 1,9, porque os decimais em int são arredondados e menos de 0,5 são descartados! E o sinal de % significa o restante da divisão, não o sinal de divisão. O sinal de divisão é /.

Eu coloquei seu exemplo com 9 e obtive um único resultado, 1, porque não há nenhum resultado aleatório:

  int x = 9 % 2;//MathRand()
  Print("x =",x);

Você pergunta:

9 : 2 = 4,5 Estes são números duplos.

Se você descartar a parte fracionária, você ganha 4. Onde você conseguiu 1?

Eu respondo: Então 0,5 é arredondado para 1!

O que é interessante, quando coloquei um ponto e zero (2,0) a 2, o compilador me deu um erro dizendo que % requer apenas um número inteiro!

Portanto, mesmo se você colocar o duplo x, ainda assim, sai uma int. inteira. Obrigado, Victor, por suas dúvidas! Graças a eles e a vocês, fiz uma pesquisa interessante, que ampliará minhas possibilidades de transformações matemáticas! Eu lhe devo um copo (virtual)! :))

 
hoz:


Bem, isso é o que diz:

"Divisão com um restante(divisão modulo,encontrar o restante da divisão,restante da divisão) é umaoperaçãoaritmética que resulta em doisinteiros:um quociente incompleto eo restante da divisão de um número inteiro por outronúmero inteiro. "

9 : 2 = 4,5 Estes são números duplos.

Se você cortar a parte fracionária, é 4. Onde você conseguiu 1?

Qual é o número inteiro mais próximo de 9 que é divisível por 2 sem um resto? Em seguida, subtraia esse número do divisor (9). O que você conseguiu?

P.S. Se você falhou, você pode imprimir o resultado: Imprimir ("ostatok = ", 9 % 2);

 

laveosa 07.03.2013 21:15

Olá. Você pode me dizer como substituir Symbol() por "EURUSD" em Orderend() ou o quê?

 
Mathemat:

laveosa 07.03.2013 21:15

Olá. Você pode me dizer como substituir Symbol() por "EURUSD" em Orderend() ou o quê?

NULL