statik dizi? - sayfa 3

 

Tamam, bir şey görüyorum,

 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--;    
     }

bu döngü ne zaman bitiyor ben >=0 olmadığında, yani -1

sonra bir sonraki kod . .

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

yani i için başlangıç değeri -1'dir . . bu nedenle çıktınız. v[-1] aslında = 0 yapar, böylece döngü biter.

 
Herhangi bir şey yazdırdığımda her zaman 0'a eşit görünüyor

 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 ]);
      

i'yi başka bir şeyle ve while ifadeleriyle değiştirdim ve hatta tamamen farklı bir kod oluşturdum ve hepsi = 0 gibi görünüyor Neden hiçbir fikrim yok.
Ancak yine de gösterge çalışıyor ve arabellek v1[i] içinde val1'i düzgün bir şekilde tutuyor gibi görünüyor, ancak dizideki herhangi birini yazdırmak için herhangi bir şeye başvuramıyorum.

her şey her zaman = 0

Biraz daha okumaya devam edeceğim.






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

This prints nothing so still having - 1 issue I guess
ama -1 ile başlarsa, bir kez döner dönmez biter çünkü i++ da onu tekrar sıfıra götürür.

Bu while ifadesinin dışında gerçekleştiğinden, bunun for ifadesinin while ifadesinden etkileneceğini bilmiyordum.

 
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--;
       
     }
Döngünün içinde ve öncesinde yazdırırken bile hala 0

Temel görevlerin bile benden kaçtığı görülüyor. Barlar hakkında okumak bile belgelerde veya kitapta en azından Barlar veya Öntanımlı değişkenler bölümlerinde olması gerektiğini düşündüğüm -1 konusundan bahsetmiyor.
Cesaret kırmayı bırakın. Bu basit konu üzerinde 1.5 hafta kaldı ve yine de yazdırmak, doğru yöne gitmeme yardımcı olacak en basit iş olacağını düşündüm.

Tam bir serseri ! ÇOK KOMİK

Yarın biraz daha deneyeceğim.
 

Yazımı çok dikkatli okumamışsınız. . .

Çubuklar hiçbir zaman -1'e eşit değildir. . . veya bahsettiğim -1 ile ilgisi var.

i değişkenini iki döngüde kullanıyorsunuz. . . Döngüler arasında başka bir değere değiştirmezseniz, ikinci döngü için başlangıç değeri, ilk döngüdeki bitiş değeri olacaktır.

 
Kafam karıştı


For döngüsümden tamamen kurtuldum ve döngünün içine yazdıracağımı düşündüm.
i=0 veya i !=0'ı etkisiz hale getirmeye çalıştım. hatta tamamen farklı bir değişken, örneğin val3-iFractals.....a
Ve a=0 ve çubuklar değil, oradan da yukarı doğru sayılır ve yazdırma hala 0'a eşittir.

Döngü içinde yazdırmanın neden yukarıda yayınlanan kodda olduğu gibi çalışmadığını anlamıyorum.

teşekkürler

 

Belki benim için bir soruya cevap verebilirsiniz. . .

Neden kodlama deneyimi az olan bu kadar çok insan Print ifadeleri eklemekten korkuyor gibi görünüyor? Neden laife'ı kendin için bu kadar zorlaştırmak istiyorsun? . belki S&M'desindir?

Tek bir Print ifadeniz var. . . ve 0 verir. . . O sırada i'nin değerinin ne olduğunu bile bilmiyorsun, val1'in değerinin ne olduğunu bilmiyorsun. . . iFractals'ın nasıl çalıştığını biliyor musunuz, yani ne yaptığını ve hangi değerler aralığını verdiğini nasıl hesapladığını kastediyorum?

 

Kodunuzu kopyaladım, bazı print deyimleri ekledim ve çalıştırdım. . yazdırıyor. . .

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

 
RaptorUK :

Belki benim için bir soruya cevap verebilirsiniz. . .

Neden kodlama deneyimi az olan bu kadar çok insan Print ifadeleri eklemekten korkuyor gibi görünüyor? Neden laife'ı kendin için bu kadar zorlaştırmak istiyorsun? . belki S&M'desindir?

Tek bir Print ifadeniz var. . . ve 0 verir. . . O sırada i'nin değerinin ne olduğunu bile bilmiyorsun, val1'in değerinin ne olduğunu bilmiyorsun. . . iFractals'ın nasıl çalıştığını biliyor musunuz, yani ne yaptığını ve hangi değer aralığını verdiğini nasıl hesapladığını kastediyorum?


Print ifadeleri eklemekten korkmuyorum, onları her değişkenin arkasına koydum ve ne yazdırdığını ve neden yazdırdığını anlamıyorum çünkü yazdırılmasını beklediğim gibi değil.
Gördüğünüz tek baskı ifadesi, oraya koyduğum tek açıklama değil. Yalnızca tek bir baskı ifadesi deneseydim göndermezdim.
Sadece 2-3 hafta yüzlerce şeyi denedikten ve 100'lerce gönderiyi, sözlük, kitap, dokümantasyon ve daha fazlasını okuyup yeniden okuduktan sonra, bu dizinin nasıl çalıştığını ve öğelerin ve değerlerin nasıl yazdırılacağını anlamaya çalışmak için gönderdim.

Bunu anlamaya çalışırken günde 2-3 saat çalıştım ve bunu anlamaya çalışırken birçok başka şey öğrenmeme rağmen çok da yakın değilim.

Kodu bir süre döngüsü yerine bir for döngüsü ile tamamen yeniden yazdım ve bunun benim için biraz basitleşeceğini düşünerek dizi 100 öğesini sınırladım; ve hala değerleri yazdıramadı.


Sadece anlamıyorum.

Bu 2) soldaki mumların ve 2) sağdaki mumların orta mumdan daha yüksek veya daha düşük olması koşuluyla iFractals'ın 5 mumluk bir dizide orta mumun yüksek/düşük değerini verdiğini düşündüm. Orta mumun yüksek veya düşük noktasını işaretleme veya kaydetme.

iFractals'ın gerçek hesaplamalarını bilmiyorum, ancak doğru olduğunu düşündüğüm >0 ise ve ayrıca High[i] ile başlatıldığından yazdırdığım için bunun önemli olacağını düşünmedim.

Sadece anlamıyorum.


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


Bu koddan ve evet, val1 dışında her yerde başka yazdırma ifadeleri vardı, diğer tüm v1[i] yazdırma girişimleri, kodun herhangi bir yerinde yazdırır = 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 );
  }    

//+------------------------------------------------------------------+
Neden: