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

 
artmedia70:
Mostrar todos os códigos


O problema é que, se você remover o MA-comparison, ele funciona!

Se você ligá-lo de volta, ele NÃO funciona em absoluto!

int Stoch_1,Stoch_2,Ma_1,Ma_2;


int start()
  {
Ma_1=iMA(NULL,PERIOD_M5,5,0,MODE_LWMA,PRICE_CLOSE,1) ;
Ma_2=iMA(NULL,PERIOD_M5,15,0,MODE_LWMA,PRICE_CLOSE,1) ; 

Stoch_1=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_MAIN,1); 
Stoch_2=iStochastic(NULL,PERIOD_M5,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
Print (Ma_1,"___",Ma_2);  // печатает 134 (GBPJPY)

if ( Hour()>10 && Hour()<20) 
 {
  if ( Ma_1 > Ma_2)       // если убрать строку- работает. Оставить - не работает       
      {
                      

//               if (Stoch_1>Stoch_2)


 { SetVLine(Blue, "", 0, 0, 1);} 
 
}}
     
     
  if ( Hour()>10 && Hour()<20) 
   {
  if ( Ma_1<Ma_2)       // если убрать строку- работает. Оставить - не работает    
     {
                               
 
 // if (Stoch_1<Stoch_2)                      
 

              {SetVLine(Red, "", 0, 0, 1);} 
  
  
}  }

} return(0); //}
//---------------------------
//+----------------------------------------------------------------------------+
void SetVLine(color cl, string nm="", datetime t1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_VLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_STYLE, st);
  ObjectSet(nm, OBJPROP_WIDTH, wd);
  }
 
artmedia70:

MA_1 e MA_2 devem ser do tipo duplo.

Qual é o seu tipo?


"Mas eu sempre fui a rainha de copas" (c) "12 Cadeiras"

e eu sempre os coloquei em int

 
rigonich:
Sim, como foi dito acima, se as variáveis são do tipo int, elas darão 1 para as euras, porque converter1,3075 para int dá 1, e você provavelmente está imprimindo suas variáveis, não os valores das médias.


gbkznm.... que vergonha!!! exatamente! int é um número INTEGRAL e o dobro é um ponto flutuante....

vergonha!

 
lottamer:

e eu sempre os enfiei na int

Estou cheio de conhecimento! :)))
 

TUDO PARECE ESTAR FUNCIONANDO!!!

MUITO OBRIGADO!!!!

Pensei que tinha acabado.... :))))))

 
TarasBY:
Conhecimento - Calças COMPLETAS! :)))


Eu me arrependo......
 
lottamer:


"Mas eu sempre fui a rainha de copas" (c) "12 Cadeiras"

e eu sempre os tive na int


As variáveis do tipo int são inteiros, e quando você as define para um número com uma parte fracionada, o número é arredondado para o número inteiro mais próximo primeiro, e então o valor desse número é definido para uma variável int.
 
Se você colocar uma variável dupla em uma int, eu sei o que vai acontecer. E se fizermos a operação inversa? int paradobrar não será pior, será?
 

Ensine-me, pelo amor de Deus, como trabalhar com comentários:

1. se um comentário já foi feito, ou está sendo feito, como não colá-lo, mas continuar fazendo outro comentário, se, por exemplo, a pergunta já foi respondida?

2. Se um código for inserido, como inserir um texto simples depois de inseri-lo? Digite continua digitando o texto como código.

3. Ao copiar, algumas coisas que ele insere por padrão, por exemplo, ao copiar da ajuda, o copiado é inserido como um link. Como eu colo o copiado como texto simples?

 
lottamer:
Se você colocar uma variável dupla em uma int, eu sei o que vai acontecer. Mas e se você fizer a operação reversa? int paradobrar não vai piorar, vai?
Uma variável só pode ser colocada em um determinado lugar na memória do computador, que tem seu próprio endereço e tamanho. O que você está falando é chamado de atribuição a uma variável detipo o dobro do valor de um número de tipo int.
Razão: