[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 424

 
re-postado
Ilya12345:

Olá a todos! Estou mexendo no código há dias, mas sem sorte! A condição não funciona. À variável Z é sempre atribuído o último valor, neste caso, ela equivale a Z=1. O que eu preciso consertar para que as condições funcionem? Quem pode ajudar?

X = MathFloor(PriceTarget);
Y = (PriceTarget - X);
{
se (0 < Y <= 0,03125)
{Z = 0.03125;}

se (0,03126 < Y <= 0,0625)
{Z = 0.0625;}

se (0,0625 < Y <= 0,09375)
{Z = 0.09375;}

se (0,09375 < Y <= 0,125)
{Z = 0.125;}

se (0,125 < Y <= 0,15625)
{Z = 0.15625;}

se (0,15625 < Y <= 0,1875)
{Z = 0.1875;}

se (0,1875 < Y <= 0,21875)
{Z = 0.21875;}

se (0,21875 < Y <= 0,25)
{Z = 0.25;}

se (0,25 < Y <= 0,28125)
{Z = 0.28125;}

se (0,28125 < Y <= 0,3125)
{Z = 0.3125;}

se (0,3125 < Y <= 0,34375)
{Z = 0.34375;}

se (0,34375 < Y <= 0,375)
{Z = 0.375;}

se (0,375 < Y <= 0,40625)
{Z = 0.40625;}

se (0,40625 < Y <= 0,4375)
{Z = 0.4375;}

se (0,4375 < Y <= 0,46875)
{Z = 0.46875;}

se (0,46875 < Y <= 0,5)
{Z = 0.5;}

se (0,5 < Y <= 0,53125)
{Z = 0.53125;}

se (0,53125 < Y <= 0,5625)
{Z = 0.5625;}

se (0,5625 < Y <= 0,59375)
{Z = 0.59375;}

se (0,59375 < Y <= 0,625)
{Z = 0.625;}

se (0,625 < Y <= 0,65625)
{Z = 0.65625;}

se (0,65625 < Y <= 0,6875)
{Z = 0.6875;}

se (0,6875 < Y <= 0,71875)
{Z = 0.71875;}

se (0,71875 < Y <= 0,75)
{Z = 0.75;}

se (0,75 < Y <= 0,78125)
{Z = 0.78125;}

se (0,78125 < Y <= 0,8125)
{Z = 0.8125;}

se (0,8125 < Y <= 0,84375)
{Z = 0.84375;}

se (0,84375 < Y <= 0,875)
{Z = 0.875;}

se (0,875 < Y <= 0,90625)
{Z = 0.90625;}

se (0,90625 < Y <= 0,9375)
{Z = 0.9375;}

se (0,9375 < Y <= 0,96875)
{Z = 0.96875;}

se (0,96875 < Y <= 1)
{Z = 1;}
}
W = X + Z;




Ilya12345:

Olá a todos! Há dias que estou mexendo com o código, mas sem sucesso! A condição não funciona. A variável Z é sempre atribuída ao último valor, neste caso, é igual a Z=1. O que eu preciso consertar para que as condições funcionem? Alguém pode me ajudar?


Tente isto

X = MathFloor(PriceTarget);
Y = (PriceTarget - X);
{
if (0 < Y <= 0.03125)
Z = 0.03125;
  else
    if (0.03126 < Y <= 0.0625)
    Z = 0.0625;
      else
        if (0.0625 < Y <= 0.09375)
        Z = 0.09375;
          else
            if (0.09375 < Y <= 0.125)
            Z = 0.125;
              else
                if (0.125 < Y <= 0.15625)
                Z = 0.15625;
                  else
                  if (0.15625 < Y <= 0.1875)
                  Z = 0.1875;
                    else
                      if (0.1875 < Y <= 0.21875)
                      Z = 0.21875;
                        else
                          if (0.21875 < Y <= 0.25)
                          Z = 0.25;
else
if (0.25 < Y <= 0.28125)
Z = 0.28125;
  else
    if (0.28125 < Y <= 0.3125)
    Z = 0.3125;
      else
        if (0.3125 < Y <= 0.34375)
        Z = 0.34375;
          else
            if (0.34375 < Y <= 0.375)
            Z = 0.375;
              else
                if (0.375 < Y <= 0.40625)
                Z = 0.40625;
                  else
                    if (0.40625 < Y <= 0.4375)
                    Z = 0.4375;
                      else
                        if (0.4375 < Y <= 0.46875)
                        Z = 0.46875;
else
if (0.46875 < Y <= 0.5)
Z = 0.5;
  else
    if (0.5 < Y <= 0.53125)
    Z = 0.53125;
      else
        if (0.53125 < Y <= 0.5625)
        Z = 0.5625;
          else
            if (0.5625 < Y <= 0.59375)
            Z = 0.59375;
              else
                if (0.59375 < Y <= 0.625)
                Z = 0.625;
                  else
                    if (0.625 < Y <= 0.65625)
                    Z = 0.65625;
                      else
                        if (0.65625 < Y <= 0.6875)
                        Z = 0.6875;
                          else
                            if (0.6875 < Y <= 0.71875)
                            Z = 0.71875;
else
if (0.71875 < Y <= 0.75)
Z = 0.75; 
  else
    if (0.75 < Y <= 0.78125)
    Z = 0.78125;
      else
        if (0.78125 < Y <= 0.8125)
        Z = 0.8125; 
          else
            if (0.8125 < Y <= 0.84375)
            Z = 0.84375;
              else
                if (0.84375 < Y <= 0.875)
                Z = 0.875;
                  else
                    if (0.875 < Y <= 0.90625)
                    Z = 0.90625;
                      else
                        if (0.90625 < Y <= 0.9375)
                        Z = 0.9375;
                          else
                            if (0.9375 < Y <= 0.96875)
                            Z = 0.96875;
                              else
                                if (0.96875 < Y <= 1)
                                Z = 1;
} 
W = X + Z;
 
sergeev:
transferido de


tente assim.


works!!!! obrigado de verdade!!! especialmente pela rapidez!
 
Ilya12345:

works!!!! obrigado de verdade!!! especialmente pela rapidez!


Em algum lugar como este:

double mK[] ={0,0.03125,0.0625....,1};



 

   for (int i=0;i<(ArraySize(mK)-1);i++)
   
   {
    
     if (y>mK[i] && y<=mK[i+1]) 
        {z=mK[i+1];
         break;
        }
   } 
 

Tenho duas perguntas sobre variáveis globais.

Pergunta 1: está escrito que eles são armazenados no disco rígido. O tempo de acesso a eles é tão longo quanto ao ler dados de um arquivo ou tão rápido quanto ao ler uma variável comum?

Pergunta 2: Diz que as variáveis globais só podem ser do tipo duplo, mas e se eu quiser armazenar dados de outros tipos, por exemplo, int ou string?

 
KONDOR:

1. Não posso reclamar sobre a velocidade.

2. Onde está escrito? todos os tipos podem ser globais.

"Não reclamar" não é realmente um conceito matemático.

Está escrito aqui:

 
Elenn:

"Não reclamar" não é realmente um conceito matemático.

Está escrito aqui:

Ela diz que a variável global é salva no disco rígido e armazenada por um certo tempo. Enquanto o programa (terminal, indicador, conselheiro) estiver em execução, todas as variáveis estão em RAM, ou seja, o valor do G.P. só será lido do disco quando o programa for lançado pela primeira vez.
 
Temnyj:
Ela diz que a variável global é salva no disco rígido e armazenada por um certo tempo. Enquanto o programa (terminal, indicador, Expert Advisor) estiver em execução, todas as variáveis são armazenadas na RAM, ou seja, o valor de G.P. só será lido do disco quando o programa for lançado pela primeira vez.

Obrigado pela informação. E quanto à segunda pergunta?
 
Elenn:

Obrigado pela informação. E quanto à segunda pergunta?

Eu realmente não entendo a segunda pergunta.

É melhor você lê-lo aqui.

 
Temnyj:

Eu realmente não entendo a segunda pergunta.

Você pode querer lê-lo aqui


Qualquer variável é perdida quando você sai do programa (reinicie seu computador, etc.). Exceto para variáveis globais, porque elas são armazenadas no disco rígido. Mas eles só podem ser do tipo duplo. O que fazer, se for necessário armazenar variáveis de outros tipos (int ou string, por exemplo)? O que não está claro aqui?

 
Elenn:


Qualquer variável será perdida ao sair do programa (reiniciar o computador, etc.). Exceto para variáveis globais, porque elas são armazenadas no disco rígido. Mas eles só podem ser do tipo duplo. O que fazer, se for necessário armazenar variáveis de outros tipos (int ou string, por exemplo)? O que não está claro aqui?

Existem variáveis globais do nível atual do programa e variáveis globais do nível do terminal. Os primeiros são reinicializados na desinicialização, os segundos não. Você está falando claramente sobre este último.

É claro que seria difícil, por exemplo, esconder um array como o dobro de 100 itens em tais variáveis. É melhor não usá-los de forma alguma para tais fins.

Utilize um arquivo para armazenar dados de qualquer tipo. Não há limitações aí. E este método é usado por todos em todos os momentos.


Razão: