[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 275

 
alsu :

int i satırını ve dizin başlatmayı görmüyorum. Lütfen, stüdyoda.

Not Litvancayı kötü konuşuyorum, koddaki yorumlar biraz kafa karıştırıcı)))

Dizimde sıfırlar var. Dizi normal olarak büyür. Bu baskıdan görülebilir.

2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: ArraySize 19

ama diziye nasıl sıfır yazılmadı

2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini filosu EURUSD,M15: avgPriceC[8]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini filosu EURUSD,M15: avgPriceC[7]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[6]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini filosu EURUSD,M15: avgPriceC[5]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini filosu EURUSD,M15: avgPriceC[4]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[3]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[2]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[1]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini filosu EURUSD,M15: avgPriceC[0]=0.00000000
0 değerine sahip tüm öğeler
çizgiye bağlı kalmak istiyorum

avgPriceC[i] = Kapat[ 1 ];

ama nasıl bilmiyorum. Ya da belki nedeni başka bir şeydir. Meta tüccarı bile yeniden kurdum. Yardım etmedi.

Burada, başlangıcı birincil verilere göre olan ve sonu henüz belirtilmemiş sonsuz bir dizi almalısınız.

//greitas MA
extern int      MA_Period1     =   8 ;
extern int      plius1         =   100 ;
extern int      MA_Shift1      =   0 ;
extern int      MA_Method1     =   0 ;                                                 
//Letas MA
extern int      MA_Period2     =   13 ;
extern int      plius2         =   100 ;
extern int      MA_Shift2      =   0 ;
extern int      MA_Method2     =   3 ;                                                 
//Fleto pradzia
//fleto ipradzios eskojimas pagal indikatoriu arba laika
extern bool   start       =   true ;     // true ->pagal indikatoriu, false->pagal laika
// pagal indikatoriu fleto pradzios pradesim ieskoti nuo sio laiko
extern int      startHourFlatMA        =   16 ;    
extern int      startMinFlatMA        =   00 ;
extern string   startstartFlatMA       = "16:00" ;
extern string   endstartFlatMA       = "00:00" ;
//suradus pagal indikatoriu dar lauksim kol uzsidarys BarEnd zvake
extern bool     zvakes_pabaiga = true ; //ar lauksim kol uzsidarys M240 zvake, ar priimsim kad fletas prasidejo nuo susikirtimo
extern int      BarEnd         =   240 ;
datetime        LastTime;
//datetime       startTime;
// pagal laika fleto pradzios pradesim ieskoti nuo sio laiko
extern int      startHourFlat        =   0 ;   //
extern int      startMinFlat         =   0 ;     //

//fleto pabaiga
//Fleto pabaiga jei indikatorius duoda signala siame laiko tarpe
//Laiko tarpo pradzia
extern int      startHourEnd        =   4 ;    
extern int      startMinEnd         =   45 ;
//laiko tarpo pabaiga arba fleto pabaiga
extern int      endHourEnd        =   7 ;    
extern int      endMinEnd         =   30 ;

//Ar naudosom Volumes filtra
extern bool volFiltr = true ;             //true -> naudosim,   false -> nanaudosim

//skirtumas tarp penktadienio uzdarymo ir pirmadienio atidarymo
extern int    gep = 300 ;  



//Naktinio-fletinio pipsavimo ijungimas
bool nightFlat = false ; //true -> ijungtas,   false -> neijungtas



bool            susikirtimas = false ;      
bool            flat; 
//masyvai
double chPriceH[], chPriceL[], chPriceO[], chPriceC[], chTime[];
double avgPriceH[], avgPriceL[], avgPriceO[], avgPriceC[]; 
int i = - 1 ; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int j = - 1 ; // masyvu indeksas -1, nes toliau pridesim 1, o masyvu indeksacija prasideda nuo 0
int n = - 1 ;                           // kintamasis naujo masyvo indeksacijai
int iH, iL ,iO, iC, iT;
double C[], T[], y[];
double max;                               //max skirtumas tarp LR median ir Close
//*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*--*-*--*-*-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-* 

int init ()
{
ArrayResize (chPriceH, 0 );
ArrayResize (chPriceL, 0 );
ArrayResize (chPriceO, 0 );
ArrayResize (chPriceC, 0 );
ArrayResize (chTime, 0 );
ArrayResize (avgPriceH, 0 ); 
ArrayResize (avgPriceL, 0 ); 
ArrayResize (avgPriceO, 0 ); 
ArrayResize (avgPriceC, 0 ); 
ArrayResize (C, 0 ); 
ArrayResize (T, 0 );
ArrayResize (y, 0 );
}
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-**-*-*-*-*-*-*-*-*-*-
 int start()
 {
   double volMA11, volMA12, volMA21, volMA22;  
   double x[], y[]; 
   
   Print ( "******************STARTAS*****************************************" );
   
   if (!TF_F_NewBar()) return ( 0 );
 
   volMA11 = iCustom ( NULL , 15 , "volumeMA" ,   2 , 1 );         
   volMA12 = iCustom ( NULL , 15 , "volumeMA" ,   2 , 2 );
   volMA21 = iCustom ( NULL , 15 , "volumeMA" ,   3 , 1 );
   volMA22 = iCustom ( NULL , 15 , "volumeMA" ,   3 , 2 );
    
   if (DayOfWeek()== 1 || DayOfWeek()== 2 || DayOfWeek()== 3 || DayOfWeek()== 4 )                             //jei pirmadienis antradienis ar treciadienis, ar ketvirtadienis
   {         
       if ( TimeCurrent ()>= StrToTime(startstartFlatMA) && TimeCurrent ()<= StrToTime(endstartFlatMA)+ 24 * 60 * 60 )
      {
         //Print("fleto starto ieskojimo laikas prasidejo  "+TimeToStr(TimeCurrent())+" >= "+TimeToStr(StrToTime(startstartFlatMA))+
               //"  &&  "+TimeToStr(TimeCurrent())+" <= "+TimeToStr(StrToTime(endstartFlatMA)+24*60*60));
         bool laikas = true ;
         Print ( "laikas = " +laikas);         
         if (volMA21 - volMA11 > 0 && volMA12 - volMA22 > 0 )
         {                                                                                   //jei buvo susikirtimas
            susikirtimas = true ;           
         }
         if (susikirtimas == true ) 
         {
             if (zvakes_pabaiga)
            {
               if (iTime( NULL , BarEnd, 1 )!= LastTime)
               {            
                  LastTime = iTime( NULL , BarEnd, 1 );
                  flat = true ;           
                  LastTime = iTime( NULL , BarEnd, 1 );
              }
               else return ( 0 );            
           }
           else flat = true ;
           if (flat == true )
           {
               i++; 
             //Zinodami indekso eiles numeri galim keisti masyvo ilgi
            
             ArrayResize (avgPriceH,i); 
             ArrayResize (avgPriceL,i);
             ArrayResize (avgPriceO,i); 
             ArrayResize (avgPriceC,i);        
           Print ( "ArraySize     " + ArraySize (avgPriceC));
             //jei fletas prasidejo renkam duomenis i masyva zvakiu HL ir OC skaiciavimui
            
            avgPriceH[i] = High[ 1 ];    
            avgPriceL[i] = Low[ 1 ];     
            avgPriceO[i] = Open[ 1 ];   
            avgPriceC[i] = Close[ 1 ];
         
            j++; 
            
             ArrayResize (chPriceC,i); 
             ArrayResize (chTime,i);    
           } 
         for ( int a= 0 ; a<=i; a++) Print ( "avgPriceC[" +a+ "]=" +avgPriceC[a]);
         for ( int b= 0 ; b<=j; b++) Print ( "chPriceC[" +b+ "]=" +chPriceC[b]);
         for ( int c= 0 ; c<=j; c++) Print ( "chTime[" +c+ "]=" +chTime[c]);
        }        
     }
  }
    
   return ( 0 );
}
 
gince :


KIM örneğinde ayrıca


hayır, global düzeyde bir bildirim yoktur, her fonksiyonun kendi y[]'si vardır.


Kodunuza ve sıfırlarınıza gelince, bir örnekle açıklayacağım.

int a[],n=5 ise; ArrayResize(a,n), o zaman dizinin son elemanının indeksi n değil, n-1 olur. Sende var mı:

               i++; 
            
            ArrayResize (avgPriceH,i); 
             ArrayResize (avgPriceL,i);
             ArrayResize (avgPriceO,i); 
             ArrayResize (avgPriceC,i);        
            
            avgPriceH[i] = High[ 1 ];    
            avgPriceL[i] = Low[ 1 ];     
            avgPriceO[i] = Open[ 1 ];   
            avgPriceC[i] = Close[ 1 ];

Açıkçası, diziden çıkıyoruz. Bu nedenle değerlerdeki sıfırlar. doğru olacak

            avgPriceH[i-1] = High[ 1 ];    
            avgPriceL[i-1] = Low[ 1 ];     
            avgPriceO[i-1] = Open[ 1 ];   
            avgPriceC[i-1] = Close[ 1 ];
 
tara :
Tam olarak aynı değil, tamamen farklı. Küresel ve yerel verileri okuyun.
bakmadığım için üzgünüm. Kim'in yerel bir değişkeni var.
 


tara ve alsu





Çok teşekkürler.

 

Tünaydın. Bu konuda yardım istiyorum: Mas[10] dizisi var. Her hücrenin ürününü her biri ile bulmak gerekir. Böyle bir yapı yaptım, burada if (i==j) işleci hücrenin çarpımını kendi başına hariç tutuyor. Sorun şu ki, çift hesaplamalar elde edilir, yani. örneğin, i=1 ve j=2 ile sonuç, i=2 ve j=1 ile aynı olacaktır. Yeniden hesaplamayı hariç tutmak için hangi ek koşul yazılmalıdır?

 for (i= 0 ; i< 10 ; i++)
{
   for (j= 0 ; j< 10 ; j++)
   {
       if (i==j) continue ;
      x = Mas[i]*Mas[j];
   }
}
 
for(i=0; i<10; i++)
{
   for(j=i+1; j<10; j++)
   {
      //if(i==j) continue;
      x = Mas[i]*Mas[j];
   }
}
 
Roger :
Teşekkür ederim.
 

Merhaba!

MQL4 programlamada hala bir çok fonksiyon bilmiyorum destek ve direnç seviyelerine göre Expert Advisor yazmaya çalışmak istiyorum fakat kod nasıl yazılır anlamıyorum ki program bu seviyeleri arasın lütfen açıklar mısınız ne seçenekler var. Kod tabanında arama yapamıyorum, beceriksizim ve fazla zamanım yok ..

Şimdiden teşekkürler! Kâr seninle olsun ve geyiği atla!)

 
Roger :
Bir diziye yazma süreciyle ilgili birkaç nedenden dolayı, onu iki boyutlu yapmak zorunda kaldım, yani. şimdi dizi Mas[2][5] gibi görünüyor. Şimdi aynı sorunu çözmek için iki "for" döngüsü yerine dört döngü yapmanız gerekiyor. Bu durumda Roger'ın önerdiği seçenek çalışmayacaktır. İki boyutlu bir dizi kullanılması durumunda bu sorun nasıl çözülür?
 
Ekburg :

Merhaba!

MQL4 programlamada hala bir çok fonksiyon bilmiyorum destek ve direnç seviyelerine göre Expert Advisor yazmaya çalışmak istiyorum fakat kodu nasıl yazacağımı anlamıyorum ki program bu seviyeleri aratsın lütfen açıklar mısınız ne seçenekler var. Kod tabanında arama yapamıyorum, beceriksizim ve fazla zamanım yok ..

Şimdiden teşekkürler! Kâr seninle olsun ve geyiği atla!)


CodeBase DailyPivotPoints'teki göstergeye göz atın! Bunun sana yardımcı olacağını düşünüyorum! İyi şanlar!