[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 275

 
alsu:

Ich sehe die Initialisierung von int i string und index nicht. Bitte, im Studio.

ZZY Ich spreche nicht gut Litauisch, die Kommentare im Code verwirren mich ein wenig)))

Ich habe Nullen in dem Array. Das Array wächst normal. Sie ist im Druck sichtbar.

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

aber es schreibt Nullen in das Array

2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[8]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta EURUSD,M15: avgPriceC[7]=0.00000000
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 fleta EURUSD,M15: avgPriceC[5]=0.00000000
2013.04.08 23:18:37 2013.04.04 20:00 testavimas naktini fleta 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 fleta EURUSD,M15: avgPriceC[0]=0.00000000
Alle Elemente mit Wert 0

avgPriceC[i] = Close[1];

aber ich weiß nicht wie. Das kann der Grund für etwas anderes sein. Ich habe sogar meinen MetaTrader neu installiert. Es hat nicht geholfen.

Ich möchte ein unendliches Array erhalten, dessen Anfang die Primärdaten sind, aber das Ende ist nicht angegeben.

//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:


Im KIM-Beispiel auch


nein, es gibt keine globale Deklaration, jede Funktion hat ihr eigenes y[].


Was Ihren Code und die Nullen betrifft, so möchte ich dies anhand eines Beispiels erläutern.

Wenn int a[],n=5; ArrayResize(a,n), dann hat das letzte Array-Element einen Index n-1, nicht n. Sie haben:

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

Offensichtlich liegt sie außerhalb der Grenzen des Arrays. Daher gibt es Nullwerte. Der richtige Weg ist

            avgPriceH[i-1] = High[1];    
            avgPriceL[i-1] = Low[1];     
            avgPriceO[i-1] = Open[1];   
            avgPriceC[i-1] = Close[1];
 
tara:
Es ist nicht dasselbe, aber sehr unterschiedlich. Lesen von globalen und lokalen Daten.
Tut mir leid, dass ich es verpasst habe. CMM hat eine lokale Variable.
 


Tara und Alsu





Ich danke Ihnen vielmals.

 

Guten Tag, ich brauche Hilfe bei folgender Frage: Es gibt ein Array Mas[10]. Ich muss das Produkt von jeder Zelle mit jeder Zelle finden. Ich habe ein solches Konstrukt erstellt, bei dem der Operator if(i==j) das Produkt der Zelle selbst eliminiert. Das Problem ist, dass ich doppelt rechne, d.h. zum Beispiel für i=1 und j=2 ist das Ergebnis dasselbe wie für i=2 und j=1. Welche zusätzliche Bedingung sollte geschrieben werden, um doppelte Berechnungen zu verhindern?

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:
Ich danke Ihnen.
 

Hallo zusammen!

Ich bin mit der MQL4-Codierung nicht vertraut. Ich möchte versuchen, einen EA zu schreiben, der auf Unterstützungs- und Widerstandsniveaus basiert, aber ich weiß nicht, wie man den Code für ein Programm schreibt, das nach diesen Niveaus sucht. Ich bin nicht in der Lage, in der Codebasis danach zu suchen, ich bin ungeschickt und meine Zeit ist begrenzt.

Vielen Dank im Voraus! Möge der Gewinn zu Ihnen kommen, und möge der Elch umhergehen!)

 
Roger:
Aus einer Reihe von Gründen, die mit dem Prozess des Schreibens in das Array zusammenhängen, mussten wir es zweidimensional machen, d. h. das Array sieht jetzt wie Mas[2][5] aus. Um das gleiche Problem zu lösen, müssen wir nun statt zwei for-Schleifen vier Schleifen bilden. In diesem Fall wird die von Roger vorgeschlagene Variante nicht funktionieren. Wie lässt sich dieses Problem bei der Verwendung eines zweidimensionalen Arrays lösen?
 
Ekburg:

Hallo zusammen!

Ich bin mit der MQL4-Codierung nicht vertraut. Ich möchte versuchen, einen EA zu schreiben, der auf Unterstützungs- und Widerstandsniveaus basiert, aber ich weiß nicht, wie man den Code für ein Programm schreibt, das nach diesen Niveaus sucht. Ich bin nicht in der Lage, in der Codebasis danach zu suchen, ich bin ungeschickt und meine Zeit ist begrenzt.

Vielen Dank im Voraus! Möge der Gewinn zu Ihnen kommen, und möge der Elch umhergehen!)


Sehen Sie sich den Indikator in der CodeBase DailyPivotPoints an! Ich denke, es wird Ihnen helfen! Viel Glück!
Grund der Beschwerde: