matriz estática ? - página 3

 

OK, estou vendo algo,

 while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;    
     }

quando termina este laço ? quando i não é >=0 i.e. -1

então o próximo código é .

     for(val1=High[i]; v1[i] == 0 ;i++)  // or v1[i] == EMPTY_VALUE
      {
      Print (v1[i]);
      }

então o valor inicial para i é -1. . daí sua impressão. v[-1] faz na verdade = 0 para que o loop termine.

 
Quando eu imprimo qualquer coisa, parece sempre igual a 0

int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0) v1[i]=High[i];
      else          v1[i]=v1[i+1];

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
   
     Print (v1[i+10]);
      

Eu mudei para outra coisa e as declarações de enquanto e até criei um código totalmente diferente e tudo parece = 0 eu não tenho idéia do porquê.
Mas ainda assim o indicador está funcionando e o buffer parece segurar val1 dentro da v1[i] corretamente, mas não posso me referir a nada no array para imprimir nada disso.

tudo sempre = 0

Vou continuar lendo um pouco mais.






 
for(v1[i]=High[i]; v1[i] !=0; i++)
      {
      Print (v1[i]);
      }
      

This prints nothing so still having -1 issue I guess
mas se começa um -1 então termina assim que cicla uma vez porque i++ também o leva a zero novamente.

Eu não sabia que isto para declaração seria feito pela declaração de enquanto uma vez que isto ocorre fora da declaração de enquanto

 
int i=Bars;         
   
   while(i>=0)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      if (val1 > 0)
      { 
      v1[i]=High[i];
      Print (v1[i]);
      }
      else          
      {
      v1[i]=v1[i+1];
      }

      val2=iFractals(NULL, 0, MODE_LOWER,i);
      if (val2 > 0) v2[i]=Low[i];
      else          v2[i]=v2[i+1];
      
      i--;
       
     }
Ainda 0 mesmo ao imprimir dentro e antes do laço

Parece que até mesmo o básico das tarefas me escapa. Ler até mesmo sobre Barras não menciona o assunto de -1 na documentação ou no livro, pelo menos nas seções Barras ou Variáveis Predefinidas onde eu achava que deveria estar.
Pare de desanimar. 1,5 semanas sobre este único assunto simples e, ainda assim, a impressão, pensei que seria a mais simples das tarefas que me ajudaria a ir na direção certa.

Que chatice! LOL

Vou tentar mais amanhã.
 

Você não leu meu post com muito cuidado . . .

As barras não são iguais a -1 em nenhum momento . . . ou não têm nada a ver com o -1 que mencionei.

Você está usando a variável i em dois loops . . a menos que você a mude para algum outro valor entre os loops então o valor inicial para o segundo loop será o valor final do primeiro loop.

 
Estou confuso


Eu me livrei completamente do meu "loop for loop" e pensei que iria apenas imprimir dentro do loop.
Tentei reinicializar i=0 ou i !=0 sem nenhum efeito. ou mesmo uma variável totalmente diferente, como val3-iFractals.....a
E a=0 e não barras, depois contado para cima a partir daí também e a impressão ainda é igual a 0.

Eu não entendo porque imprimir dentro do laço também não funcionará como no código postado acima.

Obrigado

 

Talvez você possa responder a uma pergunta para mim ...

Por que tantas pessoas com pouca experiência em codificação parecem estar aterrorizadas em acrescentar declarações impressas? Por que você quer tornar a vida tão difícil para si mesmo . . talvez você esteja interessado em S&M ?

Você tem uma única declaração de impressão . . e ela sai 0 . . . você nem sabe qual era o valor de i na época, você não sabe qual era o valor de val1. . você sabe como funciona o iFractals, quero dizer como ele calcula o que faz e que faixa de valores ele dá ?

 

Copiei seu código, adicionei algumas declarações de impressão e o executei . . está imprimindo . .

2011.09.18 14:42:24 Agente86 EURUSD,H1: v1[29]= 1.4727

 
RaptorUK:

Talvez você possa responder a uma pergunta para mim ...

Por que tantas pessoas com pouca experiência em codificação parecem estar aterrorizadas em acrescentar declarações impressas ? Por que você quer tornar a vida tão difícil para si mesmo . . talvez você esteja interessado em S&M ?

Você tem uma única declaração de impressão . . e ela sai 0 . . . você nem sabe qual era o valor de i na época, você não sabe qual era o valor de val1. . você sabe como funciona o iFractals, quero dizer como ele calcula o que faz e que faixa de valores ele dá ?


Não tenho medo de acrescentar declarações impressas, coloquei-as após cada variável e não entendo o que está imprimindo e por quê, porque não é o que eu esperava ver imprimir.
A única declaração impressa que você vê não é a única que eu coloquei lá. Eu não teria publicado se eu tivesse tentado apenas uma única declaração impressa.
Somente depois de 2-3 semanas tentando centenas de coisas e lendo e relendo 100's de posts, e dicionário, livro, documentação e mais, eu postei para tentar entender como esta matriz funciona e como imprimir os elementos e valores

. Trabalhei nisto 2-3 horas por dia tentando entender e não estou muito mais perto, embora tenha aprendido muitas outras coisas enquanto tentava entender isto.

Eu reescrevi completamente o código com um loop em vez de um loop de tempo e limitei o array de 100 elementos pensando que isso me simplificaria um pouco; e ainda não consegui imprimir os valores.


Eu simplesmente não o entendo.

Pensei que iFractals dá o valor da alta/baixa da vela do meio em uma série de 5 velas desde que estas 2) velas à esquerda, e 2)velas à direita sejam mais altas ou mais baixas do que a vela do meio. Marcar ou gravar o ponto alto ou baixo da vela do meio.

Não conheço os cálculos reais dos iFractals, mas não pensei que isso fosse importante, já que eu estava imprimindo se >0 o que eu achava que significava verdade, e como estava sendo inicializado com High[i] também .

Eu simplesmente não o entendo.


 
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[0]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[1]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[2]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[3]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[4]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[5]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[6]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[7]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[8]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[9]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[10]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[11]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[12]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[13]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[14]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[15]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[16]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[17]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[18]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[19]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[20]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[21]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[22]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[23]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[24]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[25]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[26]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[27]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[28]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[29]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[30]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[31]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[32]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[33]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[34]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[35]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[36]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[37]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[38]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[39]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[40]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[41]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[42]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[43]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[44]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[45]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[46]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[47]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[48]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[49]= 0
2011.09.20 20:41:50 2011.01.03 10:21 Agent86_5min EURUSD,M5: v1[50]= 0


A partir deste código e sim houve outras declarações de impressão em toda parte, exceto para val1 todas as outras tentativas de impressão v1[i] em qualquer lugar nas impressões do código = 0

//+------------------------------------------------------------------+
//|                                                  Agent86_5min.mq4 |
//|                                                    Unfinished POS |
//|                                    
//+------------------------------------------------------------------+
#property copyright "Unfinished POS by Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=15.0;
extern int MagicNumber=123486;

double v1[];
double v2[];
double v3[];
double val1;
double val2;
double val3;


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  
  
   double   faster = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1), //MODE_MAIN
            slower = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MODE_SIGNAL
            
  
          
   
    for(int i=Bars; i >= 0; i--)
     {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
   
      // Print (val1, (" val1")); //will print some 0's
      if (val1 > 0)
         {        
         
          v1[i]=High[i];
 
         }
      else          
         {
         v1[i]=v1[i+1];
         }
        

      val2=iFractals(NULL, 0, MODE_LOWER,i);
     
      if (val2 > 0) 
         {
         v2[i]=Low[i];
         }
      else          v2[i]=v2[i+1];
     
      i--;
       
     }
   
   for(i=50; i>=0; i--)
      {
      Print ("v1[", i, "]= ", v1[i]);
      }

//----
            
                       
            

           

//---- 

 
                    
        

                
   return(0);
  }    

//+------------------------------------------------------------------+